CLI

CLI-Konfigurationsdatei ändern (Strings)

Inhalte werden von Phrase Language AI maschinell aus dem Englischen übersetzt.

Die Datei .phrase.yml wird zum Speichern von wiederverwendeten Befehlszeilenargumenten verwendet.

Unterstützte Argumente:

  • project_id

    Die ID eines Projekts.

  • file_format

    Das Dateiformat, das verwendet wird, wenn eines in der Ausgangssprache und der Zielsprache nicht explizit angegeben ist.

  • per_page

    Die Anzahl der Elemente, die in paginierten Antworten zurückgegeben wurden.

Beispiel:Konfigurationsdatei.

Push & Pull

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 die Tag-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. Push-Optionen sind die gleichen wie für die Uploads des API-Endpunkts und die Pull-Optionen sind die gleichen wie für das lokale Herunterladen des API-Endpunkts.

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

Format-Optionen

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: ";"

Platzhalter und Globbing

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:

# a file pattern

./abc/**/*.yml
# with a few files on your system

./abc/defg/en.yml

./abc/es.yml

./fr.yml
# selects

./abc/defg/en.yml

./abc/es.yml

Beim Herunterladen von Pull-Dateien, sollte explizites Dateimuster wie ./abc/defg/< Sprache_name>.yml anstelle von ./**/*.yml angegeben werden.

Warten auf Uploads

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.

Anwendungsfälle

Datei in eine bestimmte Sprache hochladen

Die Datei en.json mit der angegebenen locale_id in das ./locales/ Verzeichnis hochladen (Sprache muss bereits vorhanden sein).

Update_translations wird auf false gesetzt, so dass nur neue Keys und Übersetzungen importiert werden. Wenn true gesetzt ist, 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 # the locale must exist remotely

Hinweis

Importierte Übersetzungseinträge können nicht gelöscht werden. Übersetzungen gegebenenfalls über den jeweiligen API Endpunkt auf empty Werte aktualisieren.

Ruby on Rails: einen bestimmten Dateityp hochladen

Alle Dateien hochladen, 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, so dass 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.

Konfigurationsbeispiele für Frameworks

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 can be overwritten
        file_format: "stringsdict"

Android-XML

Android verwendet nicht die ISO-Sprachcodes als Dateimuster. Gib das erforderliche Muster in .phrase.yml an.

phrase:
  access_token: ACCESS_TOKEN
  project_id: PROJECT_ID
  file_format: "xml"

  push:
    sources:
    - file: "./res/values-<locale_code>/strings.xml"

  pull:
    targets:
    - file: "./res/values-<locale_code>/strings.xml"

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
        # Unique locale id for English
        locale_id: LOCALE_ID
    - file: ./app/src/main/res/values-de/strings.xml
      params:
        file_format: xml
        # Unique locale id for German
        locale_id: LOCALE_ID
    - file: ./app/src/main/res/values-de-rAU/strings.xml
      params:
        file_format: xml
        # Unique locale id for Austrian
        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
War dieser Beitrag hilfreich?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.