Localizzazione di un'applicazione Windows Phone 8

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.

introduzione

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:

  • Crea file di risorse separati per stringhe, immagini e video per rendere indipendente la tua lingua di codice. Questo assicura che possa supportare diverse lingue.
  • Abilita il supporto multilinea e il testo a capo nei controlli. Questo ti dà più spazio per visualizzare le stringhe.
  • Localizza frasi piuttosto che parole. Questo può sembrare un lavoro extra, ma è la soluzione migliore. Garantirà che, ad esempio, i messaggi di errore siano tradotti correttamente in ogni lingua.
  • Non dare per scontato che ogni lingua utilizzi parametri nello stesso ordine.
  • Non riutilizzare le stringhe, poiché può causare problemi di localizzazione se il contesto della stringa cambia. Ad esempio, una stringa come "testo" e "fax" potrebbe essere utilizzata sia come verbo sia come nome in inglese, il che può complicare il processo di traduzione. Crea una stringa separata per ogni contesto.
  • Usa attributi unici per identificare le tue risorse. È possibile accedere a una risorsa solo utilizzando il suo valore univoco, che non cambia, piuttosto che utilizzando il valore effettivo della risorsa.

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.  

1. Supporto per cultura e lingua

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.

2. Passi di localizzazione standard

Nuovi progetti e modelli per le app XAML di Windows Phone 8 offrono numerose nuove funzionalità utili:

  • Un file di risorse di lingua neutra, AppResources.resx, viene aggiunto di default ad ogni nuovo progetto.
  • Il LocalizedStrings la classe helper è già configurata per fornire un accesso facile alle risorse che corrispondono alla cultura corrente di un'app.
  • Quando si aggiunge un file, viene creato un nuovo file di risorse con i parametri di inizializzazione della lingua app e del nome specifici delle impostazioni locali Cultura supportata dal Proprietà del progetto in Visual Studio.

Vediamo come funziona tutto ciò creando un'app di esempio, con l'inglese come lingua di base.

Passaggio 1: Associazione degli elementi di testo XAML

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);

Passaggio 2: aggiunta di lingue

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.

Passaggio 3: utilizzo del toolkit di app multilingue per la traduzione

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:

  • Centralizza la gestione delle risorse stringa e dei metadati.
  • Lo strumento semplifica la creazione, l'importazione e l'esportazione di file di traduzione nel formato XLIFF, uno standard nel settore.
  • Non c'è bisogno di passare avanti e indietro tra i file di risorse.
  • È facile aggiungere nuove lingue tradotte direttamente dal menu di scelta rapida del progetto.

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.

3. Creazione di una barra dell'applicazione localizzata

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 (); 

4. Test di un'applicazione localizzata

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.

  • Clic Inizia il debug dal mettere a punto menu.
  • Navigare verso regione e lingua a partire dal impostazioni nella lista delle app.
  • Clic Visualizza la lingua e selezionare una delle lingue. Usa la tabella in Mappatura dei nomi di cultura per visualizzare le lingue sezione per determinare quale stringa della lingua di visualizzazione selezionare.
  • Accetta le modifiche e riavvia l'emulatore.
  • Avvia l'app tornando all'elenco delle app e verifica che la lingua di ogni stringa localizzata corrisponda all'impostazione della lingua di visualizzazione selezionata in precedenza.

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.

Conclusione

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.