跳转至

国际化策略(i18n)

重要性:⭐⭐⭐(i18n 全景——RTL 支持 / Locale / 字符编码 / 多语言 prompt) 范围src/ 全部 i18n 相关 方法:grep locale / i18n / l10n / RTL 关键词


1. 4 大 i18n 维度

┌─────────────────────────────────────┐
│  1. Locale(语言/地区)            │
│  2. 字符编码(UTF-8 / bytes)      │
│  3. 文本方向(LTR / RTL)          │
│  4. 多语言 prompt / system msg     │
└─────────────────────────────────────┘

2. Locale 推断

2.1 getPlatform

// utils/platform.ts
function getPlatform(): 'darwin' | 'linux' | 'win32' { ... }

OS 平台 —— 不含 locale。

2.2 LANG / LC_ALL 环境变量

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

Unix 风格 —— 终端 locale。

2.3 系统消息

// 推测:i18n 库(如果有)
t('key.path')  // 翻译

i18n 库 —— 未知是否使用。


3. UTF-8 字符编码

3.1 bashParser 字节偏移

详见 topics/deep-dive-bash-parser.md

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

双索引 —— charIdx + byteIdx。

为什么用字节: - bash 工具输出(错误信息)用字节 - 与 tree-sitter 一致 - UTF-8 安全

3.2 bashParser 3449 黄金语料库

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

大量验证 —— UTF-8 安全。


4. RTL 支持

4.1 Yoga Edge 抽象

// yoga-layout/index.ts
const EDGE_LEFT = 0
const EDGE_TOP = 1
const EDGE_RIGHT = 2
const EDGE_BOTTOM = 3

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

逻辑边(start/end)→ 物理边(left/right)。

RTL 支持 —— 阿拉伯语 / 希伯来语。

4.2 direction 属性

// 推测:style.direction
direction: 'ltr' | 'rtl'

渲染方向 —— 自动镜像布局。

4.3 flexDirection

// 推测:row / row-reverse
isReverse(dir: FlexDirection): boolean

自动 reverse —— 适配 RTL。


5. 字符宽度

5.1 双宽字符

// utils/stringUtils.ts
// 推测:countCharInString / display width

CJK 字符 —— 终端宽度 2。

5.2 emoji

// 推测:emoji 宽度

emoji 宽度 —— 终端兼容。

5.3 ANSI escape

chalk.yellow('text')  // chalk 处理

彩色文本 —— chalk 处理 ANSI。


6. 多语言支持

6.1 系统 prompt

// 推测
const systemPrompt = `You are Claude Code, Anthropic's official CLI for Claude.`

英文 system prompt —— Claude 是英文。

6.2 错误信息

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

英文错误 —— 推测未本地化。

6.3 命令帮助

.option('--debug [filter]', 'Enable debug mode ...')

英文 help —— 推测未本地化。

6.4 UI 文本

// 推测
'Allow this command?'  // 权限对话框

英文 UI —— 推测未本地化。

结论当前主要英文 —— 不确定是否有完整 i18n 框架。


7. prompt cache 跨语言

7.1 内容哈希

generateTempFilePath('claude-settings', '.json', { contentHash: trimmedSettings })

相同内容 → 相同路径 → 相同 prompt cache 命中

跨语言 —— 内容哈希语言无关

7.2 session ID

asSessionId(uuid)  // UUID

UUID —— 语言无关。


8. 输入 / 输出本地化

8.1 输入

// 用户输入任意 Unicode
input: string  // 任意字符

任意 Unicode 输入 —— 接受。

8.2 输出

// 终端输出
console.log(message)

UTF-8 输出 —— 终端依赖。

8.3 文件路径

expandTilde('~/foo')  // ~/foo → $HOME/foo

路径 —— 文件系统处理 UTF-8。


9. 时间 / 数字 格式

9.1 ISO 时间戳

// 推测
new Date().toISOString()

ISO 8601 —— 语言无关。

9.2 数字格式

// 推测
n.toLocaleString()  // 千分位

本地化数字 —— toLocaleString。

9.3 货币

// 推测
'$1.23'  // 或本地货币

美元 —— 商业产品以美元计价。


10. 假设 / 推测

⚠️ 注意:以下为推测 —— 没有完整 i18n 框架的明显证据。

状态 证据
完整 i18n 框架 未发现 t() / i18n 库
Locale 推断 ⚠️ 弱 仅 OS 平台
RTL ✅ 有 Yoga 抽象
UTF-8 ✅ 有 bashParser 字节
多语言 UI ❌ 推测无 英文 help / 错误
翻译文件 未发现 locales/

结论:i18n 仅基础设施级(UTF-8 / RTL)—— UI 文本未本地化


11. 改进方向

11.1 引入 i18n 框架

// 建议:i18next
import i18next from 'i18next'

统一管理 —— 翻译文件。

11.2 Locale 推断

// 建议:从 LANG / LC_ALL / 用户配置

用户可控 —— 设置 preferred language。

11.3 错误信息翻译

// 建议:error codes → i18n

错误码 + 翻译

11.4 命令 help 翻译

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

help 翻译

11.5 文档多语言

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

多语言文档


12. 关键洞察

12.1 i18n 仅基础设施级

UTF-8 + RTL —— 文本未本地化。

12.2 Yoga Edge 抽象是亮点

支持 RTL —— 罕见细节。

12.3 bashParser 字节偏移

UTF-8 安全 —— 全局。

12.4 UUID / ISO 时间

语言无关 —— 安全。

12.5 内容哈希跨语言

prompt cache 不受语言影响。

12.6 推测无完整 i18n

未发现 翻译框架。

12.7 英文为主

商业产品以英文 —— 推测。

12.8 改进空间大

引入 i18n 框架可大幅提升。


13. 阅读建议

  1. utils/bash/bashParser.ts —— UTF-8 字节
  2. native-ts/yoga-layout/index.ts —— RTL
  3. grep t( / i18n / locale —— 是否有框架
  4. 看错误信息字符串 —— 是否英文

14. 与其他分析的关系

文件 关系
extensibility.md settings 含语言配置可能
security-audit.md 错误信息脱敏跨语言
architecture-history.md 国际化演进