Compatibile con Xcode 8

Come tradurre un’app iOS. Rendi internazionale la tua applicazione

ENTRA NEL NOSTRO GRUPPO FACEBOOK

Davanti ad ogni creazione su Xcode, mi sono sempre trovato di fronte ad una scelta scomoda: per chi sto realizzando la mia app? In che lingua scrivo le interfacce? come tradurre un’app iOS?

La scelta non è mai facile. Se è vero che l’inglese è la lingua internazionale per eccellenza, quella che bene o male tutti un po’ conoscono, è altrettanto vero che all’utente (anche a me, non lo nego) piace il massimo della comodità. Allora tutti preferiscono avere, dove possibile, un’app scritta per la propria lingua. Perciò le app più complesse e scritte in inglese passano in secondo piano per la loro peggiore user experience venendo automaticamente meno scaricate (stati anglosassoni a parte, è chiaro).

Ovviamente scrivere una applicazione solo in italiano è troppo riduttivo. In termini di mercato, immagina a quanti utenti potenziali stai rinunciando con un’app scritta in italiano che sarà scaricata e utilizzata solo da utenti italiani. Quindi, avere un’applicazione scritta in una sola lingua è decisamente inaccettabile se il tuo intento è quello di guadagnare o raggiungere più persone possibili.

Come tradurre un’app iOS

Fortunatamente, alla semplice domanda “come tradurre un’app iOS?” Apple ha fornito uno strumento altrettanto semplice: La localizzazione.

La localizzazione è quel processo che permette, di tradurre la tua applicazione in tutte le lingue che preferisci (almeno in tutte le lingue supportate da Apple, che ti assicuro che sono davvero tante) e di conquistare tutti i ricchi mercati in cui Apple ti spiana la strada vendendo le sue meraviglie.

Il processo di traduzione di un’app iOS si divide in due parti: internazionalizzazione e localizzazione. Definito quale sarà l’elemento da tradurre ti basterà associare la stringa corrispondente nella lingua di destinazione per rendere la tua app multilingue.

Ma andiamo con ordine e vediamo insieme come tradurre un’app iOS con il linguaggio Swift.

Internazionalizzazione

La primissima fase consiste nell’adattare il layout della tua app a contenuti internazionali. Il processo consiste nell’identificare quali stringhe dovranno essere tradotte e prepararle con alcuni accorgimenti (ricorda: non solo le stringhe, ma anche le immagini, i numeri, etc).

Per vedere come tradurre un’app iOS creeremo una veloce e semplicissima app. Darò per scontate le nozioni di base su Swift, che puoi trovare nel corso gratuito linguaggio di programmazione Swift. Se invece vuoi approfondire la conoscenza e imparare a creare fantastiche app con Swift, il corso che fa per te è Corso sviluppo applicazioni iOS con Swift creato da Giuseppe Sapienza. Alla fine di questo corso conoscerai alla perfezione Swift e tutte le specifiche per creare le tue applicazioni!

Apri un nuovo progetto in XCode, per semplicità crea un’app iOS di tipo Single View. Io ho chiamato la mia app iTranslate. Una volta creata vai sullo storyboard e inserisci una label e un button.

Setta il button centrato sia verticalmente che orizzontalmente, e la label sopra il button, allineata rispetto al centro del button. Se non sai come fare puoi vedere il tutorial Introduzione all’Auto Layout o meglio ancora, ti rinnovo il consiglio: il Corso sviluppo applicazioni iOS con Swift è l’ideale per acquisire tutte le conoscenze indispensabili per realizzare le tue app.

Cambia il testo del Button in “Press” e della label in “This is a test label”.

A questo punto crea una variabile myString di tipo stringa con il testo “Hello World!”. Crea una action perché alla pressione del bottone la label sia allineata con la stringa myString.

Bene: i preparativi sono finiti e, finalmente, possiamo iniziare a vedere come tradurre un’app iOS con Xcode.

Vai sulla finestra di progetto e in basso troverai la voce Localizations: se non è già selezionata flagga l’opzione Use Base Internationalization.

A questo punto non resta che aggiungere la lista delle lingue supportate. Noterai che la lingua di default è l’inglese. Questo è il motivo per cui ti suggerisco di settare inizialmente tutti i testi in lingua inglese; oltre che per naturalmente per device in lingua inglese. In questo modo, la lingua di default sarà l’inglese anche per tutte le lingue che non supporterai direttamente. Non è necessario, infatti, supportare tutte le lingue esistenti. Personalmente mi limito a francese, spagnolo e tedesco, oltre che l’italiano, ovviamente.

Per selezionare le nuove lingue è sufficiente aggiungerle cliccando su + (in alternativa, all’interno del menù Editor trovi una voce Add Localization, che fa la stesa cosa: ti basta cliccare sulla nuova lingua che vuoi aggiungere, et voilà, il gioco è fatto).

Nel nostro caso ho selezionato solo la voce Italiano, ma puoi selezionare qualsiasi lingua.

Ecco, a questo punto siamo pronti alla seconda fase… Facile no?

Localizzazione

La seconda parte è quella in cui realmente comincerai a tradurre l’applicazione. Per prima cosa, dal menù Editor seleziona Export For Localization. Dalla finestra che si aprirà, seleziona una destinazione per salvare il/i file che ti serviranno per ottenere le traduzioni. Verrà creato un file per ogni lingua dove il nome del file è uguale al suffisso della lingua (it, nel nostro caso), mentre l’estensione è xliff.

A questo punto aprendo questo file noterai che è in formato XML (lo puoi aprire semplicemente con un doppio click, il file si aprirà all’interno di Xcode).

La prima informazione utile è nella terza riga:

che indica il linguaggio di origine, l’inglese (source-language=”en”) e il linguaggio di traduzione, il linguaggio target, nel nostro caso =”it”.

Da qui in poi troverai il tag <source> con l’indicazione del testo nella lingua originale, e il tag <target> nella riga subito successiva: in questa riga dovrai sostituire la stringa in inglese con quella nella lingua di traduzione:

In questo modo hai sostituito il testo del bottone “Press” con “Premi”, e:

il testo della label da “This is a test label” a “Questa è un’etichetta di prova”:

Hai quasi terminato. Salva il file (io di default ne faccio sempre una copia, per avere sia l’originale che la traduzione) e poi tornando al tuo progetto, dal solito menù Editor, clicca su Import Localization. Dopo qualche secondo di attesa vedrai comparire una nuova finestra, sulla sinistra trovi lo Storyboard, e se ci clicchi dentro trovi l’elenco delle modifiche effettuate al file. Conferma le modifiche e avrai importato la tua traduzione bella e pronta.

A questo punto la localizzazione della tua applicazione iOS dovrebbe essere pronta. Facciamo una prova, no?

Lancia il tuo simulatore, che di default è in lingua inglese, e osserva cosa succede. Noterai che tutto funziona come al solito, compare al centro il bottone con la scritta “Press”, la label poco sopra con la scritta inglese “This is a test label” e, se premi il bottone, ti comparirà la scritta “Hello World”, così come hai creato il programma.

Ora, se dai settings del tuo simulatore provi a modificare la lingua del device, rilanciando la tua applicazione di prova, troverai, come per magia, che il testo della label è in italiano e lo stesso per il testo del bottone:

C’è solo un piccolo inconveniente, se sei stato attento avrai sicuramente notato che l’unica scritta che non è stata tradotta è quella introdotta nella stringa da codice (myString): “Hello World”.

NSLocalizedString

Tutto questo per introdurci al passo successivo. Se è vero che tutti gli elementi grafici, con le loro proprietà, vengono riconosciuti in automatico come elementi da tradurre per la localizzazione, hai la necessità di indicare tu, al programma, quali elementi introdotti da codice sono da tradurre e quali no. Tutto questo deve essere fatto prima di esportare il file per la traduzione.

Allora, torna al tuo progetto e, nel ViewController.swift, sostituisci la riga myString = “Hello World!”, con una stringa che indicherà al tuo programma che quella variabile dovrà essere tradotta:

Il commento, in questo specifico caso, non è fondamentale.

A questo punto, però, hai rifatto in parte cioè che avevi fatto con la internazionalizzazione. Cioè sei di nuovo di fronte alla necessità di tradurre la tua applicazione. Fortunatamente Apple ha pensato proprio a tutto, e nel nostro export ci permette di selezionare dalla voce Include, impostando il valore a “Existing Translations”, tutte le traduzioni già fatte.

Questo è molto molto importante, perché ti permetterà di effettuare la traduzione in diversi momenti, per esempio se dovessi aggiungere elementi all’ultimo secondo, o in una successiva fase di aggiornamento del progetto.

Considerazioni

Bene, il progetto è concluso, a questo punto non resta nient’altro da fare che procurarsi dei bravi traduttori. A parte l’italiano, è fondamentale, se vorrai tradurre le tue app in altre lingue, che ti premuri di servirti di un buon servizio di traduzioni, non pensare neanche per un momento di usare Google Translate. E’ vero che risparmieresti, ma tolte singole parole, e in alcuni casi anche per quelle, il rischio di fare una figuraccia è veramente dietro l’angolo.

In rete puoi trovare diversi servizi di traduzione online: mi permetto di suggerirti solo Translated.net perché l’ho testato personalmente. Solo a titolo di esempio, per una cinquantina di parole da tradurre in 3 lingue (francese, tedesco e spagnolo), il costo è di 29€ e il tempo di traduzione è di circa 12 ore. Non male, vero?

Ora è davvero tutto!

Buona programmazione!

Start typing and press Enter to search

Notifiche Push Online per iOS con Parse e SwiftMessageUI, inviare Email e Messaggi con il linguaggio Swift