Pluralisierung und Stringsdict
Behandeln Sie Pluralregeln über mehrere Sprachen hinweg.
Pluralisierung und Stringsdict ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.
Das Problem der Pluralformen
Im Englischen gibt es zwei Formen – 1 item, 2 items –, weshalb Entwickler häufig "\(n) item" + (n == 1 ? "" : "s") schreiben. Das geht gründlich schief: Arabisch hat sechs Pluralkategorien, Russisch drei, Japanisch eine. Plural-Logik fest zu codieren ist ein Lokalisierungsfehler, der nur darauf wartet, aufzutreten.
// FRAGILE — only works for English
let n = 5
let bad = "\(n) item" + (n == 1 ? "" : "s")
print(bad)Pluralkategorien
Unicode definiert Pluralkategorien: zero, one, two, few, many, other. Jede Sprache verwendet eine Teilmenge. Das System wählt anhand der Lokalisierungsregeln die richtige Kategorie für eine Zahl aus – Sie müssen die Regeln niemals selbst schreiben.
// English uses: one, other
// Russian uses: one, few, many, other
// Japanese uses: other (only)
// You provide a variant string per category needed.Pluralvarianten in einem String Catalog
In einem String Catalog legen Sie fest, dass eine Zeichenfolge Pluralvarianten besitzt. Xcode ermöglicht Ihnen anschließend, Text für jede Kategorie bereitzustellen. Zur Laufzeit wird die richtige Variante automatisch anhand der interpolierten Anzahl und der Locale des Benutzers ausgewählt.
// Catalog entry, key "message_count":
// one: "You have %lld message"
// other: "You have %lld messages"
let count = 1
let text = String(localized: "You have \(count) messages")
print(text)Das ältere .stringsdict
Vor String Catalogs wurden Pluralformen in einer .stringsdict-Datei gespeichert – einer Property List, die einen Schlüssel einer Formatzeichenfolge sowie Varianten pro Kategorie zuordnet. In älteren Projekten finden Sie diese Dateien noch; sie werden weiterhin vollständig unterstützt.
// Localizable.stringsdict (plist) structure:
// key: "items_count"
// NSStringLocalizedFormatKey: "%#@items@"
// items: NSStringPluralRuleType
// one: "%lld item"
// other: "%lld items"Aufbau eines stringsdict-Eintrags
Jeder Eintrag enthält einen Formatschlüssel, der auf eine oder mehrere benannte Variablen verweist, die in %#@name@ eingeschlossen sind. Jede Variable definiert den Regeltyp (NSStringPluralRuleType), den Werttyp-Spezifizierer (%lld) und eine Zeichenfolge für jede Pluralkategorie.
// The %#@items@ token expands to the chosen
// plural variant. %lld is the integer placeholder
// substituted inside each variant string.
let n = 3
print(String(localized: "\(n) items selected"))Einen pluralisierten String nachschlagen
Vom Code aus sieht die Aufrufstelle genauso aus wie bei jedem lokalisierten String — Sie interpolieren einfach die Anzahl. Die Auswahl der Pluralform erfolgt innerhalb des Frameworks, sodass dieselbe Swift-Zeile in jeder Sprache funktioniert.
func messagesLabel(_ count: Int) -> String {
return String(localized: "You have \(count) messages")
}
print(messagesLabel(0))
print(messagesLabel(1))
print(messagesLabel(7))Warum „one“ nicht einfach 1 bedeutet
Ein häufiger Fehler ist die Annahme, dass die Kategorie one genau der Zahl 1 entspricht. In manchen Sprachen gilt sie für jede Zahl, die auf 1 endet (etwa 21 oder 31), und zero kann eine eigene Kategorie sein oder auch nicht. Stellen Sie immer für jede Kategorie einen Text bereit und überlassen Sie die Entscheidung den Regeln.
// Russian: 1, 21, 31 -> 'one'
// 2, 3, 4 -> 'few'
// 5..20, 0 -> 'many'
// Never assume one == 1.Pluralformen mit anderen Werten kombinieren
Ein Format kann mehrere Variablen enthalten — zum Beispiel eine Anzahl und einen Namen. Jede davon kann unabhängig pluralisiert werden. In einem String Catalog markieren Sie, welche Interpolation variiert; alles andere bleibt über alle Varianten hinweg gleich.
let files = 2
let folder = "Photos"
let text = String(
localized: "\(files) files in \(folder)")
// 'files' drives the plural; 'folder' is substituted as-is
print(text)Varianten für Breite und Gerät
Dieselbe Katalogmechanik unterstützt auch Variationen für Gerät und Breite. So können Sie auf einer Watch eine kurze und auf dem iPad eine längere Beschriftung anzeigen oder sie bei knappem Platz abkürzen. Diese Varianten funktionieren zusammen mit Pluralvarianten.
// Catalog can vary by:
// plural: one / other
// device: iPhone / iPad / watch
// width: short / medium / long
let label = String(localized: "Notifications")
print(label)Pluralbildung testen
Um Ihre Varianten zu überprüfen, führen Sie die App für jede Zielsprache mit der Lokalisierungsüberschreibung des Xcode-Schemas aus oder verwenden Sie die Pseudosprache und Vorschauen pro Locale. Prüfen Sie stichprobenartig die Grenzwerte: 0, 1, 2, 5, 11, 21, 100.
let samples = [0, 1, 2, 5, 11, 21, 100]
for n in samples {
print(String(localized: "\(n) items"))
}Bewährte Vorgehensweisen
Für korrekte Pluralformen gilt:
- Hängen Sie niemals Suffixe wie
sper Verkettung oder fest codiert an. - Stellen Sie alle Kategorien bereit, die die Zielsprachen benötigen.
- Leiten Sie die Pluralform aus der interpolierten Ganzzahl ab, nicht aus einem vorberechneten String.
- Bevorzugen Sie für neuen Code String Catalogs; verwenden Sie
.stringsdictnur für ältere Zielplattformen.
func cartSummary(_ items: Int) -> String {
String(localized: "Your cart has \(items) items",
comment: "Cart count; pluralized")
}
print(cartSummary(1))Kurze Überprüfung
Rufen Sie sich ins Gedächtnis, wie die Auswahl der Pluralform behandelt werden sollte.
Zusammenfassung
Sie haben die lokalisierungsgerechte Pluralbildung gelernt:
- Die Unicode-Pluralkategorien sind zero, one, two, few, many, other; jede Sprache verwendet eine Teilmenge davon.
- Mit String Catalogs können Sie pro Schlüssel Pluralvarianten hinzufügen; das ältere
.stringsdicterledigt dasselbe über eine plist. - Die Aufrufstellen bleiben einfach — interpolieren Sie die Anzahl, und das Framework wählt die passende Variante.
- Codieren Sie die Plurallogik niemals fest; die Kategorie one bedeutet nicht einfach die Zahl 1.
Häufig gestellte Fragen
Ist die Lektion „Pluralisierung und Stringsdict“ kostenlos?
Ja — der vollständige Text von „Pluralisierung und Stringsdict“ 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 „Pluralisierung und Stringsdict“?
Behandeln Sie Pluralregeln über mehrere Sprachen hinweg. 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 2 von 4.
Wie lange dauert die Lektion „Pluralisierung und Stringsdict“?
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
- String Catalogs und lokalisierte Strings
- Pluralisierung und Stringsdict
- Locale-abhängige Formatierung
- Schreibrichtung von rechts nach links und Layout-Richtung