【问题标题】:Should I maintain different files for different locales?我应该为不同的语言环境维护不同的文件吗?
【发布时间】:2015-08-28 20:40:06
【问题描述】:

我有一个当前支持“en”和“fr”语言环境的应用程序,并为每个语言环境维护一个语言文件,即“en.json”和“fr.json”

现在对于来自美国的用户,区域设置为“en_US”、加拿大“en_CA”、英国“en_UK”等。

所以现在作为一种最佳做法,是否建议我为不同的英语语言环境维护不同的文件,或者我将所有英语语言环境(en_CA、en_US、en_UK)视为“en”语言环境并引用一个文件?

【问题讨论】:

    标签: localization internationalization locale l10n.js


    【解决方案1】:

    像往常一样,这取决于。

    通常,您只有一个英文文件,其中包含英文国际信息。在这种情况下,您不会为每个版本维护单独的文件,而是会回退到英语国际(请求 en-USen-CA等。您将提供来自en.json 的消息。

    从您的昵称来看,您可能知道有时最好为某些特定文化保留单独的消息,因为英美消息(通常用作国际英语)可能过于直接。
    如果请求单独的语言环境版本(即 en-IN),您将提供来自特定文件(即 en-IN.json)的消息,但回退到 en对于其他语言(en-GBen-AU 等)。

    资源回退(这是我上面描述的专家使用的术语)实施起来可能非常痛苦。当然,通常你会回退到基本语言(en 表示任何 en-XX),但有一些特殊情况你需要知道:葡萄牙语/巴西葡萄牙语,挪威语和汉语。如果是葡萄牙语,您应该使用 pt-BR(即pt-BR.json)并且对于 ptpt-XX 的请求回退到 pt-BR,因为巴西葡萄牙语现在是标准的。显然,只需创建一个文件pt.json 并让任何事情回退到 pt 即可轻松完成。

    挪威人和中国人都不是这样。

    挪威语有两个版本:

    • 挪威尼诺斯克语(语言环境nn-NO
    • 挪威语 Bokmål(语言环境 nb-NO

    还有所谓的宏语言(locale no)。
    除非您维护两个单独的挪威语版本(这不太可能),否则您应该使用一个资源文件(即no.json nn- 的请求时回退到它NO、nb-NOnbnnno-NO(我相信只是 no 将被覆盖)。

    中文就更复杂了。您可能听说过简体中文 (locale zh-Hans) 和繁体中文 (zh-Hant)。如果您需要本地化为中文,维护两个单独的中文文件(即zh-Hans.jsonzh-Hant.json)并按如下方式回退任何请求是有意义的:

    • zhzh-CNzh-SGzh-Hans
    • zh-HGzh-MOzh-TWzh-Hant

    我希望它能让你更好地理解。值得考虑未来的本地化计划,以尽可能简单地实施资源回退机制(但不会更简单)。如果您需要支持英语、法语、意大利语、德语和西班牙语等语言,那么实施复杂的规则是没有意义的 - 只需检查 xx-XX.json 是否存在,如果存在则提供它,如果不存在则检查 xx.json存在(服务它...)或回退到默认应用程序语言(en.json,我猜?)。

    【讨论】:

      猜你喜欢
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多