Universal を i18n で使用しようとしています。
私はすでにアプリを構築し、サーバー構成を設定しているので、アプリがブラウザ側モードに移行すると、ユーザーはアプリの正しい翻訳にリダイレクトされます。それで問題ありません。
私が抱えている問題は、サーバー側のレンダリングにあります。
Express サーバーの設定方法では、ユニバーサルのサーバー側の正しい翻訳を提供する方法がわかりません。また、ローカル言語ではなくデフォルト言語のみが表示されます。
ブラウザ側と同様に、サーバー側モードで使用される main.bundle ファイルに対して、言語ごとに 1 つずつ、異なるビルドを作成しようとしました。問題は、アプリごとにこれらのファイルを複数設定できないことです。
Dist フォルダー構造:
dist/
server.js
browser/
en/
...
it/
...
server/
en/
...
main.bundle // eng translation
it/
...
main.bundle // ita translation
server.ts ファイル
// * NOTE :: leave this as require() since this file is built Dynamically from webpack
// In this line I can only provide one file for the server-side translation,
// and I can't dynamically change it to the correct translation.
const { AppServerModuleNgFactory, LAZY_MODULE_MAP } =
require("./dist/server/en/main.bundle");
app.engine("html", ngExpressEngine({
bootstrap: AppServerModuleNgFactory,
providers: [
provideModuleMap(LAZY_MODULE_MAP),
],
}));
サーバー側アプリは、4 行目の main.bundle からレンダリングされます。しかし、翻訳ごとに 1 つ提供する可能性がありません。どうすれば修正できますか?
私のポイントは、Angular Universal がアプリの正しいサーバー側の翻訳を提供することです。