2013-02-13 37 views
1

我在国际化的C#/ WPF中有一个应用程序(某些语言的资源字符串)。使用语言代码(en)或完整的文化代码(例如en-AU)?

目前我使用的资源文件如下代码:default.resx,DE-DE,FR-FR,ES-ES,PT-BR,PT-PT,NL-NL等

但我有一些问题:

  1. eg对于nl,有两种变体:nl-NL(荷兰)和nl-BE。目前我使用nl-NL,但我想如果来自比利时的人会得到默认文本,因为nl-BE没有定义。这是真的?

  2. 我应该用nl而不是nl-NL吗?

  3. 对于某些语言,只定义了一个国家(例如hu-hu)......那么hu和hu-hu之间的区别是什么?我想除了我想确定之外什么都没有。

回答

2

资源搜索顺序有点复杂和灵活,请参阅MSDN Packaging and Deploying Resources

对于您的问题注释项目5:如果它没有找到特定的文化,如nl-NL,它会搜索父文化(CultureInfo.Parent)。但是,父母文化不一定是没有国家的文化名称,例如zh-CN就是zh-CHS。此外,还有可能是祖父母文化等等...

  1. 是的,但要注意选择合适的母文化名。不要简单地砍掉国家
  2. 是的,没关系,除了具体可能加载一点点快。另一方面,你永远不知道未来是否会有相同语言的另一种特定文化。也许在说罗马尼亚的匈牙利少数民族都有自己的CultureInfo ...
1

是的,你通常要提供的资源在一个中立的文化,如“NL”如果你不能给它本地化为两种nl-BE和nl-NL。如果特定文化不可用,资源管理器将自动回退到父文化。

无论您的客户会对此感到满意,您可能会在以后找到答案。佛兰德语和荷兰语非常相似,因此对于这种特定情况,它不太可能让他们烦恼。对于巴西队和葡萄牙队来说,这并不是那么明确,他们有一段时间来发展他们自己的方言,就像美国英语不再是英国人一样,颜色也不一样。胡胡对胡,胡胡并不重要。

背景信息is here