Skip to content

共存ラスター (doc-system)

翻訳済みMarkdownファイルの横にロケール固有のアセットを配置するdoc-systemサイトで使用します。URLの書き換えは不要です。Docusaurusプリセット(docsOutput.style = "docusaurus")がリファレンス実装です。"doc-system"とカスタムlocaleSubpathを使用する他のジェネレーターも同様の考え方を採用しています:英語のアセットはソースロケールのパスに配置され、翻訳済みアセットは{outputDir}/{locale}/[localeSubpath/]assets/の下に配置されます。

リポジトリ内に例がない理由: このリポジトリのDocusaurusデモ(examples/docusaurus-docsexamples/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

すべてのロケールのドキュメントが同じ相対パスを使用:

markdown
![Dashboard](../assets/screen-dashboard.png)

英語(en-GB)ロケールの場合、../assets/static/assets/ へのシンボリックリンクを介して解決される。翻訳済みロケールの場合は、そのロケール独自の current/assets/ ディレクトリに直接解決される。

スクリーンショットスクリプトの契約

スクリプトは、各ロケールに対して正しいディレクトリにPNGを書き込む必要があります。getScreenshotDir 関数がその分割をエンコードします。

js
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は変更されません。

json
{
  "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 になります)
  • シンボリックリンクはソースロケールに対してのみ存在すればよく、翻訳済みビルドでは使用されません

実装例

duplistatustake-screenshots.tsgetScreenshotDir(locale)。英語のドキュメントでは、併置されたPNG(例: ../assets/screen-dashboard-summary.pngを含むdashboard.md)を参照しています。同じプロジェクトの併置されたSVGは、同じcurrent/assets/ディレクトリに配置されます — 併置SVGを参照してください。

MITライセンスの下で公開されています。