Closed3
AWS S3環境でNext.jsプロジェクトを多言語対応する
Arthurさんの記事の通りに実装する。
パスに言語名を含める方針を採り、パスに言語名が見当たらないときはデフォルトの言語を入れて呼び出すようにする。それぞれのコンポーネントの中で、翻訳を返すカスタムフックを呼ぶ。
レイアウトを分けるやり方はここで初めて知った。
カスタムフックuseTranslation
の中で、react-i18n
を呼び出しているので非同期関数になる。このせいでページコンポーネントが非同期関数というなかなか珍しい形になってしまう。
そのため、静的生成したファイルをS3にデプロイすると、初回アクセスやブラウザバックでアプリケーションエラーを起こす。
そこで、react-i18n
を排除する。これは意外と簡単で、i18n
オブジェクトを単なる連想配列にするだけでいい。どうせjsonファイルを呼び出せば済むのだから、型付けさえうまくやればすぐに動くようになる。
その後、ルーティングを対応させるために、next.config.js
にoutput: "export"
とtrailingSlash: true
を追加すれば、無事に動くようになった。
このスクラップは2023/08/18にクローズされました