我应该为不同的区域设置维护不同的文件吗?

时间:2015-08-28 20:40:07

标签: localization internationalization locale l10n.js

我有一个目前支持' en'和' fr' locales,并为每个区域设置维护一个语言文件,即' en.json'和' fr.json'

现在,对于来自美国的用户,语言环境来自" en_US",加拿大' en_CA',英国' en_UK'等

所以现在作为最佳实践,建议我为不同的英语语言环境维护不同的文件,或者我将所有英语语言环境(en_CA,en_US,en_UK)视为' en' locale并为所有人引用一个文件?

1 个答案:

答案 0 :(得分:1)

像往常一样,这取决于。

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

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

资源回退(这是专家用于上述内容的术语)实施起来可能非常痛苦。当然,通常你会回到基本语言( en 任何 en-XX ),但是你需要知道一些极端情况:葡萄牙语/巴西葡萄牙语,挪威人和中国人。如果是葡萄牙语,您应该使用 pt-BR (即pt-BR.json)以及对 pt pt-XX 的请求回退到 pt-BR ,巴西葡萄牙语现在是标准葡萄牙语。显然,只需创建一个文件pt.json即可轻松完成,并让任何内容回归 pt

对于挪威人和中国人来说都不是这样。

挪威语有两个版本:

  • Norwegian Nynorsk(locale nn-NO
  • NorwegianBokmål(locale nb-NO

还有所谓的宏语言(locale no ) 除非你维护挪威语的两个单独版本(不太可能),你应该使用一个资源文件(即no.json< - 听起来很有趣,不是吗?)并且对于任何 nn-NO , nb-NO nb nn no-NO (I相信只是没有将被覆盖。)

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

  • zh zh-CN zh-SG zh-Hans
  • zh-HG zh-MO zh-TW zh-Hant

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