メインコンテンツにスキップ
バージョン: 3.5.2

翻訳されたサイト

このページでは、翻訳された Docusaurus v1 サイトを Docusaurus v2 に移行する方法について説明します。

i18n の違い

Docusaurus v2 の i18n は、いくつかの違いを除いて、概念的には Docusaurus v1 の i18n とよく似ています。

Crowdin と緊密に連携しているわけではなく、Git や他の SaaS を代わりに使用できます。

異なるファイルシステムパス

Docusaurus v2 では、ローカライズされたコンテンツは通常 website/i18n/[locale] にあります。

Docusaurus v2 はプラグインシステムに基づいたモジュール式であり、各プラグインは独自の翻訳を管理する責任があります。

各プラグインには、website/i18n/fr/docusaurus-plugin-content-blog のように、独自の i18n サブフォルダーがあります。

更新された翻訳 API

Docusaurus v1 では、ページを <translate> で翻訳します。

const translate = require('../../server/translate.js').translate;

<h2>
<translate desc="the header description">
This header will be translated
</translate>
</h2>;

Docusaurus v2 では、ページを <Translate> で翻訳します。

import Translate from '@docusaurus/Translate';

<h2>
<Translate id="header.translation.id" description="the header description">
This header will be translated
</Translate>
</h2>;

write-translations CLI は、コードから翻訳を抽出するために引き続き機能します。

コードの翻訳は、Chrome i18n JSON 形式を使用して、i18n/[locale]/code.json に追加されるようになりました。

より厳格な Markdown パーサー

Docusaurus v2 は、Markdown ファイルを解析するために MDX を使用しています。

MDX は Markdown ファイルを React コンポーネントにコンパイルしますが、Docusaurus v1 パーサーよりも厳密であり、一部の不適切なコンテンツをレンダリングするのではなく、エラーが発生するとビルドが失敗します。

また、HTML 要素は JSX 要素に置き換える必要があります。

これは i18n にとって特に重要です。Crowdin での翻訳が不適切で、無効なマークアップを使用している場合、翻訳された v2 サイトのビルドが失敗する可能性があるため、エラーを修正するために翻訳のクリーンアップが必要になる場合があります。

移行戦略

このセクションでは、v2 に移行した後も既存の v1 の翻訳を維持する方法を理解するのに役立ちます。

Crowdin を使用して Docusaurus v1 サイトを移行するための複数の可能な戦略があり、トレードオフが異なります。

警告

このドキュメントは、移行を支援するための最善の努力です。より良い方法を見つけた場合は、改善にご協力ください。

まず最初に、次のことをお勧めします。

危険

Crowdin と Docusaurus v2 i18n の両方を理解せずに移行しようとしないでください。

新しい Crowdin プロジェクトを作成する

本番環境で v1 サイトが壊れるリスクを回避するために、可能な戦略の 1 つは、元の v1 Crowdin プロジェクトを複製することです。

情報

この戦略は、Jest ウェブサイトのアップグレードに使用されました。

残念ながら、Crowdin には「プロジェクトの複製/クローン」機能がないため、複雑になります。

  • 元のプロジェクトの翻訳メモリを .tmx 形式でダウンロードします (https://crowdin.com/project/<ORIGINAL_PROJECT>/settings#tm > View Records)
  • 翻訳メモリを新しいプロジェクトにアップロードします (https://crowdin.com/project/<NEW_PROJECT>/settings#tm > View Records)
  • i18n ドキュメントに従って、Docusaurus v2 用に crowdin.yml を再構成します。
  • Crowdin CLI を使用して、Docusaurus v2 のソースファイルを新しいプロジェクトにアップロードします。
  • idslug などの機密性の高い文字列を Crowdin で「非表示の文字列」としてマークします。
  • 「翻訳」タブで、「事前翻訳 > TM 経由」をクリックします (https://crowdin.com/project/<NEW_PROJECT>/settings#translations)
  • まず「100% 一致」(「完全」よりも多くのコンテンツが翻訳されます)を試して、ソースを事前翻訳します。
  • Crowdin の翻訳をローカルにダウンロードします。
  • サイトを実行/ビルドしてみて、エラーがないか確認します。

初回試行でエラーが発生する可能性があります。事前翻訳は、翻訳すべきではないもの (フロントマター、訓戒、コードブロックなど) を翻訳しようとする可能性があり、翻訳された MD ファイルは MDX パーサーに対して無効である可能性があります。

サイトがビルドされるまで、すべてのエラーを修正する必要があります。翻訳された MD ファイルをローカルで変更し、docusaurus build --locale fr を使用して、一度に 1 つのロケールでサイトを修正することでそれを行うことができます。

これらのエラーを修正するために記述できる最終的なガイドはありませんが、一般的なエラーの原因は次のとおりです。

  • Crowdin で「非表示の文字列」としてマークする文字列が十分ではなく、事前翻訳がこれらの文字列を翻訳しようとする。
  • 不適切な v1 翻訳があるため、v2 で無効なマークアップが発生する: 翻訳内の不適切な HTML 要素と閉じられていないタグ
  • JSX 要素の代わりに HTML 要素を使用するなど、MDX パーサーによって拒否されるもの (MDX プレイグラウンドをデバッグに使用します)

この事前翻訳プロセスを繰り返して、最終的には「完全」オプションを試し、一部の言語/ファイルのみに事前翻訳を制限することもできます。

ヒント

問題のある Markdown 要素の周りに mdx-code-block を使用します。Crowdin はコードブロックを使用すると問題を少なくすることができます。

古いプロジェクトで翻訳されていた一部のものが、新しいプロジェクトで未翻訳になっていることに気付くでしょう。

Crowdin Markdown パーサーは常に進化しており、各 Crowdin プロジェクトには異なるパーサーバージョンがあるため、事前翻訳がすべての文字列を事前翻訳できない可能性があります。

このパーサーバージョンはドキュメント化されていません。プロジェクトのパーサーバージョンを知り、特定のバージョンを修正するには、Crowdin サポートに問い合わせる必要があります。

2 つの Crowdin プロジェクト間で同じ CLI バージョンとパーサーバージョンを使用すると、より良い結果が得られる可能性があります。

危険

Crowdin には「翻訳をアップロード」機能がありますが、私たちの経験では、Markdown であまり良い結果は得られません。

既存の Crowdin プロジェクトを使用する

もし、既存のCrowdinプロジェクトの変更を気にせず、混乱させるリスクを冒してもよいのであれば、Crowdinのブランチシステムを利用できる可能性があります。

警告

このワークフローは実際にはテストされていません。どれほど優れているかについて、ぜひご報告ください。

この方法であれば、新しいCrowdinプロジェクトを作成したり、翻訳メモリを転送したり、事前翻訳を適用したり、事前翻訳のエラーを修正したりする必要はありません。

Docusaurus v2用のCrowdinブランチを作成し、そこにv2のソースをアップロードし、準備が整ったらCrowdinブランチをメインにマージできます。

Crowdinの代わりにGitを使用する

Crowdinから移行して、代わりに翻訳ファイルをGitに追加することができます。

Crowdin CLIを使用してv1の翻訳済ファイルをダウンロードし、これらの翻訳済ファイルをDocusaurus v2の正しいファイルシステムの位置に配置します。