0

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

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

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

4

1 回答 1

2

像往常一样,这取决于。

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

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

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

挪威人和中国人都不是这种情况。

挪威语有两个版本:

  • 挪威尼诺斯克语 (locale nn-NO )
  • 挪威语 Bokmål (locale nb-NO )

还有所谓的宏语言(locale no)。
除非您维护两个独立版本的挪威语(这不太可能),否则您应该使用一个资源文件(即no.json<- 听起来很有趣,不是吗?)并在任何对nn-NOnb-NO的请求时回退到它,nbnnno-NO(我相信no将被涵盖)。

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

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

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

于 2015-08-29T10:27:57.003 回答