CLI

Modificar o arquivo de configuração de CLI (Strings)

O conteúdo de toda a Central de Ajuda é traduzido automaticamente de inglês pelo Phrase Language AI.

Push e Pull

Push

$ phrase push 

O comando push executa uploads de arquivos encontrados em diretórios de projeto locais. Use o arquivo .phrase.yml para especificar arquivos para upload e definir parâmetros adicionais. O marcador de posição <tag> também pode ser usado para baixar chaves em arquivos separados com base nos códigos.

Pull

$ phrase pull 

É semelhante ao comando push com a exceção que o recurso de curinga (globbing) não pode ser usado. Ao usar marcadores de posição, use <local_name> sempre que possível. Para executar pull num arquivo com chaves que tenham um código específico, use o parâmetro tags:

phrase:
  pull:
    targets:
    - file: path/to/file/<locale_name>.yml
      params:
        tags:tag_name

Para usar o marcador de posição <tag>, os códigos desejados devem estar listados na seção params.

Parâmetros

Os comandos push e pull podem ser configurados no arquivo .phrase.yml.

Nota

Todas as opções do endpoint da API uploads são suportadas para o comando push.

Todas as opções do endpoint da API locales download são suportadas para o comando pull.

Exemplo de push:

push:
  sources:
  - file: ./locales/en.json
    params:
      update_translations: true 

Exemplo de pull:

pull:
  targets:
  - file: "./locales/example.yml"
    params:
      include_unverified_translations: true

Opções de formato

Dependendo do formato de arquivo, as opções de formato podem ser aplicadas à seção de parâmetros. As opções de formato podem ser aplicadas a uploads, downloads ou ambos.

Exemplos de formato:

params:
  format_options:
    convert_placeholder: true

Alguns formatos de arquivo permitem um maior controle sobre a sintaxe do arquivo:

phrase:
  pull:
    targets:
    - file: file.xml
      params:
        format_options:
          convert_placeholder: true

  push:
    sources:
    - file: file.csv
      params:
        format_options:
          column_separator: ";"

Marcadores e Globbing

Os seguintes marcadores e operadores de globbing podem ser colocados nos caminhos dentro das entradas de seu arquivo:

  • <locale_name>

    O nome único do local.

  • <locale_code>

    O identificador de local em conformidade com RFC 5646. O código de local não precisa ser único. Portanto, podem existir vários locais com diferentes nomes e o mesmo código.

  • <tag>

    Use códigos para agrupar chaves. Códigos podem ser usados para manter a estrutura do arquivo original.

Globbing

* e ** são operadores de globbing. Um asterisco * ignora qualquer pasta em um caminho. O asterisco duplo ** é como o operador padrão de globbing e corresponde a qualquer caractere para correspondência recursiva e não exaustiva.

Exemplos:

# um padrão de arquivo

./abc/**/*.yml
# com alguns arquivos em seu sistema

./abc/defg/en.yml

./abc/es.yml

./fr.yml
# selects

./abc/defg/en.yml

./abc/es.yml

Ao usar o comando pull para baixar arquivos, forneça um padrão de arquivo explícito como ./abc/defg/<locale_name>.yml em vez de ./**/*.yml.

Aguardando uploads

Todos os uploads são processados de forma assíncrona. Para aguardar uploads, aplique a marca --wait. O push vai esperar por cada upload de arquivo e retornar se falhou ou teve sucesso.

Casos de uso

Upload de um arquivo para um local especificado

Faça upload do arquivo en.json para o diretório ./locales/ com o locale_id fornecido (o local deve já existir).

Update_translations está definido como falso, portanto, apenas novas chaves e traduções são importadas. Se definido como true, o cliente também importaria alterações locais às traduções existentes, substituindo qualquer conteúdo já 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 # o local deve existir remotamente

Nota

Não é possível excluir entradas de tradução importadas. Se necessário, atualize as traduções para valores empty por meio do endpoint da API relevante.

Ruby on Rails: fazer upload de tipo de arquivo especificado

Faça upload de todos os arquivos que terminam com .yml localizados em ./config/locales/. Os arquivos YAML do Ruby on Rails contêm informações locais, portanto, não há necessidade de especificar o local explicitamente. Update_translations está definido como true, portanto, todas as alterações nas traduções serão importadas, com quaisquer dados existentes sendo substituídos.

phrase:
  push:
    sources:
    - file: ./config/locales/*.yml
      params:
        update_translations: true
        file_format: yml

Correspondência de Strings iOS

Para corresponder todos os arquivos de Strings iOS com arquivos chamados Localizable.strings em pastas .lproj.

O <locale_code> é tudo o que corresponde após / e antes de .lproj para criar e identificar locais.

O parâmetro update_translations é omitido e tem o mesmo efeito de defini-lo como false.

phrase:
  push:
    sources:
    - file: "./<locale_code>.lproj/Localizable.strings"
      params:
        file_format: strings

Manter vários projetos de Strings para um projeto de localização

Edite o arquivo de configuração para limitar o escopo dos projetos dividindo as traduções em categorias menores.

Exemplos de configuração para frameworks

Modifique o arquivo de configuração conforme os requisitos e depois verifique no controle do texto original ou sistema de controle de versão.

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"

Strings 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 pode ser sobrescrito
        file_format: "stringsdict"

Android XML

Android não usa os códigos de idioma ISO padrão como padrão de arquivo. Especifique o padrão necessário em .phrase.yml.

Em vez de definir um alvo de pull separado para cada localidade, use a configuração global locale_mapping combinada com o marcador de posição <locale_name>. A CLI usará o nome personalizado do mapeamento para a localidade correspondente e retornará ao código de localidade padrão do Phrase para todos os outros idiomas.

Exemplo:

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

  # Mapeie as localidades do Phrase para nomes de diretório específicos do Android
  locale_mapping:
    en-US: values
    de-DE: values-de-rDE
    fr-FR: values-fr

  push:
    sources:
      # O arquivo de origem é o idioma padrão, mapeado para 'values'
      - file: ./app/src/main/res/values/strings.xml
        params:
          locale_id: en-US # Deve corresponder à localidade de origem no Phrase

  pull:
    targets:
      # Use o marcador de posição <locale_name> que será substituído pelo mapeamento
      - file: ./app/src/main/res/<locale_name>/strings.xml

Exemplo de configuração de locais explícitos

Exemplo com o inglês como idioma padrão, um local alemão e um local de região alemã para o alemão austríaco:

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
        # ID de local único para o inglês
        locale_id: LOCALE_ID
    - file: ./app/src/main/res/values-de/strings.xml
      params:
        file_format: xml
        # ID de local único para o alemão
        locale_id: LOCALE_ID
    - file: ./app/src/main/res/values-de-rAU/strings.xml
      params:
        file_format: xml
        # ID de local único para o austríaco
        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

Exemplo multiplataforma

Envie e receba traduções automaticamente para múltiplos alvos em uma única configuração. 

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
      # Strings 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
Esse artigo foi útil?

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.