Guida all’internazionalizzazione e localizzazione iOS + App demo

Scopri come preparare la tua app iOS per la localizzazione, tradurla con l’IA e aggiungere nuovamente le traduzioni in Xcode, il tutto utilizzando un’app demo in SwiftUI.

La localizzazione iOS è il processo di adattamento del testo, della formattazione e degli asset della tua app per supportare più lingue e regioni.

Questa guida utilizza un’app demo per accompagnarti nell’intero processo, dalla preparazione in Xcode alla creazione e integrazione delle traduzioni nel tuo progetto. La nostra app demo, Bookshelf, è una semplice app per il monitoraggio dei libri che copre gli scenari di localizzazione che più probabilmente incontrerai: stringhe dell’interfaccia utente, pluralizzazione e test dei locali.

Lavoreremo con SwiftUI e Xcode 15+, utilizzando gli String Catalog come formato di localizzazione principale

Parte 1: Capire la localizzazione iOS

Prima di tuffarsi in Xcode, vale la pena capire cosa comporta effettivamente la localizzazione e cosa la differenzia dall’internazionalizzazione.

Internazionalizzazione vs Localizzazione in iOS — Qual è la differenza?

L’internazionalizzazione (i18n) e la localizzazione (l10n) sono due fasi distinte e devono avvenire in quest’ordine.

L’internazionalizzazione è il lavoro tecnico di base. Significa strutturare il codice in modo che testo, immagini e formattazione possano variare in base al locale senza richiedere modifiche al codice. Lo fai una volta sola, idealmente prima del tuo primo rilascio.

La localizzazione è il lavoro continuo che segue: scrivere traduzioni, adattare i layout e fornire asset specifici per ogni lingua che vuoi supportare.

Internazionalizzazione (i18n)Localizzazione (l10n)
Cos’èPreparare il codice per la localizzazioneAdattare l’app per un locale specifico
QuandoPrima del primo rilascioContinuo, per ogni lingua
ChiSviluppatoriSviluppatori e traduttori
EsempiEstrazione delle stringhe, uso di formattatori sensibili al localeTraduzione delle stringhe, localizzazione degli screenshot

L’errore più comune è trattare la localizzazione come un compito post-lancio, solo per scoprire che la base di codice non è pronta. Tornare indietro per correggere stringhe hardcoded, layout a direzione fissa e formattatori non sensibili al locale in un’app esistente richiede molto più tempo rispetto a costruire pensando alla localizzazione fin dall’inizio.

Parte 2: Configurare il tuo progetto Xcode

Lavoreremo con Bookshelf, una semplice app demo che permette agli utenti di tenere traccia di quanti libri hanno letto. È costruita con SwiftUI e ha un design minimale.

App iOS demo

Alla fine di questa guida, BookShelf funzionerà in inglese, spagnolo e arabo, gestirà correttamente le stringhe plurali in tutte e tre le lingue e specchierà automaticamente il suo layout per i lettori arabi.

Passaggio 1

Abilitare la localizzazione

Apri BookShelf in Xcode e seleziona il file di progetto nel Navigator. Sotto la scheda Info, scorri fino alla sezione Localizations. L’inglese è già elencato come lingua di base. Clicca sul pulsante + per aggiungere la tua prima lingua. Aggiungeremo lo spagnolo e l’arabo per questa demo.

Aggiungere lingue in Xcode

Passaggio 2

Creare uno String Catalog

Successivamente, aggiungi uno String Catalog.

  1. Fai clic con il tasto destro sul tuo progetto e seleziona New File from Template.
  2. Cerca String Catalog e aggiungilo. Il nome predefinito sarà Localizable.xcstrings. Non c’è bisogno di cambiarlo.
  3. Compila il progetto una volta con Cmd+B. Xcode scansionerà il tuo codice, troverà ogni stringa localizzabile e popolerà automaticamente il catalogo.

Passaggio 3

Contrassegnare le stringhe per la localizzazione

Dopo aver compilato il progetto, apri Localizable.xcstrings e vedrai che Xcode ha già estratto ogni stringa letterale dalle tue viste SwiftUI e le ha aggiunte al catalogo con i relativi valori in inglese. Per la maggior parte delle stringhe, questo è tutto ciò che devi fare.

Compilazione del progetto

Ci sono un paio di schemi in cui Xcode non può farlo automaticamente, ed entrambi falliscono silenziosamente, con l’app che visualizza semplicemente la stringa non tradotta senza alcun avviso.

Suggerimento 1: Evita di passare variabili a Text

Quando passi una variabile a una vista Text invece di una stringa letterale, SwiftUI la tratta come una stringa semplice e salta completamente la ricerca nel catalogo.

// NOT localized
let title = "welcome_title"
Text(title)

// Localized correctly
Text(LocalizedStringKey(title))

Suggerimento 2: Usa String(localized:) fuori dalle viste

Per le stringhe che devi localizzare in un view model, in una funzione helper o ovunque al di fuori di una vista SwiftUI, usa String(localized:) invece di una stringa semplice.

let errorMessage = String(localized: "error_generic")

Passaggio 4

Aggiungere varianti plurali e per dispositivo

Le stringhe a volte necessitano di versioni diverse a seconda del contesto. Questo include le forme plurali che cambiano con un numero, o il testo che differisce in base al dispositivo. Puoi gestire entrambi direttamente nello String Catalog.

Pluralizzazione

BookShelf, la nostra app demo, mostra un conteggio dei libri sullo scaffale dell’utente. In inglese è semplice: “1 book” vs “3 books”. Ma le regole del plurale variano tra le lingue e sbagliare produce un testo innaturale in altri locali.

Inizia con la stringa nella tua vista SwiftUI:

Text("\(bookCount) books on your shelf")

Apri lo String Catalog, fai clic con il tasto destro sulla chiave e scegli Vary by Plural. Xcode genera automaticamente le categorie plurali e le precompila con la stringa sorgente.

Per l’inglese, vedrai One e Other. Correggi semplicemente il campo One con la forma singolare: “%lld book on your shelf”. La forma Other è già corretta così com’è.

Xcode contrassegna entrambi come Needs Review finché non li confermi. Una volta corretta la forma One, puoi contrassegnarli come revisionati.

Vedrai anche l’arabo e lo spagnolo elencati nella barra laterale allo 0%. Non devi fare nulla per quelle lingue ora. Più tardi, quando esporterai su PTC per la traduzione, la struttura del plurale viaggerà con il file. Per l’arabo, PTC genererà traduzioni per tutte e sei le categorie plurali (zero, uno, due, pochi, molti e altri) perché la grammatica araba le richiede tutte e sei. Per lo spagnolo sono due, come per l’inglese.

Variazioni per dispositivo

Alcuni testi dovrebbero differire in base al dispositivo, come “Tocca per continuare” su iPhone rispetto a “Fai clic per continuare” su Mac. Per configurarlo, fai clic con il tasto destro sulla chiave nel catalogo e scegli Vary by Device. Aggiungi i dispositivi che vuoi personalizzare e inserisci la stringa appropriata per ciascuno. In fase di esecuzione, iOS serve la versione che corrisponde al dispositivo corrente.

Le variazioni per dispositivo sono meno comuni di quelle plurali, ma utili per le app che girano sia su iOS che su macOS.

Parte 3: Tradurre i tuoi file di localizzazione iOS con PTC

Il tuo String Catalog è configurato e le stringhe sono pronte. Ora è il momento di aggiungere le traduzioni.

Per un piccolo progetto, potresti farlo manualmente aprendo ogni file di lingua e inserendo direttamente le traduzioni. Ma man mano che la tua app cresce, questo diventa rapidamente ingestibile tra centinaia di chiavi e decine di lingue.

È qui che entra in gioco PTC: uno strumento di traduzione basato sull’IA che gestisce il caricamento, la traduzione e la sincronizzazione dei file di localizzazione, con opzioni per l’integrazione nel repository o nella pipeline CI/CD.

🔗 Scopri di più: Localizzazione di app mobili basata sull’IA con PTC — come PTC gestisce le traduzioni end-to-end per le app iOS e Android.

Di seguito, ti guideremo nei primi passi.

1

Esporta il tuo String Catalog da Xcode

Vai su Product → Export Localizations nella barra dei menu di Xcode. Xcode pacchettizza il tuo String Catalog in un file .xcloc per ogni lingua di destinazione.

Per questa guida, ci serve solo il file .xcstrings all’interno del pacchetto .xcloc. Per arrivarci, fai clic con il tasto destro sul file .xcloc esportato nel Finder e seleziona Mostra contenuto pacchetto. Troverai Localizable.xcstrings all’interno.

💡Vedi una notifica “Unable to build project for localization string extraction”?

Questo accade quando il tuo progetto utilizza API solo per iOS che Xcode non può compilare rispetto al suo SDK macOS interno durante l’estrazione delle stringhe. Per risolvere il problema, seleziona il target del progetto sotto TARGETS, vai su Build Settings, cerca “Use Compiler to Extract Swift Strings” e impostalo su No. Quindi prova a esportare di nuovo.

2

Iscriviti a PTC

Iscriviti per una prova gratuita di PTC — non è richiesta la carta di credito. La prova gratuita ti permette di tradurre 20.000 parole in due lingue, il che nella maggior parte dei casi è sufficiente per localizzare un’app.

Aggiungere altre lingue in seguito è facile. PTC utilizza un modello di pagamento a consumo senza canoni di abbonamento mensili. Paghi solo per ciò che traduci.

Dopo la registrazione, la configurazione del progetto si aprirà automaticamente.

3

Configura il tuo progetto e traduci

  1. Trascina e rilascia il tuo file Localizable.xcstrings in PTC. Una volta aggiunto, vedrai un campo per il nome del file di output. Lascialo come Localizable.xcstrings. Xcode si aspetta esattamente questo nome quando risolve le stringhe localizzate.
Caricamento di un file
  1. Seleziona le tue lingue di destinazione. La prova gratuita supporta due lingue. Per la nostra app demo, selezioniamo lo spagnolo e l’arabo.
Aggiunta di lingue di destinazione in PTC
  1. Descrivi cosa fa la tua app e a chi è rivolta. Questo è ciò che permette a PTC di produrre traduzioni sensibili al contesto che utilizzano il tono, la voce e la terminologia giusti per il tuo pubblico.
Aggiunta del contesto del progetto in PTC
  1. Aggiungi termini al tuo glossario. PTC vi aggiunge automaticamente il nome della tua app. Puoi anche aggiungere qualsiasi terminologia specifica del brand che dovrebbe essere tradotta in un modo particolare, o non tradotta affatto.

Dopo aver cliccato su Start Translation, PTC impiegherà alcuni minuti per elaborare il tuo file.

4

Revisionare e scaricare le traduzioni dell’app iOS

Una volta completata la traduzione, vai alla scheda Translations. Vedrai una tabella che elenca ogni stringa sorgente insieme alla sua traduzione. Tu o qualsiasi membro del team che aggiungi al progetto potete modificare le traduzioni manualmente direttamente in questa vista.

Se qualcosa non sembra corretto, puoi segnalare un problema con una traduzione specifica e richiedere una nuova traduzione IA gratuita. PTC impara dai feedback che fornisci e li applica alle stringhe future nello stesso progetto.

Segnalazione di problemi in PTC

Se una stringa tradotta supera il limite di lunghezza, verrà evidenziata nella tabella. PTC imposta questi limiti automaticamente in base alle caratteristiche di ogni lingua di destinazione. Hai tre opzioni:

  • Accetta la traduzione più lunga se la tua interfaccia utente può ospitarla
  • Richiedi una nuova traduzione che rientri nel limite attuale
  • Regola il limite in Settings → Translation lengths
Traduzioni lunghe segnalate in PTC

Parte 4: Integrare le traduzioni nel tuo progetto Xcode

Con le tue traduzioni pronte in PTC, l’ultimo passo è inserirle nel tuo progetto Xcode. Hai tre opzioni.

Scaricare manualmente i file da PTC

Vai alla scheda Resource Files in PTC e scarica il file zip. Contiene un singolo file Localizable.xcstrings con le tue stringhe sorgente in inglese e tutte le traduzioni incluse.

Per aggiungere il file al tuo progetto:

  1. Assicurati che Xcode sia chiuso
  2. Apri la cartella del tuo progetto nel Finder
  3. Sostituisci il file Localizable.xcstrings esistente con quello di PTC
  4. Riavvia Xcode

Le tue traduzioni appariranno nello String Catalog, con un segno di spunta accanto a ogni lingua completamente tradotta.

Traduzioni importate

Integrare con Git

Se il tuo progetto risiede su GitHub, GitLab o Bitbucket, puoi connettere PTC direttamente al tuo repository per una traduzione continua.

Nella tua dashboard PTC, vai su Settings → Merge Requests e clicca su Add Git Integration. Dovrai fornire l’URL del tuo repository, concedere l’accesso a PTC e scegliere il tuo branch e i file sorgente. PTC invierà una merge request con le traduzioni, che potrai revisionare e accettare come qualsiasi altra modifica al codice.

Usare l’API

L’API di PTC ti offre un modo per generare e scaricare automaticamente i file di localizzazione come parte della tua pipeline di build o deployment. Vale la pena esplorarla se hai una configurazione più complessa o vuoi il pieno controllo su quando e come le traduzioni vengono inserite nel tuo progetto.

Per iniziare, vai su Settings → Manage API tokens. Clicca su Add access token per generare un token, quindi consulta la documentazione API per tutti gli endpoint.

Parte 5: Testare la tua app iOS localizzata

Ora è il momento di verificare che le tue traduzioni appaiano e funzionino come previsto.

Testare con l’impostazione della lingua dello schema

Il modo più rapido per testare una lingua specifica è attraverso lo schema di Xcode. Vai su Product → Scheme → Edit Scheme e clicca sulla scheda Options. Cambia App Language e App Region nel locale che vuoi testare, quindi avvia l’app con Cmd+R.

Questo funziona bene per la maggior parte delle lingue. Dovresti vedere lo stesso layout e design della versione inglese, con tutto il testo passato alla lingua selezionata.

Testare l’arabo e altre lingue RTL (da destra a sinistra)

Per l’arabo e altre lingue che si scrivono da destra a sinistra, l’impostazione della lingua dello schema può essere inaffidabile nel Simulatore. Usa invece le impostazioni della lingua del Simulatore stesso:

  1. Avvia l’app con Cmd+R per aprire il Simulator
  2. Premi Cmd+Home per andare alla schermata principale
  3. Apri Settings → General → Language & Region
  4. Tocca Add Language, seleziona l’arabo e impostalo come lingua principale
  5. Il Simulatore si riavvierà. Apri la tua app dalla schermata principale

Verifica che il testo appaia in arabo e che il layout si specchi correttamente, con il titolo della navigazione e il contenuto allineati a destra.

Best practice per la localizzazione iOS

Controllare l’interfaccia utente per le diverse lunghezze del testo

Claude ha risposto: Le lingue variano nella lunghezza delle parole.

Le lingue variano nella lunghezza delle parole. Il tedesco, ad esempio, tende a essere più lungo dell’inglese e può facilmente compromettere un’interfaccia utente progettata pensando solo all’inglese.

Per evitare questo:

Usa il sistema di layout flessibile di SwiftUI e lascia che le etichette crescano e vadano a capo naturalmente
Evita vincoli di larghezza fissa sugli elementi di testo
Testa la tua interfaccia utente in alcune lingue diverse durante lo sviluppo, non solo prima del rilascio

Non saltare le varianti di pluralizzazione

Le lingue non esprimono le quantità allo stesso modo. L’inglese ha bisogno di due forme plurali (one e other), ma molte lingue ne richiedono di più. Il russo ha cinque categorie plurali, l’arabo ne ha sei e il giapponese non ne ha affatto. Se salti le varianti di pluralizzazione per una lingua di destinazione, la tua app visualizzerà stringhe innaturali o grammaticalmente errate per quel locale.

Gli String Catalog gestiscono questo automaticamente. Quando aggiungi una lingua, Xcode genera i campi plurali corretti per le regole grammaticali di quella lingua. Assicurati che tutti i campi generati siano compilati prima della pubblicazione.

Localizzare immagini e asset

Se la tua app utilizza immagini che contengono testo, o elementi visivi culturalmente specifici, anche questi devono essere localizzati. Un’app tradotta che mostra ancora testo in inglese all’interno delle immagini rovina l’esperienza per gli utenti non anglofoni.

Per localizzare un’immagine in Xcode, apri Assets.xcassets, seleziona l’immagine e nell’ Attributes Inspector clicca su Localize. Scegli le lingue per cui vuoi fornire varianti e sostituisci ciascuna con la versione appropriata. Xcode serve automaticamente l’immagine corretta in base al locale dell’utente.

Mantenere completa la lingua di base

La tua lingua di base (solitamente l’inglese) funge da riferimento per tutte le altre localizzazioni. Se a una stringa manca la traduzione per una lingua specifica, iOS ripiega sulla versione della lingua di base. Ciò significa che una lingua di base incompleta può causare fallback imprevisti anche in lingue che sono altrimenti completamente tradotte.

Prima di ogni rilascio, controlla che il tuo String Catalog non mostri stringhe mancanti o obsolete nella lingua di base. Xcode le segnala automaticamente durante la build.

Localizzare la tua scheda sull’App Store

La scheda dell’App Store è importante quanto l’app stessa. Un’app localizzata con una scheda solo in inglese perde utenti al momento della scoperta, prima ancora che l’abbiano scaricata.

In App Store Connect puoi localizzare il nome dell’app, il sottotitolo, la descrizione e il campo delle parole chiave per ogni territorio. Le parole chiave sono particolarmente preziose. Apple indicizza le parole chiave da più locali per territorio, il che moltiplica efficacemente il tuo budget di caratteri per le parole chiave oltre i 100 caratteri standard.

Per tradurre i contenuti della tua scheda sull’App Store, usa la funzione Incolla per tradurre di PTC. Incolla il nome dell’app, il sottotitolo, la descrizione o il campo delle parole chiave e PTC lo tradurrà nelle tue lingue di destinazione in pochi minuti.

Domande frequenti

Inizia a localizzare la tua app iOS oggi stesso

Tu hai fatto il lavoro tecnico. PTC si occupa del resto. Iscriviti per una prova gratuita e traduci fino a 20.000 parole in due lingue. Non è richiesta alcuna carta di credito.

Traduci i file .xcstrings con PTC

Ottieni traduzioni accurate in pochi minuti

Carica singoli file o automatizza tramite API o integrazione Git


Scorri verso l'alto