共存ラスター (doc-system)
翻訳済みMarkdownファイルの横にロケール固有のアセットを配置するdoc-systemサイトで使用します。URLの書き換えは不要です。Docusaurusプリセット(docsOutput.style = "docusaurus")がリファレンス実装です。"doc-system"とカスタムlocaleSubpathを使用する他のジェネレーターも同様の考え方を採用しています:英語のアセットはソースロケールのパスに配置され、翻訳済みアセットは{outputDir}/{locale}/[localeSubpath/]assets/の下に配置されます。
リポジトリ内に例がない理由: このリポジトリのDocusaurusデモ(
examples/docusaurus-docs、examples/nextjs-app)は代わりにロケールごとのフォルダレイアウトを使用しています。詳細は決定ガイドを参照してください。コロケーションされた../assets/は推奨されるグリーンフィールドパターンであり、duplistatusは本番環境の完全な参考実装です。
ディレクトリ構成
共置アセットディレクトリツリーの例(Docusaurus)
documentation/
├── static/
│ └── assets/
│ ├── screen-dashboard.png ← en-GB screenshots (source locale)
│ └── screen-toolbar.png
├── docs/
│ └── assets → ../static/assets ← symlink; webpack follows it
└── i18n/
├── de/
│ └── docusaurus-plugin-content-docs/current/assets/
│ ├── screen-dashboard.png ← de screenshots
│ └── screen-toolbar.png
└── fr/
└── docusaurus-plugin-content-docs/current/assets/
├── screen-dashboard.png
└── screen-toolbar.pngすべてのロケールのドキュメントが同じ相対パスを使用:
英語(en-GB)ロケールの場合、../assets/ は static/assets/ へのシンボリックリンクを介して解決される。翻訳済みロケールの場合は、そのロケール独自の current/assets/ ディレクトリに直接解決される。
スクリーンショットスクリプトの契約
スクリプトは、各ロケールに対して正しいディレクトリにPNGを書き込む必要があります。getScreenshotDir 関数がその分割をエンコードします。
function getScreenshotDir(locale) {
if (locale === 'en-GB') return 'documentation/static/assets';
return `documentation/i18n/${locale}/docusaurus-plugin-content-docs/current/assets`;
}duplistatusリポジトリのtake-screenshots.tsで実際のインプリメンテーションを参照してください。
設定
ラスターファイルには regexAdjustments ルールは必要ありません。translate-docs はMarkdown内の代替テキストを翻訳しますが、URLは変更されません。
{
"docsOutput": {
"style": "docusaurus",
"docsRoot": "documentation/docs"
}
}プロジェクトで翻訳されたSVGも使用されている場合、併置SVG翻訳がそれらを処理し、追加の正規表現なしでPNGとともにcurrent/assets/に配置されます。
前提条件
docs/assetsシンボリックリンクが存在している必要があります:ln -s ../static/assets documentation/docs/assets- Docusaurusのwebpackはデフォルトでシンボリックリンクを追跡します(Docusaurusビルドでは
resolve.symlinksがデフォルトでtrueになります) - シンボリックリンクはソースロケールに対してのみ存在すればよく、翻訳済みビルドでは使用されません
実装例
duplistatus — take-screenshots.tsのgetScreenshotDir(locale)。英語のドキュメントでは、併置されたPNG(例: ../assets/screen-dashboard-summary.pngを含むdashboard.md)を参照しています。同じプロジェクトの併置されたSVGは、同じcurrent/assets/ディレクトリに配置されます — 併置SVGを参照してください。