astroのi18nルーティング使用時のindexファイルパスについて

目次

astroのi18nルーティング使用時のindexファイルパスについて

astroのi18nで複数言語仕様にしたあと、npx astro devをしたとき、index.htmlのみファイル名変更・ルートディレクトリに移動される。
npx astro buildは通常通り、/en/index.htmlになっている。

src/pages/en/index.htmlのように作ったファイルは、./en.htmlとなる。

astroのi18nで複数言語仕様にする場合、indexページは扱いが特殊で、言語別ディレクトリではなくルートディレクトリに全て生成される。
そのため、言語ディレクトリ内のindex.htmlを指定してもリンクが動作しない。

❌️

<a href={getRelativeLocaleUrl('en', 'index.html')}>index</a>
<a href={getRelativeLocaleUrl('en', './')}>./</a>

<a href={getRelativeLocaleUrl('ja', 'en.html')}>en.html</a>

要約すると、devでプレビューするときだけ/en/index.html/en.htmlに変換される。
言語ディレクトリの名前がついたhtmlが、ルートディレクトリに生成されるので、それを指定する。
パス指定はデフォルト言語にする。この例ではja