@@ -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+
1340export 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