89 lines
1.7 KiB
TypeScript
89 lines
1.7 KiB
TypeScript
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<LanguageCode,ElementType<Element>>();
|
|
|
|
static htmlType( code:LanguageCode ):ElementType<Element>
|
|
{
|
|
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 ];
|
|
}
|
|
} |