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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
// |reftest| skip-if(!this.hasOwnProperty('Intl'))
const tests = {
"en": {
long: {
"de": "German",
"de-AT": "Austrian German",
"de-1996": "German (German orthography of 1996)",
"en": "English",
"en-Hant-GB": "British English (Traditional)",
"en-Hans-US": "American English (Simplified)",
"fr": "French",
"nl-BE": "Flemish",
"cr-Cans": "Cree (Unified Canadian Aboriginal Syllabics)",
},
short: {
"en-Hant-GB": "UK English (Traditional)",
"en-Hans-US": "US English (Simplified)",
"cr-Cans": "Cree (UCAS)",
},
narrow: {},
},
"de": {
long: {
"de": "Deutsch",
"de-AT": "Österreichisches Deutsch",
"de-1996": "Deutsch (Neue deutsche Rechtschreibung)",
"en": "Englisch",
"en-Hant-GB": "Englisch (Traditionell, Vereinigtes Königreich)",
"en-Hans-US": "Englisch (Vereinfacht, Vereinigte Staaten)",
"fr": "Französisch",
"nl-BE": "Flämisch",
},
short: {
"en-Hant-GB": "Englisch (GB) (Traditionell)",
"en-Hans-US": "Englisch (USA) (Vereinfacht)",
},
narrow: {},
},
"fr": {
long: {
"de": "allemand",
"de-AT": "allemand autrichien",
"de-1996": "allemand (orthographe allemande de 1996)",
"en": "anglais",
"en-Hant-GB": "anglais britannique (traditionnel)",
"en-Hans-US": "anglais américain (simplifié)",
"fr": "français",
"nl-BE": "flamand",
},
short: {
"en-Hant-GB": "anglais britannique (traditionnel)",
"en-Hans-US": "anglais américain (simplifié)",
},
narrow: {},
},
"zh": {
long: {
"zh": "中文",
"zh-Hant": "繁体中文",
"zh-Hant-CN": "繁体中文(中国)",
"zh-Hans-HK": "简体中文(中国香港特别行政区)",
},
short: {
"zh-Hans-HK": "简体中文(香港)"
},
narrow: {},
},
"ar": {
long: {
"ar": "العربية",
"ar-SA": "العربية (المملكة العربية السعودية)",
"zh-MO": "الصينية (منطقة ماكاو الإدارية الخاصة)",
},
short: {
"zh-MO": "الصينية (مكاو)",
},
narrow: {},
},
};
for (let [locale, localeTests] of Object.entries(tests)) {
for (let [style, styleTests] of Object.entries(localeTests)) {
let dn = new Intl.DisplayNames(locale, {type: "language", languageDisplay: "dialect", style});
let resolved = dn.resolvedOptions();
assertEq(resolved.locale, locale);
assertEq(resolved.style, style);
assertEq(resolved.type, "language");
assertEq(resolved.languageDisplay, "dialect");
assertEq(resolved.fallback, "code");
let inheritedTests = {...localeTests.long, ...localeTests.short, ...localeTests.narrow};
for (let [language, expected] of Object.entries({...inheritedTests, ...styleTests})) {
assertEq(dn.of(language), expected);
// Also works with objects.
assertEq(dn.of(Object(language)), expected);
}
}
}
if (typeof reportCompare === "function")
reportCompare(true, true);
|