3

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 がアプリの正しいサーバー側の翻訳を提供することです。

4

1 に答える 1