0
我需要使用localstorage在Angular2應用程序中使用ng2-translate存儲所選語言。ng2-translate使用localstorage
我發現這個類,這是應該選擇的語言存儲在localStorage的:
import {TranslateLoader} from "ng2-translate/ng2-translate";
import {Observable} from "rxjs/Observable";
import {Response, Http} from "angular2/http";
export class TranslateLSLoader implements TranslateLoader {
constructor(private http: Http, private prefix: string = 'i18n', private suffix: string = '.json') {}
/**
* Gets the translations from the localStorage and update them with the ones from the server
* @param lang
* @returns {any}
*/
public getTranslation(lang: string): Observable<any> {
return Observable.create(observer => {
let translations = localStorage.getItem('ng2-translate-' + lang);
if(translations) {
observer.next(JSON.parse(translations));
}
this.http.get(`${this.prefix}/${lang}${this.suffix}`)
.map((res: Response) => res.json())
.subscribe((res: any) => {
observer.next(res);
localStorage.setItem('hmx-lang-' + lang, JSON.stringify(res));
observer.complete();
});
});
}
}
因爲它沒有工作,我固定它爲我的版本的angular2這樣:
import {TranslateLoader} from "ng2-translate/ng2-translate";
import {Observable} from "rxjs/Observable";
import {Http, Response} from "@angular/http";
import {Injectable} from "@angular/core";
@Injectable()
export class TranslateLSLoader implements TranslateLoader {
constructor(private http: Http) {}
/**
* Gets the translations from the localStorage and update them with the ones from the server
* @param lang
* @returns {any}
*/
public getTranslation(lang: string): Observable<any> {
return Observable.create(observer => {
let translations = localStorage.getItem('ng2-translate-' + lang);
if(translations) {
observer.next(JSON.parse(translations));
}
this.http.get(`${'i18n'}/${lang}${'.json'}`)
.map((res: Response) => res.json())
.subscribe((res: any) => {
observer.next(res);
localStorage.setItem('hmx-lang-' + lang, JSON.stringify(res));
observer.complete();
});
});
}
}
現在我沒有收到任何錯誤,但它不起作用,當我重新加載頁面時,它會選擇默認語言。
此外,我不得不配置NG2,翻譯模塊中我進口:
TranslateModule.forRoot({
provide: TranslateLoader,
useClass: TranslateLSLoader
})
你知道什麼是錯的代碼?