-
Notifications
You must be signed in to change notification settings - Fork 432
/
Copy pathculture.ts
69 lines (57 loc) · 2.08 KB
/
culture.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
export class Culture {
static readonly English: string = "en-us"
static readonly EnglishOthers: string = "en-*"
static readonly Chinese: string = "zh-cn"
static readonly Spanish: string = "es-es"
static readonly Portuguese: string = "pt-br"
static readonly French: string = "fr-fr"
static readonly German: string = "de-de"
static readonly Japanese: string = "ja-jp"
static readonly Dutch: string = "nl-nl"
static readonly Italian: string = "it-it"
static readonly supportedCultures: Culture[] = [
new Culture("English", Culture.English),
new Culture("EnglishOthers", Culture.EnglishOthers),
new Culture("Chinese", Culture.Chinese),
new Culture("Spanish", Culture.Spanish),
new Culture("Portuguese", Culture.Portuguese),
new Culture("French", Culture.French),
new Culture("German", Culture.German),
new Culture("Japanese", Culture.Japanese),
new Culture("Dutch", Culture.Dutch),
new Culture("Italian", Culture.Italian)
]
readonly cultureName: string
readonly cultureCode: string
protected constructor(cultureName: string, cultureCode: string) {
this.cultureName = cultureName;
this.cultureCode = cultureCode;
}
static getSupportedCultureCodes(): string[] {
return Culture.supportedCultures.map(c => c.cultureCode);
}
static mapToNearestLanguage(cultureCode: string): string {
if (cultureCode !== undefined) {
cultureCode = cultureCode.toLowerCase();
let supportedCultureCodes = Culture.getSupportedCultureCodes();
if (supportedCultureCodes.indexOf(cultureCode) < 0) {
let culturePrefix = cultureCode.split('-')[0].trim();
supportedCultureCodes.forEach(function (supportedCultureCode) {
if (supportedCultureCode.startsWith(culturePrefix)) {
cultureCode = supportedCultureCode;
}
});
}
}
return cultureCode;
}
}
export class CultureInfo {
readonly code: string;
static getCultureInfo(cultureCode: string): CultureInfo {
return new CultureInfo(cultureCode);
}
constructor(cultureName: string) {
this.code = cultureName;
}
}