4 Dicembre 2021
Expand search form

Cos’è la localizzazione di base iOS?

Matt Stanford

Recentemente ho rivisto i miei appunti su come impostare la localizzazione in un progetto iOS in Xcode, e mi sono reso conto che c’erano alcune cose di cui non ero sicuro al 100%. Così ho deciso di fare una piccola ricerca e scrivere questo post per il mio (e altrui) riferimento futuro su come fare questo compito a volte noioso.

Se avete mai lavorato su progetti iOS con supporto per più lingue, avrete probabilmente notato che la localizzazione non è mai sembrata una priorità assoluta per Xcode. A differenza di Android Studio, dove la localizzazione è praticamente obbligatoria – si ottengono avvertimenti severi dall’IDE se non si mettono le stringhe nel file giusto – Xcode non crea nemmeno l’infrastruttura per questo di default, deve essere fatto manualmente.

In questo post, andrò oltre i passi per iniziare a mantenere un progetto localizzato. Andrò anche su un grande strumento di terze parti in cui mi sono imbattuto per automatizzare il tedio di mantenere un progetto localizzato.

Come Xcode gestisce i progetti localizzati

Prima di impostare qualsiasi cosa per la localizzazione, dovresti capire come funziona un progetto localizzato. Essenzialmente, Xcode colloca tutto ciò che dipende dalla lingua in directory con nomi specifici che prendono il nome dalla loro rispettiva lingua. Così per i file specifici per l’inglese, avresti una directory chiamata “/en.lproj”, per il giapponese, sarebbe “/ja.lproj”, e così via.

Per quanto riguarda il contenuto di queste directory, gli storyboard/XIB hanno i loro file di stringhe localizzate, chiamati “.strings”, e le stringhe non-Interface Builder sono solitamente in un file chiamato “Localizable.strings”. Puoi anche creare diversi XIB/storyboard per diverse lingue (alcune lingue potrebbero richiedere un layout completamente diverso). Inoltre, lingue diverse possono avere regole diverse per la pluralità, il che richiede l’uso di un file plist appositamente formattato.

“Localizzazione “Base

C’è anche un concetto chiamato localizzazione “Base”. Xcode aggiungerà di default una directory chiamata “/Base.lproj” al tuo progetto. Lo scopo di questa directory è quello di tenere i layout predefiniti delle vostre viste (cioè gli storyboard/XIB) nella vostra “lingua di sviluppo”. Questo è stato originariamente creato per alleviare la precedente pratica di creare XIB separate per ogni lingua (!).

Una cosa sulla localizzazione della base che mi è sempre sembrata ambigua era se dovevo mettere il mio file Localizable.strings inglese (cioè la lingua di sviluppo) nella directory inglese (“en.lproj”), o nella directory Base. Dopo aver fatto un po’ di ricerche, sembra che Localizable.strings debba sempre andare nella directory della lingua specificata (secondo i documenti di Apple qui), NON nella directory Base.

Impostare un progetto localizzato

Detto questo, se guardate la struttura delle directory di un progetto predefinito che NON è stato localizzato, noterete quanto segue:

  • Gli storyboard/XIB sono già stati messi nella directory “Base.lproj
  • Nessun Localizable.strings è stato creato

La prima cosa che potresti voler fare è creare il tuo file Localizable.strings iniziale. Per farlo, prima crea un nuovo file “strings” in Xcode (New->File->Strings File).

Una volta fatto questo, Xcode non sa ancora che questo è per la localizzazione. Puoi farlo cliccando sul file, e cliccando sul pulsante “Localize…” nel pannello di destra. Otterrai un menu pop-up che ti chiederà in quale lingua vuoi mettere questo file. Xcode metterà quindi il file nella directory per la tua rispettiva selezione.

Ora che hai questo, puoi aggiungere un’altra lingua. Per farlo, fai come segue:

  1. Clicca sul progetto nel navigatore del progetto
  2. Clicca sul progetto (non sull’obiettivo)
  3. Trova l’opzione “Localizzazioni” e seleziona il piccolo segno più
  4. Scegli la lingua che vuoi localizzare dal menu a tendina

Passaggio (e ritorno) al traduttore

Alla fine dovrai esportare tutti i tuoi sforzi di localizzazione in modo da avere qualcuno che faccia delle traduzioni. Xcode ha un comando per convertire tutte le tue stringhe localizzate in un formato di file chiamato XLIFF. XLIFF è un formato basato su XML mirato all’industria della localizzazione.

Inoltre, (a partire da Xcode 10), Xcode ora esporta anche gli storyboard e le immagini in una cartella chiamata “sources”. L’intenzione di questo è dare ai traduttori più contesto di dove sono le tue stringhe nell’app. C’è anche una cartella generata automaticamente chiamata “notes” dove puoi inserire la tua documentazione personalizzata del contesto delle stringhe.

Per esportare le tue stringhe, basta toccare il progetto, e andare su Editor -> “Export for Localization” e selezionare le lingue che vuoi esportare.

I traduttori dovrebbero prendere i tuoi file XLIFF e modificarli con le traduzioni corrette. Una volta che avrai indietro gli XLIFF tradotti, potrai importarli nel tuo progetto andando su Editor -> “Import Localizations”.

Generare automaticamente un file di stringhe localizzato

Se vuoi, puoi eseguire uno strumento chiamato “extractLocStrings” (precedentemente conosciuto come “genstrings”) nel tuo progetto. Questo genererà un file Localizable.strings (nella tua lingua di sviluppo) con tutte le chiavi che hai usato con la funzione NSLocalizedString. Se lo esegui, assicurati di copiare il file generato dove hai originariamente messo il tuo primo file Localizable.strings

Fare aggiornamenti… nel modo fastidioso

Quindi hai usato extractLocStrings per generare un file Localizable.strings per le tue stringhe inglesi. Hai usato gli strumenti di Xcode per creare file di stringhe modello per i tuoi traduttori, e li hai tradotti. Tutto questo suona bene. Ma ciò che accadrà inevitabilmente è che avrete bisogno di aggiungere altre stringhe. O cambiare le stringhe esistenti. Cosa fare allora?

Potete continuare ad usare extractLocStrings per generare nuove stringhe dal vostro codice. Anche se dovreste assicurarvi di impostare un valore di default in tutte le vostre funzioni NSLocalizedString, altrimenti extractLocStrings lo spazzerà via. Se non avete valori predefiniti, dovrete fare un po’ di diffing tra il vostro file originale e quello appena generato.

Inoltre, se devi fare aggiornamenti alle stringhe di uno storyboard, probabilmente dovrai entrare nel file e fare aggiornamenti manuali. Dovrete fare un riferimento incrociato all’Object ID del widget UI nello storyboard e aggiungerlo in modo appropriato. Un esempio di uno di questi file è qui sotto:

Inoltre, non dimenticare di rimuovere le voci che non sono più applicabili. Meglio assicurarsi di ricordare il loro ID oggetto prima di premere “delete” nello storyboard, altrimenti i vostri file .strings diventeranno disordinati velocemente!

Ma ci deve essere un modo migliore….

Fare aggiornamenti….il modo migliore

Fortunatamente, un modo migliore esiste negli strumenti di terze parti! C’è una grande libreria chiamata BartyCrouch che vi aiuterà ad automatizzare l’intero tedioso processo di aggiunta/modifica delle stringhe localizzabili.

Fondamentalmente, usando BartyCrouch nel tuo progetto aggiungerai/modificherai automaticamente le stringhe nei tuoi file .strings senza cancellare i valori già tradotti! Questo significa le seguenti cose:

  • Aggiungere una nuova stringa al vostro storyboard o codice aggiungerà quella stringa a tutti i vostri file di stringhe
  • Cancellare una stringa dallo storyboard o dal codice rimuoverà quella stringa dai file delle stringhe

Installare bartycrouch con il comando:

Crea il file di configurazione eseguendo questo comando dalla root del tuo progetto:

Poi puoi aggiornare tutti i tuoi progetti Localizable assets con il comando::

Un’idea ancora migliore sarebbe quella di eseguire il comando update quando costruisci il tuo progetto. Puoi farlo aggiungendo uno script di esecuzione nella scheda “Build Phases” nel tuo progetto Xcode. I documenti di BartyCrouch suggeriscono quanto segue:

Pensieri finali

Si potrebbe obiettare che affidarsi a uno strumento di terze parti per una parte così cruciale della vostra app potrebbe essere rischioso. BartyCrouch è attivamente mantenuto in questo momento (al momento in cui scriviamo), ma cosa succede se questo si ferma? Potresti non voler correre questo rischio, specialmente se il tuo progetto è piccolo o non ha molte risorse localizzate.

Tuttavia, suggerirei vivamente di usare BartyCrouch per eliminare il noioso e soggetto a errori processo di aggiornamento delle vostre risorse localizzate. L’automazione che questo strumento aggiunge è molto preziosa.

Potresti anche essere interessato agli argomenti

Cos’è la localizzazione IOS?

La localizzazione è il processo di rendere la tua app in grado di supportare altre lingue. In molti casi, si fa la tua app con l’interfaccia utente inglese prima e poi si localizza l’app in altre lingue come il giapponese. Il processo di localizzazione è noioso, e i suoi passi cambiano poco a poco man mano che XCode viene aggiornato.

Cos’è l’internazionalizzazione di base IOS?

I file xib sono chiamati l’internazionalizzazione di base. Quando si esportano le localizzazioni, le stringhe della lingua di sviluppo sono la fonte che viene tradotta in più lingue. Quando importi le localizzazioni, Xcode genera file di stringhe specifiche per ogni lingua.

Cos’è l’uso dell’internazionalizzazione di base?

Usare l’internazionalizzazione di base. L’internazionalizzazione di base separa le stringhe rivolte all’utente dai file .storyboard e .xib. Alleggerisce i localizzatori dalla necessità di modificare i file .storyboard e .xib in Interface Builder.

Come funziona NSLocalizedString?

NSLocalizedString è una macro di Foundation che restituisce una versione localizzata di una stringa. Ha due argomenti: chiave, che identifica in modo univoco la stringa da localizzare, e commento, una stringa che serve a fornire un contesto sufficiente per una traduzione accurata.

Cos’è Genstrings?

Lo strumento genstrings cerca le macro di stringa Core Foundation e Foundation per impostazione predefinita. Usa le informazioni in queste macro per creare le voci di stringa nei file di stringa del tuo progetto.

Cos’è NSLocalizedString in Swift?

Restituisce una versione localizzata di una stringa dalla tabella di default, che Xcode genera automaticamente quando esporta le localizzazioni.

Come funziona la localizzazione in iOS?

Strutturate la vostra app per la localizzazione Xcode separa automaticamente il testo visibile all’utente e le immagini dal codice eseguibile. Quando traduci questi elementi in altre lingue, puoi integrare di nuovo il contenuto nella tua app come file di risorse localizzate separate memorizzate nel bundle dell’app.

Come faccio a cambiare la localizzazione sul mio iPhone app store?

Usa il tuo iPhone, iPad o iPod touch per cambiare la tua regioneApri l’applicazione Impostazioni.Tocca il tuo nome, poi tocca Media e acquisti.Tocca Visualizza account. … Tocca Paese/Regione.Tocca Cambia paese o regione.Tocca il tuo nuovo paese o regione, quindi esamina i Termini e condizioni.Altri articoli…-Jum. II 14, 1442 AH

Cos’è una stringa di localizzazione?

Una stringa di localizzazione può avere valori diversi a seconda della lingua in cui il progetto viene costruito. Ci sono due categorie di stringhe localizzate: … le stringhe incluse nel tuo progetto, che sono particolari al progetto corrente: il nome della tua applicazione, i nomi dei file, i valori del registro, le proprietà ecc.

Cos’è una stringa localizzabile?

file di stringhe con una voce per chiave di stringa localizzabile unica. … verrà scritto un file di stringhe. Per impostazione predefinita, il file di stringhe sarà chiamato Localizable. strings . Attenzione che genstrings sovrascriverà i file di stringhe esistenti.

Come faccio a localizzare un’app iOS?

Di’ a Xcode di metterlo lì selezionandolo nel navigatore del progetto, poi clicca su Localize… nell’ispettore File. Xcode ti chiederà di confermare la lingua del file. L’impostazione predefinita sarà l’inglese, dato che è la tua lingua di sviluppo. Fai clic su Localize.

Come faccio a rendere localizzabile il nome della mia applicazione iOS?

Localizza il nome dell’applicazione Prendi la lingua che ti serve come inglese, arabo, cinese. … Prendete un nuovo file di stringhe e nominatelo “InfoPlist.strings” Selezionate “InfoPlist. … Poi creerà il file per la base, l’inglese e la rispettiva lingua. Ora apri il file e scrivi questo.Altri articoli…-19-ago-2017

Come faccio a localizzare uno storyboard in Swift?

Segui i seguenti passi per localizzare gli elementi di Storyboard:Clicca sul tuo progetto.Nella sezione Localizzazioni clicca sull’icona + e aggiungi la lingua che vuoi localizzare.Una volta aggiunta la lingua vedrai il file String di quella lingua.Vai su storyboard e clicca su UI Element che vuoi localizzare.Altri elementi…-Shaw. 11, 1439 AH

Come faccio a localizzare un’app IOS?

Dì a Xcode di metterlo lì selezionandolo nel navigatore del progetto, quindi fai clic su Localize… nell’ispettore File. Xcode ti chiederà di confermare la lingua del file. L’impostazione predefinita sarà l’inglese, dato che è la tua lingua di sviluppo. Fai clic su Localize.

Come faccio a rendere localizzabile il nome della mia applicazione IOS?

Localizza il nome dell’applicazione Prendi la lingua che ti serve come inglese, arabo, cinese. … Prendi un nuovo file di stringhe e chiamalo “InfoPlist.strings” Seleziona “InfoPlist. … Poi creerà il file per la base, l’inglese e la rispettiva lingua. Ora apri il file e scrivi questo.Altri articoli…-Aug 19, 2017

Articolo precedente

Un esagono può essere concavo?

Articolo successivo

Come si chiama un gambo di mais?

You might be interested in …