У меня есть приложение WPF, которое поддерживает несколько языков.
Я видел этот ответ на вопрос Лучший способ реализовать многоязычный (с использованием файлов .resx) здесь, в Stackoverflow. Все прекрасно работает, за исключением того, что язык не меняется во время выполнения.
Я видел этот ответ на вопрос Как изменить CurrentUICulture во время выполнения здесь, на Stackoverflow, но, к сожалению, его ответ не меняется помогите мне, потому что ссылка, которую он разместил в своем решении, не работает.
Я видел много статей в Google, но безуспешно.
Небольшая моя попытка ( .cs ):
private void EventSetter_OnHandler(object sender, MouseButtonEventArgs e)
{
string item = ((ComboBoxItem)sender).Content.ToString();
switch (item)
{
case "English":
Console.WriteLine("English");
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-GB");
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-GB");
Product.Language.Resources.Culture = new System.Globalization.CultureInfo("en-GB");
break;
case "German":
Product.Language.Resources.Culture = new System.Globalization.CultureInfo("de-DE");
Console.WriteLine("German");
break;
default:
Console.WriteLine("none");
break;
}
}
XAML:
<Grid>
<StackPanel>
<Label x:Name="LabelHeader1" Content="{x:Static language1:Resources.LanguageTL}" />
<Label x:Name="LabelHeader2" Content="{x:Static language1:Resources.HomeTL}" />
<Label x:Name="LabelHeader3" Content="{x:Static language1:Resources.SkyTL}" />
<ComboBox x:Name="Languages">
<ComboBoxItem IsSelected="True">English</ComboBoxItem>
<ComboBoxItem>German</ComboBoxItem>
<ComboBox.ItemContainerStyle>
<Style>
<EventSetter Event="ComboBox.PreviewMouseDown" Handler="EventSetter_OnHandler" />
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
</StackPanel>
</Grid>
Ключи сохраняются в .resx
файлах:
И спасибо за помощь