跳转至

i18n Strategy 专题

重要性:⭐⭐⭐(国际化策略——推断项目 i18n 现状 + 改进) 真实位置:推测无完整 i18n 框架;基础设施级(UTF-8 + RTL) 角色:项目本身的国际化策略(用户面向的 UI 文本) 关联topics/yoga-layout.md(RTL)、topics/terminal-compatibility.md


1. i18n 现状推断

项目 i18n = 基础设施级(仅 UTF-8 + RTL) 用户 UI 文本 = 推测仅英文


2. 4 大 i18n 维度

维度 状态 备注
Locale 推断 ⚠️ 弱 OS 平台 + 推测 LANG/LC_ALL
字符编码 ✅ 强 bashParser 字节偏移(UTF-8 安全)
文本方向 ✅ 强 Yoga Edge 抽象支持 RTL
多语言 prompt ❌ 无 推测无完整 i18n 框架

3 强 1 弱


3. 字符编码:UTF-8

3.1 bashParser 字节偏移

type Lexer = {
  byteLen: number
  charIdx: number       // 字符索引
  byteIdx: number       // 字节偏移
  byteAt(L, charIdx)    // 字符 → 字节
}

双索引 —— charIdx + byteIdx。

3.2 3449 黄金语料库

// 验证
// Validated against a 3449-input golden corpus

大规模验证 —— UTF-8 安全。

3.3 CJK / emoji

// measureText(text): number
// CJK = 2, ASCII = 1

宽度计算 —— CJK 2 倍。


4. RTL 支持

4.1 Yoga Edge 抽象

const EDGE_LEFT = 0
const EDGE_TOP = 1
const EDGE_RIGHT = 2
const EDGE_BOTTOM = 3

function resolveEdge(...): Value { ... }

逻辑边 → 物理边 —— 支持 RTL。

4.2 BiDi

// ink/bidi.ts (139 行)

双向文本 —— 阿拉伯 / 希伯来。

4.3 flexDirection

isReverse(dir: FlexDirection): boolean

自动 reverse —— 适配 RTL。


5. UI 文本(推测英文)

5.1 命令 help

.option('-p, --print', 'Print response and exit...')

英文 help

5.2 错误信息

console.warn(chalk.yellow('Tip: ...'))

英文错误

5.3 权限对话框

// 推测
'Allow this command?'

英文 UI

5.4 文档

// learn_doc/ 全英文

英文文档

整体 —— 推测英文为主。


6. 推测的 i18n 框架缺失

6.1 t() 函数

// 推测:未发现
t('key.path')

未发现完整 t() 函数

6.2 翻译文件

# locales/en.json
# locales/zh.json

未发现 locales/ 目录

6.3 用户选择语言

// 推测:无 settings
preferredLanguage: 'zh-CN'

未发现


7. prompt i18n(系统 prompt 英文)

7.1 系统 prompt

const systemPrompt = `You are Claude Code...`

英文 —— Claude 是英文。

7.2 推测

  • 不需要翻译 system prompt(LLM 内部语言)
  • 用户输入可以是任意语言
  • 输出跟随用户语言

8. 改进方向

8.1 引入 i18n 框架

import i18next from 'i18next'
import en from './locales/en.json'
import zh from './locales/zh.json'
i18next.init({ resources: { en, zh } })

i18next —— 成熟方案。

8.2 命令 help 多语言

.option('-p, --print', t('options.print'))

help 翻译

8.3 错误信息翻译

// 错误码 → 翻译
const errorMsg = t(`errors.${errorCode}`)

错误码 + 翻译

8.4 文档多语言

docs/
├── en/
├── zh/
└── ja/

多语言文档

8.5 用户配置

{
  "preferredLanguage": "zh-CN"
}

用户设置


9. 终端 / Shell i18n

9.1 终端 locale

$ echo $LANG
zh_CN.UTF-8

终端 locale —— 影响程序行为。

9.2 Claude Code 推断

// 推测
const lang = process.env.LANG ?? process.env.LC_ALL

推断


10. 文件系统 i18n

10.1 文件路径 UTF-8

expandTilde('~/我的文件/foo.txt')  // UTF-8 路径

UTF-8 路径 —— 文件系统支持。

10.2 目录名

项目目录: ~/工作/项目1

UTF-8 目录 —— 支持。


11. 终端 i18n

11.1 CJK 字符宽度

// 终端显示 2 倍宽度

CJK 2 倍 —— 终端支持。

11.2 emoji

// emoji 1-2 宽度

emoji 兼容

11.3 Unicode 标准化

// NFC 标准化
text.normalize('NFC')

标准化 —— 推测。


12. 关键洞察

12.1 仅基础设施级 i18n

UTF-8 + RTL —— 完整。

12.2 UI 文本推测英文

未本地化。

12.3 bashParser 字节偏移

UTF-8 全局安全。

12.4 Yoga Edge 抽象

RTL 完整。

12.5 3449 黄金语料库

UTF-8 大规模验证。

12.6 改进空间大

引入 i18next 可大幅提升。

12.7 prompt 仍英文

LLM 不需要翻译。

12.8 用户输入任意

接受任意语言。

12.9 文件系统 UTF-8

路径安全。

12.10 终端 CJK 2 倍

显示兼容。


13. 推测 vs 实际

⚠️ 本文档多为推测 —— 项目本身可能 i18n 框架但未被发现。

建议: - 实际开发时 grep i18n / t( / locale 全文 - 查 locales/ 目录(如果有) - 查 settings 的 language 字段(如果有)


14. 阅读建议

  1. grep i18n / t( / locale 全文 —— 找框架
  2. utils/stringUtils.ts —— 字符宽度
  3. native-ts/yoga-layout/index.ts —— RTL
  4. 看 system prompt —— 是否英文

15. 与其他专题的关系

文件 关系
yoga-layout.md RTL 实现
terminal-compatibility.md 终端 i18n
deep-dive-bash-parser.md UTF-8 字节