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

Windows phone 7 如何在Windows Phone中使用中性语言,windows-phone-7,localization,resources,resx,Windows Phone 7,Localization,Resources,Resx,我面临以下问题: 我已经使用resx文件将我的应用程序翻译成不同的语言。我想在其他应用程序中也使用相同的resx文件 对于不同的应用程序,我应该能够更改默认语言(一些应用程序将只提供西班牙语,其他只提供英语,其他多语言) 我想我可以将资源命名为LanguageStrings.es.resx和LanguageStrings.en.resx,然后使用NeutralResourcesLanguageAttribute设置应用程序的默认语言 但是,当应用程序中没有LanguageStrings.re

我面临以下问题:

  • 我已经使用resx文件将我的应用程序翻译成不同的语言。我想在其他应用程序中也使用相同的resx文件
  • 对于不同的应用程序,我应该能够更改默认语言(一些应用程序将只提供西班牙语,其他只提供英语,其他多语言)
我想我可以将资源命名为LanguageStrings.es.resx和LanguageStrings.en.resx,然后使用NeutralResourcesLanguageAttribute设置应用程序的默认语言

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


我的假设正确吗?我是否遇到了平台错误?我注意到它没有返回使用NeutralResourcesLanguageAttribute定义的语言,而是返回不变的区域性

我相信如果您在csproj的元素中指定支持的语言,那么您需要在支持的区域性中使用您尝试使用的resx。如果您使用的语言被认为是受支持的,而resx不存在,那么您将得到MissingManifestResourceException。如果当前语言不受支持,则将选择中性语言。

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

[汇编:NeutralResourcesLanguage(“en”)]


所有.NET应用程序都是这样工作的。这不是Windows Phone独有的“问题”。

问题在于,对于不同的应用程序(使用相同的资源文件),我需要不同的NeutralResourceLanguage。只要我保留生成的.cs文件并保持更新,编译器就不会在没有固定资源文件的情况下拾取它。没有任何东西可以阻止您使用英语以外的其他语言来获取固定资源文件。只需确保NeutralResourcesLanguageAttribute
与不变语言匹配即可。此外,如果没有不变的资源文件,编译器会选择第一个添加的资源文件作为不变的。这不是构造代码的好方法!是的,但我想在不同的应用程序中使用不同的默认语言(但继续使用相同的文件)。难道我不能使用NeutralResourcesLanguageAttribute设置另一个默认值吗?(对于所有只使用西班牙语的应用程序,不必将x.es.resx重命名为x.resx)为什么要强制用户使用该语言?如果用户选择西班牙语作为语言环境,无论您将什么设置为不变,他们都会得到正确的文件。原因之一是市场似乎在查看NeutralResourcesLanguageAttribute以确定应用程序中使用的语言。这意味着,如果设置为英语,即使只指定西班牙语,我仍然必须提供英语和西班牙语的元数据。