C# 如何使用中立的语言资源作为后备?

C# 如何使用中立的语言资源作为后备?,c#,.net,xamarin,resx,C#,.net,Xamarin,Resx,我有一个单一的解决方案,其中包括: LocalizationStringRes.resx-持有中立资源,目前使用英语 本地化stringres.en.resx-保存英文翻译值 本地化stringres.de.resx-保存德语翻译值 我的应用程序中还有一个可以选择语言的组合框。目前它包含“德语”和“英语”。此外,我正在检查用户的系统设置的语言 假设用户选择“English”,那么在获取值时将自动使用LocalizationStringRes.en.resx,因为应用程序将查找其中包含en的文

我有一个单一的解决方案,其中包括:

  • LocalizationStringRes.resx
    -持有中立资源,目前使用英语
  • 本地化stringres.en.resx
    -保存英文翻译值
  • 本地化stringres.de.resx
    -保存德语翻译值
我的应用程序中还有一个可以选择语言的组合框。目前它包含“德语”和“英语”。此外,我正在检查用户的系统设置的语言

假设用户选择“English”,那么在获取值时将自动使用
LocalizationStringRes.en.resx
,因为应用程序将查找其中包含
en
的文件

我认为在
LocalizationStringRes.resx
LocalizationStringRes.en.resx
中保留英语翻译是我想要避免的双重数据存储。所以我试着简单地删除
本地化stringres.en.resx

我所期待的:

  • 我希望一旦用户选择英语作为他/她的语言,应用程序将查找一个包含
    en
    的文件。如果没有找到任何,它将自动使用
    LocalizationStringRes.resx
    作为回退
实际发生的情况:

  • LocalizationStringRes.de.resx
    被用作显示德语翻译值的后备方法
如果没有找到相应语言字符串(
en-US
fr-fr
等)的
.resx
文件,如何强制应用程序始终使用中性语言值?

您可以添加

[assembly: NeutralResourcesLanguage("en", UltimateResourceFallbackLocation.MainAssembly)]
转到AssemblyInfo.cs