String Catalogs og lokaliserede strings
Lokaliser tekst med den moderne String Catalog.
String Catalogs og lokaliserede strings er en gratis Swift Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Swift Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Swift Academy-kurset indeholder 4 lektioner i alt.
Hvorfor lokalisere overhovedet
Lokalisering (l10n) betyder, at du viser appens tekst på brugerens sprog; internationalisering (i18n) betyder, at du strukturerer koden, så lokalisering er mulig. Det første trin er at holde op med at hardkode brugerrettede strenge og i stedet hente dem fra et ressourcekatalog.
// Hardcoded — bad for localization
// let title = "Welcome"
// Localized — looked up by key
let title = String(localized: "Welcome")String Catalogs
Moderne Xcode-projekter bruger et String Catalog (.xcstrings-fil). Det er en enkelt JSON-baseret fil, der viser alle lokaliserbare nøgler, deres oversættelser på hvert sprog og metadata som kommentarer og flertalsbøjning. Xcode kan automatisk udtrække nøgler fra din kode.
// Localizable.xcstrings holds entries like:
// key: "Welcome"
// en: "Welcome"
// tr: "Hos geldiniz"
// ja: "Yokoso"String(localized:)
I kode slår String(localized:) ved kørsel en nøgle op og finder oversættelsen for brugerens aktuelle sprogindstilling. Den literal, du sender, fungerer både som nøgle og som reserveværdi på udviklingssproget.
let greeting = String(localized: "Welcome back")
let cancel = String(localized: "Cancel")
print(greeting)Tilføjelse af kommentarer til oversættere
Et enkelt ord som Kør kan betyde at udføre eller at jogge. Parameteren comment: giver oversætterne kontekst, så de vælger den rigtige formulering. Kommentarerne overføres automatisk til String Catalog.
let runLabel = String(
localized: "Run",
comment: "Button that executes the user's code")Indsættelse af værdier
Du kan indsætte værdier, der først kendes ved kørsel, i en lokaliseret streng. Swift omdanner hver indsættelse til en formatpladsholder, så oversætterne kan omarrangere dem. Forskellige sprog placerer subjektet og tallet forskellige steder.
let name = "Mira"
let count = 3
let msg = String(localized: "\(name) has \(count) new messages")
print(msg)LocalizedStringKey i SwiftUI
I SwiftUI kalder du sjældent String(localized:) direkte. De fleste visninger, der tager imod tekst, bruger en LocalizedStringKey, så en almindelig strengliteral lokaliseres automatisk.
// In SwiftUI — the literal is a LocalizedStringKey
// Text("Welcome back") // auto-localized
// Button("Save") { save() } // auto-localized
let key: LocalizedStringKey = "Welcome back"
_ = keyUndgå utilsigtet lokalisering
Fordi SwiftUI behandler literaler som nøgler, bliver en dynamisk String-variabel ikke lokaliseret. Hvis du opbygger tekst ved sammenkædning, ser kataloget aldrig den rigtige nøgle. Send én samlet literal, når du ønsker lokalisering, og brug verbatim:, når du udtrykkeligt ikke ønsker det.
let userInput = "hello"
// Text(userInput) // NOT a localization key
// Text(verbatim: userInput) // explicitly raw, never localized
let verbatimKey = userInput
_ = verbatimKeyAngivelse af en tabel
Store apps fordeler strenge på flere kataloger (tabeller). Du kan målrette en bestemt tabel og pakke, hvilket er vigtigt, når du leverer strenge i et framework eller en Swift-pakke.
let onboardingTitle = String(
localized: "Get Started",
table: "Onboarding",
bundle: .main)LocalizedStringResource
LocalizedStringResource repræsenterer en lokaliserbar streng som en værdi, du kan gemme og slå op senere, også på tværs af processer (nyttigt til App Intents og widgets). Det faktiske opslag udsættes, indtil teksten skal vises.
let resource = LocalizedStringResource("Order shipped")
// Resolve later, possibly in another locale context
let resolved = String(localized: resource)
print(resolved)Standardlokaliseringen
Projektets udviklingssprog leverer reserveværdien, når en oversættelse mangler. Den literal, du skriver i koden, behandles som værdien på kildesproget, så din kode forbliver læsbar, og du aldrig sender en rå nøgle som welcome_screen_title til brugerne.
// 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)Et realistisk opslag
Hvis vi samler det hele: en funktion, der returnerer en fuldt lokaliseret, kontekstforsynet og interpoleret meddelelse, som er klar til enhver brugerflade.
func welcomeMessage(for user: String) -> String {
return String(
localized: "Welcome, \(user)!",
comment: "Greeting shown after sign-in")
}
print(welcomeMessage(for: "Ada"))Hurtigt tjek
Husk, hvordan SwiftUI afgør, om tekst skal lokaliseres.
Opsummering
Du har opbygget grundlaget for lokaliseret tekst:
- Gem oversættelser i et String Catalog (
.xcstrings). - Slå strenge op med
String(localized:), og tilføjcomment:til oversætterne. - I SwiftUI bliver literaler til
LocalizedStringKeyog lokaliseres automatisk; variabler gør ikke. - Brug
table:/bundle:til frameworks ogLocalizedStringResourcetil opslag, der udsættes.
Lær Swift med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 122
- Lektioner
- 409
Ofte stillede spørgsmål
Er lektionen “String Catalogs og lokaliserede strings” gratis?
Ja — alle 3 lektioner i læringssporet Swift Academy, inklusive “String Catalogs og lokaliserede strings”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Swift Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “String Catalogs og lokaliserede strings”?
Lokaliser tekst med den moderne String Catalog. Du øver dig i Swift Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Swift Academy?
Der kræves ingen tidligere erfaring. Swift Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “String Catalogs og lokaliserede strings”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Swift Academy-lektion?
Ja. Alle Swift Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- String Catalogs og lokaliserede strings
- Pluralisering og Stringsdict
- Locale-bevidst formatering
- Højre-til-venstre og layoutretning