Crowdinからの翻訳マージ

Crowdin は自動的にgitlab.pot ファイルを Crowdin サービスと同期し、新しく追加された外部化文字列を翻訳者のコミュニティに提示します。

GitLab Crowdin ボットは、新しく承認された翻訳をlocale/<language>/gitlab.po ファイルにマージするためのマージリクエストも作成します。gitlab-crowdin-bot](https://gitlab.com/gitlab-org/gitlab/-/merge_requests?scope=all&state=opened&author_username=gitlab-crowdin-bot) によって作成された[マージリクエストで、新しくマージされたマージリクエストを確認してください。

検証

デフォルトでは、Crowdinはコミットメッセージに[skip ci] 。これにより、過剰なパイプラインの実行を避けることができます。翻訳をマージする前に、翻訳の検証を行うパイプラインを起動するようにしてください。静的解析はCrowdinが行わないことを検証します。master-i18n ブランチのhttps://gitlab.com/gitlab-org/gitlab/pipelines/new (開発者ロールが必要) に新しいパイプラインを作成します。

バリデーションエラーが発生した場合、最も簡単な解決策は Crowdin で問題の文字列を非承認にし、エラーを修正するために必要なことをコメントに残すことです。このプロセスを自動化することを提案するイシューがあります。非承認にすることで、無効な翻訳が除外されます。マージリクエストは数分以内に更新されます。

翻訳が角括弧 (< または>) のために検証に失敗した場合、Crowdin で非承認にする必要があります。文字列はHTML用の変数を使用しなければなりません。

翻訳が続かないように、Crowdin側でインテグレーションを一時停止すると便利です。Crowdin のインテグレーション設定ページで同期を一時停止を選択することで可能です。

翻訳のマージ

すべての翻訳が適切であると判断され、パイプラインが通過したら、翻訳をデフォルトブランチにマージすることができます。翻訳をマージする際には、必ずRemove source branchチェックボックスを選択してください。これにより、Crowdin は新しい翻訳をマージした後、デフォルトブランチからmaster-i18n ブランチを再作成します。

このプロセス全体を自動化することを検討しています。

マージリクエストを再作成します。

Crowdin は古いマージリクエストが閉じられたりマージされたりすると、すぐに新しいマージリクエストを作成します。しかし、毎回master-i18n ブランチを再作成するわけではありません。Crowdin にブランチを再作成させるには、開いているマージリクエストをすべて閉じてmaster-18n ブランチを削除してください。

これは、マージリクエストにデフォルトブランチで修正された失敗が含まれている場合に必要になります。

GitLab インテグレーションを Crowdin に再作成します。

note
この手順はGitLabチームメンバーにのみ有効です。

何らかの理由でCrowdinのGitLabインテグレーションが存在しない場合は、以下の手順で再作成することができます:

  1. GitLabにgitlab-crowdin-bot.としてサインインします(GitLabチームメンバーであれば、GitLab共有の1Passwordアカウントで認証情報を見つけてください)。
  2. GitLabインテグレーションを使ってCrowdinにサインインします。
  3. Settings > Integrations > GitLab > Set Up Integrationに進みます。
  4. gitlab-org/gitlab リポジトリを選択します。
  5. Select Branches for Translation で、master を選択します。
  6. サービスブランチ名がmaster-i18n であることを確認してください。

手動で翻訳レベルを更新します。

翻訳レベルを Crowdin から取得し、言語選択ドロップダウンリストに表示する自動化された方法はありません。そのため、翻訳レベルはi18n.rbTRANSLATION_LEVELS 定数にハードコードされており、定期的に更新する必要があります。

翻訳レベルを更新するには

  1. Crowdinから翻訳レベル(承認者の割合)を取得します。

  2. i18n.rbにハードコードされた翻訳レベルを更新します。