如何在Windows Phone中使用中性语言

时间:2011-12-18 14:53:12

标签: windows-phone-7 localization resources resx

我面临以下问题:

  • 我已使用resx文件将我的应用程序翻译成不同的语言。我也希望在其他应用程序中使用相同的resx文件。
  • 对于不同的应用,我应该可以更改默认语言(某些应用只能以西班牙语提供,其他应用只能以英语提供,其他应用程序可以使用多种语言)

我想我可以将资源命名为LanguageStrings.es.resx和LanguageStrings.en.resx,并使用NeutralResourcesLanguageAttribute设置应用程序的默认语言。

但是,当应用程序中没有LanguageStrings.resx(不变文件)时,应用程序似乎中断(MissingManifestResourceException)。我认为资源管理器应该使用NeutralResourcesLanguageAttribute中的设置来查找正确的资源(例如,回退到西班牙语)而不是查找中性文件。

我的假设是否正确,我是否遇到了平台错误?我注意到ResourceManager.GetNeutralResourcesLanguage没有返回使用NeutralResourcesLanguageAttribute定义的语言,而是返回不变文化

2 个答案:

答案 0 :(得分:2)

如果没有不变的资源文件(LanguageStrings.resx),编译器将不会选择它。您应该让英语资源文件(当前LanguageStrings.en.resx)成为不变文件,即。文件名中没有 .en ,然后设置

[assembly: NeutralResourcesLanguage("en")]

所有.NET应用程序都以这种方式工作。这对Windows Phone来说不是一个独特的“问题”。

答案 1 :(得分:0)

我相信如果您在csproj中的元素中指定了您的语言 - 您需要在支持的文化中使用您尝试使用的resx。如果您使用所谓支持的语言且resx不在那里 - 您将获得MissingManifestResourceException。如果不支持当前语言,将会选择中性语言。