Skip to content

Commit 8b4f1a3

Browse files
danielkaradachkitsvetomir
authored andcommitted
fix: locale territory with script or variant in the name
1 parent cbd3fbc commit 8b4f1a3

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

src/cldr/territory.js

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,48 @@ function territoryFromName(name) {
1010
}
1111
}
1212

13+
function territoryFromName(name, identity) {
14+
const likelySubtags = cldr.supplemental.likelySubtags;
15+
let parts = name.split("-");
16+
if (likelySubtags) {
17+
const likelyName = likelySubtags[name] || likelySubtags[parts[0]];
18+
if (likelyName) {
19+
parts = likelyName.split("-");
20+
}
21+
}
22+
23+
if (identity) {
24+
for (let idx = parts.length - 1; idx >= 1; idx--) {
25+
const part = parts[idx];
26+
if (part === identity.variant || part === identity.script) {
27+
parts.splice(idx, 1);
28+
}
29+
}
30+
}
31+
32+
const length = parts.length;
33+
34+
if (length > 1) {
35+
const territory = parts[length - 1];
36+
return territory.toUpperCase();
37+
}
38+
}
39+
1340
export default function localeTerritory(info) {
1441
if (info.territory) {
1542
return info.territory;
1643
}
1744

18-
const likelySubtags = cldr.supplemental.likelySubtags;
1945
const name = info.name;
46+
const identity = info.identity;
2047
let territory;
2148

22-
if (info.identity && info.identity.territory) {
23-
territory = info.identity.territory;
24-
} else if (likelySubtags && likelySubtags[name]) {
25-
territory = territoryFromName(likelySubtags[name]);
49+
if (identity && identity.territory) {
50+
territory = identity.territory;
2651
} else {
27-
territory = territoryFromName(name);
52+
territory = territoryFromName(name, identity);
2853
}
54+
2955
info.territory = territory;
3056

3157
return territory;

0 commit comments

Comments
 (0)