翻訳
テーマローカライズガイド。
MkDocsに含まれる組み込みテーマは、翻訳をサポートしています。これは翻訳者向けのガイドであり、新しい翻訳への貢献や既存の翻訳の更新に関するプロセスを説明しています。既存のテーマの変更方法については、貢献ガイドを参照してください。特定の翻訳を有効にするには、使用している特定のテーマに関するドキュメントをユーザーガイドで確認してください。サードパーティ製のテーマの翻訳については、それらのテーマのドキュメントを参照してください。サードパーティ製のテーマでMkDocsの翻訳ツールと方法を使用するには、そのテーマが適切に設定されている必要があります。
注記
翻訳は、「次へ」や「前へ」のリンクなど、テーマのテンプレート内にあるテキストにのみ適用されます。ページのMarkdownコンテンツは翻訳されません。多言語ドキュメントを作成する場合は、テーマのローカライズとサードパーティ製の国際化/ローカライズプラグインを組み合わせる必要があります。
ローカライズツールの前提条件
テーマのローカライズでは、ローカライズファイルの生成とコンパイルにbabelプロジェクトが使用されます。翻訳コマンドを使用するには、ローカルマシンのgit作業ツリーから作業する必要があります。
貢献ガイドで、開発用インストールとプルリクエストの送信の方法を確認してください。このドキュメントの手順は、適切に設定された開発環境から作業していることを前提としています。
翻訳に必要なものが環境にインストールされていることを確認してください。
pip install 'mkdocs[i18n]'
テーマへの言語翻訳の追加
お好みの言語ロケールが組み込みテーマ(`mkdocs`と`readthedocs`)のいずれか(または両方)でまだサポートされていない場合は、以下の手順に従って簡単に翻訳に貢献できます。
必要な手順の概要を以下に示します。
- MkDocsリポジトリをフォークしてクローンし、次に開発用にMkDocsをインストールして、翻訳を追加およびテストします。
- ローカライズカタログを初期化します(お使いのロケールの翻訳が既に存在する場合は、代わりにテーマのローカライズファイルの更新に関する手順に従ってください)。
- 翻訳を追加して、ローカライズされたカタログ内のすべてのテキストプレースホルダーを翻訳します。
- ローカルでサービスを提供し、テストして、お使いの言語の翻訳済みテーマを確認します。
- ドキュメントを更新して、各翻訳済みテーマでサポートされている翻訳について説明します。
- プルリクエストを通じて翻訳に貢献します。
注記
翻訳ロケールは通常、ISO-639-1(2文字)言語コードを使用して識別されます。地域/地域/国のコードもサポートされていますが、地域固有の翻訳は、一般的な言語翻訳が完了し、地域の方言で一般的な言語翻訳とは異なる用語を使用する必要がある場合にのみ追加する必要があります。
MkDocsリポジトリのフォークとクローン
次の手順では、MkDocsリポジトリのフォークを使用します。MkDocsリポジトリのフォークとクローンに関する手順に従ってください。
翻訳をテストするには、フォークから開発用にMkDocsをインストールする必要もあります。
ローカライズカタログの初期化
各テーマのテンプレートには、ポータブルオブジェクトテンプレート(`messages.pot`)ファイルに抽出されたテキストプレースホルダーが含まれています。これは、各テーマのフォルダーにあります。
カタログの初期化は、目的の言語のディレクトリ構造を作成し、テーマの`pot`ファイルから派生したポータブルオブジェクト(`messages.po`)ファイルを作成するコマンドを実行することからなります。
各テーマのディレクトリで`init_catalog`コマンドを使用し、適切な言語コード(`-l
言語コードはほとんどの場合、小文字の2文字(`sv`など)ですが、場合によってはさらに明確にする必要があります。
参照
`pt`言語を`pt_PT`と`pt_BR`として区別する必要があることがわかる方法は、検索すると言語サブタグレジストリページに`pt-`が含まれていることです。一方、`sv`はそのページに`sv-`が含まれていないため、`sv`のままにする必要があります。
そのため、例として`es`(スペイン語)の言語コードを選択した場合、両方の組み込みテーマに翻訳を追加するには、次のコマンドを実行します。
pybabel init --input-file mkdocs/themes/mkdocs/messages.pot --output-dir mkdocs/themes/mkdocs/locales -l es
pybabel init --input-file mkdocs/themes/readthedocs/messages.pot --output-dir mkdocs/themes/readthedocs/locales -l es
上記のコマンドは、次のファイル構造を作成します。
mkdocs/themes/mkdocs/locales
├── es
│ └── LC_MESSAGES
│ └── messages.po
これで次の手順に進み、ローカライズされたカタログ内のすべてのテキストプレースホルダーに翻訳を追加できます。
テーマ翻訳の更新
テーマの`messages.pot`テンプレートファイルが、お使いのロケールで`messages.po`が最後に更新されてから更新されている場合、以下の手順に従ってテーマの`messages.po`ファイルを更新してください。
- テーマの翻訳カタログを更新して、各テーマの翻訳可能なテキストプレースホルダーを更新します。
- 翻訳して、更新された翻訳可能なテキストプレースホルダーを、翻訳可能なすべての`messages.po`カタログファイル言語に追加します。
- ローカルでサービスを提供し、テストして、お使いの言語の翻訳済みテーマを確認します。
- プルリクエストを通じて翻訳に貢献します。
翻訳カタログの更新
この手順は、翻訳に貢献できる各言語についてテーマテンプレートが更新された後に完了する必要があります。
両方の組み込みテーマの`fr`翻訳カタログを更新するには、次のコマンドを使用します。
pybabel update --ignore-obsolete --input-file mkdocs/themes/mkdocs/messages.pot --output-dir mkdocs/themes/mkdocs/locales -l fr
pybabel update --ignore-obsolete --input-file mkdocs/themes/readthedocs/messages.pot --output-dir mkdocs/themes/readthedocs/locales -l fr
これで次の手順に進み、ローカライズされたカタログ内の更新されたテキストプレースホルダーに翻訳を追加できます。
MkDocsテーマの翻訳
ローカライズされた`messages.po`ファイルの準備ができましたので、ファイル内の各`msgid`アイテムに`msgstr`アイテムで翻訳を追加するだけです。
msgid "Next"
msgstr "Siguiente"
警告
`msgid`はすべての翻訳で共通であるため、変更しないでください。`msgstr`アイテムに翻訳を追加するだけです。
`po`ファイルにリストされているすべての用語の翻訳が完了したら、ローカライズされたテーマをテストします。
テーマ翻訳のテスト
翻訳を含むテーマをテストするには、まずテーマの`messages.po`ファイルを`messages.mo`ファイルにコンパイルする必要があります。次のコマンドは、両方の組み込みテーマの`es`翻訳をコンパイルします。
pybabel compile --statistics --directory mkdocs/themes/mkdocs/locales -l es
pybabel compile --statistics --directory mkdocs/themes/readthedocs/locales -l es
上記のコマンドは、次のファイル構造になります。
mkdocs/themes/mkdocs/locales
├── es
│ └── LC_MESSAGES
│ ├── messages.mo
│ └── messages.po
コンパイルされた`messages.mo`ファイルは、編集したばかりの`messages.po`ファイルに基づいて生成されていることに注意してください。
次に、プロジェクトのルートにある`mkdocs.yml`ファイルを修正して、新しいまたは更新されたロケールをテストします。
theme:
name: mkdocs
locale: es
最後に、`mkdocs serve`を実行して、新しいローカライズされたテーマのバージョンを確認します。
注記
ビルドとリリースプロセスは、すべてのロケールをエンドユーザーにコンパイルして配布するため、実際のテキスト翻訳`messages.po`ファイルに貢献することにのみ注意すれば十分です(残りはgitによって無視されます)。
作業が完了したら、変更を送信する前に`mkdocs.yml`ファイルの`locale`設定の変更を元に戻してください。
テーマドキュメントの更新
テーマの選択ページは、使用可能なすべてのロケールオプションで自動的に更新されます。
翻訳への貢献
これで、素晴らしい成果をプロジェクトに貢献する時間です。ありがとうございます!