为模块化应用程序组织 Javascript i18n 文件

Ron*_*ero 5 javascript internationalization

我正在为一个相对较新的应用程序添加 i18n 支持。这是一个模块化的应用程序。目前,我们只会使用英语(可能还有用于测试目的的 Pig Latin),但我想确保我们不会射中自己的脚。我有两个组织翻译文件的想法:

  1. 一个包含任何模块中使用的每个字符串的大型全局翻译列表。这将导致对全局文件的一些争用。这个文件会更大,我想知道下载时间。

  2. 每个模块都有自己的翻译文件。这将导致出现在多个模块中的字符串出现一定程度的重复。如果我们将文件发送出去进行翻译,我们就必须合并这些文件。

我们正在使用 Javascript,加上 Backbone.js、Require.js、Aura 等,我们计划使用 i18next。

哪种方式最适合组织文件?或者还有其他我想念的方式。

Moh*_*sen 7

通过每个模块都有一个文件,您将重复自己。如果该字符串在十个模块中使用,您将必须翻译“An Error Happened”十次。我的建议是将所有翻译聚合到一个大的 JSON 文件中,其结构如下:

{
  "common": {
    "welcome": "welcome",
    ...
  },
  "module1": { 
    "loaded": "module1 is loaded"
     ....
  }
}
Run Code Online (Sandbox Code Playgroud)

您将把模块特定的翻译包装在它自己的对象中,并将公共字符串包装在对象中。

旁注:您可以从 John Resig 的博客文章中了解JavaScript 中的 i18n。