100 lines
2.4 KiB
TypeScript
100 lines
2.4 KiB
TypeScript
![]() |
|
||
|
import { ElementType } from "../dom/ElementType";
|
||
|
import { LanguageCode, LanguageCodes } from "./LanguageCode";
|
||
|
|
||
|
export class MultiString
|
||
|
{
|
||
|
en:string;
|
||
|
de?:string;
|
||
|
fr?:string;
|
||
|
es?:string;
|
||
|
pt?:string;
|
||
|
it?:string;
|
||
|
ru?:string;
|
||
|
ja?:string;
|
||
|
zh?:string;
|
||
|
|
||
|
|
||
|
static _htmlType:ElementType<any>;
|
||
|
|
||
|
static create( value:string )
|
||
|
{
|
||
|
let ms = new MultiString();
|
||
|
ms.en = value;
|
||
|
return ms;
|
||
|
}
|
||
|
|
||
|
static resolve( value:string|MultiString )
|
||
|
{
|
||
|
if ( typeof value === "string" )
|
||
|
{
|
||
|
return value;
|
||
|
}
|
||
|
|
||
|
let ms = value as MultiString;
|
||
|
|
||
|
return MultiString.get( ms, LanguageCodes.current, LanguageCodes.fallback );
|
||
|
}
|
||
|
|
||
|
static get htmlType()
|
||
|
{
|
||
|
if ( MultiString._htmlType )
|
||
|
{
|
||
|
return MultiString._htmlType;
|
||
|
}
|
||
|
|
||
|
MultiString._htmlType = new ElementType( "multi--string" );
|
||
|
|
||
|
return MultiString._htmlType;
|
||
|
}
|
||
|
|
||
|
static asArray( ms:MultiString)
|
||
|
{
|
||
|
return [ ms.en, ms.de, ms.fr, ms.es, ms.pt, ms.it, ms.ru, ms.ja, ms.zh ];
|
||
|
}
|
||
|
|
||
|
static get( ms:MultiString, code:LanguageCode, fallback:LanguageCode = LanguageCodes.en )
|
||
|
{
|
||
|
//console.log( "get > ms", ms );
|
||
|
let value = MultiString.fromCode( ms, code );
|
||
|
|
||
|
if ( value )
|
||
|
{
|
||
|
return value;
|
||
|
}
|
||
|
|
||
|
return MultiString.fromCode( ms, fallback );
|
||
|
}
|
||
|
|
||
|
static set( ms:MultiString, code:LanguageCode, value:string )
|
||
|
{
|
||
|
switch ( code )
|
||
|
{
|
||
|
case LanguageCodes.en: { ms.en = value; } break;
|
||
|
case LanguageCodes.de: { ms.de = value; } break;
|
||
|
case LanguageCodes.fr: { ms.fr = value; } break;
|
||
|
case LanguageCodes.es: { ms.es = value; } break;
|
||
|
case LanguageCodes.pt: { ms.pt = value; } break;
|
||
|
case LanguageCodes.it: { ms.it = value; } break;
|
||
|
case LanguageCodes.ru: { ms.ru = value; } break;
|
||
|
case LanguageCodes.ja: { ms.ja = value; } break;
|
||
|
case LanguageCodes.zh: { ms.zh = value; } break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static fromCode( ms:MultiString, code:LanguageCode )
|
||
|
{
|
||
|
switch ( code )
|
||
|
{
|
||
|
case LanguageCodes.en: return ms.en;
|
||
|
case LanguageCodes.de: return ms.de;
|
||
|
case LanguageCodes.fr: return ms.fr;
|
||
|
case LanguageCodes.es: return ms.es;
|
||
|
case LanguageCodes.pt: return ms.pt;
|
||
|
case LanguageCodes.it: return ms.it;
|
||
|
case LanguageCodes.ru: return ms.ru;
|
||
|
case LanguageCodes.ja: return ms.ja;
|
||
|
case LanguageCodes.zh: return ms.zh;
|
||
|
}
|
||
|
}
|
||
|
}
|