CLI

Modifica il file di configurazione della CLI (Strings)

Contenuti tradotti automaticamente dall'inglese con Phrase Language AI.

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

Argomenti supportati:

  • project_id

    L’ID di un progetto.

  • file_format

    Il formato di file usato quando non ne viene specificato uno esplicitamente all'interno delle voci di origine e destinazione.

  • per_page

    Il numero di elementi restituiti nelle risposte impaginate.

File di configurazione di esempio.

Push e pull

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. Le opzioni di push sono le stesse dell'endpoint API dei caricamenti e le opzioni pull sono le stesse dell'endpoint API dei download della lingua.

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

Opzioni di formato

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

Segnaposto e globbing

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.

Attesa dei caricamenti

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.

Casi d'uso

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.

Esempi di configurazione per framework

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.

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"

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
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.