@formatjs/intl-getcanonicallocales 1.2.1 → 1.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/dist/canonicalizer.d.ts +1 -1
- package/dist/canonicalizer.d.ts.map +1 -1
- package/dist/canonicalizer.js +120 -29
- package/dist/canonicalizer.js.map +1 -1
- package/dist/polyfill.js +16 -2
- package/dist/polyfill.js.map +1 -1
- package/dist/umd/intl-locale.js +119 -29
- package/dist/umd/intl-locale.js.map +1 -1
- package/dist/umd/intl-locale.min.js +1 -1
- package/dist/umd/intl-locale.min.js.map +1 -1
- package/dist/umd/polyfill.js +134 -30
- package/dist/umd/polyfill.js.map +1 -1
- package/dist-es6/canonicalizer.d.ts +1 -1
- package/dist-es6/canonicalizer.d.ts.map +1 -1
- package/dist-es6/canonicalizer.js +111 -29
- package/dist-es6/canonicalizer.js.map +1 -1
- package/dist-es6/polyfill.js +16 -2
- package/dist-es6/polyfill.js.map +1 -1
- package/lib/canonicalizer.d.ts +1 -1
- package/lib/canonicalizer.d.ts.map +1 -1
- package/lib/canonicalizer.js +120 -29
- package/lib/canonicalizer.js.map +1 -1
- package/lib/polyfill.js +16 -2
- package/lib/polyfill.js.map +1 -1
- package/package.json +6 -10
- package/src/canonicalizer.ts +145 -29
- package/src/polyfill.ts +19 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { languageAlias, variantAlias, scriptAlias, territoryAlias, } from './aliases';
|
|
2
2
|
import { parseUnicodeLanguageId, isUnicodeVariantSubtag, isUnicodeLanguageSubtag, SEPARATOR, } from './parser';
|
|
3
3
|
import * as likelySubtags from 'cldr-core/supplemental/likelySubtags.json';
|
|
4
|
+
import { emitUnicodeLanguageId } from './emitter';
|
|
4
5
|
function canonicalizeAttrs(strs) {
|
|
5
6
|
return Object.keys(strs.reduce((all, str) => {
|
|
6
7
|
all[str.toLowerCase()] = 1;
|
|
@@ -30,6 +31,15 @@ function compareKV(t1, t2) {
|
|
|
30
31
|
function compareExtension(e1, e2) {
|
|
31
32
|
return e1.type < e2.type ? -1 : e1.type > e2.type ? 1 : 0;
|
|
32
33
|
}
|
|
34
|
+
function mergeVariants(v1, v2) {
|
|
35
|
+
const result = [...v1];
|
|
36
|
+
for (const v of v2) {
|
|
37
|
+
if (v1.indexOf(v) < 0) {
|
|
38
|
+
result.push(v);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
33
43
|
/**
|
|
34
44
|
* CAVEAT: We don't do this section in the spec bc they have no JSON data
|
|
35
45
|
* Use the bcp47 data to replace keys, types, tfields, and tvalues by their canonical forms. See Section 3.6.4 U Extension Data Files) and Section 3.7.1 T Extension Data Files. The aliases are in the alias attribute value, while the canonical is in the name attribute value. For example,
|
|
@@ -39,29 +49,98 @@ We get the following transformation:
|
|
|
39
49
|
en-u-ms-imperial ⇒ en-u-ms-uksystem
|
|
40
50
|
* @param lang
|
|
41
51
|
*/
|
|
42
|
-
export function canonicalizeUnicodeLanguageId(
|
|
52
|
+
export function canonicalizeUnicodeLanguageId(unicodeLanguageId) {
|
|
43
53
|
/**
|
|
44
|
-
* If the language subtag matches the type attribute of a languageAlias element in Supplemental Data,
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* - Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
|
|
54
|
+
* If the language subtag matches the type attribute of a languageAlias element in Supplemental Data, replace the language subtag with the replacement value.
|
|
55
|
+
* 1. If there are additional subtags in the replacement value, add them to the result, but only if there is no corresponding subtag already in the tag.
|
|
56
|
+
* 2. Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
|
|
48
57
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
58
|
+
// From https://github.com/unicode-org/icu/blob/master/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java#L1246
|
|
59
|
+
// Try language _ variant
|
|
60
|
+
let finalLangAst = unicodeLanguageId;
|
|
61
|
+
if (unicodeLanguageId.variants.length) {
|
|
62
|
+
let replacedLang = '';
|
|
63
|
+
for (const variant of unicodeLanguageId.variants) {
|
|
64
|
+
if ((replacedLang =
|
|
65
|
+
languageAlias[emitUnicodeLanguageId({
|
|
66
|
+
lang: unicodeLanguageId.lang,
|
|
67
|
+
variants: [variant],
|
|
68
|
+
})])) {
|
|
69
|
+
const replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
|
|
70
|
+
finalLangAst = {
|
|
71
|
+
lang: replacedLangAst.lang,
|
|
72
|
+
script: finalLangAst.script || replacedLangAst.script,
|
|
73
|
+
region: finalLangAst.region || replacedLangAst.region,
|
|
74
|
+
variants: mergeVariants(finalLangAst.variants, replacedLangAst.variants),
|
|
75
|
+
};
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// language _ script _ country
|
|
81
|
+
// ug-Arab-CN -> ug-CN
|
|
82
|
+
if (finalLangAst.script && finalLangAst.region) {
|
|
83
|
+
const replacedLang = languageAlias[emitUnicodeLanguageId({
|
|
84
|
+
lang: finalLangAst.lang,
|
|
85
|
+
script: finalLangAst.script,
|
|
86
|
+
region: finalLangAst.region,
|
|
87
|
+
variants: [],
|
|
88
|
+
})];
|
|
89
|
+
if (replacedLang) {
|
|
90
|
+
const replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
|
|
91
|
+
finalLangAst = {
|
|
92
|
+
lang: replacedLangAst.lang,
|
|
93
|
+
script: replacedLangAst.script,
|
|
94
|
+
region: replacedLangAst.region,
|
|
95
|
+
variants: finalLangAst.variants,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// language _ country
|
|
100
|
+
// eg. az_AZ -> az_Latn_A
|
|
101
|
+
if (finalLangAst.region) {
|
|
102
|
+
const replacedLang = languageAlias[emitUnicodeLanguageId({
|
|
103
|
+
lang: finalLangAst.lang,
|
|
104
|
+
region: finalLangAst.region,
|
|
105
|
+
variants: [],
|
|
106
|
+
})];
|
|
107
|
+
if (replacedLang) {
|
|
108
|
+
const replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
|
|
109
|
+
finalLangAst = {
|
|
110
|
+
lang: replacedLangAst.lang,
|
|
111
|
+
script: finalLangAst.script || replacedLangAst.script,
|
|
112
|
+
region: replacedLangAst.region,
|
|
113
|
+
variants: finalLangAst.variants,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// only language
|
|
118
|
+
// e.g. twi -> ak
|
|
119
|
+
const replacedLang = languageAlias[emitUnicodeLanguageId({
|
|
120
|
+
lang: finalLangAst.lang,
|
|
121
|
+
variants: [],
|
|
122
|
+
})];
|
|
123
|
+
if (replacedLang) {
|
|
124
|
+
const replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
|
|
125
|
+
finalLangAst = {
|
|
126
|
+
lang: replacedLangAst.lang,
|
|
127
|
+
script: finalLangAst.script || replacedLangAst.script,
|
|
128
|
+
region: finalLangAst.region || replacedLangAst.region,
|
|
129
|
+
variants: finalLangAst.variants,
|
|
130
|
+
};
|
|
56
131
|
}
|
|
57
|
-
if (
|
|
58
|
-
const region =
|
|
132
|
+
if (finalLangAst.region) {
|
|
133
|
+
const region = finalLangAst.region.toUpperCase();
|
|
59
134
|
const regionAlias = territoryAlias[region];
|
|
60
135
|
let replacedRegion;
|
|
61
136
|
if (regionAlias) {
|
|
62
137
|
const regions = regionAlias.split(' ');
|
|
63
138
|
replacedRegion = regions[0];
|
|
64
|
-
const likelySubtag = likelySubtags.supplemental.likelySubtags[
|
|
139
|
+
const likelySubtag = likelySubtags.supplemental.likelySubtags[emitUnicodeLanguageId({
|
|
140
|
+
lang: finalLangAst.lang,
|
|
141
|
+
script: finalLangAst.script,
|
|
142
|
+
variants: [],
|
|
143
|
+
})];
|
|
65
144
|
if (likelySubtag) {
|
|
66
145
|
const { region: likelyRegion } = parseUnicodeLanguageId(likelySubtag.split(SEPARATOR));
|
|
67
146
|
if (likelyRegion && regions.indexOf(likelyRegion) > -1) {
|
|
@@ -70,32 +149,35 @@ export function canonicalizeUnicodeLanguageId(lang) {
|
|
|
70
149
|
}
|
|
71
150
|
}
|
|
72
151
|
if (replacedRegion) {
|
|
73
|
-
|
|
152
|
+
finalLangAst.region = replacedRegion;
|
|
74
153
|
}
|
|
154
|
+
finalLangAst.region = finalLangAst.region.toUpperCase();
|
|
75
155
|
}
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
156
|
+
if (finalLangAst.script) {
|
|
157
|
+
finalLangAst.script =
|
|
158
|
+
finalLangAst.script[0].toUpperCase() +
|
|
159
|
+
finalLangAst.script.slice(1).toLowerCase();
|
|
160
|
+
if (scriptAlias[finalLangAst.script]) {
|
|
161
|
+
finalLangAst.script = scriptAlias[finalLangAst.script];
|
|
81
162
|
}
|
|
82
163
|
}
|
|
83
|
-
if (
|
|
84
|
-
for (let i = 0; i <
|
|
85
|
-
let variant =
|
|
164
|
+
if (finalLangAst.variants.length) {
|
|
165
|
+
for (let i = 0; i < finalLangAst.variants.length; i++) {
|
|
166
|
+
let variant = finalLangAst.variants[i].toLowerCase();
|
|
86
167
|
if (variantAlias[variant]) {
|
|
87
168
|
const alias = variantAlias[variant];
|
|
88
169
|
if (isUnicodeVariantSubtag(alias)) {
|
|
89
|
-
|
|
170
|
+
finalLangAst.variants[i] = alias;
|
|
90
171
|
}
|
|
91
172
|
else if (isUnicodeLanguageSubtag(alias)) {
|
|
92
173
|
// Yes this can happen per the spec
|
|
93
|
-
|
|
174
|
+
finalLangAst.lang = alias;
|
|
94
175
|
}
|
|
95
176
|
}
|
|
96
177
|
}
|
|
97
|
-
|
|
178
|
+
finalLangAst.variants.sort();
|
|
98
179
|
}
|
|
180
|
+
return finalLangAst;
|
|
99
181
|
}
|
|
100
182
|
/**
|
|
101
183
|
* Canonicalize based on
|
|
@@ -105,7 +187,7 @@ export function canonicalizeUnicodeLanguageId(lang) {
|
|
|
105
187
|
* @param locale
|
|
106
188
|
*/
|
|
107
189
|
export function canonicalizeUnicodeLocaleId(locale) {
|
|
108
|
-
canonicalizeUnicodeLanguageId(locale.lang);
|
|
190
|
+
locale.lang = canonicalizeUnicodeLanguageId(locale.lang);
|
|
109
191
|
if (locale.extensions) {
|
|
110
192
|
for (const extension of locale.extensions) {
|
|
111
193
|
switch (extension.type) {
|
|
@@ -117,7 +199,7 @@ export function canonicalizeUnicodeLocaleId(locale) {
|
|
|
117
199
|
break;
|
|
118
200
|
case 't':
|
|
119
201
|
if (extension.lang) {
|
|
120
|
-
canonicalizeUnicodeLanguageId(extension.lang);
|
|
202
|
+
extension.lang = canonicalizeUnicodeLanguageId(extension.lang);
|
|
121
203
|
}
|
|
122
204
|
extension.fields = canonicalizeKVs(extension.fields);
|
|
123
205
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonicalizer.js","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,aAAa,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"canonicalizer.js","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"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"}
|
package/dist-es6/polyfill.js
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
import { getCanonicalLocales } from '
|
|
2
|
-
if (
|
|
1
|
+
import { getCanonicalLocales } from '.';
|
|
2
|
+
if (typeof Intl === 'undefined') {
|
|
3
|
+
if (typeof window !== 'undefined') {
|
|
4
|
+
Object.defineProperty(window, 'Intl', {
|
|
5
|
+
value: {},
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
else if (typeof global !== 'undefined') {
|
|
9
|
+
Object.defineProperty(global, 'Intl', {
|
|
10
|
+
value: {},
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (!('getCanonicalLocales' in Intl) ||
|
|
15
|
+
// Native Intl.getCanonicalLocales is just buggy
|
|
16
|
+
Intl.getCanonicalLocales('und-x-private')[0] === 'x-private') {
|
|
3
17
|
Object.defineProperty(Intl, 'getCanonicalLocales', {
|
|
4
18
|
value: getCanonicalLocales,
|
|
5
19
|
writable: true,
|
package/dist-es6/polyfill.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,GAAG,CAAC;AACtC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;YACpC,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;KACJ;SAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACxC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;YACpC,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;KACJ;CACF;AACD,IACE,CAAC,CAAC,qBAAqB,IAAI,IAAI,CAAC;IAChC,gDAAgD;IAC9C,IAAY,CAAC,mBAAkD,CAC/D,eAAe,CAChB,CAAC,CAAC,CAAC,KAAK,WAAW,EACpB;IACA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;QACjD,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;CACJ"}
|
package/lib/canonicalizer.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ We get the following transformation:
|
|
|
8
8
|
en-u-ms-imperial ⇒ en-u-ms-uksystem
|
|
9
9
|
* @param lang
|
|
10
10
|
*/
|
|
11
|
-
export declare function canonicalizeUnicodeLanguageId(
|
|
11
|
+
export declare function canonicalizeUnicodeLanguageId(unicodeLanguageId: UnicodeLanguageId): UnicodeLanguageId;
|
|
12
12
|
/**
|
|
13
13
|
* Canonicalize based on
|
|
14
14
|
* https://www.unicode.org/reports/tr35/tr35.html#Canonical_Unicode_Locale_Identifiers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonicalizer.d.ts","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAiB,iBAAiB,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"canonicalizer.d.ts","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAiB,iBAAiB,EAAC,MAAM,SAAS,CAAC;AA4D1E;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,iBAAiB,EAAE,iBAAiB,GACnC,iBAAiB,CAmKnB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,GACtB,eAAe,CA0BjB"}
|
package/lib/canonicalizer.js
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
2
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
3
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
4
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
5
|
+
r[k] = a[j];
|
|
6
|
+
return r;
|
|
7
|
+
};
|
|
1
8
|
import { languageAlias, variantAlias, scriptAlias, territoryAlias, } from './aliases';
|
|
2
9
|
import { parseUnicodeLanguageId, isUnicodeVariantSubtag, isUnicodeLanguageSubtag, SEPARATOR, } from './parser';
|
|
3
10
|
import * as likelySubtags from 'cldr-core/supplemental/likelySubtags.json';
|
|
11
|
+
import { emitUnicodeLanguageId } from './emitter';
|
|
4
12
|
function canonicalizeAttrs(strs) {
|
|
5
13
|
return Object.keys(strs.reduce(function (all, str) {
|
|
6
14
|
all[str.toLowerCase()] = 1;
|
|
@@ -31,6 +39,16 @@ function compareKV(t1, t2) {
|
|
|
31
39
|
function compareExtension(e1, e2) {
|
|
32
40
|
return e1.type < e2.type ? -1 : e1.type > e2.type ? 1 : 0;
|
|
33
41
|
}
|
|
42
|
+
function mergeVariants(v1, v2) {
|
|
43
|
+
var result = __spreadArrays(v1);
|
|
44
|
+
for (var _i = 0, v2_1 = v2; _i < v2_1.length; _i++) {
|
|
45
|
+
var v = v2_1[_i];
|
|
46
|
+
if (v1.indexOf(v) < 0) {
|
|
47
|
+
result.push(v);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
34
52
|
/**
|
|
35
53
|
* CAVEAT: We don't do this section in the spec bc they have no JSON data
|
|
36
54
|
* Use the bcp47 data to replace keys, types, tfields, and tvalues by their canonical forms. See Section 3.6.4 U Extension Data Files) and Section 3.7.1 T Extension Data Files. The aliases are in the alias attribute value, while the canonical is in the name attribute value. For example,
|
|
@@ -40,29 +58,99 @@ We get the following transformation:
|
|
|
40
58
|
en-u-ms-imperial ⇒ en-u-ms-uksystem
|
|
41
59
|
* @param lang
|
|
42
60
|
*/
|
|
43
|
-
export function canonicalizeUnicodeLanguageId(
|
|
61
|
+
export function canonicalizeUnicodeLanguageId(unicodeLanguageId) {
|
|
44
62
|
/**
|
|
45
|
-
* If the language subtag matches the type attribute of a languageAlias element in Supplemental Data,
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* - Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
|
|
63
|
+
* If the language subtag matches the type attribute of a languageAlias element in Supplemental Data, replace the language subtag with the replacement value.
|
|
64
|
+
* 1. If there are additional subtags in the replacement value, add them to the result, but only if there is no corresponding subtag already in the tag.
|
|
65
|
+
* 2. Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
|
|
49
66
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
67
|
+
// From https://github.com/unicode-org/icu/blob/master/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java#L1246
|
|
68
|
+
// Try language _ variant
|
|
69
|
+
var finalLangAst = unicodeLanguageId;
|
|
70
|
+
if (unicodeLanguageId.variants.length) {
|
|
71
|
+
var replacedLang_1 = '';
|
|
72
|
+
for (var _i = 0, _a = unicodeLanguageId.variants; _i < _a.length; _i++) {
|
|
73
|
+
var variant = _a[_i];
|
|
74
|
+
if ((replacedLang_1 =
|
|
75
|
+
languageAlias[emitUnicodeLanguageId({
|
|
76
|
+
lang: unicodeLanguageId.lang,
|
|
77
|
+
variants: [variant],
|
|
78
|
+
})])) {
|
|
79
|
+
var replacedLangAst = parseUnicodeLanguageId(replacedLang_1.split(SEPARATOR));
|
|
80
|
+
finalLangAst = {
|
|
81
|
+
lang: replacedLangAst.lang,
|
|
82
|
+
script: finalLangAst.script || replacedLangAst.script,
|
|
83
|
+
region: finalLangAst.region || replacedLangAst.region,
|
|
84
|
+
variants: mergeVariants(finalLangAst.variants, replacedLangAst.variants),
|
|
85
|
+
};
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// language _ script _ country
|
|
91
|
+
// ug-Arab-CN -> ug-CN
|
|
92
|
+
if (finalLangAst.script && finalLangAst.region) {
|
|
93
|
+
var replacedLang_2 = languageAlias[emitUnicodeLanguageId({
|
|
94
|
+
lang: finalLangAst.lang,
|
|
95
|
+
script: finalLangAst.script,
|
|
96
|
+
region: finalLangAst.region,
|
|
97
|
+
variants: [],
|
|
98
|
+
})];
|
|
99
|
+
if (replacedLang_2) {
|
|
100
|
+
var replacedLangAst = parseUnicodeLanguageId(replacedLang_2.split(SEPARATOR));
|
|
101
|
+
finalLangAst = {
|
|
102
|
+
lang: replacedLangAst.lang,
|
|
103
|
+
script: replacedLangAst.script,
|
|
104
|
+
region: replacedLangAst.region,
|
|
105
|
+
variants: finalLangAst.variants,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// language _ country
|
|
110
|
+
// eg. az_AZ -> az_Latn_A
|
|
111
|
+
if (finalLangAst.region) {
|
|
112
|
+
var replacedLang_3 = languageAlias[emitUnicodeLanguageId({
|
|
113
|
+
lang: finalLangAst.lang,
|
|
114
|
+
region: finalLangAst.region,
|
|
115
|
+
variants: [],
|
|
116
|
+
})];
|
|
117
|
+
if (replacedLang_3) {
|
|
118
|
+
var replacedLangAst = parseUnicodeLanguageId(replacedLang_3.split(SEPARATOR));
|
|
119
|
+
finalLangAst = {
|
|
120
|
+
lang: replacedLangAst.lang,
|
|
121
|
+
script: finalLangAst.script || replacedLangAst.script,
|
|
122
|
+
region: replacedLangAst.region,
|
|
123
|
+
variants: finalLangAst.variants,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// only language
|
|
128
|
+
// e.g. twi -> ak
|
|
129
|
+
var replacedLang = languageAlias[emitUnicodeLanguageId({
|
|
130
|
+
lang: finalLangAst.lang,
|
|
131
|
+
variants: [],
|
|
132
|
+
})];
|
|
133
|
+
if (replacedLang) {
|
|
134
|
+
var replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
|
|
135
|
+
finalLangAst = {
|
|
136
|
+
lang: replacedLangAst.lang,
|
|
137
|
+
script: finalLangAst.script || replacedLangAst.script,
|
|
138
|
+
region: finalLangAst.region || replacedLangAst.region,
|
|
139
|
+
variants: finalLangAst.variants,
|
|
140
|
+
};
|
|
57
141
|
}
|
|
58
|
-
if (
|
|
59
|
-
var region =
|
|
142
|
+
if (finalLangAst.region) {
|
|
143
|
+
var region = finalLangAst.region.toUpperCase();
|
|
60
144
|
var regionAlias = territoryAlias[region];
|
|
61
145
|
var replacedRegion = void 0;
|
|
62
146
|
if (regionAlias) {
|
|
63
147
|
var regions = regionAlias.split(' ');
|
|
64
148
|
replacedRegion = regions[0];
|
|
65
|
-
var likelySubtag = likelySubtags.supplemental.likelySubtags[
|
|
149
|
+
var likelySubtag = likelySubtags.supplemental.likelySubtags[emitUnicodeLanguageId({
|
|
150
|
+
lang: finalLangAst.lang,
|
|
151
|
+
script: finalLangAst.script,
|
|
152
|
+
variants: [],
|
|
153
|
+
})];
|
|
66
154
|
if (likelySubtag) {
|
|
67
155
|
var likelyRegion = parseUnicodeLanguageId(likelySubtag.split(SEPARATOR)).region;
|
|
68
156
|
if (likelyRegion && regions.indexOf(likelyRegion) > -1) {
|
|
@@ -71,32 +159,35 @@ export function canonicalizeUnicodeLanguageId(lang) {
|
|
|
71
159
|
}
|
|
72
160
|
}
|
|
73
161
|
if (replacedRegion) {
|
|
74
|
-
|
|
162
|
+
finalLangAst.region = replacedRegion;
|
|
75
163
|
}
|
|
164
|
+
finalLangAst.region = finalLangAst.region.toUpperCase();
|
|
76
165
|
}
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
166
|
+
if (finalLangAst.script) {
|
|
167
|
+
finalLangAst.script =
|
|
168
|
+
finalLangAst.script[0].toUpperCase() +
|
|
169
|
+
finalLangAst.script.slice(1).toLowerCase();
|
|
170
|
+
if (scriptAlias[finalLangAst.script]) {
|
|
171
|
+
finalLangAst.script = scriptAlias[finalLangAst.script];
|
|
82
172
|
}
|
|
83
173
|
}
|
|
84
|
-
if (
|
|
85
|
-
for (var i = 0; i <
|
|
86
|
-
var variant =
|
|
174
|
+
if (finalLangAst.variants.length) {
|
|
175
|
+
for (var i = 0; i < finalLangAst.variants.length; i++) {
|
|
176
|
+
var variant = finalLangAst.variants[i].toLowerCase();
|
|
87
177
|
if (variantAlias[variant]) {
|
|
88
178
|
var alias = variantAlias[variant];
|
|
89
179
|
if (isUnicodeVariantSubtag(alias)) {
|
|
90
|
-
|
|
180
|
+
finalLangAst.variants[i] = alias;
|
|
91
181
|
}
|
|
92
182
|
else if (isUnicodeLanguageSubtag(alias)) {
|
|
93
183
|
// Yes this can happen per the spec
|
|
94
|
-
|
|
184
|
+
finalLangAst.lang = alias;
|
|
95
185
|
}
|
|
96
186
|
}
|
|
97
187
|
}
|
|
98
|
-
|
|
188
|
+
finalLangAst.variants.sort();
|
|
99
189
|
}
|
|
190
|
+
return finalLangAst;
|
|
100
191
|
}
|
|
101
192
|
/**
|
|
102
193
|
* Canonicalize based on
|
|
@@ -106,7 +197,7 @@ export function canonicalizeUnicodeLanguageId(lang) {
|
|
|
106
197
|
* @param locale
|
|
107
198
|
*/
|
|
108
199
|
export function canonicalizeUnicodeLocaleId(locale) {
|
|
109
|
-
canonicalizeUnicodeLanguageId(locale.lang);
|
|
200
|
+
locale.lang = canonicalizeUnicodeLanguageId(locale.lang);
|
|
110
201
|
if (locale.extensions) {
|
|
111
202
|
for (var _i = 0, _a = locale.extensions; _i < _a.length; _i++) {
|
|
112
203
|
var extension = _a[_i];
|
|
@@ -119,7 +210,7 @@ export function canonicalizeUnicodeLocaleId(locale) {
|
|
|
119
210
|
break;
|
|
120
211
|
case 't':
|
|
121
212
|
if (extension.lang) {
|
|
122
|
-
canonicalizeUnicodeLanguageId(extension.lang);
|
|
213
|
+
extension.lang = canonicalizeUnicodeLanguageId(extension.lang);
|
|
123
214
|
}
|
|
124
215
|
extension.fields = canonicalizeKVs(extension.fields);
|
|
125
216
|
break;
|
package/lib/canonicalizer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonicalizer.js","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,aAAa,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"canonicalizer.js","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"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"}
|
package/lib/polyfill.js
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
import { getCanonicalLocales } from '
|
|
2
|
-
if (
|
|
1
|
+
import { getCanonicalLocales } from '.';
|
|
2
|
+
if (typeof Intl === 'undefined') {
|
|
3
|
+
if (typeof window !== 'undefined') {
|
|
4
|
+
Object.defineProperty(window, 'Intl', {
|
|
5
|
+
value: {},
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
else if (typeof global !== 'undefined') {
|
|
9
|
+
Object.defineProperty(global, 'Intl', {
|
|
10
|
+
value: {},
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (!('getCanonicalLocales' in Intl) ||
|
|
15
|
+
// Native Intl.getCanonicalLocales is just buggy
|
|
16
|
+
Intl.getCanonicalLocales('und-x-private')[0] === 'x-private') {
|
|
3
17
|
Object.defineProperty(Intl, 'getCanonicalLocales', {
|
|
4
18
|
value: getCanonicalLocales,
|
|
5
19
|
writable: true,
|
package/lib/polyfill.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,GAAG,CAAC;AACtC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;YACpC,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;KACJ;SAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACxC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;YACpC,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;KACJ;CACF;AACD,IACE,CAAC,CAAC,qBAAqB,IAAI,IAAI,CAAC;IAChC,gDAAgD;IAC9C,IAAY,CAAC,mBAAkD,CAC/D,eAAe,CAChB,CAAC,CAAC,CAAC,KAAK,WAAW,EACpB;IACA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;QACjD,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@formatjs/intl-getcanonicallocales",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.6",
|
|
4
4
|
"description": "Intl.getCanonicalLocales polyfill",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"intl",
|
|
@@ -33,25 +33,21 @@
|
|
|
33
33
|
"cldr": "ts-node scripts/aliases --out src/aliases.ts",
|
|
34
34
|
"clean": "rimraf dist lib dist-es6 dist-es6 *.tsbuildinfo",
|
|
35
35
|
"build": "yarn cldr && tsc && tsc -p tsconfig.esm.json && tsc -p tsconfig.es6.json && api-extractor run --local && rollup -c rollup.config.js",
|
|
36
|
-
"jest": "cross-env
|
|
37
|
-
"test262": "cross-env
|
|
36
|
+
"jest": "cross-env NODE_ENV=test jest",
|
|
37
|
+
"test262": "cross-env ts-node tests/runner",
|
|
38
38
|
"test": "yarn jest"
|
|
39
39
|
},
|
|
40
40
|
"bugs": {
|
|
41
41
|
"url": "https://github.com/formatjs/formatjs/issues"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"
|
|
44
|
+
"cldr-core": "36.0.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/jest": "^25.2.1",
|
|
48
48
|
"@types/minimist": "^1.2.0",
|
|
49
|
-
"full-icu": "^1.3.1",
|
|
50
49
|
"jest": "^25.4.0",
|
|
51
|
-
"minimist": "^1.2.5"
|
|
52
|
-
"pegjs": "^0.10.0",
|
|
53
|
-
"ts-jest": "^25.4.0",
|
|
54
|
-
"ts-pegjs": "^0.2.6"
|
|
50
|
+
"minimist": "^1.2.5"
|
|
55
51
|
},
|
|
56
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "5544cdeb375df64f353a9b3efde55e28fa5616a6"
|
|
57
53
|
}
|