Lingo.dev + .strings (Xcode)
Lingo.dev CLI übersetzt Xcode .strings-Dateien unter Beibehaltung der Key-Value-Struktur, Kommentare und iOS-Lokalisierungskonventionen. Die CLI funktioniert mit älteren Xcode-Projekten und Workflows, behält Entwicklerkontext und Anweisungen in Kommentaren bei, bewahrt iOS-Formatspezifikatoren wie %@
und %d
, verarbeitet UTF-16- und UTF-8-Kodierungen korrekt und integriert sich in Standard-iOS-Lokalisierungspipelines.
Schnelle Einrichtung
Konfiguration für Legacy-Xcode-Strings-Dateien:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xcode-strings": {
"include": ["Resources/[locale].lproj/Localizable.strings"]
}
}
}
Hinweis: [locale]
ist ein Platzhalter, der wörtlich in der Konfiguration verbleiben sollte, da er während der CLI-Ausführung durch die tatsächliche Locale ersetzt wird.
Strings-Dateien übersetzen
npx lingo.dev@latest i18n
Bewahrt das Strings-Dateiformat, Entwicklerkommentare und iOS-spezifische Konventionen bei der Übersetzung von Werten.
Strings-Dateistruktur
Grundlegende Key-Value-Paare
/* Hauptnavigation */
"nav.home" = "Home";
"nav.settings" = "Einstellungen";
"nav.profile" = "Profil";
/* Authentifizierung */
"auth.login" = "Anmelden";
"auth.logout" = "Abmelden";
"auth.register" = "Registrieren";
Formatspezifikatoren
/* Benutzernachrichten mit Platzhaltern */
"welcome.user" = "Willkommen zurück, %@!";
"items.count" = "Sie haben %d Artikel in Ihrem Warenkorb";
"download.progress" = "Download läuft... %.1f%% abgeschlossen";
Mehrzeilige Strings
/* Längerer Inhalt */
"terms.agreement" = "Durch die Nutzung dieser App stimmen Sie unseren Nutzungsbedingungen und Datenschutzrichtlinien zu. Bitte lesen Sie diese sorgfältig durch, bevor Sie fortfahren.";
"help.description" = "Diese Funktion hilft Ihnen, Ihre Aufgaben effizient zu verwalten. Sie können Arbeitseinträge erstellen, bearbeiten und organisieren.";
iOS-spezifische Funktionen
Lokalisierungskommentare
/* Appears in the tab bar at the bottom */
"tab.home" = "Home";
/* Button text for submitting a form */
"button.submit" = "Submit";
/* Error message when network is unavailable */
"error.network" = "Please check your internet connection";
Entwicklerkommentare bieten Kontext für Übersetzer.
Sonderzeichen
/* Strings with quotes and special characters */
"message.quote" = "She said, \"Hello there!\"";
"path.file" = "Documents\\MyFile.txt";
"symbol.copyright" = "© 2024 Company Name";
Korrekte Maskierung für Anführungszeichen und Backslashes wird beibehalten.
Storyboard-Integration
/* Storyboard localizations */
"A8K-3L-9X7.text" = "Welcome";
"B9M-4N-0Y8.placeholder" = "Enter your name";
"C0P-5Q-1Z9.title" = "Settings";
Von Interface Builder generierte Schlüssel werden korrekt verarbeitet.
Erweiterte Konfiguration
Mehrere Strings-Dateien
"xcode-strings": {
"include": [
"Resources/[locale].lproj/Localizable.strings",
"Resources/[locale].lproj/InfoPlist.strings"
]
}
System-Schlüssel sperren
"xcode-strings": {
"include": ["Resources/[locale].lproj/Localizable.strings"],
"lockedKeys": ["CFBundleName", "CFBundleDisplayName"]
}