import { ElementType } from "../dom/ElementType"; export type de = "de"; export type en = "en"; export type es = "es"; export type fr = "fr"; export type it = "it"; export type ja = "ja"; export type pt = "pt"; export type ru = "ru"; export type zh = "zh"; export type LanguageCode = de | en | es | fr | it | ja | pt | ru | zh ; export class LanguageCodes { static #current:LanguageCode = "en"; static get current(){ return this.#current; } static setCurrent( lc:LanguageCode ) { this.#current = lc; } static fallback:LanguageCode = "en"; static readonly de:de = "de"; static readonly en:en = "en"; static readonly es:es = "es"; static readonly fr:fr = "fr"; static readonly it:it = "it"; static readonly ja:ja = "ja"; static readonly pt:pt = "pt"; static readonly ru:ru = "ru"; static readonly zh:zh = "zh"; static #htmlTypes = new Map>(); static htmlType( code:LanguageCode ):ElementType { if ( this.#htmlTypes.has( code ) ) { return this.#htmlTypes.get( code ); } this.#htmlTypes.set( code, new ElementType( "lang--" + code ) ); return this.#htmlTypes.get( code ); } static get all() { let list = [ LanguageCodes.de, LanguageCodes.en, LanguageCodes.es, LanguageCodes.fr, LanguageCodes.it, LanguageCodes.ja, LanguageCodes.pt, LanguageCodes.ru, LanguageCodes.zh ]; return list; } static stringToLanguageCode( value:string ) { value = value.toLowerCase(); let index = LanguageCodes.all.indexOf( value as LanguageCode ); return index === -1 ? null : LanguageCodes.all[ index ]; } }