La traduzione di un'applicazione iOS in lingue diverse è un processo in due fasi. Innanzitutto, devi preparare la tua app separando tutto il testo, le immagini e altre risorse rivolte all'utente che devono essere tradotte dal resto del codice e degli storyboard. Questo processo è chiamato internazionalizzazione (I18N).
Dopo aver terminato l'internazionalizzazione della tua app, sei pronto per localizzarlo. Qui puoi esportare le tue risorse e inviarle al tuo traduttore. Una volta recuperate le risorse tradotte, è sufficiente importarle nuovamente in Xcode e la tua app è pronta per supportare un'altra lingua.
Useremo una semplice app di esempio per sperimentare le localizzazioni. Crea un nuovo progetto Xcode, usa Applicazione vista singola per il modello e chiama il progetto LocalizationExample.
Successivamente, dobbiamo creare una semplice interfaccia utente in modo da poter vedere le nostre localizzazioni in azione. Nel Main.storyboard, aggiungi un'etichetta e una vista immagine. Cambia il testo dell'etichetta in "Ciao mondo!". Scarica queste risorse immagine, aggiungi it / logo.png al tuo progetto Xcode (assicurati Copia gli articoli se necessario è selezionato) e visualizzarlo nella vista dell'immagine cambiandone la sua Immagine campo a logo.png. Assicurati anche di aggiungere un Centra orizzontalmente nel contenitore vincolo di layout per entrambi gli elementi dell'interfaccia utente.
Devi anche sapere come localizzare le stringhe codificate in modo da andare avanti e aggiungere un messaggio di console a AppDelegate.m. Aggiungi la seguente dichiarazione di registro a applicationDidFinishLaunching:
.
- (BOOL) application: (applicazione UIApplication *) didFinishLaunchingWithOptions: (NSDictionary *) launchOptions NSLog (@ "Hello, World!"); return YES;
Questo ci dà tre risorse per localizzare, un'immagine, un'etichetta e una stringa hard-coded. Tieni presente che lo sviluppo di un'app localizzata è in gran parte uguale alla creazione di un'app non localizzata. È possibile configurare viste e definire comportamenti personalizzati senza preoccuparsi realmente della localizzazione. La maggior parte accade dopo che hai funzionato la tua funzionalità di base.
Ora che abbiamo un'applicazione di base con cui lavorare, siamo pronti a internazionalizzare la nostra app. È qui che ci prepariamo per localizzare le risorse isolandole dal resto del nostro codice. Xcode fornisce estese funzionalità I18N, il che rende molto più facile localizzare un'app.
Innanzitutto, diamo un'occhiata all'internazionalizzazione dell'interfaccia utente della nostra app. Il primo passo è dire a Xcode quali regioni, o locali, vuoi supportare. Clicca il LocalizationsExample progetto nel Project Navigator e seleziona l'icona del progetto blu nell'elenco a comparsa in alto a sinistra.
Il localizzazioni sezione è dove è possibile aggiungere localizzazioni alla tua app. Traslocheremo il nostro progetto di esempio in spagnolo, quindi fai clic sul segno più e seleziona Spagnolo (es). Questo aprirà una finestra di dialogo che ti chiederà cosa vuoi fare con le tue risorse esistenti. Assicurarsi Archi localizzabili è selezionato per entrambi Main.storyboard e LaunchScreen.xib come mostrato nello screenshot seguente. Clic finire continuare.
Ora troverai due elementi sotto Main.storyboard, un base storyboard e a Main.strings file. Il primo è il tuo vero storyboard file e il secondo è un file di stringhe che contiene tutto il testo rivolto all'utente nello storyboard. Questo file di stringhe è ciò che alla fine verrà tradotto.
Il Main.storyboard il file è ora internazionalizzato e pronto per essere localizzato.
Le stringhe rivolte all'utente che sono hardcoded nelle tue classi Objective-C / Swift necessitano di qualche elaborazione speciale. Questo è un passaggio necessario, ad esempio, se si imposta a livello di codice il testo per gli elementi dell'interfaccia utente negli storyboard.
Fortunatamente, l'internazionalizzazione delle stringhe hard-coded è un processo semplice. Tutto quello che devi fare è avvolgerli in un NSLocalizedString
macro, così:
- Applicazione (BOOL): l'applicazione (UIApplication *) ha fattoFinishLaunchingWithOptions: (NSDictionary *) launchOptions NSString * greeting = NSLocalizedString (@ "Hello, World!", @ "Un saluto amichevole"); NSLog (@ "% @", saluto); return YES;
Il primo argomento è una chiave che punta alla stringa che stai cercando e il secondo argomento (facoltativo) è un commento che verrà incluso nel file di stringhe esportato. Puoi usare chiavi astratte, in stile dizionario (ad es., @"saluto"
), ma trovo che il codice sia più leggibile se si utilizza la stringa effettiva da tradurre come chiave.
Nella prossima sezione, qualsiasi NSLocalizedString
le chiamate verranno automaticamente estratte dal nostro codice e aggiunte all'elenco delle stringhe che devono essere tradotte.
Una volta che la tua app è internazionalizzata, sei pronto per iniziare a localizzare le tue risorse. La localizzazione è un processo abbastanza semplice in cui esporti tutte le stringhe che devono essere tradotte, trasferiscile al tuo traduttore e importale nuovamente nel tuo progetto. Questo ciclo di esportazione / traduzione / importazione può continuare mentre sviluppi la tua app, ma di solito è una buona idea finalizzare la maggior parte dell'interfaccia utente prima di iniziare il processo di localizzazione.
Xcode rende facile esportare tutte le stringhe internazionalizzate in un singolo File di interscambio di localizzazione XML Formato (.XLIFF) documento, che è il formato standard per il settore della localizzazione.
Per generare questo file, selezionando LocalizationExample nel Project Navigator, scegliere Editor> Esporta per localizzazione ... dal menu Xcode e selezionare un percorso file al di fuori del progetto Xcode per evitare qualsiasi potenziale confusione.
Facendo clic Salvare creerà una nuova cartella contenente un es.xliff file. Se lo apri, troverai un sacco di XML contenenti informazioni su ogni stringa della tua app che deve essere localizzata.
Questo è il file che devi inviare al tuo traduttore. Avranno strumenti speciali per modificare l'XML, ma per il nostro esempio, entriamo e lo modifichiamo direttamente. Aperto es.xliff e cercare il testo "Ciao mondo!". Dovresti trovarne due separati
elementi come mostrato di seguito.
Hola, Mundo! Class = "IBUILabel"; text = "Ciao, Mondo!"; ObjectID = "Cns-Fc-27j"; Hola, Mundo!