我有一个使用第三方控件(例如http://navigationpane.codeplex.com)的WPF应用程序,该控件也提供了翻译后的UI(尤其是德语,这是我的应用程序的默认语言,也是唯一的语言)。在Win7上,所有内容均以德语显示,在WinXP系统(德语UI)上,第3方控件仍会加载英语资源。
我现在已经尝试过了
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE");
还有这个
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("de-DE");
这(导致无法加载任何XAML文件,并且此后应用程序几乎损坏了):
<UICulture>en-US</UICulture>
还有这个
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
还有这个:
[assembly: NeutralResourcesLanguageAttribute("de")]
现在我几乎没有主意了。还有其他建议吗?
除了
UICulture
根本不起作用外,我使用了App.OnStartup
中结合的上述所有方法,但效果不理想。 最佳答案
问题实际上要简单得多,但我完全没有想到:转换后的资源位于附属* .resources.dll程序集中。在我自己的计算机上,编译器将这些文件复制到测试计算机(在本例中为XP)的输出目录(到相应的语言代码子目录)中,但这些文件丢失了,因为它们尚未添加到安装程序包中。
添加* .resources.dll文件后,所有文件均应正常工作。