Tipp
Für detailliertere Informationen siehe das Developer Hub.
Push
$ phrase push
Mit dem Befehl push werden Dateien hochgeladen, die in lokalen Projektverzeichnissen gefunden wurden. Verwende die Datei .phrase.yml, um Dateien hochzuladen und zusätzliche Parameter festzulegen. Mit dem Platzhalter <tag> können Keys auch auf der Grundlage ihrer Tags in separate Dateien heruntergeladen werden.
Pull
$ phrase pull
Ähnlich wie beim Befehl push mit der Ausnahme, dass Globbing nicht verwendet werden kann. Wenn du Platzhalter verwendest, verwende möglichst <locale_name>. Um eine Datei mit Keys zu pullen, die ein bestimmtes Tag haben, verwende den tags Parameter:
phrase:
pull:
targets:
- file: path/to/file/<locale_name>.yml
params:
tags:tag_name
Um den Platzhalter des <tag>Platzhalters zu verwenden, müssen die gewünschten Tags im Abschnitt params aufgelistet werden.
Parameter
Die Befehle Push und Pull können innerhalb der Datei .phrase.yml konfiguriert werden.
Hinweis
Alle Optionen des Uploads API-Endpunkts werden für den Push-Befehl unterstützt.
Alle Optionen des Locales-Download API-Endpunkts werden für den Pull-Befehl unterstützt.
Push-Beispiel:
push:
sources:
- file: ./locales/en.json
params:
update_translations: true
Pull-Beispiel:
pull:
targets:
- file: "./locales/example.yml"
params:
include_unverified_translations: true
Je nach Format der Datei können auf den Parameterabschnitt Format-Optionen angewendet werden. Format-Optionen können auf Uploads, Downloads oder beides angewendet werden.
Format-Beispiele:
params:
format_options:
convert_placeholder: true
Einige Dateiformate erlauben eine größere Kontrolle über die Dateisyntax:
phrase:
pull:
targets:
- file: file.xml
params:
format_options:
convert_placeholder: true
push:
sources:
- file: file.csv
params:
format_options:
column_separator: ";"
Die folgenden Platzhalter und Globbing-Operatoren können in den Pfaden in deinen Dateieinträgen platziert werden:
-
<locale_name>
Der Name der Sprache.
-
<locale_code>
Die RFC 5646-konforme Sprache. Die Sprache muss nicht eindeutig sein. Daher können mehrere Sprachen mit unterschiedlichen Namen mit demselben Code existieren.
-
<tag>
Tags verwenden, um Keys zu gruppieren. Tags können zur Beibehaltung der ursprünglichen Dateistruktur verwendet werden.
Globbing
* und ** sind Globbing-Operatoren. Ein einzelnes Sternchen * überspringt einen beliebigen Ordner in einem Pfad. Das Doppelsternchen ** entspricht dem Standardglobbing-Operator und entspricht jedem Zeichen für einen rekursiven, nicht erschöpfenden Abgleich.
Beispiele:
# ein Dateimuster ./abc/**/*.yml
# mit ein paar Dateien auf deinem System ./abc/defg/en.yml ./abc/es.yml ./fr.yml
# wählt aus ./abc/defg/en.yml ./abc/es.yml
Beim Verwenden des Pull-Befehls zum Herunterladen von Dateien sollte ein explizites Dateimuster wie ./abc/defg/<locale_name>.yml anstelle von ./**/*.yml angegeben werden.
Alle Uploads werden asynchron verarbeitet. Um auf Uploads zu warten, füge das Kennzeichen --wait hinzu. Der Push wartet auf jede hochgeladene Datei und gibt zurück, ob das Hochladen fehlgeschlagen oder erfolgreich war.
Datei in eine bestimmte Sprache hochladen
Lade die Datei en.json in das Verzeichnis ./locales/ mit der angegebenen locale_id hoch (die Sprache muss bereits vorhanden sein).
Update_translations ist auf false gesetzt, sodass nur neue Keys und Übersetzungen importiert werden. Wenn auf true gesetzt, würde der Client auch lokale Änderungen an vorhandenen Übersetzungen importieren und dabei alle bereits vorhandenen Inhalte überschreiben.
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: nested_json
push:
sources:
- file: ./locales/en.json
params:
update_translations: false
locale_id: YOUR_LOCALE_ID # die Sprache muss remote existieren
Hinweis
Es ist nicht möglich, importierte Übersetzungseinträge zu löschen. Falls erforderlich, aktualisiere Übersetzungen auf empty Werte über den entsprechenden API Endpunkt.
Ruby on Rails: einen bestimmten Dateityp hochladen
Lade alle Dateien hoch, die auf .yml enden und sich in ./config/locales/ befinden. Ruby on Rails YAML-Dateien enthalten Informationen zur Sprache, sodass keine explizite Angabe der Sprache erforderlich ist. Update_translations wird auf true gesetzt, sodass alle Änderungen an Übersetzungen importiert werden, wobei vorhandene Daten überschrieben werden.
phrase:
push:
sources:
- file: ./config/locales/*.yml
params:
update_translations: true
file_format: yml
iOS-Strings abgleichen
Abgleichung aller iOS-Strings Dateien mit Dateien namens Localizable.strings in .lproj Ordnern.
Der <locale_code> ist alles, was nach / und vor .lproj abgeglichen wurde, um Gebietsschemata zu erstellen und zu identifizieren.
Der Parameter update_translations wird weggelassen und hat die gleiche Wirkung wie das Setzen auf false.
phrase:
push:
sources:
- file: "./<locale_code>.lproj/Localizable.strings"
params:
file_format: strings
Verwalten mehrerer Strings Projekte für ein Lokalisierungsprojekt
Bearbeite die Konfigurationsdatei, um den Projektumfang zu begrenzen, indem du die Übersetzungen in kleinere Kategorien aufteilst.
Passe die Konfigurationsdatei an deine Anforderungen an und überprüfe sie dann in der Ausgangssprachen- oder im Versionskontrollsystem.
Rails
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "yml"
push:
sources:
- file: "./config/locales/*.yml"
pull:
targets:
- file: "./config/locales/<locale_name>.yml"
iOS-Strings
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "strings"
push:
sources:
- file: "./<locale_code>.lproj/Localizable.strings"
pull:
targets:
- file: "./<locale_code>.lproj/Localizable.strings"
- file: "./<locale_code>.lproj/Localizable.stringsdict"
params:
#file_format kann überschrieben werden
file_format: "stringsdict"
Android XML
Android verwendet nicht die standardmäßigen ISO-Sprachcodes als Dateimuster. Gib das erforderliche Muster in .phrase.yml an.
Anstatt ein separates Ziel für jede Sprache zu definieren, verwende die globale locale_mapping-Einstellung in Kombination mit dem <locale_name>-Platzhalter. Die CLI verwendet den benutzerdefinierten Namen aus der Zuordnung für die entsprechende Sprache und greift für alle anderen Sprachen auf den Standard-Phrase-Sprachcode zurück.
Beispiel:
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "xml"
# Ordne Phrase-Sprachen den Android-spezifischen Verzeichnisnamen zu
locale_mapping:
en-US: values
de-DE: values-de-rDE
fr-FR: values-fr
push:
sources:
# Quelldatei ist die Standardsprache, zugeordnet zu 'values'
- file: ./app/src/main/res/values/strings.xml
params:
locale_id: en-US # Muss mit der Quellsprache in Phrase übereinstimmen
pull:
targets:
# Verwende den <locale_name>-Platzhalter, der durch die Zuordnung ersetzt wird
- file: ./app/src/main/res/<locale_name>/strings.xml
Beispiel für explizit festgelegte Sprachen
Beispiel mit Englisch als Standardsprache, einer deutschen Ausgangssprache und einer deutschen Sprachregion für österreichisches Deutsch:
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: xml
pull:
targets:
- file: ./app/src/main/res/values/strings.xml
params:
file_format: xml
# Einzigartige Gebietsschema-ID für Englisch
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de/strings.xml
params:
file_format: xml
# Einzigartige Gebietsschema-ID für Deutsch
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de-rAU/strings.xml
params:
file_format: xml
# Einzigartige Gebietsschema-ID für Österreich
locale_id: LOCALE_ID
push:
sources:
- file: ./app/src/main/res/values/strings.xml
params:
file_format: xml
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de/strings.xml
params:
file_format: xml
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de-rAU/strings.xml
params:
file_format: xml
locale_id: LOCALE_ID
Multiplattformbeispiel
Automatisches Pushen und Pullen von Übersetzungen für mehrere Ziele in einer Konfiguration.
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: nested_json
push:
sources:
# Web-JSON
- file: "apps/web/src/assets/i18n/.json"
params:
file_format: nested_json
locale_id: LOCALE_ID
# Android XML
- file: "apps/android/app/src/main/res/values-/strings.xml"
params:
file_format: android
locale_id: LOCALE_ID
# iOS-Zeichenfolgen
- file: "apps/ios/.lproj/Localizable.strings"
params:
file_format: strings
locale_id: LOCALE_ID
pull:
targets:
- file: "apps/web/src/assets/i18n/.json"
params:
file_format: nested_json
locale_id: LOCALE_ID
- file: "apps/android/app/src/main/res/values-/strings.xml"
params:
file_format: android
locale_id: LOCALE_ID
- file: "apps/ios/.lproj/Localizable.strings"
params:
file_format: strings
locale_id: LOCALE_ID