Учебники

WPF — Локализация

Локализация — это перевод ресурсов приложения в локализованные версии для определенных культур, которые поддерживает приложение.

Когда вы разрабатываете свое приложение и ваше приложение доступно только на одном языке, вы ограничиваете количество своих клиентов и размер вашего бизнеса. Если вы хотите увеличить свою клиентскую базу, что также увеличит ваш бизнес, то ваш продукт должен быть доступен и доступен для глобальной аудитории. Экономичная локализация вашего продукта — один из лучших и наиболее экономичных способов охвата большего количества клиентов.

В WPF локализуемые приложения очень легко создавать с помощью файла resx, который является самым простым решением для локализации. Давайте рассмотрим простой пример, чтобы понять, как это работает —

  • Создайте новый проект WPF с именем WPFLocalization .

  • В обозревателе решений вы увидите файл Resources.resx в папке «Свойства».

Создайте новый проект WPF с именем WPFLocalization .

В обозревателе решений вы увидите файл Resources.resx в папке «Свойства».

локализация

  • Измените модификатор доступа с внутреннего на публичный, чтобы он был доступен в файле XAML.

Измените модификатор доступа с внутреннего на публичный, чтобы он был доступен в файле XAML.

Изменения в локализации WPF

  • Теперь добавьте имя и значения следующей строки, которые мы будем использовать в нашем приложении.

Теперь добавьте имя и значения следующей строки, которые мы будем использовать в нашем приложении.

Добавить строковое имя

  • Сделайте две копии файла Resources.resx с именами Resources.en.resx и Resources.ru-RU.resx. Это соглашения об именах, относящиеся к языку и названию страны / региона, и их можно найти на странице Справочника API поддержки национальных языков ( https://msdn.microsoft.com/en-us/goglobal/bb896001.aspx ).

  • Измените значения в Resources.ru-RU.resx на русские слова, как показано ниже.

Сделайте две копии файла Resources.resx с именами Resources.en.resx и Resources.ru-RU.resx. Это соглашения об именах, относящиеся к языку и названию страны / региона, и их можно найти на странице Справочника API поддержки национальных языков ( https://msdn.microsoft.com/en-us/goglobal/bb896001.aspx ).

Измените значения в Resources.ru-RU.resx на русские слова, как показано ниже.

Изменить значения в ресурсах

  • Давайте перейдем в окно дизайна и перетащим три текстовых поля, три надписи и три кнопки.

  • В файле XAML сначала добавьте объявление пространства имен, чтобы использовать ресурсы локализации xmlns: p = «clr-namespace: WPFLocalization.Properties»

  • Установите свойства всех элементов управления, как показано ниже. В этом примере мы не будем использовать жестко закодированные строки для содержимого меток, кнопок и заголовка окна в файле XAML. Мы будем использовать строки, которые определены в файлах * .resx. Например, для Заголовка окна мы используем строку Заголовка, которая определена в файле * .resx, например, «Title =» {x: Static p: Resources.Title} «»

  • Вот файл XAML, в котором элементы управления создаются и инициализируются с различными свойствами.

Давайте перейдем в окно дизайна и перетащим три текстовых поля, три надписи и три кнопки.

В файле XAML сначала добавьте объявление пространства имен, чтобы использовать ресурсы локализации xmlns: p = «clr-namespace: WPFLocalization.Properties»

Установите свойства всех элементов управления, как показано ниже. В этом примере мы не будем использовать жестко закодированные строки для содержимого меток, кнопок и заголовка окна в файле XAML. Мы будем использовать строки, которые определены в файлах * .resx. Например, для Заголовка окна мы используем строку Заголовка, которая определена в файле * .resx, например, «Title =» {x: Static p: Resources.Title} «»

Вот файл XAML, в котором элементы управления создаются и инициализируются с различными свойствами.

<Window x:Class = "WPFLocalization.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:local = "clr-namespace:WPFLocalization" 
   xmlns:p = "clr-namespace:WPFLocalization.Properties"
   Title = "{x:Static p:Resources.Title}" Height = "350" Width = "604">
	
   <Grid> 
      <TextBox x:Name = "textBox" HorizontalAlignment = "Left" Height = "23" 
         Margin = "128,45,0,0" TextWrapping = "Wrap" VerticalAlignment = "Top" Width = "304"/>
			
      <Label x:Name = "label" Content = "{x:Static p:Resources.Name}"
         HorizontalAlignment = "Left" Margin = "52,45,0,0" VerticalAlignment = "Top" Width = "86"/>
			 
      <TextBox x:Name = "textBox1" HorizontalAlignment = "Left" Height = "23" 
         Margin = "128,102,0,0" TextWrapping = "Wrap" VerticalAlignment = "Top" Width = "304"/> 
			
      <Label x:Name = "label1" Content = "{x:Static p:Resources.Address}" 
         HorizontalAlignment = "Left" Margin = "52,102,0,0" VerticalAlignment = "Top" Width = "86"/>
			
      <TextBox x:Name = "textBox2" HorizontalAlignment = "Left" Height = "23" 
         Margin = "128,157,0,0" TextWrapping = "Wrap" VerticalAlignment = "Top" Width = "80"/>
			
      <Label x:Name = "label2" Content = "{x:Static p:Resources.Age}" 
         HorizontalAlignment = "Left" Margin = "52,157,0,0" VerticalAlignment = "Top" Width = "86"/>
			
      <Button x:Name = "button" Content = "{x:Static p:Resources.OK_Button}" 
         HorizontalAlignment = "Left" Margin = "163,241,0,0" VerticalAlignment = "Top" Width = "75"/> 
			
      <Button x:Name = "button1" Content = "{x:Static p:Resources.Cancel_Button}" 
         HorizontalAlignment = "Left" Margin = "282,241,0,0" VerticalAlignment = "Top" Width = "75"/>
			
      <Button x:Name = "button2" Content = "{x:Static p:Resources.Help_Button}" 
         HorizontalAlignment = "Left" Margin = "392,241,0,0" VerticalAlignment = "Top" Width = "75"/> 
   </Grid> 
	
 </Window>
  • Когда приведенный выше код скомпилирован и выполнен, вы увидите следующее окно, которое содержит различные элементы управления.

Когда приведенный выше код скомпилирован и выполнен, вы увидите следующее окно, которое содержит различные элементы управления.

Пример локализации

  • По умолчанию программа использует по умолчанию Resources.resx. Если вы хотите отобразить текст на русском языке, который определен в файле Resources.ru-RU.resx, вам нужно будет явно указать язык при запуске программы в файле App.xaml, как показано ниже.

По умолчанию программа использует по умолчанию Resources.resx. Если вы хотите отобразить текст на русском языке, который определен в файле Resources.ru-RU.resx, вам нужно будет явно указать язык при запуске программы в файле App.xaml, как показано ниже.

using System.Windows;

namespace WPFLocalization {
   /// <summary> 
      /// Interaction logic for App.xaml 
   /// </summary> 
	
   public partial class App : Application {
	
      App() { 
         System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ru-RU");
         //System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en"); 
      } 
   } 
}

Когда вы запустите свое приложение, вы увидите весь текст на русском языке.

Запустить приложение

Мы рекомендуем вам выполнить приведенный выше код и создать файлы resx для других культур.