Push
$ phrase push
Il comando push carica i file trovati nelle directory di progetto locali. Usa il file .phrase.yml per specificare i file da caricare e impostare eventuali parametri aggiuntivi. Il <tag> segnaposto può anche essere utilizzato per scaricare chiavi in file separati in base ai tag.
Pull
$ phrase pull
Simile al comando push, ad eccezione del fatto che non è possibile utilizzare la funzionalità di globbing. Quando usi i segnaposto, usa <locale_name> ogni volta che è possibile. Per utilizzare il comando pull su un file con chiavi che hanno un tag specifico, usa il parametro tag:
phrase:
pull:
targets:
- file: path/to/file/<locale_name>.yml
params:
tags:tag_name
Per usare il <tag> segnaposto, i tag desiderati devono essere elencati nella sezione params.
Parametri
I comandi push e pull possono essere configurati all'interno del file .phrase.yml.
Nota
Tutte le opzioni dell'endpoint API uploads sono supportate per il comando push.
Tutte le opzioni dell'endpoint API locales download sono supportate per il comando pull.
Esempio di push:
push:
sources:
- file: ./locales/en.json
params:
update_translations: true
Esempio di pull:
pull:
targets:
- file: "./locales/example.yml"
params:
include_unverified_translations: true
A seconda del formato di file, è possibile applicare alla sezione dei parametri opzioni relative al formato. Le opzioni di formato possono essere applicate ai caricamenti, ai download o a entrambi.
Esempi di formato:
params:
format_options:
convert_placeholder: true
Alcuni formati di file consentono un maggiore controllo della sintassi dei file:
phrase:
pull:
targets:
- file: file.xml
params:
format_options:
convert_placeholder: true
push:
sources:
- file: file.csv
params:
format_options:
column_separator: ";"
I seguenti segnaposto e operatori di globbing possono essere inseriti nei percorsi all'interno delle voci dei file:
-
<locale_name>
Il nome univoco della lingua.
-
<locale_code>
L'identificatore della lingua corrispondente a RFC 5646. Il codice della lingua non deve essere univoco, quindi possono esistere più lingue con nomi diversi identificate dallo stesso codice.
-
<tag>
Usa i tag per raggruppare le chiavi. I tag possono essere usati per mantenere la struttura originale dei file.
Globbing
* e ** sono operatori di globbing. Un singolo asterisco * salta qualsiasi cartella in un percorso. Il doppio asterisco ** rappresenta l'operatore di globbing standard e corrisponde a qualsiasi carattere per una corrispondenza ricorsiva e non esaustiva.
Esempi:
# 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
Quando utilizzi il comando pull per scaricare dei file, indica un modello di file esplicito come ./abc/defg/<locale_name>.yml invece di ./**/*.yml.
Tutti i caricamenti vengono elaborati in modo asincrono. Per attendere i caricamenti, applica il flag --wait. Il push aspetterà che ogni file venga caricato e comunicherà la riuscita o la mancata riuscita dell’operazione.
Caricare un file in una lingua specifica
Carica il file en.json nella directory ./locales/ con il locale_id specificato (la lingua deve esistere già).
Update_translations è impostato su false, quindi vengono importate solo chiavi e traduzioni nuove. Se impostato su true, il client importerebbe anche modifiche locali alle traduzioni esistenti, sovrascrivendo qualsiasi contenuto già presente.
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
Nota
Non è possibile eliminare voci di traduzione importate. Se necessario, aggiorna le traduzioni ai valori empty tramite l'endpoint API rilevante.
Ruby on Rails: caricamento del tipo di file specificato
Carica tutti i file che terminano con .yml situati in ./config/locales/. I file YAML di Ruby on Rails contengono informazioni sulla lingua, quindi non è necessario specificare esplicitamente la lingua. Update_translations è impostato su true, quindi tutte le modifiche alle traduzioni verranno importate sovrascrivendo tutti i dati esistenti.
phrase:
push:
sources:
- file: ./config/locales/*.yml
params:
update_translations: true
file_format: yml
Abbinamento delle stringhe di iOS
Per abbinare tutti i file delle stringhe di iOS con i file denominati Localizable.strings nelle cartelle .lproj.
<locale_code> è tutto ciò che corrisponde dopo di / e prima di .lproj per creare e identificare le lingue.
Il parametro update_translations viene omesso e ha lo stesso effetto dell'impostazione su false.
phrase:
push:
sources:
- file: "./<locale_code>.lproj/Localizable.strings"
params:
file_format: strings
Mantenere più progetti Strings per un progetto di localizzazione
Modifica il file di configurazione per limitare l'ambito dei progetti dividendo le traduzioni in categorie più piccole.
Modifica il file di configurazione per adattarlo ai requisiti, quindi verificalo nel sistema di controllo dell'origine o della versione.
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"
Stringhe iOS
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"
XML per Android
Android non usa i codici di linguaggio ISO standard come modello di file. Specifica il modello richiesto in .phrase.yml.
Invece di definire un target di pull separato per ogni impostazione locale, usa l'impostazione globale locale_mapping combinata con il segnaposto <locale_name>. Il CLI utilizzerà il nome personalizzato dalla mappatura per l'impostazione locale corrispondente e tornerà al codice locale di default di Phrase per tutte le altre lingue.
Esempio:
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "xml"
# Mappa le impostazioni locali di Phrase ai nomi delle directory specifiche per Android
locale_mapping:
en-US: values
de-DE: values-de-rDE
fr-FR: values-fr
push:
sources:
# Il file sorgente è la lingua predefinita, mappato su 'values'
- file: ./app/src/main/res/values/strings.xml
params:
locale_id: en-US # Deve corrispondere all'impostazione locale sorgente in Phrase
pull:
targets:
# Usa il segnaposto <locale_name> che sarà sostituito dalla mappatura
- file: ./app/src/main/res/<locale_name>/strings.xml
Esempio di impostazioni locali esplicite
Esempio con l'inglese come lingua predefinita, una lingua tedesca e una lingua di regione tedesca per tedesco austriaco:
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
Esempio multi-piattaforma
Invia e ricevi automaticamente traduzioni per più destinazioni in una configurazione.
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
# Stringhe iOS
- 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