【问题标题】:Using language code (en) or full culture code (e.g. en-AU)?使用语言代码 (en) 还是完整的文化代码(例如 en-AU)?
【发布时间】:2013-02-13 21:01:37
【问题描述】:
我有一个国际化的 C#/WPF 应用程序(某些语言的资源字符串)。
目前我对资源文件使用以下代码:default.resx、de-DE、fr-FR、es-ES、pt-BR、pt-PT、nl-NL 等。
但我有一些问题:
例如对于 nl,有两种变体:nl-NL(荷兰)和 nl-BE。目前我使用 nl-NL,但我想如果来自比利时的人会得到默认文本,因为 nl-BE 没有定义。这是真的吗?
我应该使用 then nl 而不是 nl-NL?
对于某些语言,只定义了一个国家(例如 hu-HU)... 那么 hu 和 hu-HU 之间的区别是什么?我什么都不想,但我想确定。
【问题讨论】:
标签:
c#
wpf
localization
internationalization
【解决方案1】:
资源搜索顺序有点复杂和灵活,参见 MSDN Packaging and Deploying Resources。
对于您的问题注释项目 5:如果它没有找到像 nl-NL 这样的特定文化,它会搜索父文化 (CultureInfo.Parent)。但是父文化不一定是没有国家的文化名称,例如对于zh-CN,它是zh-CHS。另外,可能还有祖父母文化等等……
- 是的
- 是的,但要小心选择正确的父文化名称。不要简单地砍掉这个国家
- 是的,这无关紧要,只是特定的加载速度可能会快一点。另一方面,你永远不知道未来是否会出现同一种语言的另一种特定文化。也许罗马尼亚的匈牙利少数民族拥有自己的 CultureInfo...
【解决方案2】:
是的,您通常希望在像“nl”这样的中立文化中提供资源,如果您无法为 nl-BE 和 nl-NL 本地化资源。如果特定文化不可用,资源管理器将自动回退到父文化。
您的客户是否会对此感到满意,您稍后可能会发现。佛兰芒语和荷兰语非常相似,因此对于这种特定情况,不太可能让他们感到厌烦。巴西对葡萄牙的情况并不那么明确,他们已经有一段时间发展自己的方言,就像美式英语不再是英国式的不同颜色一样。 hu-HU vs hu没关系,选择hu-HU。
背景信息is here.