Skip to content

i18n — 语言包 ​

两种能力,别混:

  1. 整包语言包(type: "i18n"):把整个界面翻译成一个新语种
  2. 插件自包含词条(locales/,任何类型插件都可用):只翻译你自己的插件

1. 整包语言包(type: "i18n") ​

json
{
  "id": "example.i18n.japanese",
  "name": "日本語 UI 言語パック",
  "version": "1.0.0",
  "target_app_version": "0.2",
  "author": "TransBox",
  "type": "i18n",
  "language_code": "ja-JP",
  "language_name": "日本語",
  "entrypoint": "ja.json"
}
  • ja.json 是扁平键值字典({"settings.title": "設定", ...})。
  • 缺失的词条回退顺序:en-US → zh-CN。
  • 语言包互斥(同一时间只有一个界面语言)。
  • 默认 enabled: false。
  • 启用后立即切换界面语言;停用则安全回退。

参照:extensions/example_i18n_japanese/。


2. 插件自包含词条 locales/(推荐所有插件都做) ​

任何类型的插件(assistant / theme / tool…)都可以在插件根目录提供:

text
my_plugin/
├── locales/
│   ├── zh-CN.json     # 文件名 → 语言代码
│   └── en-US.json
json
{
  "_meta": {
    "plugin_id": "community.assistant.interview_copilot",
    "code": "zh-CN",
    "name": "中文 (简体)",
    "short_label": "中"
  },
  "plugin.community.assistant.interview_copilot.name": "AI 面试答题助手",
  "plugin.community.assistant.interview_copilot.desc": "……",
  "plugin.community.assistant.interview_copilot.tab_title": "AI 面试助手",
  "copilot.title": "AI 面试答题助手",
  "copilot.stealth_shield": "防录屏保护"
}

规则:

  • 宿主扫描时自动探测挂载,无需代码。
  • 用户切换语言时按 目标语言 → 插件 en-US → 插件 zh-CN 顺序优雅合并。
  • _meta 是元数据块(plugin_id / code / name / short_label),不会被当成词条。
  • 保留前缀 plugin.<plugin_id>.name / .desc / .tab_title:插件在工坊列表和设置 Tab 上的显示名/描述/标题会跟着语言走。
  • 其余键(如 copilot.*)是你自己的命名空间,自由用。
  • QML 里用 I18n.t("copilot.title") 读取;设置 Tab 标题(tab_title)自动响应。

严禁修改主程序核心词库(src/transbox/ui/locales/*.json)——语言包与插件词条都是 增量覆盖,不是替换。


自检 ​

  • [ ] locales/ 下至少 zh-CN.json 与 en-US.json
  • [ ] 词条前缀不与其它插件撞(用 plugin.<plugin_id>.* 或自己的命名空间)
  • [ ] 切到英文界面,插件卡片名/描述/设置页文案全部变英文,没有中文残留

相关 ​

TransBox - 赋能全人类无界限跨语言交流