i18n 乖離状況の更新
以下の手順に従い、ロケールごとに npm run fix:i18n:status を実行してローカライズされたコンテンツの drifted_from_default フロントマターフィールドを更新し、ロケールごとにコミットして、オプションで PR を作成します。
引数
このスキルはオプションの引数を受け付けます。
--locale locale,...(オプション): 処理するロケール ID のカンマ区切りリストです。 たとえば--locale pt,es,frのように指定します。 省略した場合、英語以外のすべてのロケールが処理されます。--create-pr(オプションフラグ): 処理後に自動的に PR を作成します。 省略した場合、AskUserQuestionを使用して PR を作成するかどうかをユーザーに確認します。
準備
以下の手順は、メインリポジトリを指す upstream リモートが設定されたリポジトリのローカルクローンがあることを前提としています。
リポジトリルートからローカルで実行してください。
ワーキングツリーがクリーン(コミットされていない変更がない)であることを確認します。
mainに切り替えて最新の変更をプルします。git checkout main git pull upstream main作業用ブランチを作成します。
git checkout -b i18n_update-drift-status
ロケールの検出
--locale が渡されなかった場合、コンテンツディレクトリから英語以外のすべてのロケールを検出します。
find content -maxdepth 1 -mindepth 1 -type d ! -name 'en' -exec basename {} \;
これにより、1行に1つのロケール ID(たとえば bn、es、fr など)が返されます。
--locale が渡された場合は、そのリストを使用します。
en を含めないこと英語はデフォルトのコンテンツであり乖離は発生しないため、ロケールリストに含めたり、このスキルで処理したりしないでください。
--locale 引数に en が含まれている場合は、無視するかエラーを報告してください。
ロケールごとの乖離状況の更新
解決されたロケールリスト内の各 {LANG_ID} に対して、以下を実行します。
乖離状況の更新コマンドを実行します。
npm run fix:i18n:status -- content/{LANG_ID}PR の説明テーブル用の統計情報を収集します。
# 乖離したファイル数 grep -rl "drifted_from_default: true" content/{LANG_ID} | wc -l # 翻訳可能なファイルの合計数 grep -rl "default_lang_commit" content/{LANG_ID} | wc -lコマンドによって変更が生じた場合、ステージングしてコミットします。
git add content/{LANG_ID} git commit -m "chore({LANG_ID}): update drift status"あるロケールで変更がなかった場合、コミットはスキップしますが、統計情報は記録します。
PR の作成
すべてのロケールの処理後、以下を行います。
--create-prが渡されていない場合、AskUserQuestionを使用して PR を作成するかどうかをユーザーに確認してから進めます。- ユーザーが拒否した場合(または
--create-prが渡されておらず、ユーザーが「いいえ」と答えた場合)、ここで処理を止めて統計情報を報告します。
PR を作成するには、ブランチをプッシュします。
git push -u origin i18n_update-drift-status
次に gh pr create を以下の内容で実行します。
- タイトル:
[i18n] Update drift status for localized content - 説明: 上記で収集した統計情報を以下のテーブルに記入し、処理されたロケールのみを含めます。
Updates the drift status for localized content.
Status per locale after this PR:
| Locale | Drifted files | Total files |
| ------ | ------------- | ----------- |
| {ID} | {drifted} | {total} |