i18n - Git の使用
翻訳戦略の候補として、翻訳ファイルを Git(またはその他のバージョン管理システム (VCS))でバージョン管理する方法があります。
トレードオフ
この戦略には利点があります
- 簡単に開始できます:
i18n
フォルダを Git にコミットするだけです - 開発者にとって簡単です: Git、GitHub、プルリクエストは一般的な開発者ツールです
- 無料です(Git を既に使用している場合は追加費用なし)
- 摩擦が少ないです: 外部のツールに登録する必要はありません
- やりがいがあります: コントリビューターは、履歴が明確になることを喜ぶでしょう
しかし、Git の使用にはいくつかの欠点もあります
- 非開発者にとって難しいです: Git とプルリクエストを習得していません
- プロの翻訳者にとって難しいです: SaaS 翻訳ソフトウェアと高度な機能を使用することに慣れています
- 維持が困難です: 翻訳ファイルを未翻訳ファイルと同期しておく必要があります
いくつかの大規模な技術プロジェクト(React、Vue.js、MDN、TypeScript、Nuxt.js など)では、翻訳に Git を使用しています。
これらのシステムに関するメモとリンクについては、Docusaurus i18n RFC を参照してください。
初期化
これは、新しく初期化された英語の Docusaurus ウェブサイトをフランス語に翻訳するために Git を使用する方法のチュートリアルです。i18n チュートリアルを既に完了していることを前提としています。
Docusaurus サイトの準備
新しい Docusaurus サイトを初期化します
npx create-docusaurus@latest website classic
フランス語のサイト設定を追加します
export default {
i18n: {
defaultLocale: 'en',
locales: ['en', 'fr'],
},
themeConfig: {
navbar: {
items: [
// ...
{
type: 'localeDropdown',
position: 'left',
},
// ...
],
},
},
// ...
};
ホームページを翻訳します
import React from 'react';
import Translate from '@docusaurus/Translate';
import Layout from '@theme/Layout';
export default function Home() {
return (
<Layout>
<h1 style={{margin: 20}}>
<Translate description="The homepage main heading">
Welcome to my Docusaurus translated site!
</Translate>
</h1>
</Layout>
);
}
i18n
フォルダの初期化
write-translations CLI コマンドを使用して、フランス語ロケール用の JSON 翻訳ファイルを初期化します
- npm
- Yarn
- pnpm
npm run write-translations -- --locale fr
1 translations written at i18n/fr/code.json
11 translations written at i18n/fr/docusaurus-theme-classic/footer.json
4 translations written at i18n/fr/docusaurus-theme-classic/navbar.json
3 translations written at i18n/fr/docusaurus-plugin-content-docs/current.json
yarn write-translations --locale fr
1 translations written at i18n/fr/code.json
11 translations written at i18n/fr/docusaurus-theme-classic/footer.json
4 translations written at i18n/fr/docusaurus-theme-classic/navbar.json
3 translations written at i18n/fr/docusaurus-plugin-content-docs/current.json
pnpm run write-translations --locale fr
1 translations written at i18n/fr/code.json
11 translations written at i18n/fr/docusaurus-theme-classic/footer.json
4 translations written at i18n/fr/docusaurus-theme-classic/navbar.json
3 translations written at i18n/fr/docusaurus-plugin-content-docs/current.json
--messagePrefix '(fr) '
オプションを使用して、未翻訳の文字列を目立たせます。
Hello
は (fr) Hello
と表示され、翻訳が不足していることが明確になります。
未翻訳の Markdown ファイルをフランス語フォルダにコピーします
mkdir -p i18n/fr/docusaurus-plugin-content-docs/current
cp -r docs/** i18n/fr/docusaurus-plugin-content-docs/current
mkdir -p i18n/fr/docusaurus-plugin-content-blog
cp -r blog/** i18n/fr/docusaurus-plugin-content-blog
mkdir -p i18n/fr/docusaurus-plugin-content-pages
cp -r src/pages/**.md i18n/fr/docusaurus-plugin-content-pages
cp -r src/pages/**.mdx i18n/fr/docusaurus-plugin-content-pages
これらのファイルをすべて Git に追加します。
ファイルの翻訳
i18n/fr
の Markdown ファイルと JSON ファイルを翻訳し、翻訳をコミットします。
これで、フランス語でサイトを起動し、翻訳を確認できるようになります
- npm
- Yarn
- pnpm
npm run start -- --locale fr
yarn run start --locale fr
pnpm run start --locale fr
ローカルまたは CI でサイトをビルドすることもできます
- npm
- Yarn
- pnpm
npm run build
# or
npm run build -- --locale fr
yarn build
# or
yarn build --locale fr
pnpm run build
# or
pnpm run build --locale fr
繰り返し
サポートする必要がある各ロケールに対して、同じ手順を繰り返します。
保守
特に Markdown ドキュメントの場合、翻訳ファイルを元のファイルと整合性を保つことは困難です。
Markdown 翻訳
未翻訳の Markdown ドキュメントを編集する場合、対応する翻訳ファイルを維持する責任があります。残念ながら、これを行うための良い方法はありません。
翻訳されたサイトの整合性を保つために、website/docs/doc1.md
ドキュメントを編集した場合は、i18n/fr/docusaurus-plugin-content-docs/current/doc1.md
にこれらの編集内容をバックポートする必要があります。
JSON 翻訳
JSON 翻訳ファイルを維持するために、write-translations CLI コマンドを再度実行できます
- npm
- Yarn
- pnpm
npm run write-translations -- --locale fr
yarn write-translations --locale fr
pnpm run write-translations --locale fr
新しい翻訳が追加され、既存の翻訳は上書きされません。
--override
オプションを使用して翻訳をリセットします。
編集 URL のローカライズ
ユーザーが/fr/doc1
のページを参照している場合、編集ボタンはデフォルトでwebsite/docs/doc1.md
のローカライズされていないドキュメントにリンクします。
翻訳は Git にあり、ドキュメントとブログプラグインのeditLocalizedFiles: true
オプションを使用できます。
編集ボタンは、i18n/fr/docusaurus-plugin-content-docs/current/doc1.md
のローカライズされたドキュメントにリンクします。