Cataloghi di stringhe e stringhe localizzate
Localizzi il testo con il moderno String Catalog.
Cataloghi di stringhe e stringhe localizzate è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
Perché localizzare
La localizzazione (l10n) consiste nel presentare il testo dell'app nella lingua dell'utente; l'internazionalizzazione (i18n) consiste nel strutturare il codice in modo da rendere possibile la localizzazione. Il primo passo è smettere di inserire direttamente nel codice le stringhe rivolte all'utente e recuperarle invece da un catalogo delle risorse.
// Hardcoded — bad for localization
// let title = "Welcome"
// Localized — looked up by key
let title = String(localized: "Welcome")String Catalog
I moderni progetti Xcode usano uno String Catalog (file .xcstrings). Si tratta di un unico file basato su JSON che elenca ogni chiave localizzabile, le relative traduzioni per lingua e metadati come commenti e forme plurali. Xcode può estrarre automaticamente le chiavi dal codice.
// Localizable.xcstrings holds entries like:
// key: "Welcome"
// en: "Welcome"
// tr: "Hos geldiniz"
// ja: "Yokoso"String(localized:)
Nel codice, String(localized:) risolve a runtime una chiave nella traduzione corrispondente alla locale corrente. Il valore letterale passato funge sia da chiave sia da fallback nella lingua di sviluppo.
let greeting = String(localized: "Welcome back")
let cancel = String(localized: "Cancel")
print(greeting)Aggiungere commenti per i traduttori
Una parola isolata come Run può significare eseguire oppure fare jogging. Il parametro comment: fornisce ai traduttori il contesto necessario per scegliere la formulazione corretta. I commenti vengono inseriti automaticamente nello String Catalog.
let runLabel = String(
localized: "Run",
comment: "Button that executes the user's code")Interpolare i valori
È possibile incorporare valori determinati a runtime in una stringa localizzata. Swift trasforma ogni interpolazione in un segnaposto di formato, così i traduttori possono riordinarli. Lingue diverse collocano il soggetto e il numero in posizioni diverse.
let name = "Mira"
let count = 3
let msg = String(localized: "\(name) has \(count) new messages")
print(msg)LocalizedStringKey in SwiftUI
In SwiftUI raramente si chiama direttamente String(localized:). La maggior parte delle view che accettano testo usa un LocalizedStringKey, quindi un semplice valore letterale stringa viene localizzato automaticamente.
// In SwiftUI — the literal is a LocalizedStringKey
// Text("Welcome back") // auto-localized
// Button("Save") { save() } // auto-localized
let key: LocalizedStringKey = "Welcome back"
_ = keyEvitare la localizzazione accidentale
Poiché SwiftUI tratta i valori letterali come chiavi, una variabile String dinamica non viene localizzata. Se si costruisce il testo per concatenazione, il catalogo non vede mai la chiave reale. Passi un unico valore letterale quando desidera la localizzazione e usi verbatim: quando vuole escluderla esplicitamente.
let userInput = "hello"
// Text(userInput) // NOT a localization key
// Text(verbatim: userInput) // explicitly raw, never localized
let verbatimKey = userInput
_ = verbatimKeySpecificare una tabella
Le app di grandi dimensioni suddividono le stringhe in più cataloghi (tabelle). È possibile indicare una tabella e un bundle specifici, una soluzione essenziale quando si distribuiscono stringhe all'interno di un framework o di un pacchetto Swift.
let onboardingTitle = String(
localized: "Get Started",
table: "Onboarding",
bundle: .main)LocalizedStringResource
LocalizedStringResource rappresenta una stringa localizzabile come un valore che può essere memorizzato e risolto in seguito, anche tra processi diversi, una caratteristica utile per App Intents e widget. Rimanda la ricerca effettiva al momento della visualizzazione.
let resource = LocalizedStringResource("Order shipped")
// Resolve later, possibly in another locale context
let resolved = String(localized: resource)
print(resolved)La localizzazione predefinita
La lingua di sviluppo del progetto fornisce il fallback quando manca una traduzione. Il valore letterale scritto nel codice viene trattato come il valore nella lingua sorgente, così il codice resta leggibile e non si invia mai agli utenti una chiave grezza come welcome_screen_title.
// If only 'en' is translated and device is set to 'fr',
// the development-language value is shown as fallback.
let fallback = String(localized: "Settings")
print(fallback)Una ricerca realistica
Riassumendo: una funzione che restituisce un messaggio completamente localizzato, corredato del contesto e con interpolazioni, pronto per qualsiasi interfaccia utente.
func welcomeMessage(for user: String) -> String {
return String(
localized: "Welcome, \(user)!",
comment: "Greeting shown after sign-in")
}
print(welcomeMessage(for: "Ada"))Verifica rapida
Ricordi come SwiftUI decide se localizzare il testo.
Riepilogo
Ha configurato le fondamenta del testo localizzato:
- Memorizzi le traduzioni in uno String Catalog (
.xcstrings). - Cerchi le stringhe con
String(localized:), aggiungendocomment:per i traduttori. - In SwiftUI, i valori letterali diventano
LocalizedStringKeye vengono localizzati automaticamente; le variabili no. - Usi
table:/bundle:per framework eLocalizedStringResourceper la risoluzione differita.
Domande Frequenti
La lezione «Cataloghi di stringhe e stringhe localizzate» è gratuita?
Sì — il testo completo di «Cataloghi di stringhe e stringhe localizzate» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «Cataloghi di stringhe e stringhe localizzate»?
Localizzi il testo con il moderno String Catalog. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Cataloghi di stringhe e stringhe localizzate»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Cataloghi di stringhe e stringhe localizzate
- Pluralizzazione e Stringsdict
- Formattazione in base alle impostazioni locali
- Da destra a sinistra e direzione del layout