@formatjs/intl-localematcher 0.4.2 → 0.5.0
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/abstract/BestAvailableLocale.d.ts +1 -1
- package/abstract/BestAvailableLocale.js +1 -1
- package/abstract/BestFitMatcher.d.ts +1 -1
- package/abstract/BestFitMatcher.js +6 -44
- package/abstract/LookupMatcher.d.ts +1 -1
- package/abstract/LookupMatcher.js +1 -1
- package/abstract/LookupSupportedLocales.d.ts +1 -1
- package/abstract/LookupSupportedLocales.js +1 -1
- package/abstract/ResolveLocale.d.ts +1 -1
- package/abstract/ResolveLocale.js +4 -4
- package/abstract/languageMatching.d.ts +7974 -0
- package/abstract/languageMatching.js +2623 -0
- package/abstract/regions.generated.d.ts +1 -0
- package/abstract/regions.generated.js +1337 -0
- package/abstract/utils.d.ts +2 -0
- package/abstract/utils.js +148 -1
- package/index.js +1 -5
- package/lib/abstract/BestAvailableLocale.d.ts +1 -1
- package/lib/abstract/BestAvailableLocale.js +6 -2
- package/lib/abstract/BestFitMatcher.d.ts +1 -1
- package/lib/abstract/BestFitMatcher.js +12 -46
- package/lib/abstract/CanonicalizeLocaleList.js +5 -1
- package/lib/abstract/LookupMatcher.d.ts +1 -1
- package/lib/abstract/LookupMatcher.js +9 -5
- package/lib/abstract/LookupSupportedLocales.d.ts +1 -1
- package/lib/abstract/LookupSupportedLocales.js +9 -5
- package/lib/abstract/ResolveLocale.d.ts +1 -1
- package/lib/abstract/ResolveLocale.js +17 -13
- package/lib/abstract/UnicodeExtensionValue.js +7 -3
- package/lib/abstract/languageMatching.d.ts +7974 -0
- package/lib/abstract/languageMatching.js +2623 -0
- package/lib/abstract/regions.generated.d.ts +1 -0
- package/lib/abstract/regions.generated.js +1337 -0
- package/lib/abstract/types.js +2 -1
- package/lib/abstract/utils.d.ts +2 -0
- package/lib/abstract/utils.js +153 -2
- package/lib/index.js +12 -10
- package/package.json +1 -1
- package/abstract/BestAvailableLocale.d.ts.map +0 -1
- package/abstract/BestFitMatcher.d.ts.map +0 -1
- package/abstract/CanonicalizeLocaleList.d.ts.map +0 -1
- package/abstract/LookupMatcher.d.ts.map +0 -1
- package/abstract/LookupSupportedLocales.d.ts.map +0 -1
- package/abstract/ResolveLocale.d.ts.map +0 -1
- package/abstract/UnicodeExtensionValue.d.ts.map +0 -1
- package/abstract/types.d.ts.map +0 -1
- package/abstract/utils.d.ts.map +0 -1
- package/index.d.ts.map +0 -1
- package/lib/abstract/BestAvailableLocale.d.ts.map +0 -1
- package/lib/abstract/BestFitMatcher.d.ts.map +0 -1
- package/lib/abstract/CanonicalizeLocaleList.d.ts.map +0 -1
- package/lib/abstract/LookupMatcher.d.ts.map +0 -1
- package/lib/abstract/LookupSupportedLocales.d.ts.map +0 -1
- package/lib/abstract/ResolveLocale.d.ts.map +0 -1
- package/lib/abstract/UnicodeExtensionValue.d.ts.map +0 -1
- package/lib/abstract/types.d.ts.map +0 -1
- package/lib/abstract/utils.d.ts.map +0 -1
- package/lib/index.d.ts.map +0 -1
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* @param availableLocales
|
|
4
4
|
* @param locale
|
|
5
5
|
*/
|
|
6
|
-
export declare function BestAvailableLocale(availableLocales:
|
|
6
|
+
export declare function BestAvailableLocale(availableLocales: readonly string[], locale: string): string | undefined;
|
|
@@ -9,7 +9,7 @@ exports.BestAvailableLocale = void 0;
|
|
|
9
9
|
function BestAvailableLocale(availableLocales, locale) {
|
|
10
10
|
var candidate = locale;
|
|
11
11
|
while (true) {
|
|
12
|
-
if (availableLocales.
|
|
12
|
+
if (availableLocales.indexOf(candidate) > -1) {
|
|
13
13
|
return candidate;
|
|
14
14
|
}
|
|
15
15
|
var pos = candidate.lastIndexOf('-');
|
|
@@ -5,4 +5,4 @@ import { LookupMatcherResult } from './types';
|
|
|
5
5
|
* @param requestedLocales
|
|
6
6
|
* @param getDefaultLocale
|
|
7
7
|
*/
|
|
8
|
-
export declare function BestFitMatcher(availableLocales:
|
|
8
|
+
export declare function BestFitMatcher(availableLocales: readonly string[], requestedLocales: readonly string[], getDefaultLocale: () => string): LookupMatcherResult;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BestFitMatcher = void 0;
|
|
4
|
-
var BestAvailableLocale_1 = require("./BestAvailableLocale");
|
|
5
4
|
var utils_1 = require("./utils");
|
|
6
5
|
/**
|
|
7
6
|
* https://tc39.es/ecma402/#sec-bestfitmatcher
|
|
@@ -10,60 +9,23 @@ var utils_1 = require("./utils");
|
|
|
10
9
|
* @param getDefaultLocale
|
|
11
10
|
*/
|
|
12
11
|
function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
|
|
13
|
-
var minimizedAvailableLocaleMap = {};
|
|
14
|
-
var availableLocaleMap = {};
|
|
15
|
-
var canonicalizedLocaleMap = {};
|
|
16
|
-
var minimizedAvailableLocales = new Set();
|
|
17
|
-
availableLocales.forEach(function (locale) {
|
|
18
|
-
var minimizedLocale = new Intl.Locale(locale)
|
|
19
|
-
.minimize()
|
|
20
|
-
.toString();
|
|
21
|
-
var canonicalizedLocale = Intl.getCanonicalLocales(locale)[0] || locale;
|
|
22
|
-
minimizedAvailableLocaleMap[minimizedLocale] = locale;
|
|
23
|
-
availableLocaleMap[locale] = locale;
|
|
24
|
-
canonicalizedLocaleMap[canonicalizedLocale] = locale;
|
|
25
|
-
minimizedAvailableLocales.add(minimizedLocale);
|
|
26
|
-
minimizedAvailableLocales.add(locale);
|
|
27
|
-
minimizedAvailableLocales.add(canonicalizedLocale);
|
|
28
|
-
});
|
|
29
12
|
var foundLocale;
|
|
30
13
|
var extension;
|
|
31
14
|
for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
|
|
32
15
|
var l = requestedLocales_1[_i];
|
|
33
|
-
|
|
16
|
+
var matchedLocale = (0, utils_1.findBestMatch)(l.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, ''), availableLocales);
|
|
17
|
+
if (matchedLocale) {
|
|
18
|
+
foundLocale = matchedLocale;
|
|
19
|
+
var noExtensionLocale = l.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, '');
|
|
20
|
+
extension = l.slice(noExtensionLocale.length, l.length) || undefined;
|
|
34
21
|
break;
|
|
35
22
|
}
|
|
36
|
-
var noExtensionLocale = l.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, '');
|
|
37
|
-
if (l !== noExtensionLocale) {
|
|
38
|
-
extension = l.slice(noExtensionLocale.length, l.length);
|
|
39
|
-
}
|
|
40
|
-
if (availableLocales.has(noExtensionLocale)) {
|
|
41
|
-
foundLocale = noExtensionLocale;
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
if (minimizedAvailableLocales.has(noExtensionLocale)) {
|
|
45
|
-
foundLocale = noExtensionLocale;
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
var locale = new Intl.Locale(noExtensionLocale);
|
|
49
|
-
var maximizedRequestedLocale = locale.maximize().toString();
|
|
50
|
-
var minimizedRequestedLocale = locale.minimize().toString();
|
|
51
|
-
// Check minimized locale
|
|
52
|
-
if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {
|
|
53
|
-
foundLocale = minimizedRequestedLocale;
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
// Lookup algo on maximized locale
|
|
57
|
-
foundLocale = (0, BestAvailableLocale_1.BestAvailableLocale)(minimizedAvailableLocales, maximizedRequestedLocale);
|
|
58
23
|
}
|
|
59
24
|
if (!foundLocale) {
|
|
60
25
|
return { locale: getDefaultLocale() };
|
|
61
26
|
}
|
|
62
27
|
return {
|
|
63
|
-
locale:
|
|
64
|
-
canonicalizedLocaleMap[foundLocale] ||
|
|
65
|
-
minimizedAvailableLocaleMap[foundLocale] ||
|
|
66
|
-
foundLocale,
|
|
28
|
+
locale: foundLocale,
|
|
67
29
|
extension: extension,
|
|
68
30
|
};
|
|
69
31
|
}
|
|
@@ -5,4 +5,4 @@ import { LookupMatcherResult } from './types';
|
|
|
5
5
|
* @param requestedLocales
|
|
6
6
|
* @param getDefaultLocale
|
|
7
7
|
*/
|
|
8
|
-
export declare function LookupMatcher(availableLocales:
|
|
8
|
+
export declare function LookupMatcher(availableLocales: readonly string[], requestedLocales: readonly string[], getDefaultLocale: () => string): LookupMatcherResult;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LookupMatcher = void 0;
|
|
4
|
-
var utils_1 = require("./utils");
|
|
5
4
|
var BestAvailableLocale_1 = require("./BestAvailableLocale");
|
|
5
|
+
var utils_1 = require("./utils");
|
|
6
6
|
/**
|
|
7
7
|
* https://tc39.es/ecma402/#sec-lookupmatcher
|
|
8
8
|
* @param availableLocales
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* @param availableLocales
|
|
4
4
|
* @param requestedLocales
|
|
5
5
|
*/
|
|
6
|
-
export declare function LookupSupportedLocales(availableLocales:
|
|
6
|
+
export declare function LookupSupportedLocales(availableLocales: string[], requestedLocales: string[]): string[];
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LookupSupportedLocales = void 0;
|
|
4
|
-
var utils_1 = require("./utils");
|
|
5
4
|
var BestAvailableLocale_1 = require("./BestAvailableLocale");
|
|
5
|
+
var utils_1 = require("./utils");
|
|
6
6
|
/**
|
|
7
7
|
* https://tc39.es/ecma402/#sec-lookupsupportedlocales
|
|
8
8
|
* @param availableLocales
|
|
@@ -8,7 +8,7 @@ export interface ResolveLocaleResult {
|
|
|
8
8
|
*/
|
|
9
9
|
export declare function ResolveLocale<K extends string, D extends {
|
|
10
10
|
[k in K]: any;
|
|
11
|
-
}>(availableLocales: Set<string
|
|
11
|
+
}>(availableLocales: Set<string> | readonly string[], requestedLocales: readonly string[], options: {
|
|
12
12
|
localeMatcher: string;
|
|
13
13
|
[k: string]: string;
|
|
14
14
|
}, relevantExtensionKeys: K[], localeData: Record<string, D | undefined>, getDefaultLocale: () => string): ResolveLocaleResult;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ResolveLocale = void 0;
|
|
4
|
-
var LookupMatcher_1 = require("./LookupMatcher");
|
|
5
4
|
var BestFitMatcher_1 = require("./BestFitMatcher");
|
|
6
|
-
var
|
|
5
|
+
var LookupMatcher_1 = require("./LookupMatcher");
|
|
7
6
|
var UnicodeExtensionValue_1 = require("./UnicodeExtensionValue");
|
|
7
|
+
var utils_1 = require("./utils");
|
|
8
8
|
/**
|
|
9
9
|
* https://tc39.es/ecma402/#sec-resolvelocale
|
|
10
10
|
*/
|
|
@@ -12,10 +12,10 @@ function ResolveLocale(availableLocales, requestedLocales, options, relevantExte
|
|
|
12
12
|
var matcher = options.localeMatcher;
|
|
13
13
|
var r;
|
|
14
14
|
if (matcher === 'lookup') {
|
|
15
|
-
r = (0, LookupMatcher_1.LookupMatcher)(availableLocales, requestedLocales, getDefaultLocale);
|
|
15
|
+
r = (0, LookupMatcher_1.LookupMatcher)(Array.from(availableLocales), requestedLocales, getDefaultLocale);
|
|
16
16
|
}
|
|
17
17
|
else {
|
|
18
|
-
r = (0, BestFitMatcher_1.BestFitMatcher)(availableLocales, requestedLocales, getDefaultLocale);
|
|
18
|
+
r = (0, BestFitMatcher_1.BestFitMatcher)(Array.from(availableLocales), requestedLocales, getDefaultLocale);
|
|
19
19
|
}
|
|
20
20
|
var foundLocale = r.locale;
|
|
21
21
|
var result = { locale: '', dataLocale: foundLocale };
|