Localization 我应该为不同的地区维护不同的文件吗?

Localization 我应该为不同的地区维护不同的文件吗?,localization,internationalization,locale,l10n.js,Localization,Internationalization,Locale,L10n.js,我有一个目前支持“en”和“fr”语言环境的应用程序,并为每个语言环境维护一个语言文件,即“en.json”和“fr.json” 现在对于来自美国的用户来说,locale是“en_US”、加拿大的“en_CA”、英国的“en_UK”等 因此,现在作为一种最佳实践,是建议我为不同的英语语言环境维护不同的文件,还是我将所有英语语言环境(en_CA、en_US、en_UK)视为“en”语言环境,并参考所有文件?视情况而定 通常,您只有一个英文文件,其中包含英文国际邮件。在这种情况下,您不会为每个版本维

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

现在对于来自美国的用户来说,locale是“en_US”、加拿大的“en_CA”、英国的“en_UK”等

因此,现在作为一种最佳实践,是建议我为不同的英语语言环境维护不同的文件,还是我将所有英语语言环境(en_CA、en_US、en_UK)视为“en”语言环境,并参考所有文件?

视情况而定

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

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

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

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

挪威语有两种版本:

  • 挪威尼诺尔斯克(地区nn编号)
  • 挪威Bokmål(现场编号)
还有所谓的宏语言(区域设置编号)。
除非您维护两个不同版本的Norwegian(不太可能),否则您应该使用一个资源文件(即
no.json