Crowdin CLI uses a configuration file that contains a description of the resources to manage: files to be uploaded into Crowdin Enterprise and the locations of the corresponding translations.
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
Um arquivo de configuração do Crowdin CLI, tem a seguinte estrutura, por isso, certifique-se de preencher todas as informações necessárias:
Um típico arquivo de configuração semelhante, ao seguinte:
"project_id": "projectId" #open project and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.crowdin.com"
"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%"
}
]
To run the above configuration file and upload source files to Crowdin Enterprise:
$ crowdin upload sources
Get translations from Crowdin Enterprise and put them in the right locations:
$ crowdin download
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" # 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://{organization-name}.crowdin.com" # High priority
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:
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
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. For example, you can use source: ‘/en/**/*.po’ to upload all *.po files to Crowdin Enterprise recursively. 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.
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% | Take parent folders names in Crowdin Enterprise project to build file path in the resulted bundle |
%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%”.
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
]
}
]
Muitas vezes, os projetos de software têm nomes personalizados para diretórios de localidade. O Crowdin Enterprise 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’. To make it work with Crowdin Enterprise without changes in your project, you can set up Language Mapping. Também pode substituir os códigos de idioma de outros marcadores como %android_code%, %locale%, etc.
Você pode configurar o Mapeamento de idioma por meio da interface do usuário (IU) ou adicionando uma seção languages_mapping
ao seu conjunto de arquivos. Recomendamos configurar um mapeamento de idioma via interface de usuário, pois elimina a necessidade de duplicar o parâmetro languages_mapping
para cada filtro de arquivo, mas é claro, você pode escolher a opção que funciona melhor para você.
Para configurar o mapeamento de idioma via interface de usuário, siga estas etapas:
Para configurar o mapeamento de idioma em seu arquivo de configuração, adicione a seção languages_mapping
ao seu conjunto de arquivos, conforme mostrado abaixo.
Configuração de amostra:
"files": [
{
"source" : "/locale/en/**/*.po",
"translation" : "/locale/%two_letters_code%/**/%original_file_name%",
"languages_mapping" : {
"two_letters_code" : {
"uk" : "ukr",
"pl" : "pol"
}
}
}
]
O formato de Mapear é o seguinte: “crowdin_language_code” : “o_codigo_que_usas”. Verifique a lista completa de códigos de idioma Crowdin Enterprise que podem ser usados para mapeamento.
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.
From time to time, there are files and directories you don’t need to translate in Crowdin Enterprise. 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"
]
}
]
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"
]
}
]
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"
Para formar o esquema de seu arquivo CSV ou XLS/XLSX, use as seguintes constantes:
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.
"preserve_hierarchy": true
Exemplo do arquivo de configuração usando a opção preserve_hierarchy
:
"project_id": "projectId" #open project and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.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 Enterprise. Por exemplo:
- locale | |-- en | |-- foo.po |-- bar.po
By default, project files will be represented in Crowdin Enterprise as following:
- foo.po
- bar.po
Using the option preserve_hierarchy
, the file structure in Crowdin Enterprise will be the following:
- en | |-- foo.po |-- bar.po
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 Enterprise can detect the type correctly.
The dest
parameter allows you to specify a file name in Crowdin Enterprise. It works for multiple files at once and supports the following placeholders: %original_file_name%, %original_path%, %file_extension%, %file_name%.
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 and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.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"
}
]
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:
Example of the configuration file with update_option parameter:
"project_id": "projectId" #open project and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.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"
}
]
Upload your XML, HTML, MD, or any other source files without a key-value structure with your own segmentation rules. If not specified, the pre-defined segmentation rules (SRX 2.0) are used for automatic content segmentation.
Example of the configuration file with custom segmentation:
"project_id": "projectId" #open project and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.crowdin.com"
"files": [
{
"source": "/emails/sample1.html",
"translation": "/emails/%locale%/%original_file_name%",
"custom_segmentation": "/rules/sample.srx.xml"
}
]
The command upload translations uploads existing translations to Crowdin Enterprise. 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:
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 and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.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
]
}
]
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 and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.crowdin.com"
"files": [
{
"source": "/emails/sample1.html",
"translation": "/emails/%locale%/%original_file_name%",
"content_segmentation": 1
}
]
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
– 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.
Exemplo de arquivo de configuração com as opções de exportação:
"project_id": "projectId" #open project and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.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
}
]
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:
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.
Exemplo de arquivo de configuração:
"project_id": "projectId" #open project and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.crowdin.com"
"files": [
{
"source": "/en/strings.properties",
"translation": "/%two_letters_code%/%original_file_name%",
"escape_quotes": 1,
"translate_content": 0,
"escape_special_characters": 0
}
]
"project_id": "projectId" #open project and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.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"
}
]
"project_id": "projectId" #open project and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.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"
}
}
}
]
"project_id": "projectId" #open project and go to Tools > Command line tool (CLI)
"api_token": "personal-access-token" #open project and go to Tools > Command line tool (CLI)
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.crowdin.com"
"files" : [
{
"source" : "/res/values/*.xml",
"translation" : "/res/values-%android_code%/%original_file_name%",
"languages_mapping" : {
"android_code" : {
"de" : "de",
"ru" : "ru"
}
}
}
]
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.
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
.
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%"
}
]
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 Enterprise"
"append_commit_message": false
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
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%"
}
]
To adicionar rótulos existentes ou novos nos textos de origem, use o parâmetro labels
. Labels will be added to the source strings only during the initial upload to the Crowdin Enterprise project.
The strings uploaded to the Crowdin Enterprise 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 Enterprise, it won’t be re-added on the next syncs.
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"
]
}
]
Read more about Labels.
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. However, you can 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.
Como resultado, seu comando para baixar traduções via CLI será semelhante ao seguinte:
$ crowdin download -i {your-project-id} -T {your-token}
Precisa de ajuda para trabalhar com Crowdin CLI ou tem alguma dúvida? Entre em contato com a equipe de suporte.