CLI

Modificare il file di configurazione della CLI (Strings)

Contenuti tradotti automaticamente dall'inglese con Phrase Language AI.

Il file .phrase.yml viene utilizzato per archiviare argomenti della riga di comando riutilizzati.

Argomenti supportati:

  • project_id

    L'ID di un progetto.

  • file_format

    Il formato del file usato quando non è specificato esplicitamente all'interno delle voci di origine e di destinazione.

  • per_page

    Il numero di elementi restituiti nelle risposte impaginate.

Esempio di file di configurazione.

Push and Pull

Spingi

$ frase push 

Il comando push carica i file trovati nelle directory di progetto locali. Utilizza il file .phrase.yml per specificare i file da caricare e impostare eventuali parametri aggiuntivi. Il segnaposto <tag> può essere utilizzato anche per scaricare le chiavi in file separati in base ai loro tag.

Pull

$ phrase pull 

Simile al comando push con l'eccezione il globbing non può essere usato. Quando si utilizzano i segnaposto, utilizzare <locale_name> quando possibile. Per estrarre un file con chiavi che hanno un tag specifico, utilizzare il parametro tags:

frase:
  pull:
    obiettivi:
    - file: path/to/file/<nome_locale>.yml
      parametri:
        tags:tag_name

Per utilizzare il segnaposto <tag>, i tag desiderati devono essere elencati nella sezione parametri.

Parametri

I comandi push e pull possono essere configurati all'interno del file .phrase.yml. Le opzioni push sono le stesse dell'endpoint API dei caricamenti e le opzioni pull sono le stesse dell'endpoint API del download locale.

Esempio push:

push:
  fonti:
  - file: ./locales/en.json
    parametri:
      update_translations: true 

Pull esempio:

pull:
  obiettivi:
  - file: "./locales/example.yml"
    parametri:
      include_unverified_translations: true

Opzioni formato

A seconda del formato del file, le opzioni di formato possono essere applicate alla sezione dei parametri. Le opzioni di formato possono essere applicate a caricamenti, download o entrambi.

Esempi di formato:

parametri:
  format_options:
    convert_placeholder: true

Alcuni formati di file consentono un maggiore controllo della sintassi del file:

frase:
  pull:
    obiettivi:
    - file: file.xml
      parametri:
        format_options:
          convert_placeholder: true

  push:
    fonti:
    - file: file.csv
      parametri:
        format_options:
          column_separator: ";"

Segnaposto e Globbing

I seguenti segnaposto e operatori di globbing possono essere inseriti nei percorsi all'interno delle voci del file:

  • <locale_name>

    Il nome locale univoco.

  • <locale_code>

    L'identificatore locale compatibile con RFC 5646. Il codice impostazioni locali non deve essere univoco, quindi possono esistere più impostazioni locali con nomi diversi con lo stesso codice.

  • <tag>

    Usa i tag per raggruppare le chiavi. I tag possono essere utilizzati per mantenere la struttura.

Globbing

* e ** sono operatori globbing. Un singolo asterisco * salta qualsiasi cartella in un percorso. Il doppio asterisco ** è come l'operatore globbing standard e corrisponde a qualsiasi carattere per una corrispondenza ricorsiva e non esaustiva.

Esempi:

# un modello di file

./abc/**/*.yml
# con pochi file sul sistema

./abc/defg/en.yml

./abc/es.yml

./fr.yml
# seleziona

./abc/defg/en.yml

./abc/es.yml

Quando si utilizza il comando pull per scaricare i file, fornire un modello di file esplicito come ./abc/defg/<nome_locale>.yml invece di ./**/* .yml.

In attesa dei caricamenti

Tutti i caricamenti vengono elaborati in modo asincrono. Per attendere i caricamenti, applicare il flag --wait. Il push attenderà ogni caricamento del file e tornerà se non è riuscito o è riuscito.

Casi d'uso

Carica un file in impostazioni locali specifiche

Carica il file en.json nella directory ./locales/ con il locale_id specificato (le impostazioni locali devono già esistere).

Update_translations è impostato su false, quindi vengono importate solo le nuove chiavi e traduzioni. Se impostato su true, il cliente importerebbe anche le modifiche locali alle traduzioni esistenti, sovrascrivendo qualsiasi contenuto già presente.

frase:
  access_token: ACCESS_TOKEN
  project_id: PROJECT_ID
  file_format: nested_json

  push:
    fonti:
    - file: ./locales/en.json
      parametri:
        update_translations: false
        locale_id: YOUR_LOCALE_ID # le impostazioni locali devono esistere in remoto

Ruby on Rails: carica il 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 locali, quindi non è necessario specificare esplicitamente le impostazioni locali. Update_translations è impostato su true, quindi tutte le modifiche alle traduzioni verranno importate sovrascrivendo tutti i dati esistenti.

frase:
  push:
    fonti:
    - file: ./config/locales/*.yml
      parametri:
        update_translations: true
        file_format: yml

Corrispondenza tra stringhe iOS

Per abbinare tutti i file di stringhe iOS con i file denominati Localizable.strings nelle cartelle .lproj.

Il <locale_code> è tutto ciò che corrisponde dopo / e prima di .lproj per creare e identificare le impostazioni locali.

Il parametro update_translations viene omesso e ha lo stesso effetto dell’impostazione su false.

frase:
  push:
    fonti:
    - file: "./<locale_code>.lproj/Localizable.strings"
      parametri:
        file_format: stringhe

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.

Esempi di configurazione per framework

Modificare il file di configurazione in base alle esigenze, quindi controllarlo nel controllo dell'origine o nel sistema di controllo della versione.

Rails

frase:
  access_token: ACCESS_TOKEN
  project_id: PROJECT_ID
  file_format: "yml"

  push:
    fonti:
    - file: "./config/locales/*.yml"

  pull:
    obiettivi:
    - file: "./config/locales/<locale_name>.yml"

Stringhe iOS

frase:

  access_token: ACCESS_TOKEN
  project_id: PROJECT_ID
  file_format: "strings"

  push:
    fonti:
    - file: "./<locale_code>.lproj/Localizable.strings"

  pull:
    obiettivi:
    - file: "./<locale_code>.lproj/Localizable.strings"
    - file: "./<locale_code>.lproj/Localizable.stringsdict"
      parametri:
        #file_format può essere sovrascritto
        file_format: "stringsdict"

Android XML

Android non utilizza i codici lingua ISO standard come modello di file. Specificare il modello richiesto in .phrase.yml.

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

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

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

Esempio con inglese come lingua predefinita, impostazioni locali tedesche e impostazioni locali regionali tedesche per il tedesco austriaco:

frase:
  access_token: ACCESS_TOKEN
  project_id: PROJECT_ID
  file_format: xml
  
  pull:
    obiettivi:
    - file: ./app/src/main/res/values/strings.xml
      parametri:
        file_format: xml
        # ID locale univoco per l'inglese
        locale_id: LOCALE_ID
    - file: ./app/src/main/res/values-de/strings.xml
      parametri:
        file_format: xml
        # ID locale univoco per il tedesco
        locale_id: LOCALE_ID
    - file: ./app/src/main/res/values-de-rAU/strings.xml
      parametri:
        file_format: xml
        # ID locale univoco per Austrian
        locale_id: LOCALE_ID
  push:
    fonti:
    - file: ./app/src/main/res/values/strings.xml
      parametri:
        file_format: xml
        locale_id: LOCALE_ID
    - file: ./app/src/main/res/values-de/strings.xml
      parametri:
        file_format: xml
        locale_id: LOCALE_ID
    - file: ./app/src/main/res/values-de-rAU/strings.xml
      parametri:
        file_format: xml
        locale_id: LOCALE_ID
Questo articolo ti è stato utile?

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.