c# - 本地化 - 在wpf app中更改语言

时间:2016-06-13 15:41:53

标签: c# .net wpf

我正在制作一些wpf应用程序,我需要更改语言的选项。我的解决方案中有一个名为Resorces的文件夹,我存储了所有resx文件 - 实际上是language.resx和language.en-EN.resx。我的XAML看起来像:

<Window x:Class="CoinCatalogue.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:CoinCatalogue"
    xmlns:resx="clr-namespace:CoinCatalogue.Resources"
    mc:Ignorable="d"
    Title="{x:Static resx:language.WindowName}" Height="480" Width="640">
<Grid>
    <Menu x:Name="menu" HorizontalAlignment="Left" Height="auto" VerticalAlignment="Top" Width="517">
        <MenuItem x:Name="File" Header="{x:Static resx:language.File}">
            <MenuItem x:Name="Open" Header="{x:Static resx:language.Open}"/>
        </MenuItem>
    </Menu>

</Grid>

一切都很好 - 我可以访问app中的字符串。在我的主要课程中,我试图用行改变文化:

language.Culture = new System.Globalization.CultureInfo("en-EN");

但是我的应用程序没有发生。这一行在InitializeComponent();之前。

我做错了什么?我正在使用Visual Studio 2015. /以这种方式更改应用程序语言是个好主意吗?

1 个答案:

答案 0 :(得分:0)

我认为你如何改变文化是一个问题。

我只是将快速示例放在一起,我有以下resx文件:

  

Resources.en-US.resx

     

Resources.fr-FR.resx

     

Resources.resx

如果我在不尝试更改文化的情况下运行应用程序,我会从Resources.en-US.resx文件中获取字符串,因为这是我的默认设置。如果我在InitializeComponent之前添加此代码,我的字符串来自Resources.fr-FR.resx文件:

CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fr-FR");
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("fr-FR");