Merging translations from Crowdin
Crowdin automatically syncs the
gitlab.pot file presenting newly
added translations to the community of translators.
At the same time, it creates a merge request to merge all newly added
& approved translations. Find the merge request created by
to see new and merged merge requests. They are created in EE and need
to be ported to CE manually.
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
(need Developer access permissions) for the
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 will exclude the invalid translation, the merge request will be updated within a few minutes.
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
Pause sync on the Crowdin integration settings
When all failures are resolved, the translations need to be double
checked once more as discussed in confidential issue
When all translations are found good and pipelines pass the
translations can be merged into the master branch. After that is done,
create a new merge request cherry-picking the translations from EE to
CE. When merging the translations, make sure to check the
Remove source branch checkbox, so Crowdin recreates the
master after the new translation was merged.
We are discussing automating this entire process here.
Recreate the merge request
Crowdin creates a new merge request as soon as the old one is closed
or merged. But it won't recreate the
master-i18n branch every
time. To force Crowdin to recreate the branch, close any open merge
and delete the
This might be needed when the merge request contains failures that have been fixed on master.