|
Dateierweiterungen |
.xcstrings |
|
API-Erweiterung |
strings_catalog |
|
Importieren |
Ja |
|
Exportieren |
Ja |
|
Unterstützung für Pluralformen |
Ja |
|
Unterstützung für Beschreibungen |
Ja |
|
Format-Optionen Diese Optionen können angegeben werden, wenn eine Datei hochgeladen und/oder heruntergeladen wird. Je nach Upload-/Download-Methode (API, CLI, Repo-Synchronisierung usw.) können sie in den Abfrageparametern |
convert_placeholder default_extraction_state |
Apple Strings Catalog (.xcstrings) ist ein Lokalisierungsformat, das in Xcode 15 eingeführt wurde. Es verbessert die Art und Weise, wie Entwickler lokalisierte Strings verwalten, indem es strukturierte Formate zur Handhabung von Pluralisierung, gerätespezifischen Variationen und mehr unterstützt. Dieses Format wird als empfohlener Ansatz zur Verwaltung von Lokalisierungen in iOS- und macOS-Anwendungen angesehen.
Die Metadatenfelder Kommentar, Extraktionsstatus und sollte übersetzen werden in der erforderlichen Reihenfolge importiert und exportiert, um die Kompatibilität mit Xcode sicherzustellen.
Phrase ordnet auch die Xcode-Übersetzungszustände während des Imports den nächstgelegenen Strings-Äquivalenten zu und konvertiert sie beim Export zurück in Xcode-kompatible Werte. Wenn keine spezifische Zuordnung zutrifft, wird übersetzt als Standardexportwert verwendet. Falls erforderlich, verwenden Sie die Option , um die Statuszuordnung zu überspringen.
Codebeispiel
{
"sourceLanguage": "en",
"strings": {
"Sync Warning": {
"comment": "Sync function unavailable message",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Cloud Sync must be enabled to use this feature."
}
},
"fr": {
"stringUnit": {
"state": "translated",
"value": "La synchronisation cloud doit être activée pour utiliser cette fonction."
}
}
}
},
"Chosen Collections": {
"comment": "View title indicating selected photo collections",
"localizations": {
"fr": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%ld collection sélectionnée"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%ld collections sélectionnées"
}
}
}
}
},
"en": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%ld Collection Selected"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%ld Collections Selected"
}
}
}
}
}
}
},
"Settings Hub": {
"localizations": {
"es": {
"stringUnit": {
"state": "translated",
"value": "Centro de configuración"
}
}
}
}
},
"version": "1.0"
}
Bei Verwendung der Phrase CLI folgen die Datei-Exporte der Struktur, die in der .phrase.yml Konfigurationsdatei definiert ist. Um sicherzustellen, dass mehrere Sprachen während Pull-Operationen in eine einzige .XCSTRINGS-Datei exportiert werden:
-
Geben Sie nur ein Dateiziel in der CLI-Konfigurationsdatei an.
-
Verwenden Sie den Parameter
locale_ids, um alle Sprachlokalisierungen aufzulisten, die im Export enthalten sind.
Beispiel .phrase.yml Konfiguration
pull:
targets:
- file: ./i18n-test/Localizable.xcstrings
params:
locale_id: en # Main language for the download
locale_ids: # Additional languages to include
- de
- es
- fr
file_format: strings_catalog
Gerätevariationen
Apple Strings Catalog unterstützt Gerätevariationen, die unterschiedliche Übersetzungsinhalte für denselben Schlüssel je nach verwendetem Apple-Gerät ermöglichen.
Um Gerätevariationen in Phrase Strings zu handhaben, werden separate Schlüssel für jedes Gerät mit dem Trennzeichen |==| erstellt. Beim Importieren von .XCSTRINGS-Dateien wird der Gerätetyp dem Basis-Schlüsselname mit diesem Trennzeichen hinzugefügt.
Beispiel
Der Schlüssel mit dem Namen %lld Produkt(e) bestellt für das applewatch Gerät wird als pluraler Schlüssel mit dem Namen %lld Produkt(e) bestellt|==|device.applewatch in Phrase Strings importiert.
Beim Export erkennt Phrase Strings die Gerätevariante mithilfe des Trennzeichens und stellt die ursprüngliche verschachtelte Struktur für Apples Lokalisierungsformat wieder her.
{
"sourceLanguage": "en",
"strings": {
"%lld Product(s) Ordered": {
"comment": "Gibt die Anzahl der bestellten Produkte an, mit gerätespezifischen Variationen",
"localizations": {
"en": {
"variations": {
"device": {
"applewatch": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld Product ordered (Apple Watch)"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld Products ordered (Apple Watch)"
}
}
}
}
},
"ipad": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld Product ordered (iPad)"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld Products ordered (iPad)"
}
}
}
}
},
"iphone": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld Product ordered (iPhone)"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld Products ordered (iPhone)"
}
}
}
}
},
"mac": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld Product ordered (Mac)"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld Products ordered (Mac)"
}
}
}
}
}
}
}
},
"fr": {
"variations": {
"plural": {
"few": {
"stringUnit": {
"state": "translated",
"value": "%lld produit(s) commandé(s)"
}
},
"many": {
"stringUnit": {
"state": "translated",
"value": "%lld produits commandés"
}
},
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld produit commandé"
}
}
}
}
}
}
}
}
}
Zeichenfolgenersetzungen
Das Apple Strings Catalog unterstützt Zeichenfolgenersetzungen, die flexible Platzhalter für dynamische Inhalte bereitstellen.
Um Zeichenfolgenersetzungen in Phrase Strings zu verarbeiten, werden separate Schlüssel unter Verwendung des Trennzeichens |==| erstellt. Beim Importieren von .XCSTRINGS-Dateien wird die Ersetzung dem Basis-Schlüsselname mit diesem Trennzeichen hinzugefügt.
Phrase Strings unterstützt auch die Erstellung von Ersetzungszeichenfolgen direkt im Projekt. Wenn Ersetzungsstrukturen manuell erstellt werden, müssen ein Basis-Schlüssel und ein entsprechender Ersetzungsschlüssel definiert werden, um sicherzustellen, dass das korrekte verschachtelte Format während des Exports generiert wird.
Ersetzungen erfordern immer ein spezifisches Schlüsselbenennungsformat: keyName|==|substitution.[specifier].
Beispiel: Importieren von Ersetzungsstrukturen aus vorhandenen .XCSTRINGS-Dateien
Der Schlüssel mit dem Namen birdSightingAlert für die BIRDS Ersetzung wird als pluraler Schlüssel mit dem Namen birdSightingAlert|==|substitution.BIRDS in Phrase Strings importiert.
Beim Export erkennt Phrase Strings die Ersetzung mithilfe des Trennzeichens und stellt die ursprüngliche verschachtelte Struktur für Apples Lokalisierungsformat wieder her.
"birdSightingAlert": {
"comment": "Alert message indicating the number of birds spotted",
"localizations": {
"en": {
"stringUnit": {
"state": "new",
"value": "You spotted %#@BIRDS@!"
},
"substitutions": {
"BIRDS": {
"formatSpecifier": "BIRDS",
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "new",
"value": "a bird"
}
},
"other": {
"stringUnit": {
"state": "new",
"value": "several birds"
}
},
"zero": {
"stringUnit": {
"state": "new",
"value": "no birds"
}
}
}
}
}
}
}
}
Beispiel: Erstellen von Ersetzungszeichenfolgen von Grund auf
-
Basis-Schlüssel
Ein Basis-Schlüssel mit dem Namen
keyNamestellt die oberste Formatzeichenfolge dar, die den Ersetzungsplatzhalter%#@format@enthält.Beim Export wird dieser Schlüssel als primäre
stringUnitfür den Eintrag geschrieben:"keyName": { "localizations": { "en": { "stringUnit": { "state": "translated", "value": "%#@format@" } } } } -
Ersetzungsschlüssel
Ein Ersatzzeichenfolge wird als separater Schlüssel unter Verwendung des Ersetzungsbenennungsformats definiert:
keyName|==|substitution.li.Dieser Schlüssel enthält den Ersetzungstext, typischerweise mit Pluralvariationen. Während des Exports erkennt Phrase Strings die Ersetzung mit dem Trennzeichen
|==|substitution.und stellt die entsprechende geschachtelte Struktur unter dem Basis-Schlüssel wieder her:{ "sourceLanguage": "en", "strings": { "keyName": { "localizations": { "en": { "stringUnit": { "state": "translated", "value": "%#@format@" }, "substitutions": { "li": { "formatSpecifier": "li", "variations": { "plural": { "one": { "stringUnit": { "state": "translated", "value": "%@ Tag" } }, "other": { "stringUnit": { "state": "translated", "value": "%@ Tage" } } } } } } } } } }, "version": "1.0" }
Format-Optionen
|
Identifikator |
convert_placeholder |
|
Typ |
Boolean |
|
Upload |
Nein |
|
Download |
Ja |
|
Standard |
false |
|
Beschreibung |
Platzhalter werden in Übereinstimmung mit formatspezifischen Anforderungen umgewandelt. Beispiel: |
|
Identifikator |
default_extraction_state |
|
Typ |
Zeichenfolge |
|
Upload |
Nein |
|
Download |
Ja |
|
Standard |
null |
|
Beschreibung |
Definiert den Unterstützt in:
|