在 i18n SSR Angular 19 应用程序中设置 LOCALE_ID 的最佳方法是什么?

问题描述 投票:0回答:1

在 i18n SSR Angular 19 应用程序中设置 LOCALE_ID 的最佳方法是什么?

我可以通过设置此 DI 令牌在服务器 (app.server.config.ts) 上进行设置:

    {
      provide: LOCALE_ID,
      useFactory: () => {
        const req = inject(REQUEST, { optional: true});
        return req.path.split('/')[1]; // e.g. /en or /de
      },
      deps: [REQUEST],
    },

这有效!但现在当客户接管(CSR)时怎么办?我认为客户端无法在 app.server.config.ts 中定义访问提供程序,对吗?

这意味着我需要在客户端再次提供它。我可以做到这一点,例如通过将其设置为

navigator.language
或从
window.path
解析它 - 但在客户端和服务器上这样做感觉很脏,这真的是正确的方法吗?这里的最佳做法是什么?

angular internationalization server-side-rendering
1个回答
0
投票

启用本地化后,Angular 会自动包含区域设置数据并设置

LOCALE_ID
标记,请参阅 docs。所以你不需要自己设置
LOCALE_ID

© www.soinside.com 2019 - 2024. All rights reserved.