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 localizzazione | Adattare l’app per un locale specifico |
| Quando | Prima del primo rilascio | Continuo, per ogni lingua |
| Chi | Sviluppatori | Sviluppatori e traduttori |
| Esempi | Estrazione delle stringhe, uso di formattatori sensibili al locale | Traduzione 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.

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.

Passaggio 2
Creare uno String Catalog
Successivamente, aggiungi uno String Catalog.
- Fai clic con il tasto destro sul tuo progetto e seleziona New File from Template.
- Cerca String Catalog e aggiungilo. Il nome predefinito sarà Localizable.xcstrings. Non c’è bisogno di cambiarlo.
- 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.

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
- Trascina e rilascia il tuo file
Localizable.xcstringsin PTC. Una volta aggiunto, vedrai un campo per il nome del file di output. Lascialo comeLocalizable.xcstrings. Xcode si aspetta esattamente questo nome quando risolve le stringhe localizzate.

- Seleziona le tue lingue di destinazione. La prova gratuita supporta due lingue. Per la nostra app demo, selezioniamo lo spagnolo e l’arabo.

- 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.

- 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.

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

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.
Opzione 1
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:
- Assicurati che Xcode sia chiuso
- Apri la cartella del tuo progetto nel Finder
- Sostituisci il file
Localizable.xcstringsesistente con quello di PTC - Riavvia Xcode
Le tue traduzioni appariranno nello String Catalog, con un segno di spunta accanto a ogni lingua completamente tradotta.

Opzione 2
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.
Opzione 3
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:
- Avvia l’app con Cmd+R per aprire il Simulator
- Premi Cmd+Home per andare alla schermata principale
- Apri Settings → General → Language & Region
- Tocca Add Language, seleziona l’arabo e impostalo come lingua principale
- 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:
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
Perché la localizzazione iOS non funziona?
La causa più comune è che il file di localizzazione non è incluso nel target dell’app.
Clicca su Localizable.xcstrings nel Navigator, apri il File Inspector sulla destra e controlla che il target della tua app sia selezionato sotto Target Membership. Assicurati anche che la lingua che stai testando sia elencata nella sezione Localizations del tuo progetto sotto la scheda Info.
Se entrambi sembrano corretti, prova a pulire la cartella di build con Shift+Cmd+K e a ricompilare.
Quali sono i formati dei file di localizzazione iOS?
Xcode supporta diversi formati di file per la localizzazione:
.xcstrings(String Catalog) è l’impostazione predefinita attuale da Xcode 15. È un singolo file basato su JSON che consolida tutte le tue stringhe, regole plurali e varianti specifiche per dispositivo. Xcode estrae le stringhe automaticamente al momento della build e segnala eventuali traduzioni mancanti. Questo è il formato da utilizzare per ogni nuovo progetto..stringsè il formato legacy, ancora valido e comune nei codebase più datati. Memorizza coppie chiave-valore per una singola lingua in un file di testo semplice. Avrai bisogno di un file .stringsdict separato per gestire la pluralizzazione..stringsdictgestisce le regole plurali nei progetti che utilizzano file .strings. Gli String Catalog hanno il supporto plurale integrato, quindi non ne avrai bisogno nei nuovi progetti..xliffe.xclocsono formati di esportazione utilizzati quando si consegnano le stringhe ai traduttori o a una piattaforma di traduzione. Non sono formati di archiviazione. Xcode li genera quando esporti per la traduzione.
Come localizzo il nome dell’app in Xcode?
Crea un nuovo file di stringhe chiamato InfoPlist.strings e localizzalo per ogni lingua supportata. In ogni versione linguistica del file, aggiungi la seguente riga con il nome dell’app tradotto:
CFBundleDisplayName = "Your Translated App Name";
Seleziona il file nel Navigator, apri il File Inspector e clicca su Localize per aggiungere varianti linguistiche. iOS visualizzerà il nome dell’app corretto in base alla lingua del dispositivo dell’utente.
Come posso cambiare la lingua dell’app a livello di codice senza riavviare?
iOS non fornisce un’API nativa per cambiare la lingua dell’app in fase di esecuzione senza riavviare. L’approccio standard consiste nell’impostare la chiave AppleLanguages in UserDefaults e chiedere all’utente di riavviare l’app:
UserDefaults.standard.set(["es"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()Il cambio di lingua ha effetto al successivo avvio dell’app. Se la tua app richiede il cambio di lingua durante la sessione senza riavvio, dovrai gestire la localizzazione manualmente caricando il bundle appropriato per la lingua selezionata.
Come posso cambiare la lingua della mia app su App Store Connect?
In App Store Connect, vai alla pagina della tua app e seleziona la lingua che vuoi aggiungere dalla barra laterale sinistra. Puoi localizzare il nome dell’app, il sottotitolo, il testo promozionale, la descrizione, le parole chiave e gli screenshot per ogni territorio in modo indipendente.
Le modifiche alla tua scheda sull’App Store non richiedono l’invio di una nuova app. Puoi aggiornare i metadati in qualsiasi momento.
Perché la mia app ripiega sull’inglese per le lingue non supportate?
iOS utilizza la tua lingua di base come fallback quando una traduzione non è disponibile per la lingua preferita dell’utente. Se il dispositivo di un utente è impostato su una lingua non supportata dalla tua app, o se a una stringa specifica manca la traduzione, iOS serve invece la versione nella lingua di base. Questo è il comportamento previsto. Per ridurre al minimo i fallback, assicurati che il tuo String Catalog non mostri stringhe mancanti o obsolete prima di ogni rilascio.
Localizzare un’app iOS aiuta davvero i download?
Sì, costantemente. Le app localizzate in cinque o più lingue generano in media molti più download rispetto alle app solo in inglese, e i mercati non anglofoni rappresentano più della metà delle entrate globali dell’App Store. Giappone, Corea del Sud e Cina sono tra i mercati con i guadagni più alti al di fuori dei paesi di lingua inglese.
In quali lingue dovrei localizzare per prima la mia app iOS?
Inizia con le lingue che offrono la migliore combinazione tra dimensioni del mercato e costi di traduzione. Spagnolo, francese, tedesco, giapponese e cinese semplificato sono i punti di partenza più comuni per le app che si espandono oltre l’inglese.
Se la tua app ha già utenti in una regione specifica, dai la priorità alla loro lingua.
Per il minor costo di adattamento, inizia con lingue geograficamente o culturalmente vicine al tuo mercato di base e procedi verso l’esterno da lì.
Posso davvero usare l’IA per localizzare accuratamente tutta la mia app iOS?
Sì. La traduzione IA è diventata sufficientemente accurata per la maggior parte dei contenuti delle app ed è significativamente più veloce ed economica della sola traduzione umana.
PTC utilizza l’IA per tradurre i tuoi file .xcstrings, .strings e .stringsdict in pochi minuti, preservando automaticamente le regole plurali e i placeholder. Il 99,8% delle stringhe tradotte va online senza alcuna modifica. Per risultati ottimali, descrivi la tua app a PTC durante la configurazione, in modo che le traduzioni riflettano il tono e la terminologia giusti per il tuo pubblico.

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