Skip to content

多语言支持

源码: src/i18n/


支持的语言

语言代码语言名称本地名称书写方向
zh-CN简体中文简体中文LTR
zh-TW繁體中文繁體中文LTR
enEnglishEnglishLTR
ja日本語日本語LTR
ko한국어한국어LTR
arالعربيةالعربيةRTL

语言检测规范

检测顺序

  1. 本地存储 - 用户上次选择的语言
  2. 浏览器语言 - navigator.language
  3. 系统语言 - 操作系统语言设置
  4. 默认语言 - 英语 (en)

语言匹配规则

约束级别要求
MUST精确匹配优先 (zh-CN → zh-CN)
SHOULD支持语言族匹配 (zh-HK → zh-TW)
MUST无匹配时使用默认语言

语言族映射

请求语言匹配结果
zh-CNzh-CN
zh-TWzh-TW
zh-HKzh-TW
zhzh-CN
en-USen
en-GBen

翻译资源规范

命名空间划分

命名空间用途
common通用词汇 (确认、取消、返回等)
wallet钱包相关
transfer转账相关
settings设置相关
error错误消息
auth认证相关

翻译键命名规范

约束级别要求
MUST使用小驼峰命名
MUST语义化命名
SHOULD按功能模块组织
SHOULD避免超过 3 层嵌套
示例:
✓ createWallet
✓ balance.available
✓ error.networkTimeout
✗ btn_create_wallet
✗ a.b.c.d.e.f

翻译文本规范

约束级别要求
MUST避免拼接翻译 (使用插值)
MUST考虑不同语言的语序差异
SHOULD为变量提供语义化的占位符名
SHOULD添加翻译备注说明上下文
✓ "available": "可用: {{amount}} {{symbol}}"
✗ "available": "可用: " + amount + " " + symbol

插值规范

基本插值

typescript
// 翻译文本
{ "balance": "余额: {{amount}}" }

// 调用方式
t('balance', { amount: '100' })

// 结果
"余额: 100"

复数处理

typescript
// 翻译文本
{
  "items_zero": "无项目",
  "items_one": "1 个项目",
  "items_other": "{{count}} 个项目"
}

// 调用方式
t('items', { count: 5 })

// 结果
"5 个项目"

RTL 布局规范

CSS 逻辑属性

物理属性逻辑属性
padding-leftpadding-inline-start
padding-rightpadding-inline-end
margin-leftmargin-inline-start
margin-rightmargin-inline-end
leftinset-inline-start
rightinset-inline-end
text-align: lefttext-align: start
text-align: righttext-align: end

RTL 规范要求

约束级别要求
MUST使用 CSS 逻辑属性
MUST设置 dir 属性 (html 或容器)
MUST设置 lang 属性
SHOULD翻转方向性图标 (箭头等)
MUST NOT翻转非方向性图标 (品牌 logo)

需要翻转的元素

元素翻转说明
返回箭头方向性
前进箭头方向性
列表顺序起始位置变化
进度条方向从右到左
品牌 Logo固定资产
电话号码数字方向不变

语言切换规范

切换流程

用户进入语言设置


显示语言列表 (当前语言高亮)


用户选择新语言


保存到本地存储


更新应用语言


刷新界面文本


更新 HTML dir 和 lang 属性

切换要求

约束级别要求
MUST立即生效 (无需重启)
MUST持久化到本地存储
MUST更新所有可见文本
SHOULD显示本地语言名称 (非翻译名)

开发规范

添加新翻译

  1. 在所有语言文件中添加新键
  2. 确保键名一致
  3. 添加必要的复数形式
  4. 测试所有语言显示

翻译缺失处理

约束级别要求
MUST有回退语言机制
SHOULD开发环境显示缺失键警告
SHOULD生产环境显示回退语言文本
MAY上报缺失翻译

测试规范

约束级别要求
MUST测试所有支持语言的界面
MUST测试 RTL 布局正确性
SHOULD测试长文本不溢出
SHOULD测试占位符替换正确

相关文档

Released under the MIT License.