我正在制作一些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. /以这种方式更改应用程序语言是个好主意吗?
答案 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");