La CLI di Crowdin usa un file di configurazione contenente una descrizione delle risorse da gestire: file da caricare in Crowdin Impresa e le posizioni delle traduzioni corrispondenti.
Per usare la CLI di Crowdin, dovresti prima generare il tuo file di configurazione e poi eseguire lo strumento. Di default, Crowdin CLI cerca un file di configurazione chiamato crowdin.yml (quindi non devi specificare il nome del file a meno che sia differente da crowdin.yml).
To create the configuration file, run the following command:
$ crowdin init
A valid Crowdin CLI configuration file has the following structure, so please make sure that you fill out all the needed information:
A typical configuration file looks similar to the following:
"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%"
}
]
Per eseguire il suddetto file di configurazione e caricare i file sorgente su Crowdin Impresa:
$ crowdin upload sources
Ottieni traduzioni da Crowdin Impresa e mettile nelle posizioni corrette:
$ crowdin download
Potresti caricare le Credenziali API da un ambiente variabile, per esempio:
"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 misti, api_token e project_id sono di priorità:
"project_id_env": "CROWDIN_PROJECT_ID" # Bassa priorità
"api_token_env": "CROWDIN_PERSONAL_TOKEN" # Bassa priorità
"base_path_env": "CROWDIN_BASE_PATH" # Bassa priorità
"base_url_env": "CROWDIN_BASE_PATH" # Bassa priorità
"project_id": "projectId" # Alta priorità
"api_token": "personal-access-token" # Alta priorità
"base_path": "/project-base-path" # Alta priorità
"base_url": "https://{organization-name}.crowdin.com" # Alta priorità
Il file crowdin.yml contiene una descrizione delle risorse da gestire e delle credenziali 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 'path-to-user-credentials-file'
But if user-specific credentials file residing in $HOME/.crowdin.yml you can run:
$ crowdin upload sources
La configurazione campione fornita sopra ha attributi di risorsa e traduzione contenenti wildcard standard (anche note come globbing patterns) per rendere più facile lavorare con file multipli.
Ecco i pattern che puoi usare:
* (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”.
** (asterisco doppio)
Corrispondi ricorsivamente ogni stringa (includendo le sub-directory). Nota che puoi usare ** sia nei modelli di traduzione che in quelli di origine. 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. Il modello di traduzione sarà ‘/%two_letters_code%/**/%original_file_name%’.
? (punto interrogativo)
Corrisponde ad ogni carattere singolo.
[set]
Abbina ogni carattere singolo in una serie. Si comporta esattamente come i set di caratteri in Regexp, incluso il set di negazione ([^a-z]).
\ (backslash)
Esce dal prossimo metacarattere.
La CLI di Crowdin consente di usare i seguenti segnaposto per mettere le variabili appropriate nel nome file risultante:
Nome | Descrizione |
---|---|
%original_file_name% | Nome file originale |
%original_path% | Take parent folders names in Crowdin Enterprise project to build file path in the resulted bundle |
%file_extension% | Estensione file originale |
%file_name% | Nome file senza estensione |
%language% | Nome della lingua (es. Ucraino) |
%two_letters_code% | Codice linguistico ISO 639-1 (es., uk) |
%three_letters_code% | Codice linguistico ISO 639-2/T (es., ukr) |
%locale% | Locale (es., uk-UA) |
%locale_with_underscore% | Locale (es., uk_UA) |
%android_code% | Identificativo Locale di Android usato per denominare le cartelle "values-" |
%osx_code% | Identificatore Locale OS X usato per denominare le directory ".lproj" |
%osx_locale% | L'OS X locale usato per denominare le risorse di traduzione (es., uk, zh-Hans, zh_HK) |
Puoi anche definire il percorso per file nell’archivio risultante mettendo uno slash (/) all’inizio del pattern.
La tua opzione di traduzione
può sembrare come: “/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%”.
Struttura dei file e directory sulla macchina locale:
- 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
Esempio 1. Uso delle wildcard nel percorso d’origine:
#........la tua configurazione progetto........
"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%"
}
]
Esempio 2. Uso di wildcard per ignorare i file:
#........la tua configurazione progetto........
"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
]
}
]
Spesso i progetti di software hanno nomi personalizzati per le directory locali. Crowdin Impresa ti consente di mappare le tue lingue perché siano riconoscibili nei tuoi progetti.
Diciamo che le tue directory locali sono denominate ‘en’, ‘uk’, ‘fr’, ‘de’. Tutti loro possono essere rappresentato dal segnaposto %two_letters_code%. Ancora, hai una directory denominata ‘zh_CH’. Per farlo funzionare con Crowdin Impresa senza modifiche al tuo progetto, puoi configurare la Mappatura della Lingua. Puoi anche sovrascrivere i codici lingua per altri segnaposto come %android_code%, %locale%, etc.
Puoi configurare la Mappatura della Lingua tramite l’interfaccia utente (UI) o aggiungendo una sezione languages_mapping
alla tua serie di file. Consigliamo di configurare una mappatura della lingua tramite UI poiché elimina il bisogno di duplicare il parametro languages_mapping
per ogni filtro del file ma, ovviamente, puoi scegliere l’opzione più adatta a te.
Per configurare la Mappatura della Lingua tramite UI, segui questi passaggi:
Per configurare la Mappatura della Lingua nel tuo file di configurazione, aggiungi la sezione languages_mapping
alla tua serie di file come mostrato sotto.
Esempio di configurazione:
"file": [
{
"sorgente" : "/locale/en/**/*.po",
"traduzione" : "/locale/%two_letters_code%/**/%original_file_name%",
"languages_mapping" : {
"two_letters_code" : {
"uk" : "ukr",
"pl" : "pol"
}
}
}
]
Il formato di mappatura è il seguente: “crowdin_language_code” : “code_you_use”. Controlla l’elenco completo dei codici linguistici di Crowdin Impresa utilizzabili per la mappatura.
Se devi rinominare un file con traduzioni dopo l’esportazione, puoi facilmente farlo con l’aiuto del parametro translation_replsce
.
For example, if the file is named “en_strings.po”, it can be renamed to “strings.po”. Per questo, aggiungi un nuovo parametro (allo stesso livello del parametro traduzione) al file di configurazione (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.
Di volta in volta, esistono file e cartelle che non devi tradurre su Crowdin Impresa. In tali casi, le regole dei file locali possono essere aggiunte al file di configurazione nel tuo profilo.
"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"
]
}
]
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
.
Esempio file di configurazione:
"files": [
{
"source": "/resources/en/*.json",
"translation": "/resources/%two_letters_code%/%original_file_name%",
"excluded_target_languages": [
"uk",
"fr"
]
}
]
If a CSV or XLS/XLSX file contains the translations for all target languages, you should specify appropriate language codes in the scheme.
Esempio file CSV:
identifier,source_phrase,context,Ukrainian,Russian,French ident1,Source 1,Context 1,,, ident2,Source 2,Context 2,,, ident3,Source 3,Context 3,,,
Esempio file di configurazione:
"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"
To form the scheme for your CSV or XLS/XLSX file, use the following constants:
identificativo
– La colonna contiene gli identificativi della stringa.
source_phrase
– La colonna contiene stringhe sorgente.
source_or_translation
– La colonna contiene stringhe sorgente, ma la stessa colonna sarà compilata con le traduzioni quando il file è esportato. Caricando le traduzioni esistenti, i valori da questa colonna saranno usati come traduzioni.
traduzione
– La colonna contiene le traduzioni.
contesto
– La colonna contiene commenti o informazioni contestuali per le stringhe sorgente.
max_length
– La colonna contiene i valori del limite max.length per le traduzioni delle stringhe.
etichette
– La colonna contiene etichette per le stringhe sorgente.
nessuna
– La colonna che sarà saltata all’importazione.
"preserve_hierarchy": true
Example of the configuration file using the preserve_hierarchy
option:
"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%"
}
]
Di default, le cartelle non contenenti alcun file per la traduzione non saranno create su Crowdin Impresa. Per esempio:
- locale | |--it | |-- foo.po |-- bar.po
Di default, i file del progetto saranno rappresentati su Crowdin Impresa come segue:
- foo.po
- bar.po
Usando l’opzione preserve_hierarchy
, la struttura del file su Crowdin Impresa sarà la seguente:
- it | |-- foo.po |-- bar.po
This feature adds support for two optional parameters in the yml file section: dest
and type
. Tipicamente è usata per i progetti in cui il nome caricato dev’esser differente così che Crowdin Impresa possa rilevare correttamente il tipo.
Il parametro dest
ti consente di specificare un nome del file su Crowdin Impresa. 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.Esempio del file di configurazione con entrambi i parametri:
"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"
}
]
Il parametro update_option
è facoltativo. Se non è configurato, le traduzioni per le stringhe modificate saranno perse. Utile per le correzioni di errori di ortografia e per modifiche minori nelle stringhe d’origine.
In base al valore, update_option
è usato per preservare traduzioni e preservare/rimuovere validazioni di stringhe modificate durante il caricamento del file.
I valori sono:
Esempio di file di configurazione con parametro update_option:
"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.
I valori sono:
translate_content opzionale | booleano | Defines whether to translate texts placed inside the tags. Acceptable values are 0 or 1. Predefinito è 1. |
translate_attributes opzionale | booleano | Defines whether to translate tags' attributes. Acceptable values are 0 or 1. Predefinito è 1. |
content_segmentation opzionale | booleano | Defines whether to split long texts into smaller text segments. Acceptable values are 0 or 1. Predefinito è 1. Nota: Quando la segmentazione dei Contenuti è abilitata, il caricamento della traduzione è gestito da una tecnologia di machine learning sperimentale. |
translatable_elements opzionale | insieme | Questo è un insieme di stringhe, dove ogni elemento è l'elemento Xpath a Dom che dovrebbe essere importato. Esempio percorso: /path/to/node o /path/to/attribute[@attr] Nota! Se definiti, i parametri translate_content e translate_attributes non sono presi in conto durante l'importazione. |
Esempio del file di configurazione con parametri aggiuntivi:
"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 opzionale | booleano | Definisce se dividere testi lunghi in segmenti più piccoli di testo. 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. Predefinito è 1. Nota: Quando la segmentazione dei Contenuti è abilitata, il caricamento della traduzione è gestito da una tecnologia di machine learning sperimentale. |
Esempio del file di configurazione con parametri aggiuntivi:
"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
}
]
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 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
}
]
Definisce se una singola quota dovrebbe essere scappata da un’altra quota singola o debba essere eseguito un backslash nelle traduzioni esportate. You can add the escape_quotes
per-file option. Acceptable values are 0, 1, 2, 3. Predefinito è 3.
I valori sono:
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. Predefinito è 1.
Esempio di file di configurazione:
"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"
}
}
}
]
Le integrazioni VCS richiedono lo stesso file di configurazione dello strumento CLI, quindi la stessa struttura è supportata. 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
.
Esempio:
"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%"
}
]
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).
Esempio:
"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. Puoi anche aggiungere due segnaposto opzionali: %original_file_name% e %language% per usare il nome file appropriato e le variabili lingua di conseguenza.
Esempio:
"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%"
}
]
By default, all the languages are exported. If you need to export some specific languages, use the export_languages
parameter to specify them.
Esempio:
"base_path": "/project-base-path"
"export_languages": [
"ru",
"uk",
"ja"
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
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 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.
The label names can contain any characters except “,
”.
Esempio:
"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.
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, 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.
As a result, your command for downloading translations via CLI will look like the following:
$ crowdin download -i {your-project-id} -T {your-token}
Need help working with Crowdin CLI or have any questions? Contatta il Team di Supporto.