我面临以下问题:
我想我可以将资源命名为LanguageStrings.es.resx和LanguageStrings.en.resx,并使用NeutralResourcesLanguageAttribute设置应用程序的默认语言。
但是,当应用程序中没有LanguageStrings.resx(不变文件)时,应用程序似乎中断(MissingManifestResourceException)。我认为资源管理器应该使用NeutralResourcesLanguageAttribute中的设置来查找正确的资源(例如,回退到西班牙语)而不是查找中性文件。
我的假设是否正确,我是否遇到了平台错误?我注意到ResourceManager.GetNeutralResourcesLanguage没有返回使用NeutralResourcesLanguageAttribute定义的语言,而是返回不变文化
答案 0 :(得分:2)
如果没有不变的资源文件(LanguageStrings.resx
),编译器将不会选择它。您应该让英语资源文件(当前LanguageStrings.en.resx
)成为不变文件,即。文件名中没有 .en ,然后设置
[assembly: NeutralResourcesLanguage("en")]
所有.NET应用程序都以这种方式工作。这对Windows Phone来说不是一个独特的“问题”。
答案 1 :(得分:0)
我相信如果您在csproj中的元素中指定了您的语言 - 您需要在支持的文化中使用您尝试使用的resx。如果您使用所谓支持的语言且resx不在那里 - 您将获得MissingManifestResourceException。如果不支持当前语言,将会选择中性语言。