我尝试本地化我的应用,我创建了多个Resources.[culture].resx
,但程序忽略了所有这些并始终加载默认Resources.resx
。
我在App construtor(以及OnStartup事件中)中有此代码
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
我的资源名为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,甚至将<UICulture>
标签放入csproj
答案 0 :(得分:1)
不确定这是不是答案,但FWIW:我总是这样设置CurrentCulture
和CurrentUICulture
;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageAbbreviation);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(languageAbbreviation);
请务必仔细检查您使用的缩写是否与所有参考文献相同。这应该可以解决你的问题。
EDIT1 :确保您的资源文件设置为public,当您查看资源文件时,访问修饰符应该位于顶部附近。仔细检查这说公开和重建。另外,要调用资源文件密钥,请执行以下操作:
<TextBlock xmlns:local="clr-namespace:WpfApplication2" Text="{x:Static local:Resource1.myname}"/>
WHERE ...
Resources
)答案 1 :(得分:0)
好吧,2天后我解决了问题。我的解决方案是对的。我不知道出了什么问题,但是我已经创建了一个新项目,将我的所有数据都移到了新项目中,突然间一切都变得有魅力了。
以下是一些有用的链接:
答案 2 :(得分:0)
我遇到了同样的问题,解决方案是清理并重建项目。无需创建新项目。