WPF本地化问题

Posted

技术标签:

【中文标题】WPF本地化问题【英文标题】:WPF localization issue 【发布时间】:2015-08-26 08:59:15 【问题描述】:

出于测试目的,我正在尝试本地化一个虚拟应用程序,以查看最符合我们需求的应用程序。

我想试试WPF Localization Extension。

所以我:

    创建了一个全新的 WPF 应用程序,创建了一个主窗口。

    通过 nugget 添加了对 WPF 本地化扩展的引用。

    创建了一个名为 Localization.resx 和一个名为 Localization.fr.resx 的 resx

    我在两个 resx 中都为“WelcomeText”键添加了一个文本。

    在主窗口中,我输入:

    xmlns:lex="http://wpflocalizeextension.codeplex.com"
    lex:LocalizeDictionary.DesignCulture="en"
    lex:ResxLocalizationProvider.DefaultAssembly="LocalizedApplication"
    lex:ResxLocalizationProvider.DefaultDictionary="Localization"
    

    在窗口声明中

    我在网格中添加了一个TextBlock<TextBlock Text="lex:Loc WelcomeText" />

如果我运行应用程序,我会以英文显示文本。

现在我在 App.cs 构造函数中添加以下内容:

    public App():base()
    
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr");
        Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture;
        CultureInfo.DefaultThreadCurrentCulture = Thread.CurrentThread.CurrentUICulture;
        CultureInfo.DefaultThreadCurrentUICulture = Thread.CurrentThread.CurrentUICulture;
    

在 FR 中测试应用程序。我重建并重新启动,但我仍然收到英文消息。

首先:我做错了什么? 那么:我应该如何在运行时改变当前的文化?

【问题讨论】:

【参考方案1】:

其实我想我刚刚找到了答案。

它似乎不使用 CurrentCulture,你必须设置它:

LocalizeDictionary.Instance.Culture = new CultureInfo("fr");

抱歉这个问题

【讨论】:

以上是关于WPF本地化问题的主要内容,如果未能解决你的问题,请参考以下文章

本地化 WPF 应用程序的最佳方法是啥,没有 LocBAML?

如何在 WPF 窗口中重新加载所有本地化字符串?

[WPF]本地化入门

基于 WPF 模块化架构下的本地化设计实践

[WPF]本地化入门

WPF应用程序本地化方法(详细)