To configure a Version Control System integration, specify which source files should be translated and how Crowdin should structure the translated files in your repository.
Once you selected your repository and branch for translation, the next step you need to do is to configure the selected branch. Click to open the Branch Configuration dialog and start the configuration. In the Branch Configuration dialog, you can either load the existing configuration file stored on your repository or create a new configuration from scratch.
To load the existing configuration file stored on your repository, follow these steps:
The configuration will be displayed in the Branch Configuration dialog. You can use it as is or modify it if needed.
To create a new configuration file that will be used by the integration, specify the preferred name and click Continue in the Branch Configuration dialog.
Then specify the source and translated file paths using patterns and placeholders listed below. In the right panel, you can preview the structure of the source files that will be uploaded for translation and the structure of the translated files based on the specified paths.
Once you finish setting up the configuration for the selected branch and save the changes, the configuration file will be saved to the root of the translation branch in your repository.
Represents any character in the file or directory name. If you specify a “*.json” it will include all files like “messages.json”, “about_us.json” and anything that ends with “.json”.
** (doubled asterisk)
Matches any string recursively (including sub-directories). Note that you can use ** in both source and translation patterns. When using ** in the translation pattern, it will always contain a sub-path from the source for a certain file. For example, you can use source: ‘/en/**/*.po’ to upload all *.po files to Crowdin recursively. The translation pattern will be ‘/%two_letters_code%/**/%original_file_name%’.
? (question mark)
Matches any single character.
Matches any single character in a set. Behaves exactly like character sets in Regexp, including set negation ([^a-z]).
Escapes the next metacharacter.
Use placeholders to identify where translated files will be placed and how they will be named:
|%original_file_name%||Original file name|
|%original_path%||Take parent folders names in Crowdin project to build file path in the resulted bundle|
|%file_extension%||Original file extension|
|%file_name%||File name without extension|
|%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 Locale identifier used to name "values-" directories|
|%osx_code%||OS X Locale identifier used to name ".lproj" directories|
|%osx_locale%||OS X locale used to name translation resources (e.g., uk, zh-Hans, zh_HK)|
If some files shouldn’t be translated, click Add ignored pattern, specify the respective pattern for these files, and Crowdin won’t upload specific files for translation.
If your project uses custom names for locale directories, you can use Language Mapping to map your own languages to be recognized by Crowdin.
To add language mapping, follow these steps:
You can specify the scheme of your spreadsheet file in the Scheme field. 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.
Scheme example: identifier,source_phrase,context,fr,de,it,uk (Language Codes).
If a spreadsheet contains the translations for multiple target languages, select Multilingual spreadsheet. If you don’t want to translate the text stored in the first row, select Import first line as a header.
|Translate Content||Select to translate texts stored inside the tags.|
|Translate Attributes||Select to translate tag attributes.|
|Content Segmentation||Select to split the source XML file's content into shorter text segments. |
Note: When Content segmentation is enabled, the translation upload is handled by an experimental machine learning technology.
|Translatable Elements||This is an array of strings, where each item is the XPaths to DOM element that should be imported. |
Sample path: /path/to/node or /path/to/attribute[@attr]
The following parameters can’t be configured online:
preserve_hierarchy- saves directory structure in Crowdin
dest- allows you to specify a file name in Crowdin
type- allows you to specify a file type in Crowdin
update_option- keeps translations and keeps/removes approvals from the changed strings during the file update
commit_message- additional commit message that can include Git tags
export_languages- export translations for the specified languages
Once you save the online configuration, a
crowdin.yml file will be saved to the root of the configured branch in your repository. You can edit this file manually to add the necessary parameters.
Read more about the configuration file.
Click Save to preview the created configuration.
Click Add File Filter if you have various file groups with different configurations.
If several branches in the project share the same configuration, and the same filters should be applied to them, select Apply filters to all translatable branches.
Click Save to save the created configuration.
When the configuration is saved, the localizable files will start uploading to your Crowdin project.