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("/api/language/languages"); if (result) { localizationModelActions.setLanguages(store, result); } } public async getLabels(language: string): Promise { 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);