Файл конфігурації

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

Вступ

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.

Щоб використовувати Crowdin CLI, ви повинні спочатку згенерувати файл конфігурації, а потім запустити інструмент. За замовчуванням Crowdin CLI шукає файл конфігурації з ім’ям crowdin.yml (тому вам не потрібно вказувати ім’я файлу, якщо воно не відрізняється від 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:

  • Заголовок файлу з обліковими даними проекту, настроюваннями та інформацією про доступ
  • Один елемент масиву файлів, який описує набір вихідних файлів і файлів перекладу, якими ви будете керувати
  • Обов’язкові поля в масиві файлів: Source, яке визначає фільтри для вихідних файлів, і Translation з вказівками, де зберігати перекладені файли або де шукати переклади, які у вас вже є, якщо ви хочете завантажити їх під час налаштування CLI

Створення простого файлу конфігурації

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

Щоб запустити цей файл конфігурації і завантажити вихідні файли на Crowdin, треба лише виконати команду:

$ crowdin upload sources

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

$ crowdin download

Облікові дані API зі змінних оточення

Ви можете завантажити облікові дані API зі змінної оточення, наприклад:

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

При змішуванні api_token і project_id мають перевагу:

"project_id_env": "CROWDIN_PROJECT_ID"      # Низький пріоритет
"api_token_env": "CROWDIN_PERSONAL_TOKEN"   # Низький пріоритет
"base_path_env": "CROWDIN_BASE_PATH"        # Низький пріоритет
"base_url_env": "CROWDIN_BASE_PATH"         # Низький пріоритет
"project_id": "projectId"                   # Високий пріоритет
"api_token": "personal-access-token"        # Високий пріоритет
"base_path": "/project-base-path"           # Високий пріоритет
"base_url": "https://crowdin.com"           # Високий пріоритет

Поділ конфігурації проекту і облікових даних API

Файл crowdin.yml містить опис ресурсів для управління і облікові дані 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:

  • опис ресурсів для управління, які знаходяться в каталозі проекту
  • облікові дані API, які, ймовірно, знаходяться в $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 'path-to-user-credentials-file'

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

$ crowdin upload sources

Загальні налаштування

Наведений вище приклад конфігурації має атрибути ‘source’ і ‘translation’, які містять стандартні постановочні знаки (також відомі як універсальні шаблони) для спрощення роботи з декількома файлами.

Ось шаблони, які ви можете використовувати:

* (зірочка)

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

*** (подвійна зірочка)

Збігається з будь-яким рядком рекурсивно (включаючи підпапки). Зверніть увагу, що ви можете використовувати ** і в шаблонах source і translation. When using ** in the translation pattern, it will always contain a sub-path from the source for a certain file. Наприклад, ви можете використовувати source: ‘/en/**/*.po’, щоб завантажити в Crowdin все рекурсивні файли *.po. Шаблон перекладу буде ‘/%two_letters_code%/**/%original_file_name%’.

? (знак питання)

Відповідає будь-якому одному символу.

[set]

Відповідає будь-якому одному символу в наборі. Behaves exactly like character sets in Regexp, including set negation ([^a-z]).

\ (зворотний слеш)

Пропускає такий метасимвол.

Заповнювачі

У Crowdin CLI можна використовувати наступні наповнювачі для внесення відповідних змінних в результуюче ім’я файлу:

Ім'я Опис
%original_file_name% Початкову назва файлу
%original_path% Візьміть імена батьківських папок у проекті Crowdin, щоб побудувати шлях до файлу в наведеному пакеті
%file_extension% Початкове розширення файлу
%file_name% Файл без розширення
%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% Ідентифікатор мови в Android використаний в назвах «values-» директорій
%osx_code% Локаль OS X, яка використовується для назв ".lproj" директорій
%osx_locale% OS X locale used to name translation resources (e.g., uk, zh-Hans, zh_HK)

Ви також можете вказати повний шлях до файлів в архіві, поставивши косу риску (/) на початку шаблону.

Шаблон translation може виглядати наступним чином: “/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%”.

Використання символів підстановки (wildcards)

Структура файлів і папок на локальному комп’ютері:

- 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

Приклад 1. Використання підстановних знаків у вихідному шляхуі:

#........конфігурація вашого проекту........
"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%"
  }
]

Приклад 2. Використання підстановних знаків для ігнорування файлів:

#........конфігурація вашого проекту........
"files": [
  {
    "source": "/**/*.*",                             #завантажити всі файли, які містять base_path
    "translation": "/**/%two_letters_code%_%original_file_name%",
    "ignore": [
      "/**/%two_letters_code%_%original_file_name%", #ігнорувати перекладені файли
      "/**/?.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
    ]
  }
]

Зіставлення мови

Часто програмні проекти мають власні імена для каталогів локалі. Crowdin allows you to map your own languages to be recognizable in your projects.

Припустимо, папки з вашими Локаль називаються ‘en’, ‘uk’, ‘fr’, ‘de’. Всі вони можуть бути представлені заповнювачем %two_letters_code%. У той же час у вас є папка ‘zh_CH’. Також ви можете перевизначити коди мов для інших наповнювачів, таких як%android_code%, %locale% і т.д.

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. Натисніть Відображення мови, щоб додати власні коди для цільових мов вашого проекту.

Перейменування файлу перекладу

Якщо вам потрібно перейменувати файл з перекладами після експорту, це легко зробити за допомогою параметра ` translation_replace`.

For example, if the file is named “en_strings.po”, it can be renamed to “strings.po”. Для цього додайте новий параметр (на тому ж рівні, що і параметр перекладу) в файл конфігурації (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. 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.

Приклад файлу конфігурації:

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

Приклад файлу CSV:

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

Приклад файлу конфігурації:

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

Збереження структури каталогів на сервері

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

За замовчуванням каталоги, які містять файлів для перекладу, не будуть створені в Crowdin. Наприклад:

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

За замовчуванням файли проекту будуть представлені в Crowdin наступним чином:

- foo.po
- bar.po

Using the option preserve_hierarchy, the file structure in Crowdin 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 can detect the type correctly.

Параметр Dest дозволяє задати ім’я файлу в 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.

Приклад конфігураційного файлу з обома параметрами:

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

Оновлення змінених рядків

Параметр update_option — необов’язковий. Якщо він не заданий, переклади для змінених рядків будуть втрачені. Корисно для виправлення помилок і незначних змін у вихідних рядках.

Залежно від значення update_option використовується для збереження перекладів і збереження/видалення затверджень перекладів і змінених рядків під час оновлення файлу.

Використовуйте наступні значення:

  • update_as_unapproved - зберегти переклади змінених рядків і видалити затвердження цих перекладів, якщо вони існують
  • update_without_changes — зберегти переклади і затвердження перекладів змінених рядків

Приклад конфігураційного файлу з використанням параметра update_option:</p>

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

Завантаження перекладів

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.

Використовуйте наступні значення:

  • -l, --language=language_code - defines the language translations that should be uploaded to Crowdin. За замовчуванням переклади завантажуються на всі цільові мови проекту. (мовні коди 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
необов'язковий
bool Defines whether to translate texts placed inside the tags.
Acceptable values are 0 or 1. Значення за замовчуванням 1.
translate_attributes
необов'язковий
bool Defines whether to translate tags' attributes.
Acceptable values are 0 or 1. Значення за замовчуванням 1.
content_segmentation
необов'язковий
bool Defines whether to split long texts into smaller text segments.
Acceptable values are 0 or 1. Значення за замовчуванням 1.
Note: When Content segmentation is enabled, the translation upload is handled by an experimental machine learning technology.
translatable_elements
необов'язковий
масив Це масив рядків, де кожен елемент є елементом XPath для DOM, який повинен бути імпортований.
Приклад шляху: /path/to/node or /path/to/attribute[@attr]
Увага! Якщо задані, параметри translate_content і translate_attributes не враховуються при імпорті.

Приклад конфігураційного файлу з додатковими параметрами:

"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
необов'язковий
bool Визначає, чи слід розбивати довгі тексти на більш дрібні текстові сегменти. 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. Значення за замовчуванням 1.
Note: When Content segmentation is enabled, the translation upload is handled by an experimental machine learning technology.

Приклад конфігураційного файлу з додатковими параметрами:

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

Екранування лапок в форматі .properties

Визначає, чи буде одинарна лапка екранована інший одинарною лапкою або зворотнім слешем в експортованих перекладах. You can add the escape_quotes per-file option. Acceptable values are 0, 1, 2, 3. Значення за замовчуванням 3.

Використовуйте наступні значення:

  • 0 - не екранувати одинарні лапки
  • 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. Значення за замовчуванням 1.

  • 0 - не екранувати спеціальні символи
  • 1 - екранувати спеціальні символи зворотною косою скобкою

Приклад конфігураційного файлу:

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

Приклади конфігурації

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

Проект 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"
      }
    }
  }
]

Проект 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"
      }
    }
  }
]

Файл конфігурації для інтеграції VCS

Інтеграція VCS вимагає того ж файлу конфігурації, що і інструмент CLI, тобто підтримується та ж структура. 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.

Приклад:

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

Параметр повідомлення злиття для інтеграції VCS

Щоразу, коли робиться переклад, повідомлення “Нові переклади {fileName} ({languageName})”. You can use the commit_message parameter to add Git tags (e.g., to skip builds).

Приклад:

"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. Ви також можете додати два необов’язкових заповнювача: %original_file_name% і %language% щоб використовувати змінні ім’я файлу і мову відповідно.

Приклад:

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

Параметр експорту мов для інтеграції VCS

За замовчуванням всі мови експортуються. If you need to export some specific languages, use the export_languages parameter to specify them.

Приклад:

"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 “,”.

Приклад:

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

Використовуйте єдиний файл конфігурації для інтеграції VCS та CLI

Бувають випадки, коли для одного проекту необхідно використовувати інтеграцію VCS та CLI. В основному в такій ситуації потрібно мати два окремі файли конфігурації: один - для інтеграції в VCS, інший - для CLI. Однак можна використовувати один файл конфігурації в обох випадках.

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. Крім того, для цієї мети можна використовувати змінні середовища.

Як результат, ваша команда для завантаження перекладів через CLI буде виглядати наступним чином:

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

Потрібна допомога

Вам потрібна допомога з API Crowdin або у вас є питання? Зв’язатись з командою підтримки.

Дивись також

Ця стаття була корисною?