ローカライズ
上のメニュー (navbar) に言語選択のリンクを出す
docusaurus.config.ts
navbar: {
...
items: [
...
{
type: 'localeDropdown',
position: 'right',
},
言語設定
docusaurus.config.ts
const config: Config = {
...
i18n: {
defaultLocale: 'en', // ← ★ デフォルトは /en/ などが URLに入らないもの
locales: ['en', 'ja'], // ← ★ ここにローカライズしたい言語を追加
},
ディレクトリ構成
この設定では、以下のようなディレクトリ構成にする必要がある。
| Locale | パス |
|---|---|
| en (default) | docs/test1.md |
| ja | i18n/ja/docusaurus-plugin-content-docs/current/test1.md |
ja ⇔ en を 同階層に置いて比較といったことがしたくなるが、
URL
このように出る
| Locale | URL |
|---|---|
| en (default) | https://sugoi-domain.com/docs/test1 |
| ja | https://sugoi-domain.com/docs/ja/test1 |
その他の動作
- 自動生成の場合は、直下(デフォルトの Locale) の md ファイルを元にパスが生成される
- ローカライズ版 (上で言う /ja/ 以下) に該当ファイルがない場合は、「ページが見つかりません」とデフォルトの言語で出る
→ エラーメッセージが日本語だと、外国ユーザは ちょっと敬遠するかも(中国語デフォルトだとそう感じるのと同様に)
→ こう考えると、 'ja' でなくて 'en' をデフォルトにしたほうが良さそうだな
あとは
特にやることはないので、1回設定してしまえば、簡単なものである。
注意点: routeBasePath を '/' に設定することとは共存不可
docusaurus.config.ts
docs: {
routeBasePath: '/',
このように routeBasePath を 'docs/' から '/' に変更した場合、
言語切替のリンクで、パスが見つからないことになる。
最終的な方針 (割り切り)
→ 元も子もない話ではあるが、以下の機能を使わないと割り切ってしまうことにした
- メニューでの言語切替は使用しない
- エラーメッセージは英語だけで良い
→ リンク元からはこのようにリンクを張ることにする
- https://sugoi-domain.com/ ← English
- https://sugoi-domain.com/ja/ ← Japanese
※ 要は、上の方に書いた設定は使わないことにした...