在Angular-i18n AOT SPA中切换语言环境时如何保持状态?

时间:2018-04-24 08:10:46

标签: angular angular-i18n

我正在尝试使用Angular-i18n,XLIFF文件和AOT构建多语言SPA。我读过the Angular guide以及例如。 the Stackoverflow post Angular 5 internationalization ,并了解i18n进程将导致单独的SPA,每种语言一个。这些将托管在./<locale>/ folders。

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

  1. 我只知道用户登录后的区域设置。我知道有一个基于浏览器的区域设置,但是使用可以选择SPA中的区域设置。该区域设置是重要的。
  2. 如果用户更新了他/她的设置并更改了区域设置,该怎么办?
  3. 在这两种情况下,似乎我必须重定向用户,例如。 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'或类似内容,则主体将看到另一个登录页面,现在位于不同的区域设置。

    由于 西蒙

0 个答案:

没有答案