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"]
}