WPF - Localizzazione
La localizzazione è la traduzione delle risorse dell'applicazione in versioni localizzate per le impostazioni cultura specifiche supportate dall'applicazione.
Quando sviluppi la tua applicazione e la tua applicazione è disponibile in una sola lingua, stai limitando il numero dei tuoi clienti e le dimensioni della tua attività. Se vuoi aumentare la tua base di clienti che aumenterà anche la tua attività, allora il tuo prodotto deve essere disponibile e raggiungibile da un pubblico globale. Convenientelocalization del tuo prodotto è uno dei modi migliori e più economici per raggiungere più clienti.
In WPF, le applicazioni localizzabili sono molto facili da creare resxfile che è la soluzione più semplice per la localizzazione. Facciamo un semplice esempio per capire come funziona:
Crea un nuovo progetto WPF con il nome WPFLocalization.
In Esplora soluzioni, vedrai il file Resources.resx nella cartella Proprietà.
Modificare il modificatore di accesso da interno a pubblico in modo che possa essere accessibile nel file XAML.
Ora aggiungi il nome ei valori della seguente stringa che useremo nella nostra applicazione.
Crea due copie del file Resources.resx con i nomi Resources.en.resx e Resources.ru-RU.resx. Queste sono convenzioni di denominazione specifiche per la lingua e il nome del paese / regione e possono essere trovate su National Language Support (NLS) API Reference (https://msdn.microsoft.com/en-us/goglobal/bb896001.aspx ) pagina.
Modificare i valori in Resources.ru-RU.resx in parole russe, come mostrato di seguito.
Andiamo alla finestra di progettazione e trascina tre caselle di testo, tre etichette e tre pulsanti.
Nel file XAML, aggiungi prima la dichiarazione dello spazio dei nomi per utilizzare localize resources xmlns: p = "clr-namespace: WPFLocalization.Properties"
Impostare le proprietà di tutti i controlli come mostrato di seguito. In questo esempio, non useremo stringhe hardcoded per il contenuto di etichette, pulsanti e titolo della finestra nel file XAML. Useremo le stringhe che sono definite nei file * .resx. Ad esempio, per il titolo della finestra, utilizziamo la stringa del titolo definita nel file * .resx in questo modo "Title =" {x: Static p: Resources.Title} ""
Ecco il file XAML in cui vengono creati e inizializzati i controlli con proprietà diverse.
<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 il codice sopra è stato compilato ed eseguito, vedrai la seguente finestra che contiene diversi controlli.
Per impostazione predefinita, il programma utilizza il file Resources.resx predefinito. Se si desidera mostrare il testo in lingua russa definito nel file Resources.ru-RU.resx, sarà necessario impostare esplicitamente la cultura all'avvio del programma nel file App.xaml come mostrato di seguito.
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");
}
}
}
Quando esegui la tua applicazione, vedrai tutto il testo in lingua russa.
Ti consigliamo di eseguire il codice precedente e di creare file resx anche per altre culture.