49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import Vue from "vue";
|
|
import { baseRestService } from "src/_base/baseRestService";
|
|
import { store, languageModel, localizationModelActions, AppModel } from "src/store";
|
|
import Factory from "src/_base/factoryService";
|
|
import { awaiter } from "src/_base";
|
|
|
|
export class LocalizationService extends baseRestService {
|
|
|
|
constructor() {
|
|
super();
|
|
}
|
|
|
|
async init() {
|
|
// preload all avaiable languages
|
|
await awaiter (this.getLanguages());
|
|
|
|
let state = store.state as AppModel;
|
|
|
|
localizationModelActions.changeCurrentLanguage(store, state.localization.currentLanguage);
|
|
}
|
|
|
|
public async changeCurrentLanguage(language){
|
|
localizationModelActions.changeCurrentLanguage(store, language);
|
|
await this.getLabels(language);
|
|
}
|
|
|
|
public async setUserLanguage(language) {
|
|
return await this.put("/api/user/language", { language: language }, true);
|
|
}
|
|
|
|
public async getLanguages() {
|
|
let result = await this.Get<languageModel[]>("/api/language/languages");
|
|
if (result) {
|
|
localizationModelActions.setLanguages(store, result);
|
|
}
|
|
}
|
|
|
|
public async getLabels(language: string): Promise<any> {
|
|
let result = await this.Get<{ [id: string]: string }>("/api/language/" + language);
|
|
localizationModelActions.setLabels(store, result);
|
|
return result;
|
|
}
|
|
}
|
|
|
|
export const localizationService = new LocalizationService();
|
|
Factory.Register(LocalizationService);
|
|
|
|
|