WPF - Локализация
Локализация - это перевод ресурсов приложения в локализованные версии для определенных культур, которые поддерживает приложение.
Когда вы разрабатываете приложение и оно доступно только на одном языке, вы ограничиваете количество своих клиентов и размер своего бизнеса. Если вы хотите увеличить свою клиентскую базу, что также приведет к росту вашего бизнеса, тогда ваш продукт должен быть доступен и доступен для глобальной аудитории. Экономически эффективнымlocalization вашего продукта - один из лучших и наиболее экономичных способов привлечь больше клиентов.
В WPF легко создавать локализуемые приложения с помощью resxфайл, который является самым простым решением для локализации. Давайте рассмотрим простой пример, чтобы понять, как это работает -
Создайте новый проект WPF с именем WPFLocalization.
В проводнике решений вы увидите файл Resources.resx в папке «Свойства».
Измените модификатор доступа с внутреннего на общедоступный, чтобы он был доступен в файле XAML.
Теперь добавьте имя и значения следующей строки, которые мы будем использовать в нашем приложении.
Сделайте две копии файла Resources.resx с именами Resources.en.resx и Resources.ru-RU.resx. Это соглашения об именах, специфичные для языка и названия страны / региона, и их можно найти в Справочнике по API поддержки национальных языков (NLS) (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, в котором элементы управления создаются и инициализируются с разными свойствами.
<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, как показано ниже.
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 для других культур.