簡體   English   中英

Angular ngx-translate 保存選擇的語言

[英]Angular ngx-translate save selected language

我有這樣的問題我使用 ngx-translate 進行翻譯。 當我選擇一種語言時,它會保存在 localStorage 中,但是當我刷新頁面時,它會消失並返回我寫的鍵。 當您轉到另一個頁面並更新它時,同樣的問題會將密鑰返回給我。

這是標題組件代碼,我用它來將所選語言保存到 localStorage 並添加語言。

constructor(public translate: TranslateService) {
translate.addLangs(['kz', 'ru']);
if (localStorage.getItem('locale')) {
 const browserLang = localStorage.getItem('locale');
 translate.use(browserLang.match(/kz|ru/) ? browserLang : 'kz');
} else {
localStorage.setItem('locale', 'kz');
translate.setDefaultLang('kz');}}

changeLang(language: string) {
localStorage.setItem('language', language);
this.translate.use(language);}

而這個 header.html 我將在哪里選擇語言

<select #langSelect (change)="changeLang(langSelect.value)">
          <option *ngFor="let lang of translate.getLangs()" [value]="lang"
                  [selected]="lang === translate.currentLang">{{ lang }}
          </option>
        </select>

這是我如何使用的示例

<div class="tur1 pt-5">
    <h1>{{ 'apply.tur1' | translate }}</h1>
    <p>{{ 'apply.paragraph1' | translate }}</p>
    <h1>{{ 'apply.date1' | translate }}</h1>
</div>

但是有這樣一個時刻,header.html 僅在主頁上使用,而在其他頁面上不使用。 而且當你更新主頁時,翻譯不會消失,但是在另一個頁面上,翻譯會消失並給我一個翻譯鍵

嘗試在模塊中導入翻譯模塊時添加默認語言,如下所示:

imports : [
...
TranslateModule.forChild({
  defaultLanguage: localStorage.getItem('locale') || 'en',
}),
...
]

希望這就是您要查找的內容,它會檢查是否在 localStorage 中找到了名稱為locale的任何鍵,如果不是這種情況,它將默認為kz ,就像您的情況一樣:

<select #langSelect (change)="changeLang(langSelect.value)">
    <option *ngFor="let lang of translate.getLangs()" [value]="lang"
        [selected]="lang === translate.currentLang">{{ lang }}
    </option>
</select>
constructor(public translate: TranslateService) {
    translate.addLangs(['kz', 'ru']);
    if (localStorage.getItem('locale')) {
        translate.setDefaultLang(localStorage.getItem('locale'));
        translate.use(localStorage.getItem('locale'));
    } else {
        translate.setDefaultLang('kz');
        translate.use('kz');
        localStorage.setItem('locale', 'kz');
    }
}

changeLang(language: string) {
    this.translate.use(language)
    this.translate.setDefaultLang(language)
    localStorage.setItem('locale', language)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM