|
Dateierweiterungen |
.xcstrings |
|
API Extension |
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 Abfrageparametern |
convert_placeholder default_extraction_state |
Apple Strings Katalog (.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 zum empfohlenen Ansatz für die Verwaltung von Lokalisierungen in iOS- und macOS-Anwendungen.
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 Warnung": {
"comment": "Sync-Funktion nicht verfügbar Nachricht",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Cloud-Synchronisierung muss aktiviert sein, um diese Funktion zu nutzen."
}
},
"fr": {
"stringUnit": {
"state": "translated",
"value": "Die Cloud-Synchronisierung muss aktiviert sein, um diese Funktion zu nutzen."
}
}
}
},
"Ausgewählte Sammlungen": {
"comment": "Ansichtstitel, der ausgewählte Fotosammlungen anzeigt",
"localizations": {
"fr": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%ld Sammlung ausgewählt"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%ld Sammlungen ausgewählt"
}
}
}
}
},
"en": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%ld Sammlung ausgewählt"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%ld Sammlungen ausgewählt"
}
}
}
}
}
}
},
"Einstellungen Hub": {
"localizations": {
"es": {
"stringUnit": {
"state": "translated",
"value": "Centro de configuración"
}
}
}
}
},
"version": "1.0"
}
Wenn Sie die Phrase CLI verwenden, folgen die Dateiexporte der Struktur, die in der .phrase.yml Konfigurationsdatei definiert ist. Um sicherzustellen, dass mehrere Sprachen während der Pull-Operationen in eine einzige .XCSTRINGS-Datei exportiert werden:
-
Geben Sie nur ein Dateiziel in der CLI-Konfigurationsdatei an.
-
Verwenden Sie den
locale_idsParameter, um alle Sprachlokalisierungen aufzulisten, die im Export enthalten sind.
Beispiel .phrase.yml Konfiguration
pull:
targets:
- file: ./i18n-test/Localizable.xcstrings
params:
locale_id: en # Hauptsprache für den Download
locale_ids: # Zusätzliche Sprachen, die einbezogen werden sollen
- de
- es
- fr
file_format: strings_catalog
Gerätevariationen
Das 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.
Während des Exports 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 Produkt(e) bestellt": {
"kommentieren": "Gibt die Anzahl der bestellten Produkte an, mit gerätespezifischen Variationen",
"localizations": {
"en": {
"variations": {
"device": {
"applewatch": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"wert": "%lld Produkt bestellt (Apple Watch)"
}
},
"other": {
"stringUnit": {
"state": "translated",
"wert": "%lld Produkte bestellt (Apple Watch)"
}
}
}
}
},
"ipad": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"wert": "%lld Produkt bestellt (iPad)"
}
},
"other": {
"stringUnit": {
"state": "translated",
"wert": "%lld Produkte bestellt (iPad)"
}
}
}
}
},
"iphone": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"wert": "%lld Produkt bestellt (iPhone)"
}
},
"other": {
"stringUnit": {
"state": "translated",
"wert": "%lld Produkte bestellt (iPhone)"
}
}
}
}
},
"mac": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"wert": "%lld Produkt bestellt (Mac)"
}
},
"other": {
"stringUnit": {
"state": "translated",
"wert": "%lld Produkte bestellt (Mac)"
}
}
}
}
}
}
}
},
"fr": {
"variations": {
"plural": {
"few": {
"stringUnit": {
"state": "translated",
"wert": "%lld produit(s) commandé(s)"
}
},
"many": {
"stringUnit": {
"state": "translated",
"value": "%lld Produkte bestellt"
}
},
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld Produkt bestellt"
}
}
}
}
}
}
}
}
}
String-Ersatz
Das Apple Strings Catalog unterstützt String-Ersatz, die flexible Platzhalter für dynamische Inhalte bieten.
Um String-Ersatz in Phrase Strings zu handhaben, werden separate Schlüssel mit dem Trennzeichen |==| erstellt. Beim Importieren von .XCSTRINGS-Dateien wird der Ersatz zum Basis-Schlüsselname mit diesem Trennzeichen hinzugefügt.
Phrase Strings unterstützt auch die direkte Erstellung von Ersatz-Strings im Projekt. Wenn Ersatzstrukturen manuell erstellt werden, müssen ein Basis-Schlüssel und ein entsprechender Ersatz-Schlüssel definiert werden, um sicherzustellen, dass das korrekte verschachtelte Format während des Exports generiert wird.
Ersatz erfordert immer ein spezifisches Schlüsselbenennungsformat: keyName|==|substitution.[specifier].
Beispiel: Importieren von Ersatzstrukturen aus bestehenden .XCSTRINGS-Dateien
Der Schlüssel mit dem Namen birdSightingAlert für den BIRDS Ersatz wird als pluraler Schlüssel mit dem Namen birdSightingAlert|==|substitution.BIRDS in Phrase Strings importiert.
Beim Export erkennt Phrase Strings den Ersatz mit dem Trennzeichen und stellt seine ursprüngliche verschachtelte Struktur für Apples Lokalisierungsformat wieder her.
"birdSightingAlert": {
"comment": "Warnmeldung, die die Anzahl der gesichteten Vögel angibt",
"localizations": {
"en": {
"stringUnit": {
"state": "new",
"value": "Sie haben %#@BIRDS@ gesichtet!"
},
"substitutions": {
"BIRDS": {
"formatSpecifier": "BIRDS",
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "new",
"value": "ein Vogel"
}
},
"other": {
"stringUnit": {
"state": "new",
"value": "mehrere Vögel"
}
},
"zero": {
"stringUnit": {
"state": "new",
"value": "keine Vögel"
}
}
}
}
}
}
}
}
Beispiel: Erstellen von Ersatz-Strings von Grund auf
-
Basis-Schlüssel
Ein Basis-Schlüssel namens
keyNamestellt die oberste Formatzeichenfolge dar, die den Platzhalter%#@format@enthält.Beim Export wird dieser Schlüssel als die primäre
stringUnitfür den Eintrag geschrieben:"keyName": { "localizations": { "en": { "stringUnit": { "state": "translated", "value": "%#@format@" } } } } -
Platzschlüssel
Eine Ersatzzeichenfolge wird als separater Schlüssel unter Verwendung des Ersatzbenennungsformats definiert:
keyName|==|substitution.li.Dieser Schlüssel enthält den Ersatztext, typischerweise mit pluralen Variationen. Beim Export erkennt Phrase Strings den Ersatz mithilfe des
|==|substitution.Trennzeichens und stellt die entsprechende geschachtelte Struktur unter dem Basisschlü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 |
|
Hochladen |
Nein |
|
Herunterladen |
Ja |
|
Standard |
false |
|
Beschreibung |
Der Platzhalter wird in Übereinstimmung mit den spezifischen Anforderungen des Formats konvertiert. Beispiel: |
|
Identifikator |
default_extraction_state |
|
Typ |
Zeichenfolge |
|
Hochladen |
Nein |
|
Herunterladen |
Ja |
|
Standard |
null |
|
Beschreibung |
Definiert den Unterstützt in:
|