WPF - Localização
Localização é a tradução dos recursos do aplicativo em versões localizadas para as culturas específicas que o aplicativo suporta.
Quando você desenvolve seu aplicativo e ele está disponível em apenas um idioma, você está limitando o número de clientes e o tamanho do seu negócio. Se você deseja aumentar sua base de clientes, o que também aumentará seus negócios, seu produto deve estar disponível e acessível para um público global. Custo-beneficiolocalization do seu produto é uma das maneiras melhores e mais econômicas de alcançar mais clientes.
No WPF, os aplicativos localizáveis são muito fáceis de criar com resxarquivo que é a solução mais simples para localização. Vamos dar um exemplo simples para entender como funciona -
Crie um novo projeto WPF com o nome WPFLocalization.
Em seu explorador de soluções, você verá o arquivo Resources.resx na pasta Propriedades.
Altere o modificador de acesso de interno para público para que possa ser acessado no arquivo XAML.
Agora adicione o nome e os valores da seguinte string que usaremos em nosso aplicativo.
Faça duas cópias do arquivo Resources.resx com os nomes Resources.en.resx e Resources.ru-RU.resx. Essas são convenções de nomenclatura específicas para o idioma e o nome do país / região e podem ser encontradas em National Language Support (NLS) API Reference (https://msdn.microsoft.com/en-us/goglobal/bb896001.aspx ) página.
Altere os valores em Resources.ru-RU.resx para palavras russas, conforme mostrado abaixo.
Vamos para a janela de design e arrastar três caixas de texto, três rótulos e três botões.
No arquivo XAML, primeiro adicione a declaração de namespace para usar os recursos de localização xmlns: p = "clr-namespace: WPFLocalization.Properties"
Defina as propriedades de todos os controles conforme mostrado abaixo. Neste exemplo, não usaremos strings codificadas para o conteúdo de rótulos, botões e Título da janela no arquivo XAML. Estaremos usando as strings que são definidas em arquivos * .resx. Por exemplo, para o Título da janela, usamos a string Título que é definida no arquivo * .resx como este “Título =" {x: Estático p: Recursos.Título} "”
Aqui está o arquivo XAML no qual os controles são criados e inicializados com propriedades diferentes.
<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>
Quando o código acima for compilado e executado, você verá a seguinte janela que contém diferentes controles.
Por padrão, o programa usa o padrão Resources.resx. Se quiser mostrar o texto no idioma russo definido no arquivo Resources.ru-RU.resx, você precisará definir a cultura explicitamente quando o programa iniciar no arquivo App.xaml, conforme mostrado abaixo.
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");
}
}
}
Ao executar seu aplicativo, você verá todo o texto no idioma russo.
Recomendamos que você execute o código acima e crie arquivos resx para outras culturas também.