C#WPF本地化-忽略其他区域性并加载默认资源

C#WPF本地化-忽略其他区域性并加载默认资源,c#,wpf,C#,Wpf,我正在尝试本地化我的应用程序,我创建了几个资源。[culture].resx,但程序会忽略它们,并始终加载默认的资源。resx 我在App construtor(和OnStartup事件)中有此代码 我的资源称为resources.en US.resx,resources.cs CZ.resx和resources.resx WPF中的代码是 xmlns:p="clr-namespace:WpfThermalLabelEditorApp.Properties" Title="{x:Static p

我正在尝试本地化我的应用程序,我创建了几个
资源。[culture].resx
,但程序会忽略它们,并始终加载默认的
资源。resx

我在App construtor(和OnStartup事件)中有此代码

我的资源称为
resources.en US.resx
resources.cs CZ.resx
resources.resx

WPF中的代码是

xmlns:p="clr-namespace:WpfThermalLabelEditorApp.Properties"
Title="{x:Static p:Resources.Title}" 

这应该加载en-US本地化,但它没有。加载默认值。我试图删除AssemblyInfo,甚至将
标记放入csproj

不确定这是否是答案,但FWIW:我总是这样设置
CurrentCulture
CurrentUICulture

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageAbbreviation);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(languageAbbreviation);
并确保再次检查您使用的缩写是否与所有参考相同。这会解决你的问题

EDIT1:确保资源文件设置为公共,在查看资源文件时,访问修饰符应位于顶部附近。仔细检查这是否为“公共”和“重建”。另外,要调用资源文件密钥,请执行以下操作:

在哪里

  • “WPFAApplication2”将替换为您的项目名称
  • “Resource1”将替换为资源文件的名称(不带区域性id,例如,对于您的情况,它将只是
    资源
  • “myname”将替换为所需的密钥

    • 两天后,我解决了我的问题。我的解决方案是正确的。我不知道出了什么问题,但我已经创建了一个新项目,将我所有的数据移动到了一个新的项目中,突然间,所有的事情都变得很有魅力

      以下是一些有用的链接:


        • 我遇到了同样的问题,解决办法是清理和重建项目。无需创建新项目。

          @Shocky我不确定XAML是否是这样,但在html中,我使用razor引擎调用我的设置,如:
          @(PageText.POST_主题)
          。在本例中,我的资源文件称为PageText,我正在访问的密钥是POST_SUBJECT。仍然为空。它仍然使用默认资源。是的,我的资源都是公共的,否则我会出错。
          Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageAbbreviation);
          Thread.CurrentThread.CurrentUICulture = new CultureInfo(languageAbbreviation);