刷新后Angular 7 ngx-translate不记得该语言了

时间:2019-04-12 08:01:02

标签: javascript angular typescript ngx-translate

我们有一个Angular应用程序,其中有两种语言。默认为德语,另一个为英语。我们将ngx-translate用作translateService

刷新浏览器时,应用程序将切换回默认语言。

在我们的导航栏中调用swithLang()函数:

<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

3 个答案:

答案 0 :(得分:2)

这是正确的行为。您可以使用localStorage(或其他位置)来存储所选的语言。

答案 1 :(得分:0)

角度服务完全存在于内存中。如果要添加持久性,则应在更改语言时将当前值保存到localStorage或将此设置保存到服务器

答案 2 :(得分:0)

您可以使用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());
  }