Configuração do arquivo

Note: This configuration file can work only with the new CLI (v3).

Introdução

Crowdin CLI usa um arquivo de configuração que contém uma descrição dos recursos a serem gerenciados: arquivos a serem carregados no Crowdin e os locais das traduções correspondentes.

Para usar Crowdin CLI, você deve primeiro gerar seu arquivo de configuração e então executar a ferramenta. Por padrão, o Crowdin CLI procura por um arquivo de configuração nomeado por crowdin.yml (para que não precise de especificar o nome do arquivo, a menos que seja diferente de crowdin.yml).

To create the configuration file, run the following command:

$ crowdin init

Estrutura do arquivo de configuração

Um arquivo de configuração do Crowdin CLI, tem a seguinte estrutura, por isso, certifique-se de preencher todas as informações necessárias:

  • O cabeçalho do arquivo com as credenciais do projeto, preferências, e informações de acesso
  • Um elemento de array de arquivos que descreve um conjunto de arquivos de origem e de tradução que você vai administrar
  • Campos obrigatórios no array de arquivos: Origem que define filtros para os arquivos de origem e Tradução com instruções sobre onde armazenar os arquivos traduzidos ou onde procurar as traduções que você já tem, se quiser enviá-las ao configurar o CLI

Escrevendo um arquivo de configuração simples

Um típico arquivo de configuração semelhante, ao seguinte:

"project_id": "projectId"                     #open project settings and go to API section 
"api_token": "personal-access-token"          #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"
"preserve_hierarchy": true

"files": [
  {
    "source": "/locale/en/folder1/[0-2].txt",                                       #source files filter
    "translation": "/locale/%two_letters_code%/folder1/%original_file_name%"        #where translations are stored
  },
  {
    "source": "/locale/en/folder2/[0-2].txt",
    "translation": "/locale/%two_letters_code%/folder2/%original_file_name%"
  }
]

Para executar o arquivo de configuração acima, e enviar os arquivos de origem para o Crowdin:

$ crowdin upload sources

Obtenha traduções do Crowdin e coloque-as nos locais certos:

$ crowdin download

Credenciais da API de variáveis de ambiente

Você pode carregar as Credenciais da API de uma variável de ambiente, por exemplo:

"project_id_env": "CROWDIN_PROJECT_ID"
"api_token_env": "CROWDIN_PERSONAL_TOKEN"
"base_path_env": "CROWDIN_BASE_PATH"
"base_url_env": "CROWDIN_BASE_URL"

Se misturado, api_token e project_id são priorizados:

"project_id_env": "CROWDIN_PROJECT_ID"      # Baixa prioridade
"api_token_env": "CROWDIN_PERSONAL_TOKEN"   # Baixa prioridade
"base_path_env": "CROWDIN_BASE_PATH"        # Baixa prioridade
"base_url_env": "CROWDIN_BASE_PATH"         # Baixa prioridade
"project_id": "projectId"                   # Alta prioridade
"api_token": "personal-access-token"        # Alta prioridade
"base_path": "/project-base-path"           # Alta prioridade
"base_url": "https://crowdin.com"           # Alta prioridade

Dividir configuração de projeto e credenciais de API

O arquivo crowdin.yml contém uma descrição dos recursos para gerenciar e credenciais API (project_id, api_token, base_path, base_url). It means that it’s unsafe to commit this file into the code repository because the API key would be accessible to other users. Crowdin CLI supports two types of configuration files:

  • uma descrição dos recursos para gerenciar, residindo no diretório do projeto
  • Credenciais de API, provavelmente residindo em $HOME/.crowdin.yml
Note: API credentials from the .crowdin.yml configuration file have higher priority than credentials from the project directory(crowdin.yml).

If you need to run a command with user-specific credentials (for example, upload sources), run the following command:

$ crowdin upload sources --identity 'caminho-para-o-arquivo-das-credenciais-do-usuário'

But if user-specific credentials file residing in $HOME/.crowdin.yml you can run:

$ crowdin upload sources

Configuração geral

O exemplo de configuração fornecido acima, possui atributos de origem e tradução, ao conter caracteres especiais (wildcards) padrão(também conhecidos como globalizar padrões) para facilitar o trabalho com vários arquivos.

Aqui estão os padrões que você pode usar:

* (asterisco)

Represents any character in the file or directory name. If you specify a “*.json” it will include all files like “messages.json”, “about_us.json”, and anything that ends with “.json”.

** (duplo asterisco)

Corresponde a qualquer texto recursivo (incluindo subdiretórios). Nota que podes usa ** nos padrões de origem e tradução. When using ** in the translation pattern, it will always contain a sub-path from the source for a certain file. Por exemplo, pode usar a origem: ‘/en/**/*po’ para enviar todos os arquivos *.po para o Crowdin, recursivamente. O padrão de tradução será ‘/%two_letters_code%/**/%original_file_name%’.

? (ponto de interrogação)

Corresponde a qualquer caractere único.

[set]

Corresponde a qualquer caractere único em um conjunto. Comporta-se exatamente como conjuntos de caracteres no Regexp, incluindo negação de conjunto ([^a-z]).

\ (barra invertida)

Escapa o próximo metacaractere.

Espaços reservados

O Crowdin CLI permite usar os seguintes espaços reservados para colocar as variáveis apropriadas no nome do arquivo resultante:

Nome Descrição
%original_file_name% Nome do arquivo original
%original_path% Pega os nomes das pastas projeto no projeto do Crowdin para caminho o caminho de arquivo no pacote resultante
%file_extension% Extensão do arquivo original
%file_name% Nome do arquivo sem extensão
%language% Nome do idioma (por exemplo, Ucraniano)
%two_letters_code% Código do idioma ISO 639-1 (por exemplo uk)
%three_letters_code% Código do idioma ISO 639-2/T (por exemplo ukr)
%locale% Localidade (por exemplo uk-UA)
%locale_with_underscore% Localidade (por exemplo uk-Ua)
%android_code% Identificador de localidade do Android usado para nomear diretórios "values-"
%osx_code% Identificador de localidade do OS X usado para nomear diretórios ".lproj"
%osx_locale% OS X locale used to name translation resources (e.g., uk, zh-Hans, zh_HK)

Também pode definir o caminho para os arquivos no arquivamento resultante, ao colocar uma barra (/) no início do padrão.

A sua opção translation pode se parecer como: “/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%”.

Uso de caracteres especiais

Estrutura de arquivos e diretórios na máquina local:

- caminho_base | |-- pasta |     | |     |-- 1.xml |     |-- 1.txt |     |-- 123.txt |     |-- 123_test.txt |     |-- a.txt |     |-- a1.txt |     |-- crowdin?test.txt |     |-- crowdin_test.txt | |-- 1.xml |-- 1.txt |-- 123.txt |-- 123_test.txt |-- a.txt |-- a1.txt |-- crowdin?test.txt |-- crowdin_test.txt |-- 3.txt

Exemplo 1. Utilização de carateres de substituição no caminho fonte:

#........a sua configuração de projeto........
"files": [
  {
      "source": "/**/?[0-9].txt", #upload a1.txt, folder/a1.txt
      "translation": "/**/%two_letters_code%_%original_file_name%"
  },
  {
      "source": "/**/*\\?*.txt",  #upload crowdin?test.txt, folder/crowdin?test.txt
      "translation": "/**/%two_letters_code%_%original_file_name%"
  },
  {
      "source": "/**/[^0-2].txt", #upload 3.txt, folder/3.txt, a.txt, folder/a.txt (ignore 1.txt, folder/1.txt)
      "translation": "/**/%two_letters_code%_%original_file_name%"
  }
]

Exemplo 2. Utilização de caráteres de substituição para ignorar os arquivos:

#........a sua configuração de projeto........
"files": [
  {
    "source": "/**/*.*",                             #upload all files that  the base_path contains
    "translation": "/**/%two_letters_code%_%original_file_name%",
    "ignore": [
      "/**/%two_letters_code%_%original_file_name%", #ignore the translated files
      "/**/?.txt",                                   #ignore 1.txt, a.txt, folder/1.txt, folder/a.txt
      "/**/[0-9].txt",                               #ignore 1.txt, folder/1.txt
      "/**/*\\?*.txt",                               #ignore crowdin?test.txt, folder/crowdin?test.txt
      "/**/[0-9][0-9][0-9].txt",                     #ignore 123.txt , folder/123.txt
      "/**/[0-9]*_*.txt"                             #ignore 123_test.txt, folder/123_test.txt
    ]
  }
]

Mapeamento do Idioma

Muitas vezes, os projetos de software têm nomes personalizados para diretórios de localidade. O Crowdin permite mapear seus próprios idiomas para serem reconhecidos em seus projetos.

Digamos que seus diretórios de localidade sejam chamado ‘en’, ‘uk’, ‘fr’, ‘de’. Todos eles podem ser representados pelo espaço reservado %two_letters_code%. Ainda assim, você tem um diretório chamado “zh_CH’. Também pode substituir os códigos de idioma de outros marcadores como %android_code%, %locale%, etc.

Para fazê-lo funcionar com o Crowdin sem alterações em seu projeto, você pode configurar o mapeamento de idioma. via interface de usuário.

Para configurar o mapeamento de idioma, siga estas etapas:

  1. Abra as configurações do projeto > aba de geral e role para baixo até a seção de exportação.
  2. Clique em Mapeamento de idiomas para adicionar códigos de idioma personalizados aos idiomas de destino do seu projeto.

Renomear arquivo de traduções

Se você precisar renomear um arquivo com traduções após a exportação, você pode facilmente fazer isso com a ajuda do parâmetro translation_replace.

For example, if the file is named “en_strings.po”, it can be renamed to “strings.po”. Para isto, adiciona um novo parâmetro (no mesmo nível do parâmetro de tradução) para o arquivo de configuração (crowdin.yml):

"files": [
  {
    "source": "/locale/**/en_*.po",
    "translation": "/locale/**/%two_letters_code%_%original_file_name%",
    "translation_replace": {
      "en_": ""
    }
  }
]

In this case, “_en” will be erased from the file name.

Ignorar arquivos e diretórios

From time to time, there are files and directories you don’t need to translate in Crowdin. Nesses casos, regras locais por arquivo podem ser adicionadas ao arquivo de configuração em seu projeto.

"files": [
  {
    "source": "/**/*.properties",
    "translation": "/**/%file_name%_%two_letters_code%.%file_extension%",
    "ignore": [
      "/test/file.properties",
      "/example.properties"
    ]
  },
  {
    "source": "/locale/en/**/*.po",
    "translation": "/locale/%two_letters_code%/**/%original_file_name%",
    "ignore": [
      "/locale/en/templates",
      "/locale/en/workflow"
    ]
  }
]

Excluding Target Languages for Source Files

Por padrão, os arquivos de origem estão disponíveis para tradução em todos os idiomas de destino do projeto. If some source files shouldn’t be translated into specific target languages, you can exclude them with the help of the parameter excluded_target_languages.

Exemplo de arquivo de configuração:

"files": [
  {
    "source": "/resources/en/*.json",
    "translation": "/resources/%two_letters_code%/%original_file_name%",
    "excluded_target_languages": [
      "uk",
      "fr"
    ]
  }
]

Planilha com várias colunas

Se um arquivo CSV ou XLS/XLSX contém as traduções para todos os idiomas de destino, você deve especificar os códigos de idioma apropriados no esquema.

Exemplo de arquivo CSV:

identifier,source_phrase,context,Ukrainian,Russian,French ident1,Source 1,Context 1,,, ident2,Source 2,Context 2,,, ident3,Source 3,Context 3,,,

Exemplo de arquivo de configuração:

"files": [
  {
    "source": "multicolumn.csv",
    "translation": "multicolumn.csv",
    "first_line_contains_header": true,
    "scheme": "identifier,source_phrase,context,uk,ru,fr"
  }
]

Se o seu arquivo CSV ou XLS/XLSX contiver colunas que devem ser ignoradas na importação, use none para essas colunas no esquema, por exemplo:

"scheme" : "identifier,source_phrase,context,uk,none,ru,none,fr"

Constantes de esquema

Para formar o esquema de seu arquivo CSV ou XLS/XLSX, use as seguintes constantes:

identifier – A coluna contém identificadores de texto. source_phrase – A coluna contém textos de origem. source_or_translation – A coluna contém textos de origem, mas a mesma coluna será preenchida com traduções quando o arquivo for exportado. Ao enviar traduções existentes, os valores desta coluna serão usados como traduções. translation – A coluna contém traduções. context – A coluna contém comentários ou informações de contexto para os textos de origem. max_length – A coluna contém valores de limite de comprimento máximo para as traduções dos textos. labels – A coluna contém rótulos para os textos de origem. none – Coluna que será ignorada na importação.

Salvar a estrutura de diretórios no servidor

"preserve_hierarchy": true

Exemplo do arquivo de configuração usando a opção preserve_hierarchy:

"project_id": "projectId"                     #open project settings and go to API section
"api_token": "personal-access-token"          #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"
"preserve_hierarchy": true

"files": [
  {
    "source": "/locale/en/**/*.po",
    "translation": "/locale/%two_letters_code%/**/%original_file_name%"
  }
]

Por padrão, as pastas que não contêm arquivos para a tradução não será criada em Crowdin. Por exemplo:

- locale | |-- en | |-- foo.po |-- bar.po

Por padrão, os arquivos do projeto serão representados no Crowdin da seguinte forma:

- foo.po
- bar.po

Using the option preserve_hierarchy, the file structure in Crowdin will be the following:

- en | |-- foo.po |-- bar.po

Enviar arquivos para o caminho especificado com o tipo especificado

This feature adds support for two optional parameters in the yml file section: dest and type. It’s typically used for projects where the uploaded name must be different so that Crowdin can detect the type correctly.

O parâmetro dest permite que especifiques um nome de arquivo no Crowdin. It works for multiple files at once and supports the following placeholders: %original_file_name%, %original_path%, %file_extension%, %file_name%.

Note! If you use the dest parameter, the configuration file should include the preserve_hierarchy parameter with the true value.

Exemplo do arquivo de configuração com os dois parâmetros:

"project_id": "projectId"                     #open project settings and go to API section
"api_token": "personal-access-token"          #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"
"preserve_hierarchy": true

"files": [
  {
    "source": "/conf/**/*.txt",
    "dest": "/conf/**/%file_name%.properties",
    "translation": "/conf/**/%two_letters_code%/%file_name%.properties",
    "type": "properties"
  },
  {
    "source": "/app/*.txt",
    "dest": "/app/%file_name%.xml",
    "translation": "/res/values-%android_code%/%original_file_name%",
    "type": "android"
  },
  {
    "source": "/conf/**/*.txt",
    "dest": "/%original_path%/%file_name%.properties",
    "translation": "/conf/**/%two_letters_code%/%original_file_name%",
    "type": "properties"
  }
]

Atualização de textos alterados

O parâmetro update_option é opcional. Se não estiver definido, as traduções para textps alteradas serão perdidas. Útil para correções de digitação e pequenas alterações nas strings de origem.

Depending on the value, update_option is used to preserve translations and preserve/remove validations of changed strings during file update.

Os valores são:

  • update_as_unapproved - preservar as traduções das strings modificadas e remover as validações dessas traduções, caso elas existam
  • update_without_changes - preservar as traduções e validações das strings modificadas

Example of the configuration file with update_option parameter:

"project_id": "projectId"                     #open project settings and go to API section
"api_token": "personal-access-token"          #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"

"files": [
  {
    "source": "/*.csv",
    "translation": "/%three_letters_code%/%file_name%.csv",
    "first_line_contains_header": true,
    "scheme": "identifier,source_phrase,translation,context",
    "update_option": "update_as_unapproved"
  },
  {
    "source": "/**/*.xlsx",
    "translation": "/%three_letters_code%/folder/%file_name%.xlsx",
    "update_option": "update_without_changes"
  }
]

Carregamento de traduções

O comando upload translations envia as traduções existentes para a Crowdin. If no options are specified, the uploaded translations will not be imported even if they are equal to the source strings and will not be approved.

Os valores são:

  • -l, --language=language_code - defines the language translations that should be uploaded to Crowdin. Por padrão, as traduções são enviadas para todos os idiomas de destino do projeto. (Códigos de idioma do Crowdin)
  • --[no-]import-eq-suggestions - defines whether to add translation if it is equal to source string in the Crowdin project
  • --[no-]auto-approve-imported - automatically approves uploaded translations

Import Options

XML Files Import Options

translate_content
opcional
bool Defines whether to translate texts placed inside the tags.
Acceptable values are 0 or 1. O padrão é 1.
translate_attributes
opcional
bool Defines whether to translate tags' attributes.
Acceptable values are 0 or 1. O padrão é 1.
content_segmentation
opcional
bool Defines whether to split long texts into smaller text segments.
Acceptable values are 0 or 1. O padrão é 1.
Nota: Quando a segmentação de conteúdo está ativada, o upload da tradução é feito por uma tecnologia experimental de aprendizado de máquina.
translatable_elements
opcional
array Este é um array de frases, onde cada item é o XPaths para elemento DOM que deve ser importado.
Exemplo de caminho: /path/to/node ou /path/to/attribute[@attr]
Nota! se definido. os parâmetros translate_content e translate_attributes não são considerados durante a importação.

Exemplo do arquivo de configuração com parâmetros adicionais:

"project_id": "projectId"                   #open project settings and go to API section
"api_token": "personal-access-token"        #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"

"files": [
  {
    "source": "/app/sample1.xml",
    "translation": "/app/%locale%/%original_file_name%",
    "translate_attributes": 1,
    "translate_content": 0
  },
  {
    "source": "/app/sample2.xml",
    "translation": "/app/%locale%/%original_file_name%",
    "translatable_elements": [
      "/content/text",                      # translatable texts are stored in 'text' nodes of parent node 'content'
      "/content/text[@value]"               # translatable texts are stored in 'value' attribute of 'text' nodes
    ]
  }
]

Other Files Import Options

content_segmentation
opcional
bool Define se os textos longos devem ser divididos em segmentos de textos menores. Only for TXT, DOCX, DITA, IDML, MIF, MEDIAWIKI, HTML, Front Matter HTML, Markdown, Front Matter Markdown, XML, XLIFF, XLIFF 2.0
Acceptable values are 0 or 1. O padrão é 1.
Nota: Quando a segmentação de conteúdo está ativada, o upload da tradução é feito por uma tecnologia experimental de aprendizado de máquina.

Exemplo do arquivo de configuração com parâmetros adicionais:

"project_id": "projectId"                   #open project settings and go to API section
"api_token": "personal-access-token"        #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"

"files": [
  {
    "source": "/emails/sample1.html",
    "translation": "/emails/%locale%/%original_file_name%",
    "content_segmentation": 1
  }
]

Opções de exportação

Para configurar o comportamento de exportação preferido para cada grupo de arquivos, você pode usar as seguintes opções de exportação:

skip_untranslated_strings – Apenas textos traduzidos serão incluídos nos arquivos de tradução exportados. skip_untranslated_files – Apenas os textos traduzidos serão incluídos nos arquivos de tradução exportados. export_only_approved – Somente textos traduzidos e aprovados serão incluídos nos arquivos de tradução exportados.

Exemplo de arquivo de configuração com as opções de exportação:

"project_id": "projectId"                     #open project settings and go to API section
"api_token": "personal-access-token"          #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"
"preserve_hierarchy": true

"files": [
  {
    "source": "/locale/en/**/*.po",
    "translation": "/locale/%two_letters_code%/**/%original_file_name%",
    "skip_untranslated_strings": true
  },
  {
    "source": "/locale/en/**/*.json",
    "translation": "/locale/%two_letters_code%/**/%original_file_name%",
    "skip_untranslated_files": true
  },
  {
    "source": "/locale/en/**/*.yml",
    "translation": "/locale/%two_letters_code%/**/%original_file_name%",
    "export_only_approved": true
  }
]
Nota: As opções de exportação funcionam apenas com CLI.

Opções de cotas de escape para formato de arquivo .properties

Define se uma aspa simples deve ser ignorada por outra ou barra invertida em traduções exportadas. You can add the escape_quotes per-file option. Acceptable values are 0, 1, 2, 3. O padrão é 3.

Os valores são:

  • 0 - não escapar da citação simples
  • 1 - escape single quote with another single quote
  • 2 - escape single quote with a backslash
  • 3 - escape single quote with another single quote only in strings containing variables ( {0} )

Escapar de caracteres especiais
Define se algum caractere especial (=, :, ! and #) should be escaped by a backslash in exported translations. You can add the escape_special_characters per-file option.

Acceptable values are 0, 1. O padrão é 1.

  • 0 - não escapar dde caracteres especiais
  • 1 - escapar de caracteres especiais por uma barra invertida

Exemplo de arquivo de configuração:

"project_id": "projectId"                   #open project settings and go to API section
"api_token": "personal-access-token"        #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"

"files": [
  {
    "source": "/en/strings.properties",
    "translation": "/%two_letters_code%/%original_file_name%",
    "escape_quotes": 1,
    "translate_content": 0,
    "escape_special_characters": 0
  }
]

Exemplo de configurações

Uploading CSV files

"project_id": "projectId"                   #open project settings and go to API section
"api_token": "personal-access-token"        #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"

"files": [
  {
    "source": "/*.csv",
    "translation": "/%two_letters_code%/%original_file_name%",
    # Specifies whether first line should be imported or it contains columns headers
    "first_line_contains_header": true,
    # used only when uploading CSV file to define data columns mapping
    "scheme": "identifier,source_phrase,translation,context,max_length"
  }
]

Projeto GetText

"project_id": "projectId"                   #open project settings and go to API section
"api_token": "personal-access-token"        #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"

"files" : [
  {
    "source" : "/locale/en/**/*.po",
    "translation" : "/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%",
    "languages_mapping" : {
      "two_letters_code" : {
        "zh-CN" : "zh_CH",
        "fr-QC": "fr"
      }
    }
  }
]

Projeto Android

"project_id": "projectId"                   #open project settings and go to API section
"api_token": "personal-access-token"        #open profile settings and go to API > New Token > create Token
"base_path": "/project-base-path"
"base_url": "https://api.crowdin.com"

"files" : [
  {
    "source" : "/res/values/*.xml",
    "translation" : "/res/values-%android_code%/%original_file_name%",
    "languages_mapping" : {
      "android_code" : {
        "de" : "de",
        "ru" : "ru"
      }
    }
  }
]

Arquivo de configuração para integrações de VCS

As integrações VCS requerem o mesmo arquivo de configuração como a ferramenta CLI, o que significa que, a mesma estrutura é suportada. The only difference is that you should not store the project credentials in the file header for security reasons. Also, you can use a few additional parameters.

Pull Request Title and Labels for VCS Integrations

The default pull request title is New Crowdin updates. To specify your custom pull request title and add labels to the pull request, you can use the following parameters in the configuration file: pull_request_title, pull_request_labels.

Note: Pull request labels are not supported by the Bitbucket integration.

Exemplo:

"base_path": "/project-base-path"
"pull_request_title": "Custom PR title"
"pull_request_labels": [
  "crowdin",
  "l10n"
]

"files": [
  {
    "source" : "/resources/en/*.json",
    "translation" : "/resources/%two_letters_code%/%original_file_name%"
  }
]

Enviar parâmetro de mensagem para Integrações VCS

Cada vez que as traduções são enviadas, a mensagem padrão “Novas traduções {fileName} ({languageName})”, é mostrada. You can use the commit_message parameter to add Git tags (e.g., to skip builds).

Exemplo:

"base_path": "/project-base-path"
"commit_message": "[ci skip]"

"files": [
  {
    "source" : "/resources/en/*.json",
    "translation" : "/resources/%two_letters_code%/%original_file_name%"
  }
]

To replace the default commit message, use the append_commit_message parameter with the value false. Também podes adicionar dois espaços reservados: %original_file_name% e %language% para usar o nome de arquivo e variáveis de idioma apropriados.

Exemplo:

"commit_message": "Fix: New translations %original_file_name% from Crowdin"
"append_commit_message": false

"files": [
  {
    "source" : "/resources/en/*.json",
    "translation" : "/resources/%two_letters_code%/%original_file_name%"
  }
]

Exportar parâmetro de idiomas para integrações VCS

Por padrão, todos os idiomas são exportados. If you need to export some specific languages, use the export_languages parameter to specify them.

Exemplo:

"base_path": "/project-base-path"
"export_languages": [                                   
    "ru", 
    "uk", 
    "ja"
  ]
"files": [
  {
    "source" : "/resources/en/*.json",
    "translation" : "/resources/%two_letters_code%/%original_file_name%"
  }
]

Adicionando rótulos nos textos de origem

To adicionar rótulos existentes ou novos nos textos de origem, use o parâmetro labels. Os rótulos serão adicionados nos textos de origem apenas durante o upload inicial para o projeto Crowdin.

Os textos enviadoas para o projeto Crowdin antes do uso do parâmetro ` abels` não serão rotuladas. Se você remover o rótulo adicionado durante o upload inicial diretamente no Crowdin, ele não será adicionado novamente nas próximas sincronizações.

Os nomes dos rótulos podem conter qualquer caractere, exceto “,”.

Exemplo:

"base_path": "/project-base-path"

"files": [
  {
    "source" : "/resources/en/*.json",
    "translation" : "/resources/%two_letters_code%/%original_file_name%",
    "labels" : [
      "android",
      "emails"
    ]
  }
]

Leia mais sobre rótulos.

Usando um arquivo de configuração para integrações VCS e CLI

Há casos em que é necessário usar a integração VCS e a CLI para um projeto. Principalmente, nesse tipo de situação, você precisa ter dois arquivos de configuração separados, um para integração com VCS e outro para CLI. No entanto, existe a possibilidade de usar um único arquivo de configuração para os dois casos.

Since the VCS integration configuration file doesn’t contain project_id and api_token credentials required for CLI, you can pass them directly in the command using the following parameters: -i/--project-id, -T/--token. Como alternativa, você pode usar variáveis ambientais for para esse propósito.

Como resultado, seu comando para baixar traduções via CLI será semelhante ao seguinte:

$ crowdin download -i {your-project-id} -T {your-token}

Procurando ajuda

Precisa de ajuda para trabalhar com Crowdin CLI ou tem alguma dúvida? Entre em contato com a equipe de suporte.

Veja também

Este artigo foi útil?