debian-mirror-gitlab/doc/development/i18n/merging_translations.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

91 lines
4.5 KiB
Markdown
Raw Normal View History

2021-01-29 00:20:46 +05:30
---
stage: Manage
2023-07-09 08:55:56 +05:30
group: Import and Integrate
2022-11-25 23:54:43 +05:30
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
2021-01-29 00:20:46 +05:30
---
2022-01-26 12:08:38 +05:30
# Merging translations from Crowdin
2018-12-05 23:21:45 +05:30
2022-01-26 12:08:38 +05:30
Crowdin automatically syncs the `gitlab.pot` file with the Crowdin service, presenting
2019-12-26 22:10:19 +05:30
newly added externalized strings to the community of translators.
2018-12-05 23:21:45 +05:30
2022-01-26 12:08:38 +05:30
The [GitLab Crowdin Bot](https://gitlab.com/gitlab-crowdin-bot) also creates merge requests
2019-12-26 22:10:19 +05:30
to take newly approved translation submissions and merge them into the `locale/<language>/gitlab.po`
2021-09-04 01:27:46 +05:30
files. Check the [merge requests created by `gitlab-crowdin-bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests?scope=all&state=opened&author_username=gitlab-crowdin-bot)
2019-12-26 22:10:19 +05:30
to see new and merged merge requests.
2018-12-05 23:21:45 +05:30
## Validation
2022-01-26 12:08:38 +05:30
By default Crowdin commits translations with `[skip ci]` in the commit
2021-09-04 01:27:46 +05:30
message. This avoids an excessive number of pipelines from running.
Before merging translations, make sure to trigger a pipeline to validate
2022-01-26 12:08:38 +05:30
translations. Static analysis validates things Crowdin doesn't do. Create
2021-09-04 01:27:46 +05:30
a new pipeline at [`https://gitlab.com/gitlab-org/gitlab/pipelines/new`](https://gitlab.com/gitlab-org/gitlab/pipelines/new)
2021-09-30 23:02:18 +05:30
(requires the Developer role) for the `master-i18n` branch.
2018-12-05 23:21:45 +05:30
If there are validation errors, the easiest solution is to disapprove
2022-01-26 12:08:38 +05:30
the offending string in Crowdin, leaving a comment with what is
2021-09-04 01:27:46 +05:30
required to fix the errors. There's an
2020-06-23 00:09:42 +05:30
[issue](https://gitlab.com/gitlab-org/gitlab/-/issues/23256)
2021-09-04 01:27:46 +05:30
that suggests automating this process. Disapproving excludes the
invalid translation. The merge request is then updated within a few
2018-12-05 23:21:45 +05:30
minutes.
2021-09-04 01:27:46 +05:30
If the translation fails validation due to angle brackets (`<` or `>`),
2022-01-26 12:08:38 +05:30
it should be disapproved in Crowdin. Our strings must use [variables](externalization.md#html)
2021-09-04 01:27:46 +05:30
for HTML instead.
2020-10-24 23:57:45 +05:30
2022-01-26 12:08:38 +05:30
It might be useful to pause the integration on the Crowdin side for a
2023-01-13 00:05:48 +05:30
moment so translations don't keep coming. You can do this by selecting
2022-01-26 12:08:38 +05:30
**Pause sync** on the [Crowdin integration settings page](https://translate.gitlab.com/project/gitlab-ee/settings#integration).
2018-12-05 23:21:45 +05:30
## Merging translations
2021-04-29 21:17:54 +05:30
After all translations are determined to be appropriate and the pipelines pass,
you can merge the translations into the default branch. When merging translations,
2022-01-26 12:08:38 +05:30
be sure to select the **Remove source branch** checkbox. This causes Crowdin
2021-09-04 01:27:46 +05:30
to recreate the `master-i18n` branch from the default branch after merging the new
2021-04-29 21:17:54 +05:30
translation.
2019-12-26 22:10:19 +05:30
2020-06-23 00:09:42 +05:30
We are discussing [automating this entire process](https://gitlab.com/gitlab-org/gitlab/-/issues/19896).
2018-12-05 23:21:45 +05:30
## Recreate the merge request
2022-01-26 12:08:38 +05:30
Crowdin creates a new merge request as soon as the old one is closed
2021-02-22 17:27:13 +05:30
or merged. But it does not recreate the `master-i18n` branch every
2022-01-26 12:08:38 +05:30
time. To force Crowdin to recreate the branch, close any [open merge requests](https://gitlab.com/gitlab-org/gitlab/-/merge_requests?scope=all&state=opened&author_username=gitlab-crowdin-bot)
2021-09-04 01:27:46 +05:30
and delete the [`master-18n`](https://gitlab.com/gitlab-org/gitlab/-/branches/all?utf8=✓&search=master-i18n) branch.
2018-12-05 23:21:45 +05:30
This might be needed when the merge request contains failures that
2021-04-29 21:17:54 +05:30
have been fixed on the default branch.
2020-06-23 00:09:42 +05:30
2022-01-26 12:08:38 +05:30
## Recreate the GitLab integration in Crowdin
2020-06-23 00:09:42 +05:30
2021-02-22 17:27:13 +05:30
NOTE:
2020-06-23 00:09:42 +05:30
These instructions work only for GitLab Team Members.
2022-01-26 12:08:38 +05:30
If for some reason the GitLab integration in Crowdin doesn't exist, you can
2021-03-11 19:13:27 +05:30
recreate it with 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](https://about.gitlab.com/handbook/security/#1password-for-teams).)
2022-01-26 12:08:38 +05:30
1. Sign in to Crowdin with the GitLab integration.
2021-03-11 19:13:27 +05:30
1. Go to **Settings > Integrations > GitLab > Set Up Integration**.
1. Select the `gitlab-org/gitlab` repository.
2021-09-04 01:27:46 +05:30
1. In **Select Branches for Translation**, select `master`.
1. Ensure the **Service Branch Name** is `master-i18n`.
2021-06-08 01:23:25 +05:30
## Manually update the translation levels
2022-01-26 12:08:38 +05:30
There's no automated way to pull the translation levels from Crowdin, to display
2022-11-25 23:54:43 +05:30
this information in the language selection dropdown list. Therefore, the translation
2021-06-08 01:23:25 +05:30
levels are hard-coded in the `TRANSLATION_LEVELS` constant in [`i18n.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/i18n.rb),
and must be regularly updated.
2021-09-04 01:27:46 +05:30
To update the translation levels:
1. Get the translation levels (percentage of approved words) from [Crowdin](https://crowdin.com/project/gitlab-ee/settings#translations).
1. Update the hard-coded translation levels in [`i18n.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/i18n.rb#L40).