Internationalisierung von Swift-Apps: Machen Sie Ihren Code weltweit verständlich

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum Ihre App Internationalisierung braucht?

\n

Stellen Sie sich vor: Sie haben eine großartige iOS-App geschrieben. Sie funktioniert perfekt, die Benutzeroberfläche ist ein Augenschmaus, und Nutzer aus Russland geben fünf Sterne. Aber was, wenn Ihr Code Englisch sprechen würde? Oder Chinesisch? Oder Arabisch, wo Text von rechts nach links gelesen wird?

\n

Internationalisierung in Swift ist nicht nur die Übersetzung von Schaltflächen. Es ist ein architektonischer Ansatz, der es Ihrer App ermöglicht, die Sprache des Benutzers zu sprechen, seine kulturellen Besonderheiten (Datumsformate, Währungen, Maßeinheiten) zu respektieren und bei einem Locale-Wechsel nicht zu brechen.

\n

In diesem Artikel werden wir uns ansehen, wie man i18n (Internationalisierung) richtig in ein Swift-Projekt integriert, unter Verwendung moderner Xcode-Tools und bewährter Methoden. Bereit, Ihren Code zum Weltbürger zu machen? Los geht's!

\n\n

Grundlagen der Lokalisierung in Swift: Von NSLocalizedString bis String Catalog

\n

Der klassische Ansatz: NSLocalizedString

\n

Das grundlegendste Werkzeug ist das Makro NSLocalizedString. Es sucht nach Übersetzungen in .strings-Dateien und zeigt, falls keine gefunden werden, den Schlüssel (oder den Standardwert) an.

\n
let hello = NSLocalizedString("hello_world", comment: "Begrüßung auf dem Hauptbildschirm")\nprint(hello) // Gibt die Übersetzung basierend auf der Gerätesprache aus
\n

Der Kommentar ist keine bloße Formalität. Er hilft Übersetzern, den Kontext zu verstehen: "hello_world" kann sowohl eine Begrüßung als auch ein Abschnittstitel sein. Schreiben Sie immer einen aussagekräftigen comment.

\n\n

String Catalog – der neue Standard (Xcode 15+)

\n

Vergessen Sie Dutzende von Localizable.strings-Dateien. In Xcode 15 gibt es String Catalogs (.xcstrings). Dies ist eine einzige Datei mit Unterstützung für mehrere Sprachen, Pluralbildung und Kontextnotizen.

\n

So erstellen Sie einen Katalog: File → New → File → String Catalog. Schlüssel hinzugefügt – fertig:

\n
// Der Code bleibt derselbe!\nlet welcome = NSLocalizedString("welcome_message", comment: "Begrüßung für einen neuen Benutzer")\n\n// Im String Catalog fügen Sie einfach Übersetzungen für en, ru, ar usw. hinzu.
\n

Vorteile: Keine Notwendigkeit, Dateien zu synchronisieren, geringeres Risiko von Kodierungsfehlern, integrierte Unterstützung für Pluralbildung.

\n\n

Formatierung von Zahlen und Daten: Kultureller Code

\n

Fehler: Das Datumsformat fest als "dd.MM.yyyy" festlegen. In den USA schreibt man "MM/dd/yyyy", in Japan "yyyy年MM月dd日". Swift rettet mit DateFormatter und NumberFormatter.

\n\n

Daten, die man zeigen kann

\n
let date = Date()\nlet formatter = DateFormatter()\nformatter.dateStyle = .long\nformatter.timeStyle = .none\nformatter.locale = Locale.current // Passt sich automatisch an die Gerätesprache an\n\nlet localizedDate = formatter.string(from: date)\n// Für en: "January 15, 2025"\n// Für ru: "15 января 2025 г."\n// Für de: "15. Januar 2025"\nprint(localizedDate)
\n

Keine dateFormat-Strings! Verwenden Sie .short, .medium, .long – diese berücksichtigen bereits die kulturellen Regeln.

\n\n

Zahlen und Währungen: Respektieren Sie Kommas und Punkte

\n

In Russland wird die Zahl 1234,56 als "1 234,56" geschrieben, in den USA als "1,234.56". NumberFormatter weiß das:

\n
let price = 1234.56\nlet numberFormatter = NumberFormatter()\nnumberFormatter.numberStyle = .currency\nnumberFormatter.locale = Locale.current\n\nlet localizedPrice = numberFormatter.string(from: NSNumber(value: price))!\n// Für en_US: "$1,234.56"\n// Für ru_RU: "1 234,56 ₽"\n// Für de_DE: "1.234,56 €"\nprint(localizedPrice)
\n\n

Pluralbildung: Eins, zwei, viele – raten Sie nicht

\n

Die Regel "eins – viele" funktioniert nur im Englischen. Im Russischen gibt es "1 минута", "2 минуты", "5 минут". Im Arabischen gibt es sechs Formen! String Catalog und NSStringPluralRule lösen das elegant.

\n

Im String Catalog fügen Sie einen Schlüssel hinzu, geben den Typ "Plural" an und füllen die Formen aus:

\n
// Im Code

Blogs

Buchempfehlungen