Как сохранить состояние при переключении локали в AOT SPA Angular-i18n?
Я пытаюсь построить многоязычный SPA, используя файлы Angular-i18n, XLIFF и AOT. Я прочитал руководство по Angular, а также, например. Stackru после Angular 5 интернационализации и понимаем, что процесс i18n приведет к отдельным SPA, по одному на язык. Они будут размещены в папках./
Как я могу переключаться между этими SPA, не теряя своего состояния?
- Я знаю языковой стандарт пользователя только после того, как он / она вошел в систему. Я знаю, что есть языковой стандарт на основе браузера, но использование может выбрать языковой стандарт в SPA. Это место, которое имеет значение.
- Что делать, если пользователь обновляет свои настройки и меняет локаль?
В обоих случаях кажется, что мне придется перенаправить пользователя, например, из. 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' или аналогичный, участник увидит другую страницу входа, теперь в другой локали.
Спасибо Саймон