【发布时间】:2020-07-31 19:45:31
【问题描述】:
我们有一个需要身份验证的 Angular 应用程序。这是使用 OpenID Connect 和 IdentityServer4 身份验证服务器完成的。
现在我们要添加其他语言。要使用的语言存储在我们可以从我们的身份验证服务器获取的用户配置文件中。
问题:Angular 为每种语言构建了一个应用程序,因此我需要在加载应用程序之前了解该语言,但在应用程序启动期间完成了身份验证,并且我之前不知道用户的语言。
是否有任何通用方法/最佳实践来设置具有多种语言和 Open ID Connect 的 Angular 应用程序?
我知道一种选择是使用 ngx-translate,但它已被弃用,我更愿意继续使用 Angular 工具。我还看到,当前的 Angular 版本支持运行时翻译,但它似乎仍是 beta 版本,尚未正式发布。出于性能原因,我更喜欢“编译时本地化”方法 - 但我根本找不到任何方法来完成这项工作......
设置详情:
- Angular 10 支持 nginx kubernetes 入口
- 以 IdentityServer4 作为 oidc 服务器的 Asp.NET 核心应用程序
【问题讨论】:
-
您可以创建一个微应用程序,该应用程序将授权然后重定向到所需应用程序的 url。此外,您可以直接从您的应用重定向到相应的 URL。附:我发现 angular i18n 工具不足,因为它们的“静态”策略和无法在
.ts文件中进行翻译,所以我更喜欢使用ngx-translate -
@Sergey - 感谢您的评论。 ngx-translate 的问题在于它已被某种弃用(github.com/ngx-translate/core/issues/783)。角度工具现在支持 .ts 文件中的翻译 - 剩下的唯一问题是它需要在引导之前使用当前语言环境,也就是说,在可以创建 OIDC 身份验证客户端并获取用户声明之前。
-
我看过这个话题。但尽管如此,它仍然会收到更新。此外,感谢 Angular 团队,没有太多可破坏的更改,所以我相信它在未来的许多版本中都可以使用。更重要的是 - 它是开源的,因此您可以制作此软件包的副本并继续进行小的更新以使其适合自己
标签: angular identityserver4 angular-i18n