.net resx文件和本地化

时间:2012-02-05 22:46:01

标签: .net wpf localization internationalization resx

认为我明白了,但有几个方面令我感到困惑。假设我想在德国,西班牙和美国为MyApp本地化字符串。

MyApp.resx
MyApp.de-DE.resx
MyApp.es-ES.resx
MyApp.en-US.resx // this *feels* redundant

最后一个rex文件(“en”)将具有与“中性”文件相同的键和值,因为我是美国开发人员,但是......我需要两者吗?

我可以猜到答案但是看起来令人困惑,尽管或许是因为所有的msdn文档解释了最终的失败,卫星和中性语言。

有经验的国际开发人员可以解释为什么或为什么不以(真的)简单的方式解释?如果我在做WPF,Silverlight,ASP或其他一些.Net变体会不会有问题?

干杯,
Berryl

2 个答案:

答案 0 :(得分:4)

如果主程序集(MyApp.resx)中的资源属于en-US文化,则无需创建MyApp.en-US.resx文件。如果没有找到此文化的附属程序集,资源管理器将回退到主程序集中的资源。

答案 1 :(得分:0)

同意托马斯。如果您的应用程序的主要语言是en-us,那么您只需将所有字符串放在主要资源中,并将此字符串的所有翻译(例如德语,法语等)放在相应的卫星资源文件中。

例如 - 主要语言是En-Us,但你也想支持英国,德国,西班牙语。因此,您将所有原始字符串放在默认资源文件中,例如Resources.resx。然后创建Resources.en-GB.resx,Resources.de-De.resx,Resources.es-ES.resx并放置原始字符串的翻译。

如果美国和英国版本的某些字符串相同,则只需从Resources.en-GB.resx文件中删除此字符串即可。因为将检查第一个附属程序集的资源,并且如果找不到资源字符串 - 将使用该字符串的主程序集版本。