我正在尝试将 Universal 与 i18n 一起使用。
我已经在构建应用程序并设置服务器配置,这样一旦应用程序进入浏览器端模式,用户就会被重定向到应用程序的正确翻译,这很好。
我遇到的问题是服务器端渲染。
以设置快递服务器的方式,我看不到如何提供通用的服务器端正确翻译,并且只显示默认语言而不是本地语言。
与浏览器端一样,我尝试为服务器端模式使用的 main.bundle 文件使用不同的构建,每种语言一个。问题是,我不能为每个应用设置多个这些文件。
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),
],
}));
服务器端应用程序是从第四行的 main.bundle 呈现的。但是,我无法为每个翻译提供一个,我该如何解决?
我的观点是让 Angular Universal 为应用程序提供正确的服务器端翻译。