我决定将本地化添加到C# WPF MVVM,在搜索互联网后,我发现了几个选项如何做到这一点,但没有一个在我的情况下工作,因为文件资源不存在后,我命名为lang. en-us. resx。
这是UserControl的代码
xmlns:lang="clr-namespace:tSeracherr.WPF.Languages">
<TextBlock Text="{x:Static lang:Lang.Home}"
FontSize="28"
Width="120"
TextAlignment="Center"
HorizontalAlignment="Center"
Margin="5"
Style="{DynamicResource TextBlockInListBox}"/>
我试过这种改变语言的方法,但是不起作用
public ICommand UkrLang
{
get
{
return ChangeLanguage("uk-uk");
}
}
private ICommand ChangeLanguage(string langCode)
{
return new DelegateCommand(obj =>
{
var culture = new CultureInfo(langCode);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
Process.Start(Process.GetCurrentProcess().MainModule.FileName);
Application.Current.Shutdown();
});
}
我也试过这个方法,但我不知道如何正确地完成它,因为我的选项都不起作用。
public ICommand UkrLang
{
get
{
return ChangeLanguage("uk-uk");
}
}
private ICommand ChangeLanguage(string langCode)
{
return new DelegateCommand(obj =>
{
Properties.Settings.Default.LanguageCode = langCode;
Properties.Settings.Default.Save();
// dont now
Process.Start(Process.GetCurrentProcess().MainModule.FileName);
Application.Current.Shutdown();
});
}
1条答案
按热度按时间at0kjp5o1#
您必须保留所选的语言/区域性,以支持应用程序的重新启动。
有一个appliction设置权内置,你只需要使用它们。
当您启动应用程序时,首先要读取该设置并设置区域性。
命令代码现在应该如下所示
顺便说一句根据Country Language List有已知的语言代码
uk-UA
(和主uk
)。uk-uk
未知。前两个字母代表语言,后两个字母代表国家。
德语
de
f.i.德国de-DE
,奥地利为de-AT
,瑞士为de-CH
。