File di configurazione

Introduzione

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.

Per usare la CLI di Crowdin, dovresti prima generare il tuo file di configurazione e poi eseguire lo strumento. By default, Crowdin CLI looks for a configuration file named crowdin.yml (so you don’t have to specify the file name unless it’s different from crowdin.yml).

Per creare il file di configurazione esegui il seguente comando:

$ crowdin init

Struttura File Configurazione

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

  • Testa del file con credenziali del progetto, preferenze ed informazioni di accesso
  • Un elemento dell’insieme di file che descrive una serie di file risorsa e traduzione che gestirai
  • I campi richiesti nell’insieme di file: Risorsa che definisce i filtri per i file d’origine e Traduzione con le istruzioni su dove archiviare i file tradotti o dove cercare le traduzioni che hai già se vuoi caricarle durante la configurazione della CLI

Scrivete un Semplice File Configurazione

A typical configuration file looks similar to the following:

"project_id": "projectId"                     #open project and go to Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"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

Credenziali API da Variabili Ambiente

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"                # 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

Dividi Configurazione Progetto e Credenziali API

The crowdin.yml file contains a description of the resources to manage and API credentials (project_id, api_token, base_path, base_url). Ciò significa che è insicuro impegnate questo file nella Repository del codice perché la chiave API sarebbe accessibile ad altri utenti. Crowdin CLI supporta 2 tipi di file di configurazione:

  • una descrizione delle risorse da gestire, residenti nella directory del progetto
  • Credenziali API, probabilmente residenti in $HOME/.crowdin.yml
Nota: Le credenziali API dal file di configurazione .crowdin.yml sono di proprietà superiore delle credenziali dalla directory del progetto(crowdin.yml).

Se devi eseguire un comando con credenziali utente specifiche (per esempio carica risorse) allora esegui il comando seguente:

$ crowdin upload sources --identity 'path-to-user-credentials-file'

Ma se il file delle credenziali specifiche dell’utente risiede in $HOME/.crowdin.yml puoi semplicemente eseguire:

$ crowdin upload sources

Configurazione Generale

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)

Rappresenta ogni carattere nel nome del file o della directory. Se specifici un “*.json” includerà tutti i file come “messages.json”, “about_us.json” e qualsiasi cosa finisca con “.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. Quando usi ** nel modello di traduzione, conterrà sempre il sotto-percorso dall’origine per un certo file. Per esempio, puoi usare l’origine: ‘/en/**/*.po per caricare tutti i file *.po ricorsivamente in Crowdin. 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.

Segnaposto

La CLI di Crowdin consente di usare i seguenti segnaposto per mettere le variabili appropriate nel nome file risultante:

Nome Descrizione
%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)
%original_file_name% Nome file originale
%android_code% Identificatore Locale Android usato per denominare le directory "values-"
%osx_code% Identificatore Locale OS X usato per denominare le directory ".lproj"
%original_path% Usa nomi di cartelle genitori nel progetto Crowdin per costruire un percorso file nel pacchetto risultato
%file_extension% Estensione file originale
%file_name% Nome file senza estensione

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

Uso delle Wildcards

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

Mappatura Lingua

Spesso i progetti di software hanno nomi personalizzati per le directory locali. Crowdin Impresa ti consente di mappare le tue lingue per essere riconoscibile 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’. To make it work with Crowdin without changes in your project, you can set up Language Mapping. Puoi anche sovrascrivere i codici lingua per altri segnaposto come %android_code%, %locale%, etc.

You can set up Language Mapping either via the user interface (UI) or by adding a languages_mapping section to your file set. We recommend setting up a language mapping via UI since it eliminates the need for duplicating the languages_mapping parameter for each file filter, but of course, you can choose the option that works best for you.

To set up Language Mapping via UI, follow these steps:

  1. Apri le Impostazioni Progetto e scendi alla sezione Esportazione.
  2. Clicca Mappatura Lingua per aggiungere codici di lingua personalizzati alle lingue di destinazione del tuo progetto.

To set up Language Mapping in your configuration file, add the languages_mapping section to your file set as shown below.

Sample configuration:

"files": [
  {
    "source" : "/locale/en/**/*.po",
    "translation" : "/locale/%two_letters_code%/**/%original_file_name%",
    "languages_mapping" : {
      "two_letters_code" : {
        "uk" : "ukr",
        "pl" : "pol"
      }
    }
  }
]

Mapping format is the following: “crowdin_language_code” : “code_you_use”. Check the full list of Crowdin Enterprise language codes that can be used for mapping.

Rinominare File di Traduzioni

Se devi rinominare un file con traduzioni dopo l’esportazione, puoi facilmente farlo con l’aiuto del parametro translation_replsce.

Per esempio, se il file è denominato “it_strings.po” può essere rinominato in “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 questo caos, “_en” sarà semplicemente cancellato dal nome file.

Ignorare File e Directory

Di volta in volta ci sono file e directory che non necessiti tradurre in Crowdin. 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"
    ]
  }
]

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.

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"

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.

Salvare Struttura Directory sul Server

"preserve_hierarchy": true

Example of the configuration file using the preserve_hierarchy option:

"project_id": "projectId"                     #open project and go to Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"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 directory che non contengono alcun file per la traduzione non saranno create in Crowdin. Per esempio:

- locale | |--it | |-- foo.po |-- bar.po

Per impostazione predefinita, i file di progetto saranno rappresentati in Crowdin come segue:

- foo.po
- bar.po

Usando l’opzione preserve_hierarchy, la struttura del file in Crowdin sarà la seguente:

- it | |-- foo.po |-- bar.po

Caricare File nel Percorso Specificato con Tipo Specificato

This feature adds support for 2 optional parameters in the yml file section: dest and type. Ciò è tipicamente usato per progetti, dove il nome caricato deve essere differente, quindi Crowdin può rilevare correttamente il tipo. Il parametro dest ti permette di specificare un nome file in Crowdin.

Nota! Il parametro dest funziona solo per file singoli, e se lo usi, il file di configurazione dovrebbe anche includere il parametro preserve_hierarchy con il valore true.

Esempio del file di configurazione con entrambi i parametri:

"project_id": "projectId"                     #open project and go to Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"base_path": "/project-base-path"
"base_url": "https://{organization-name}.crowdin.com"
"preserve_hierarchy": true

"files": [
  {
    "source": "/conf/messages",
    "dest": "/messages.properties",
    "translation": "/conf/messages.%two_letters_code%",
    "type": "properties"
  },
  {
    "source": "/app/strings.xml",
    "dest": "/strings.xml",
    "translation": "/res/values-%android_code%/%original_file_name%",
    "type": "properties"
  }
]

Aggiornamento Stringhe Modificate

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:

  • 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

Esempio di file di configurazione con parametro update_option:

"project_id": "projectId"                     #open project and go to Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"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"
  }
]

Caricamento Traduzioni

The command upload translations uploads existing translations to Crowdin. If no options specified, the uploaded translations will not be imported even if they are equal with the source strings and will not be approved.

I valori sono:

  • -l, --language=language_code - defines the language translations that should be uploaded to Crowdin. Per impostazione predefinita, le traduzioni sono caricate in tutti le lingue obiettivo del progetto. (Crowdin Language Codes)
  • --[no-]import-eq-suggestions - defines whether to add translation if it is equal to source string in Crowdin project
  • --[no-]auto-approve-imported - automatically approves uploaded translations

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 and go to Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"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
  }
]
Note: The export options work only with CLI.

Opzioni Aggiuntive per File XML

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.
ImportanteQuesta opzione disabilita la possibilità di caricare traduzioni esistenti per file XML quando abilitata.
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 Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"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
    ]
  }
]

Opzioni Quote di fuga per Formato di File .properties

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 escape_quotes per-file option. Valori accettabili sono: 0, 1, 2, 3. Predefinito è 3.

I valori sono:

  • 0 - non fuggire quota singola
  • 1 - fuga singola citazione da un’altra singola citazione
  • 2 - fuga singola citazione da una backslash
  • 3 - fuga singola citazione da un’altra singola citazione solo nelle stringhe contenenti variabili ( {0} )

Escape special characters
Defines whether any special characters (=, :, ! e #) dovrebbero essere usciti da uno backslash nelle traduzioni esportate. Puoi aggiungere l’opzione per file escape_special_characters.

Acceptable values are: 0, 1. Predefinito è 1.

  • 0 - non uscire caratteri speciali
  • 1 - esci caratteri speciali da uno backslash

Esempio di file di configurazione:

"project_id": "projectId"                     #open project and go to Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"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
  }
]

Esempio Configurazioni

Caricare file CSV tramite API

"project_id": "projectId"                     #open project and go to Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"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"
  }
]

Progetto GetText

"project_id": "projectId"                     #open project and go to Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"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"
      }
    }
  }
]

Progetto Android

"project_id": "projectId"                     #open project and go to Resources > Integrations & API > Integration tool
"api_token": "personal-access-token"          #open project and go to Resources > Integrations & API > Integration tool
"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"
      }
    }
  }
]

File Configurazione per Integrazioni VCS

Le integrazioni VCS richiedono lo stesso file di configurazione dello strumento CLI, quindi la stessa struttura è supportata. L’unica differenza è che le credenziali di progetto non dovrebbero essere archiviate nell’intestazione file per ragioni di sicurezza. Inoltre, si possono usare due parametri aggiuntivi.

Messaggio di Impegni Parametro per Integrazioni VCS

Ogni volta che le traduzioni sono impegnate il messaggio predefinito è mostrato “Nuove traduzioni {fileName} ({languageName})”. You can use 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 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"
"append_commit_message": false

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

Parametro Lingue Esportazione per Integrazioni VCS

By default, all the languages are exported. If you need to export some specific languages, use export_languages paramenter 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%"
  }
]

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

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 that are 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}

Assistenza Ricerca

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

Questo articolo è stato utile?