Merging translations from CrowdIn

CrowdIn automatically syncs the gitlab.pot file with the CrowdIn service, presenting newly added externalized strings to the community of translators.

GitLab CrowdIn Bot also creates merge requests to take newly approved translation submissions and merge them into the locale/<language>/gitlab.po files. Check the merge requests created by gitlab-crowdin-bot to see new and merged merge requests.

Validation

By default CrowdIn commits translations with [skip ci] in the commit message. This is done to avoid a bunch of pipelines being run. Before merging translations, make sure to trigger a pipeline to validate translations, we have static analysis validating things CrowdIn doesn't do. Create a new pipeline at https://gitlab.com/gitlab-org/gitlab/pipelines/new (need Developer access permissions) for the master-i18n branch.

If there are validation errors, the easiest solution is to disapprove the offending string in CrowdIn, leaving a comment with what is required to fix the offense. There is an issue suggesting to automate this process. Disapproving excludes the invalid translation, the merge request is then updated within a few minutes.

If the translation has failed validation due to angle brackets < or > it should be disapproved on CrowdIn as our strings should be using variables for HTML instead.

It might be handy to pause the integration on the CrowdIn side for a little while so translations don't keep coming. This can be done by clicking Pause sync on the CrowdIn integration settings page.

Merging translations

When all translations are found good and pipelines pass the translations can be merged into the master branch. When merging the translations, make sure to check the Remove source branch checkbox, so CrowdIn recreates the master-i18n from master after the new translation was merged.

We are discussing automating this entire process.

Recreate the merge request

CrowdIn creates a new merge request as soon as the old one is closed or merged. But it does not recreate the master-i18n branch every time. To force CrowdIn to recreate the branch, close any open merge request and delete the master-18n.

This might be needed when the merge request contains failures that have been fixed on master.

Recreate the GitLab integration in CrowdIn

NOTE: These instructions work only for GitLab Team Members.

If for some reason the GitLab integration in CrowdIn does not exist, it can be recreated by the following steps:

  1. Sign in to GitLab as gitlab-crowdin-bot (If you're a GitLab Team Member, find credentials in the GitLab shared 1Password account
  2. Sign in to Crowdin with the GitLab integration
  3. Navigate to Settings > Integrations > GitLab > Set Up Integration
  4. Select gitlab-org/gitlab repository
  5. On Select Branches for Translation, select master
  6. Ensure the Service Branch Name is master-i18n