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