Angular 7 ngx-translate 刷新后不记得语言
Angular 7 ngx-translate doesn't remember the language after refresh
我们有一个 Angular 应用程序,它有两种语言。默认是德语,另一个是英语。我们使用 ngx-translate
作为 translateService
。
当您刷新浏览器时,应用程序会切换回默认语言。
switchLang()
函数在我们的导航栏中被调用:
<li class="nav-item">
<a class="nav-link" id="switchLang" (click)="switchLang()">
<span>
<i class="fa fa-globe" aria-hidden="true"></i>
<span>{{'switch-lang' | translate}}</span>
</span>
</a>
</li>
component.ts:
switchLang() {
this.languageService.switchLanguage();
}
和语言服务:
import { Injectable } from '@angular/core';
import {TranslateService} from '@ngx-translate/core';
@Injectable({ providedIn: 'root' })
export class LanguageService {
private language = 'de';
constructor(private translateService: TranslateService) { }
getCurrentLanguage() {
return this.language;
}
getLocale() {
if (this.language === 'en') {
return 'en_US';
} else {
return 'de_DE';
}
}
switchLanguage() {
if (this.language === 'en') {
this.language = 'de';
} else {
this.language = 'en';
}
this.translateService.use(this.language);
}
}
translateService
是 ngx-translate.
这是正确的行为。您可以使用localStorage(或其他地方)来存储选择的语言。
Angular 服务完全存在于内存中。如果你想添加持久性,你应该在语言更改时将当前值保存到 localStorage 或将此设置保存到服务器
您可以使用localStorage将值存储在设备内存中,以下是示例
// function select language
selectLanguage(i: number) {
this.lag = this.languages[i];
this.translateService.use(this.languages[i].title.toLowerCase());
localStorage.setItem("language",this.languages[i].title.toLowerCase());
}
我们有一个 Angular 应用程序,它有两种语言。默认是德语,另一个是英语。我们使用 ngx-translate
作为 translateService
。
当您刷新浏览器时,应用程序会切换回默认语言。
switchLang()
函数在我们的导航栏中被调用:
<li class="nav-item">
<a class="nav-link" id="switchLang" (click)="switchLang()">
<span>
<i class="fa fa-globe" aria-hidden="true"></i>
<span>{{'switch-lang' | translate}}</span>
</span>
</a>
</li>
component.ts:
switchLang() {
this.languageService.switchLanguage();
}
和语言服务:
import { Injectable } from '@angular/core';
import {TranslateService} from '@ngx-translate/core';
@Injectable({ providedIn: 'root' })
export class LanguageService {
private language = 'de';
constructor(private translateService: TranslateService) { }
getCurrentLanguage() {
return this.language;
}
getLocale() {
if (this.language === 'en') {
return 'en_US';
} else {
return 'de_DE';
}
}
switchLanguage() {
if (this.language === 'en') {
this.language = 'de';
} else {
this.language = 'en';
}
this.translateService.use(this.language);
}
}
translateService
是 ngx-translate.
这是正确的行为。您可以使用localStorage(或其他地方)来存储选择的语言。
Angular 服务完全存在于内存中。如果你想添加持久性,你应该在语言更改时将当前值保存到 localStorage 或将此设置保存到服务器
您可以使用localStorage将值存储在设备内存中,以下是示例
// function select language
selectLanguage(i: number) {
this.lag = this.languages[i];
this.translateService.use(this.languages[i].title.toLowerCase());
localStorage.setItem("language",this.languages[i].title.toLowerCase());
}