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.