Skip to main content
Extension.js 会在 manifest 旁边发现 locale 文件,并校验每个声明的 locale 都有一份 messages.json。它会把 locale JSON 资源输出到针对每个浏览器的构建产物中。在开发期,它会捕获任意 locale 文件的编辑,而无需完全重启。

模板示例

action-locales

action-locales template screenshot 通过 _locales 支持来查看本地化的扩展元数据与 UI 字符串。
仓库:extension-js/examples/action-locales

Locale 能力

期望的目录结构

manifest.json 中的 default_locale 应当映射到一个存在的 _locales/<default>/messages.json

manifest.json 中的 locales 声明示例

下面演示了如何在 manifest.json 中声明 locales:
然后你需要在 _locales 文件夹中为每个 locale 包含 JSON 文件:

messages.json 文件示例

用于翻译的 messages.json 文件示例:

输出路径

Extension.js 会把 locale JSON 文件输出到:

开发期行为

  • Extension.js 会把 locale JSON 文件加入编译依赖并监视它们。
  • Locale 变更会触发扩展的重载行为(硬重载),而不是组件式的热模块替换(HMR)。
  • 当必需的 locale 文件缺失或无效时,Extension.js 会以可操作的诊断信息让校验失败。

校验行为

Extension.js 会校验:
  • 当项目使用 _locales 时是否存在 default_locale
  • _locales/<default>/messages.json 是否存在
  • locale 文件的 JSON 合法性
  • manifest 中的 __MSG_*__ 引用是否与默认 locale 的键匹配

排查缺失的 locale 键

如果 manifest 使用了 __MSG_extension_description__,请确保默认 locale 文件包含 extension_description
如果默认 locale 没有定义该键,Extension.js 会输出一条说明此不一致的诊断信息。

最佳实践

  • 保持 messages.json 的键在各 locale 之间一致。
  • 先更新默认 locale,然后再把键扩散到其他 locale。
  • 在持续集成(CI)中校验 locale JSON,在打包前发现损坏的文件。
  • 把 locale 文件放在 manifest 附近(manifestDir/_locales),以获得可预测的解析。

下一步