Configuração do Ficheiro

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

Introdução

Crowdin CLI uses a configuration file that contains a description of the resources to manage: files to be uploaded into Crowdin and the locations of the corresponding translations.

Para usar o Crowdin CLI, deves primeiro gerar o teu ficheiro de configuração e depois, executar a ferramenta. Por padrão, o Crowdin CLI procura por um ficheiro de configuração nomeado por crowdin.yml (para que não precises de especificar o nome do ficheiro, a menos que seja diferente de crowdin.yml).

To create the configuration file, run the following command:

$ crowdin init

Estrutura do Ficheiro de Configuração

A valid Crowdin CLI configuration file has the following structure, so please make sure that you fill out all the needed information:

  • O cabeçalho do ficheiro com as credenciais do projeto, preferências, e informações de acesso
  • Um elemento de array de ficheiros que descreve um conjunto de ficheiros de origem e de tradução que gerirás
  • Campos obrigatórios no array de ficheiros: Origem que define filtros para os ficheiros de origem e Tradução com instruções sobre onde armazenar os ficheiros traduzidos ou onde procurar as traduções que já tens, se desejas enviá-los durante a configuração da CLI

Escrever um Simples Ficheiro de Configuração

A typical configuration file looks similar to the following:

"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 ficheiro de configuração acima, e enviar os ficheiros de origem para o Crowdin:

$ crowdin upload sources

Get translations from Crowdin and put them in the right locations:

$ crowdin download

Credenciais API das Variáveis de Ambiente

Podes carregar as Credenciais API duma variável 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"

If mixed, api_token and project_id are prioritized:

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

Dividir Configuração de Projeto e Credenciais API

The crowdin.yml file contains a description of the resources to manage and API credentials (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:

  • a description of the resources to manage, residing in the project directory
  • API credentials, probably residing in $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-ficheiro-das-credenciais-do-utilizador'

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

Aqui estão os padrões que podes usar:

* (asterisk)

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

** (doubled asterisk)

Corresponde a qualquer frase recursiva (incluindo subdiretórios). Note that you can use ** in both source and translation patterns. When using ** in the translation pattern, it will always contain a sub-path from the source for a certain file. For example, you can use source: ‘/en/**/*.po’ to upload all *.po files to Crowdin recursively. The translation pattern will be ‘/%two_letters_code%/**/%original_file_name%’.

? (ponto de interrogação)

Corresponde a qualquer caractere único.

[set]

Matches any single character in a set. Behaves exactly like character sets in Regexp, including set negation ([^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 ficheiro resultante:

Nome Descrição
%original_file_name% Nome do ficheiro original
%original_path% Pega os nomes das pastas projeto no projeto do Crowdin para caminho o caminho de ficheiro no pacote resultante
%file_extension% Extensão do ficheiro original
%file_name% Nome do ficheiro sem extensão
%language% Language name (e.g., Ukrainian)
%two_letters_code% Language code ISO 639-1 (e.g., uk)
%three_letters_code% Language code ISO 639-2/T (e.g., ukr)
%locale% Locale (e.g., uk-UA)
%locale_with_underscore% Locale (e.g., 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 podes definir o caminho para os ficheiros no arquivamento resultante, ao colocar uma barra (/) no início do padrão.

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

Uso de Caracteres Especiais

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

- base_path | |-- folder |     | |     |-- 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

Example 1. Usage of wildcards in the source path:

#........a tua 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%"
  }
]

Example 2. Usage of wildcards for ignoring files:

#........a tua 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. Crowdin allows you to map your own languages to be recognizable in your projects.

Digamos que os teus diretórios locais são denominados ‘en’, ‘uk’, ‘fr’, ‘de’. Todos eles podem ser representados pelo espaço reservado %two_letters_code%. Ainda assim, tens um diretório chamado ‘zh_CH’. You can also override language codes for other placeholders like %android_code%, %locale%, etc.

To make it work with Crowdin without changes in your project, you can set up Language Mapping via UI.

To set up Language Mapping, follow these steps:

  1. Open the Project settings > General tab and scroll down to the Export section.
  2. Click Language Mapping to add custom language codes to the target languages of your project.

Renomear Ficheiro de Traduções

Se precisas de renomear um ficheiro com traduções, após, a exportação, podes fazer isto 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 ficheiro 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 Ficheiros e Diretórios

From time to time, there are files and directories you don’t need to translate in Crowdin. In such cases, local per-file rules can be added to the config file in your project.

"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

By default, the source files are available for translation into all target languages of the project. 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 ficheiro de configuração:

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

Multicolumn Spreadsheet

If a CSV or XLS/XLSX file contains the translations for all target languages, you should specify appropriate language codes in the scheme.

Exemplo de ficheiro 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 ficheiro de configuração:

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

If your CSV or XLS/XLSX file contains columns that should be skipped on import, use none for such columns in the scheme, for example:

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

Scheme Constants

To form the scheme for your CSV or XLS/XLSX file, use the following constants:

identifier – Column contains string identifiers. source_phrase – Column contains source strings. source_or_translation – Column contains source strings, but the same column will be filled with translations when the file is exported. When uploading existing translations, the values from this column will be used as translations. translation – Column contains translations. context – Column contains comments or context information for the source strings. max_length – Column contains max.length limit values for the translations of the strings. labels – Column contains labels for the source strings. none – Column that will be skipped on import.

Guarda a Estrutura de Diretórios no Servidor

"preserve_hierarchy": true

Example of the configuration file using the preserve_hierarchy option:

"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%"
  }
]

By default, directories that do not contain any files for translation will not be created in Crowdin. For example:

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

Por padrão, os ficheiros 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 Ficheiros 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 ficheiro 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 ficheiro 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 Frases Alteradas

The parameter update_option is optional. If it is not set, translations for changed strings will be lost. Useful for typo fixes and minor changes in source strings.

Dependendo do valor, update_option é usado para preservar as traduções e preservar/remover as validações de frases alteradas durante a atualização do ficheiro.

Os valores são:

  • update_as_unapproved - preserve translations of changed strings and remove validations of those translations if they exist
  • update_without_changes - preserve translations and validations of changed strings

Exemplo do ficheiro de configuração com o parâmetro update_option:

"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"
  }
]

Envio de Traduções

The command upload translations uploads existing translations to 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.
Note: When Content segmentation is enabled, the translation upload is handled by an experimental machine learning technology.
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 or /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 ficheiro 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.
Note: When Content segmentation is enabled, the translation upload is handled by an experimental machine learning technology.

Exemplo do ficheiro 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
  }
]

Export Options

To configure the preferred export behavior for each file group, you may use the following export options:

skip_untranslated_strings – Only translated strings will be included in the exported translation files. skip_untranslated_files – Only translated files will be included in the exported translation archive. export_only_approved – Only texts that are both translated and approved will be included in the exported translation files.

Example of the configuration file with the export options:

"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
  }
]
Note: The export options work only with CLI.

Opções de Cotas de Escape para Formato de Ficheiro .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} )

Escape special characters
Defines whether any special characters (=, :, ! 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 ficheiro 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"
      }
    }
  }
]

Ficheiro de Configuração para Integrações de VCS

As integrações VCS requerem o mesmo ficheiro 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

Each time translations are committed the default message is shown “New translations {fileName} ({languageName})”. 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 ficheiro 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

By default, all the languages are exported. 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%"
  }
]

Adding Labels to Source Strings

To add existing or new labels to the source strings, use the labels parameter. Labels will be added to the source strings only during the initial upload to the Crowdin project.

The strings uploaded to the Crowdin project before the use of the labels parameter won’t be labeled. If you remove the label added during the initial upload directly in Crowdin, it won’t be re-added on the next syncs.

The label names can contain any characters except “,”.

Exemplo:

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

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

Read more about Labels.

Using One Configuration File for VCS Integrations and CLI

There are cases when it’s necessary to use VCS integration and CLI for one project. Mostly, in this kind of situation, you’d need to have two separate configuration files, one for VCS integration and another for CLI. However, there is a possibility to use a single configuration file for both cases.

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. Alternatively, you may use environment variables for this purpose.

As a result, your command for downloading translations via CLI will look like the following:

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

Procurar por Ajuda

Need help working with Crowdin CLI or have any questions? Contact Support Team.

Ver Também

Este artigo foi útil?