Le recenti tendenze del negozio dimostrano che l'offerta della tua app in inglese coprirà solo il 25% circa dei clienti Windows Phone. L'aggiunta di spagnolo, francese, mandarino, russo e tedesco può aumentare la copertura di oltre il 75% dei clienti di Windows Phone.
In questo tutorial, ti insegnerò come localizzare un'app di Windows Phone 8 per raggiungere più potenziali clienti. Ti mostrerò come configurare il tuo progetto Windows Phone 8 in modo che l'intera interfaccia utente, inclusi i messaggi di errore, possa essere localizzata. Alla fine del tutorial, avrai imparato come preparare la tua app in modo che possa essere tradotta in più lingue.
Considera le seguenti best practice per creare un'app che possa essere facilmente localizzata:
Discuteremo dapprima il supporto linguistico e culturale offerto da Windows Phone 8 e discutermo quindi i passaggi necessari per preparare un'app per la localizzazione. Dopodiché, vedremo come creare una barra dell'applicazione localizzata. Discuteremo infine su come testare un'applicazione localizzata.
Numeri, valute, data e ora sono formattati in modo diverso in varie culture. Ogni cultura supportata è elencata nel CultureInfo
classe. Il CultureInfo
classe espone le proprietà per accedere ai dati del formato della regione per una cultura specifica. Puoi anche usare il CultureInfo
classe con un codice cultura per accedere alle regole di formattazione e ordinamento incorporate per quella cultura.
Il linguaggio di visualizzazione determina il carattere dell'interfaccia utente predefinito. L'interfaccia utente di Windows Phone 8.1 è localizzata in 50 lingue, ma la tua app può visualizzare una più ampia selezione di lingue. Quando aggiungi il supporto all'app per ulteriori lingue, Visual Studio genera un .resx file per ogni lingua.
Il InitializeLanguage
funzione nel app.xaml.cs il file imposta l'app RootFrame.Language
in base al valore del AppResources.ResourceLanguage
risorsa.
Nuovi progetti e modelli per le app XAML di Windows Phone 8 offrono numerose nuove funzionalità utili:
LocalizedStrings
la classe helper è già configurata per fornire un accesso facile alle risorse che corrispondono alla cultura corrente di un'app.Vediamo come funziona tutto ciò creando un'app di esempio, con l'inglese come lingua di base.
Per prima cosa leghiamo gli elementi di testo XAML alle risorse stringa.
Copia ogni stringa codificata nell'XAML dell'app che deve essere localizzata in una nuova riga nella tabella delle stringhe del tuo AppResources.resx file.
Quindi, indirizzare gli elementi XAML a questa risorsa stringa aggiungendo il nome univoco e una clausola di binding standard al posto del valore hardcoded.
Il TextBlock
mostrato di seguito è associato utilizzando la risorsa stringa al posto del testo hard-coded.
Cerca nel code-behind del progetto per i luoghi in cui il codice modifica un attributo testuale di un elemento dell'interfaccia utente. Sostituisci il valore hard-coded con un riferimento alla risorsa stringa per ciascun elemento.
ApplicationBarMenuItem about_appBarMenuItem = new ApplicationBarMenuItem (AppResources.AppBarAboutMenuItem);
Aggiungere lingue a un progetto Windows Phone 8 in Visual Studio è semplice. Passare alla pagina delle proprietà del progetto e selezionare le lingue che si desidera supportare dal Culture supportate elenco.
Nel progetto di esempio, ho aggiunto Cinese semplificato) e Spagnolo (Spagna), i cui codici locali sono zh-Hans e es-ES, rispettivamente. Seleziona le lingue che vuoi che la tua app supporti in Culture supportate box sul progetto Proprietà pagina.
Quando si salva il progetto, Visual Studio crea un AppResources.resx file per ogni locale. Il file di risorse appena creato è pre-compilato con le risorse esistenti dal principale AppResources.resx file.
Ogni file di risorse include due risorse speciali nominate ResourceLanguage
e ResourceFlowDirection
. Queste due risorse vengono utilizzate quando il InitializeLanguage
il metodo è chiamato dal app.xaml.cs costruttore. I loro valori vengono controllati automaticamente per garantire che corrispondano alla cultura del file di risorse caricato in fase di esecuzione.
Il ResourceLanguage
il valore è inizializzato con il nome locale del file di risorse e viene utilizzato per impostare il RootFrame.Language
valore. Il ResourceFlowDirection
il valore è impostato sulla direzione tradizionale di quella lingua delle risorse.
Nota che ResourceLanguage
e ResourceFlowDirection
può essere modificato per allinearlo allo stile di progettazione della tua app.
Il Toolkit di app multilingue (MAT), che è integrato in Visual Studio, fornisce supporto per la traduzione, gestione dei file di traduzione e strumenti di localizzazione per creare app Windows Phone e Windows Store. Ecco alcuni vantaggi dell'utilizzo dell'app Toolkit multilingue:
Per iniziare a utilizzare il kit di app multilingue per il tuo progetto Windows Phone, scarica e installa l'estensione di Visual Studio da MSDN. Con il toolkit installato, selezionare il progetto e selezionare Abilita il kit di strumenti per app multilingue dal Utensili menu come mostrato di seguito.
Si noti che le risorse localizzate sono definite per progetto, non per soluzione. Ciò significa che l'attenzione di Visual Studio deve essere all'interno del progetto per il Abilita il kit di strumenti per app multilingue opzione disponibile da Utensili menu.
Dopo aver abilitato il Toolkit di app multilingue, Visual Studio aggiungerà file al Risorsa cartella del tuo progetto, uno di loro con un nuovo tipo e nome, AppResources.qps.ploc.xlf. Il .xlf estensione si riferisce al formato di file standard XLIFF che ho menzionato in precedenza.
Altre lingue possono essere aggiunte tramite il Toolkit di app multilingue. Ciò si traduce in una nuova cultura supportata aggiunta al tuo progetto. Inoltre, causa l'aggiunta di una lingua supportata nel progetto WMAppManifest.xml.
Per tradurre le risorse in Cinese semplificato) e Spagnolo (Spagna), fare clic con il tasto destro del mouse su .xlf file e selezionare Genera traduzioni automatiche dal menu contestuale. Applicare le traduzioni e ricostruire il progetto per vedere le modifiche che si riflettono nel .resx file per le due lingue aggiuntive.
Puoi aggiungere una barra app a una pagina nella tua app, nella pagina XAML o usando C # nella pagina code-behind. ApplicationBar
non è un DependencyObject
e non supporta i collegamenti. Ciò significa che se devi localizzarlo, allora costruisci il ApplicationBar
da code-behind C #.
Quando viene creato un nuovo progetto Windows Phone 8 o Windows Phone 8.1 Silverlight, viene aggiunto un codice commentato per localizzare la barra dell'applicazione MainPage.xaml.cs per impostazione predefinita. Rimuovi il commento dal metodo BuildLocalizedApplicationBar
e aggiungi i pulsanti, le voci di menu e le risorse associate che desideri utilizzare nella tua app.
private void BuildLocalizedApplicationBar () // Imposta ApplicationBar della pagina su una nuova istanza di ApplicationBar. ApplicationBar = new ApplicationBar (); // Crea un nuovo pulsante e imposta il valore del testo sulla stringa localizzata da AppResources. ApplicationBarIconButton appBarButton = new ApplicationBarIconButton (new Uri ("/ Assets / Check.png", UriKind.Relative)); appBarButton.Text = AppResources.AppBarButtonText; appBarButton.Click + = appBarButton_Click; ApplicationBar.Buttons.Add (appBarButton); // Crea una nuova voce di menu con la stringa localizzata da AppResources. ApplicationBarMenuItem zh_appBarMenuItem = new ApplicationBarMenuItem ("中文"); ApplicationBar.MenuItems.Add (zh_appBarMenuItem); zh_appBarMenuItem.Click + = new EventHandler (zh_appBarMenuItem_Click); ApplicationBarMenuItem en_appBarMenuItem = new ApplicationBarMenuItem ("inglese"); ApplicationBar.MenuItems.Add (en_appBarMenuItem); en_appBarMenuItem.Click + = new EventHandler (en_appBarMenuItem_Click); ApplicationBarMenuItem es_appBarMenuItem = new ApplicationBarMenuItem ("español"); ApplicationBar.MenuItems.Add (es_appBarMenuItem); es_appBarMenuItem.Click + = new EventHandler (es_appBarMenuItem_Click);
Il BuildLocalizedApplicationBar
metodo crea una nuova istanza di ApplicationBar
. Pulsanti e voci di menu vengono aggiunti ad esso e il valore del testo viene impostato sulla stringa localizzata da AppResources
. Il pulsante della barra delle applicazioni ha un legame con AppBarButtonText
, che è definito nel AppResouces.resx file. Chiama il BuildLocalizedApplicationBar
metodo dal costruttore della pagina per caricare il file ApplicationBar
.
Nell'app di esempio, gli utenti possono selezionare la loro lingua di visualizzazione tramite ApplicationBar
menu. Come mostrato nello screenshot sottostante, le voci del menu rimangono coerenti tra le lingue di visualizzazione mentre il pulsante della barra delle applicazioni è localizzato.
Quando un utente tocca una lingua di visualizzazione in ApplicationBar
menu, il SetUILanguage
il metodo è chiamato. Il SetUILanguage
metodo, con il nome della lingua di destinazione passato come parametro, viene utilizzato per impostare la lingua di visualizzazione.
private void SetUILanguage (String locale) CultureInfo newCulture = new CultureInfo (locale); Thread.CurrentThread.CurrentCulture = newCulture; Thread.CurrentThread.CurrentUICulture = newCulture; FlowDirection flow = (FlowDirection) Enum.Parse (typeof (FlowDirection), AppResources.ResourceFlowDirection); App.RootFrame.FlowDirection = flusso; // Imposta la lingua di RootFrame in modo che corrisponda alla nuova cultura. App.RootFrame.Language = XmlLanguage.GetLanguage (AppResources.ResourceLanguage);
Il SetUILanguage
il metodo innanzitutto ripristina il CurrentUICulture
dell'app alla locale fornita nella chiamata. Qualsiasi testo associato a risorse renderizzato dall'app utilizzerà le risorse delle impostazioni internazionali specificate dopo questa chiamata.
Quindi, imposta il Direzione del flusso
e linguaggio
del RootFrame
, che farà sì che l'interfaccia utente resa dall'app segua le nuove impostazioni.
Il BuildLocalizedApplicationBar
il metodo viene chiamato dal costruttore della pagina dopo la chiamata a InitializeComponent
localizzare il ApplicationBar
.
public MainPage () InitializeComponent (); // codice per localizzare ApplicationBar BuildLocalizedApplicationBar ();
L'emulatore di Windows Phone può essere utilizzato per testare l'app localizzata. Modifica la lingua di visualizzazione nella lingua scelta dall'app per verificare che il contenuto venga visualizzato correttamente.
Ecco come cambia il testo quando viene cambiata la lingua di visualizzazione. Si noti che le voci di menu rimangono coerenti anche se la lingua di visualizzazione cambia.
Per cambiare dinamicamente la lingua, chiama il SetUILanguage
metodo con il nome della lingua di destinazione passato come parametro.
Nell'app di esempio, ogni elemento dell'interfaccia utente di MainPage.xaml è già stato reso, quindi gli elementi attualmente visualizzati devono essere aggiornati dopo aver cambiato la lingua. Il updateUI
metodo aggiorna gli elementi dell'interfaccia utente di MainPage.xaml.
private void updateUI () apptitle.Text = AppResources.ApplicationTitle; pagetitle.Text = AppResources.mainpagetitle; usermessage.Text = AppResources.displayMessage; checkbutton.Content = AppResources.checkEligibility; enterage.Text = AppResources.userMessage;
Si noti che il posizionamento di ciascun elemento dell'interfaccia utente sullo schermo è invariato, indipendentemente dalla lingua del display.
In questo tutorial, hai imparato come preparare la tua app per la localizzazione. XAML con codifica hard e stringhe code-behind che devono essere localizzate vengono posizionate in una tabella di stringhe di file di risorse e assegnate una chiave univoca.
Ogni valore hardcoded viene sostituito da una clausola di binding in XAML o da un riferimento di risorsa nel codice utilizzando la chiave per la relativa risorsa stringa relativa.
Puoi aggiungere lingue di visualizzazione aggiuntive e utilizzare il kit di strumenti per app multilingue per rendere il processo end-to-end di traduzione della tua app sostanzialmente più semplice. Sentiti libero di scaricare i file sorgente del tutorial da usare come riferimento.