Интернационализация WPF с использованием файлов .resx и обновлением локали во время выполнения

#wpf #internationalization #runtime #locale #resx

#wpf #интернационализация #время выполнения #локаль #resx

Вопрос:

Может ли кто-нибудь показать лучшее решение для интернационализации приложения WPF для двух разных языков с использованием файлов .resx для каждой локали. Мне также хотелось бы иметь возможность переключать локали на лету и изменять содержимое текстовых компонентов xaml во время выполнения

Ответ №1:

вот ссылка, которая шаг за шагом объясняет, что вам нужно. ссылка: http://www.thebestcsharpprogrammerintheworld.com/2017/07/26/localizing-a-wpf-program-using-c /

XAML:

 <Label Content="{x:Static properties:Resources.LabelAddress}" Height="28" HorizontalAlignment="Left" Margin="35,103,0,0" Name="labelAddress" VerticalAlignment="Top" />

<TextBox Height="23" HorizontalAlignment="Left" Margin="119,26,0,0" Name="textBoxFName" VerticalAlignment="Top" Width="152" />
  

Код, лежащий в основе:

     using System.Globalization;
    using System.Configuration;

    Properties.Resources.Culture = new CultureInfo(ConfigurationManager.AppSettings["Culture"]);

//To change the locale in runtime you need to set

    public static void SetLanguage(string locale)
    {
        if (string.IsNullOrEmpty(locale)) locale = "en-US";
        Properties.Resources.Culture= new System.Globalization.CultureInfo(locale);
    }
  

AppConfig.cs:

 <appSettings>
    <add key="Culture" value="zh-CN" />
  </appSettings>