Archived
Private
Public Access
1
0

Fixed minor issues + added language support

This commit is contained in:
2023-03-25 18:36:19 +01:00
parent 4422d8818a
commit 6dfb5a4b48
23 changed files with 334 additions and 83 deletions

View File

@@ -0,0 +1,41 @@
import { Injectable } from '@angular/core';
import {Language} from "../entities/language";
import {CrudService} from "./crud.service";
import {firstValueFrom} from "rxjs";
import {StorageService} from "./storage.service";
@Injectable({
providedIn: 'root'
})
export class LangService {
private languages: Map<string, Language> = new Map<string, Language>();
public allLanguages: string[] = [];
public currentLang: Language;
constructor(private crud: CrudService, private storage: StorageService) {
this.loadLanguages();
}
private async loadLanguages() {
this.languages = new Map<string, Language>();
const res = await firstValueFrom(this.crud.client.get<{files: string[]}>(location?.origin + "/lang"));
const languages = res.files;
this.allLanguages = languages.map(lang => lang.replace(".json", ""));
const tasks = [];
for (let lang of languages) {
const task = firstValueFrom(this.crud.client.get<Language>(location?.origin + "/assets/languages/" + lang))
.then(result => this.languages.set(lang.replace(".json", ""), result));
tasks.push(task);
}
await Promise.all(tasks);
this.currentLang = this.languages.get(this.storage.getItem("language") || "en-US");
}
public setLanguage(lang: string) {
this.currentLang = this.languages.get(lang);
this.storage.setItem("language", lang);
}
}