3

我正在尝试使用 Angular-i18n、XLIFF 文件和 AOT 构建多语言 SPA。我已经阅读了 Angular 指南以及例如。Stackoverflow 发布 Angular 5 国际化 ,并了解 i18n 流程将产生单独的 SPA,每种语言一个。这些将托管在 ./<locale>/ 文件夹下。

如何在不丢失状态的情况下在这些 SPA 之间切换?

  1. 我只知道用户登录后的语言环境。我知道有一个基于浏览器的语言环境,但用户可以在 SPA 中选择一个语言环境。该语言环境是最重要的。
  2. 如果用户更新他/她的设置并更改区域设置怎么办?

在这两种情况下,我似乎都必须从例如重定向用户。myapp/en/index.html 到 myapp/pt/index.html。然而,这不会结转状态,即。在目标站点上,用户很可能不会登录。Angular 是否有此用例的“最佳实践”?

login( event ) {
    event.preventDefault();
    this.loginService.authenticate( this.loginFormGroup.value.username, this.loginFormGroup.value.password )
        .subscribe( result => {
            if ( result === LoginResponse.Success ) {
                // login successful
                this.router.navigate( ['/'] );
            } else if ( result === LoginResponse.NeedsNewPassword ) {
                this.router.navigate( ['/staticdata/changepassword'] );
            } else {
                this.loginFailed = true;
                throw ( new Error( 'Username or password is incorrect' ) );
            }
        },
        err => {
            this.loginFailed = true;
            this.store.dispatch( this.errorActions.setErrorContext( err ) );
        } );
}

如果我将 this.router.navigate( ['/'] ) 更改为 window.location.href = currentPrincipal.locale + '/index.html' 或类似的,主体将看到另一个登录页面,现在位于不同的语言环境中。

谢谢西蒙

4

0 回答 0