我有一个目前支持' en'和' fr' locales,并为每个区域设置维护一个语言文件,即' en.json'和' fr.json'
现在,对于来自美国的用户,语言环境来自" en_US",加拿大' en_CA',英国' en_UK'等
所以现在作为最佳实践,建议我为不同的英语语言环境维护不同的文件,或者我将所有英语语言环境(en_CA,en_US,en_UK)视为' en' locale并为所有人引用一个文件?
答案 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 。
对于挪威人和中国人来说都不是这样。
挪威语有两个版本:
还有所谓的宏语言(locale no )
除非你维护挪威语的两个单独版本(不太可能),你应该使用一个资源文件(即no.json
< - 听起来很有趣,不是吗?)并且对于任何 nn-NO , nb-NO , nb , nn 和 no-NO (I相信只是没有将被覆盖。)
中国人更复杂。您可能听说过简体中文(locale zh-Hans )和繁体中文( zh-Hant )。如果您需要本地化为中文,那么维护两个单独的中文文件(即zh-Hans.json
和zh-Hant.json
)并回退任何请求是有意义的,如下所示:
我希望它能让你更好地理解。值得考虑的是未来的本地化计划,以实现资源回退机制尽可能简单(但并不简单)。如果您需要支持英语,法语,意大利语,德语和西班牙语等语言,那么实施复杂规则是没有意义的 - 只需检查xx-XX.json
是否存在,如果存在则提供服务,如果不是,请检查{是否{ {1}}存在(提供它......)或回退到默认应用程序语言(xx.json
,我猜?)。