0Pricing
Swift Academy · Lektion

String Catalogs und lokalisierte Strings

Lokalisieren Sie Text mit dem modernen String Catalog.

String Catalogs und lokalisierte Strings ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum überhaupt lokalisieren

Lokalisierung (l10n) bedeutet, den Text Ihrer App in der Sprache des Benutzers darzustellen; Internationalisierung (i18n) bedeutet, den Code so zu strukturieren, dass Lokalisierung möglich ist. Der erste Schritt besteht darin, benutzerseitig sichtbare Texte nicht fest zu codieren, sondern sie aus einem Ressourcenkatalog zu laden.

// Hardcoded — bad for localization
// let title = "Welcome"

// Localized — looked up by key
let title = String(localized: "Welcome")

String Catalogs

Moderne Xcode-Projekte verwenden einen String Catalog (eine .xcstrings-Datei). Dabei handelt es sich um eine einzelne JSON-basierte Datei, die jeden lokalisierbaren Schlüssel, seine Übersetzungen je Sprache und Metadaten wie Kommentare und Pluralformen auflistet. Xcode kann Schlüssel automatisch aus Ihrem Code extrahieren.

// Localizable.xcstrings holds entries like:
// key: "Welcome"
//   en: "Welcome"
//   tr: "Hos geldiniz"
//   ja: "Yokoso"

String(localized:)

Im Code löst String(localized:) zur Laufzeit einen Schlüssel in die Übersetzung für die aktuelle Locale auf. Das übergebene Literal dient zugleich als Schlüssel und als Fallback der Entwicklungssprache.

let greeting = String(localized: "Welcome back")
let cancel = String(localized: "Cancel")
print(greeting)

Kommentare für Übersetzer hinzufügen

Ein einzelnes Wort wie Run kann „ausführen“ oder „joggen“ bedeuten. Der Parameter comment: liefert Übersetzern den nötigen Kontext, damit sie die passende Formulierung wählen. Kommentare werden automatisch in den String Catalog übernommen.

let runLabel = String(
    localized: "Run",
    comment: "Button that executes the user's code")

Werte interpolieren

Sie können Laufzeitwerte in eine lokalisierte Zeichenfolge einbetten. Swift wandelt jede Interpolation in einen Formatplatzhalter um, sodass Übersetzer sie umstellen können. In verschiedenen Sprachen stehen Subjekt und Zahl an unterschiedlichen Positionen.

let name = "Mira"
let count = 3
let msg = String(localized: "\(name) has \(count) new messages")
print(msg)

LocalizedStringKey in SwiftUI

In SwiftUI rufen Sie String(localized:) nur selten direkt auf. Die meisten Views, die Text akzeptieren, verwenden einen LocalizedStringKey, sodass ein einfaches Zeichenfolgenliteral automatisch lokalisiert wird.

// In SwiftUI — the literal is a LocalizedStringKey
// Text("Welcome back")        // auto-localized
// Button("Save") { save() }   // auto-localized
let key: LocalizedStringKey = "Welcome back"
_ = key

Unbeabsichtigte Lokalisierung vermeiden

Da SwiftUI Literale als Schlüssel behandelt, wird eine dynamische String-Variable nicht lokalisiert. Wenn Sie Text durch Verkettung aufbauen, sieht der Katalog den tatsächlichen Schlüssel nie. Übergeben Sie immer ein einzelnes Literal, wenn Sie Lokalisierung wünschen, und verwenden Sie verbatim:, wenn Sie ausdrücklich keine wünschen.

let userInput = "hello"
// Text(userInput)            // NOT a localization key
// Text(verbatim: userInput)  // explicitly raw, never localized
let verbatimKey = userInput
_ = verbatimKey

Eine Tabelle angeben

Große Apps teilen Zeichenfolgen auf mehrere Kataloge (Tabellen) auf. Sie können eine bestimmte Tabelle und ein bestimmtes Bundle angeben, was beim Ausliefern von Zeichenfolgen in einem Framework oder Swift Package unverzichtbar ist.

let onboardingTitle = String(
    localized: "Get Started",
    table: "Onboarding",
    bundle: .main)

LocalizedStringResource

LocalizedStringResource stellt eine lokalisierbare Zeichenfolge als Wert dar, den Sie speichern und später auflösen können, auch prozessübergreifend (nützlich für App Intents und Widgets). Die eigentliche Suche wird bis zur Anzeige aufgeschoben.

let resource = LocalizedStringResource("Order shipped")
// Resolve later, possibly in another locale context
let resolved = String(localized: resource)
print(resolved)

Die Standardlokalisierung

Die Entwicklungssprache des Projekts dient als Fallback, wenn eine Übersetzung fehlt. Das Zeichenfolgenliteral, das Sie im Code schreiben, wird als Wert der Ausgangssprache behandelt, sodass Ihr Code lesbar bleibt und Sie nie einen rohen Schlüssel wie welcome_screen_title an Benutzer ausliefern.

// 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)

Eine realistische Auflösung

Zusammengeführt ergibt sich eine Funktion, die eine vollständig lokalisierte, mit Kontext versehene und interpolierte Nachricht zurückgibt, die für jede UI bereit ist.

func welcomeMessage(for user: String) -> String {
    return String(
        localized: "Welcome, \(user)!",
        comment: "Greeting shown after sign-in")
}
print(welcomeMessage(for: "Ada"))

Schnelltest

Rufen Sie sich in Erinnerung, wie SwiftUI entscheidet, ob Text lokalisiert werden soll.

Zusammenfassung

Sie haben die Grundlage für lokalisierten Text geschaffen:

  • Speichern Sie Übersetzungen in einem String Catalog (.xcstrings).
  • Lösen Sie Zeichenfolgen mit String(localized:) auf und fügen Sie für Übersetzer comment: hinzu.
  • In SwiftUI werden Literale zu LocalizedStringKey und automatisch lokalisiert; Variablen werden es nicht.
  • Verwenden Sie table:/bundle: für Frameworks und LocalizedStringResource für eine verzögerte Auflösung.

Häufig gestellte Fragen

Ist die Lektion „String Catalogs und lokalisierte Strings“ kostenlos?

Ja — der vollständige Text von „String Catalogs und lokalisierte Strings“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „String Catalogs und lokalisierte Strings“?

Lokalisieren Sie Text mit dem modernen String Catalog. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „String Catalogs und lokalisierte Strings“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. String Catalogs und lokalisierte Strings
  2. Pluralisierung und Stringsdict
  3. Locale-abhängige Formatierung
  4. Schreibrichtung von rechts nach links und Layout-Richtung
← Zurück zu Swift Academy