サイトのローカリゼーション

非英語ローカリゼーションのサイトページの作成と管理

OTel のウェブサイトは、ページのローカリゼーションをサポートするために、Hugo の multilingual framework をサポートしています。 デフォルトの言語は英語であり、米国英語がデフォルト(暗黙の)ローカリゼーションとして設定されています。 対応する言語の数は増えており、トップナビゲーションの言語ドロップダウンメニューから確認できます。

英語メンテナーガイド

英語は OpenTelemetry ウェブサイトのデフォルト言語です。 英語のドキュメントを追加、編集、再構成した後に、非英語ページのリンクチェックが失敗する可能性があります。 そのような場合は、以下を実行してください。

  • リンクを修正しないでください。それぞれの非英語ページは対応する英語のページの特定のコミット(フロントマターキーである default_lang_commit の Git コミットハッシュ)に関連づけられています。
  • 以下のフロントマター、1 つの以上のページがリンクエラーが発生している場合は最も近い祖先のファイルに非英語ページを無視するようにリンクチェッカーを設定してください。
    htmltest:
      # TODO: remove the IgnoreDirs once broken links are fixed
      IgnoreDirs:
        - path-regex/to/non-en/directory/contain/files/to/ignore
        - path-2-etc
    
  • npm run check:links を実行して、設定ファイル .htmltest.yml への変更を PR に含めてください。

翻訳ガイダンス

ページの翻訳の際には、本セクションのガイドに従うことを推奨します。

見出しアンカー

見出しを翻訳する際に、見出しアンカーのターゲットをローカリゼーション全体で統一するために、以下に従ってください。

  • 見出しに明示的な ID がある場合は、それを保持する。見出し ID の記法{ #some-id } のように、見出しテキストの後に記述されます。
  • そうでない場合は、元の英語の見出しに対して自動生成された ID に対応する明示的な ID を宣言する。

ローカルパスへ参照しているリンク(外部リンクではなく)は、そのパスのままにしてください。 これは、ウェブサイトのページへのリンクや、画像などのセクション内リソースへのリンクにも当てはまります。

画像

Hugo は、サイトのローカリゼーション間で共有されるページ画像をレンダリングする際に、効率的な処理を行います。 つまり、生成されたサイトフォルダ内では、Hugo は 1 つの画像ファイルを出力し、それを各ローカリゼーションで共有します。

したがって、一般的なルールとして、実際に画像を変更しない限り、ローカリゼーション用に画像のコピーを作成しないでください

ショートコード

一部の基本ショートコードには英語のテキストが含まれており、ローカリゼーションが必要になる場合があります。 特に、layouts/shortcodes/docs に含まれるものについては、その傾向が強いです。

ローカリゼーションしたショートコードを作成する必要がある場合は、layouts/shortcodes/xx に配置してください。ここで xx はローカリゼーション対象の言語コードを指します。 その際、元の基本ショートコードと同じ相対パスを使用してください。

ローカリゼーションページの乖離を追跡する

ローカリゼーションページを維持する上で主な課題の 1 つは、対応する英語のページが更新されたタイミングを特定することです。 本セクションでは、どのように対処するのかを説明します。

default_lang_commit フロントマターフィールド

content/zh/<some-path>/page.md のようなローカリゼーションページが書かれた際に、この翻訳は content/en/<some-path>/page.md にある対応する英語版のページの特定の main ブランチのコミット に基づいています。 このリポジトリでは、それぞれのローカリゼーションページが対応する英語ページのコミットを以下のようにローカリゼーションページのフロントマターで識別します。

---
title: Your localized page title
...

default_lang_commit: <commit-hash-of-main-for-default-language-page>

上述のフロントマターは content/zh/<some-path>/page.md です。 このコミットは、main における content/en/<some-path>/page.md の最新コミットに対応します。

英語ページの変更を追跡する

英語ページの更新が作成されると、以下のコマンドを実行することで、対応するローカリゼーションページの更新が必要か追跡ができます。

$ npm run check:i18n
1       1       content/en/docs/platforms/kubernetes/_index.md - content/zh/docs/platforms/kubernetes/_index.md
...

以下のようにパスを追加することで、1 つまたはそれ以上のローカライゼーションするページに対象を絞れます。

npm run check:i18n -- content/zh

変更の詳細をみる

更新が必要なローカリゼーションページについて、-d フラグとローカリゼーションページへのパスを追加して差分を見るか、パスを省略して対応するページのすべての差分を見ることができます。 たとえば、以下のようになります。

$ npm run check:i18n -- -d content/zh/docs/platforms/kubernetes
diff --git a/content/en/docs/platforms/kubernetes/_index.md b/content/en/docs/platforms/kubernetes/_index.md
index 3592df5d..c7980653 100644
--- a/content/en/docs/platforms/kubernetes/_index.md
+++ b/content/en/docs/platforms/kubernetes/_index.md
@@ -1,7 +1,7 @@
 ---
 title: OpenTelemetry with Kubernetes
 linkTitle: Kubernetes
-weight: 11
+weight: 350
 description: Using OpenTelemetry with Kubernetes
 ---

default_lang_commit を新しいページに追加する

ローカリゼーションのページを作成する際は、default_lang_commit をページのフロントマターに追加し、main ブランチの適切なコミットハッシュを指定することを忘れないでください。

翻訳ページがmain における <hash> 時点の英語ページに基づいている場合、以下のコマンドを実行すると、default_lang_commit をコミット <hash> の値で自動的にページのフロントマターに追加できます。 ページが mainHEAD に同期している場合、引数として Head を指定できます。 たとえば、以下のように実行します。

npm run check:i18n -- -n -c 1ca30b4d content/ja
npm run check:i18n -- -n -c HEAD content/zh/docs/concepts

ハッシュキーを欠落しているローカリゼーションしたページのファイル一覧にするには、次を実行してください。

npm run check:i18n -- -n

既存のページの default_lang_commit を更新する

対応する英語のページに変更に合わせてローカリゼーションページを更新する際、default_lang_commit のコミットハッシュも忘れずに確認してください。

乖離したローカリゼーションページをまとめて更新した場合、-c フラグに続いてコミットハッシュまたは ‘HEAD’ を指定することで、それらのファイルのコミットハッシュを main@HEAD に更新できます。

npm run check:i18n -- -c <hash> <PATH-TO-YOUR-NEW-FILES>
npm run check:i18n -- -c HEAD <PATH-TO-YOUR-NEW-FILES>

スクリプトのヘルプ

スクリプトの詳細は、npm run check:i18n -- -h を実行してください。

新しいローカリゼーション

OpenTelemetry ウェブサイトの新しい言語のローカリゼーションを始めるには、コントリビュートの興味を共有するためにイシューを起票してください。 追加したい言語において翻訳の執筆とレビューをしたい他のメンバー全員をタグ付けしてください。 最低でも 2 名の潜在的なコントリビューター(理想的には 3 名)が必要です。 また、イシューに以下のタスクリストも含めてください。

- [ ] Contributors for the new language: @GITHUB_HANDLE1, @GITHUB_HANDLE2, ...
- [ ] Localize site homepage to YOUR_LANGUAGE_NAME
- [ ] Create an issue label for `lang:LANG_ID`
- [ ] Create org-level group for `LANG_ID` approvers
- [ ] Update components owners for `content/LANG_ID`
- [ ] Set up spell checking, if a cSpell dictionary is available

注意。

  • 追加したい言語の LANG_ID には公式の ISO 639-1 コード を使用してください。
  • cSpell 辞書 を探し、NPM パッケージとして利用可能な @cspell/dict-LANG_ID を確認してください。 もし指標する方言や地域に適した辞書がない場合は、最も近い地域のものを選んでください。 設定方法の例については、PR #5386 を参照してください。

そのイシューを作成し、必要な人数のコントリビューターが集まったら、メンテナーがインデックスページの翻訳を含むプルリクエストを作成するように依頼します。 PR にローカリゼーションプロジェクトを開始するのに必要な追加変更を加えるために、メンテナーが PR を編集できることを確認してください。

最初の PR がマージされると、メンテナーがイシューラベル、組織レベルのグループ、およびコンポーネント所有者の設定を行います。