O arquivo .phrase.yml
é usado para armazenar argumentos de linha de comando reutilizados.
Argumentos aceitos:
-
project_id
O ID de um projeto.
-
file_format
O formato de arquivo usado quando não está explicitamente especificado nas entradas de texto original e tradução.
-
per_page
O número de itens retornados em respostas paginadas.
Amostra de arquivo de configuração.
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
. As opções de push são as mesmas do endpoint da API para uploads
e as opções de pull são as mesmas do endpoint da API de locales download
.
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:
# 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
Ao usar o comando pull
para baixar arquivos, forneça um padrão de arquivo explícito como ./abc/defg/<local_name>.yml
em vez de ./**/*.yml
.
Todos os uploads são processados de forma assíncrona. Para aguardar uploads, aplique a marca --wait
. O código push
vai esperar por cada upload de arquivo e retornar em caso de falha ou não.
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 # the locale must exist remotely
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
localizado em ./config/locales/
. Os arquivos Ruby on Rails YAML 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 às 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 < local_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 can be overwritten file_format: "stringsdict"
Android XML
O 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
.
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"
A seguir, um exemplo usando 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 # 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