@prezly/theme-kit-intl 0.0.0-next.6 → 6.6.1-alpha.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/build/cjs/index.d.ts +0 -1
- package/build/cjs/index.js +0 -7
- package/build/cjs/isLocaleSupported.d.ts +1 -2
- package/build/cjs/isLocaleSupported.js +1 -6
- package/build/cjs/locales.d.ts +1 -2
- package/build/cjs/locales.js +0 -1
- package/build/esm/index.d.ts +0 -1
- package/build/esm/index.mjs +0 -1
- package/build/esm/isLocaleSupported.d.ts +1 -2
- package/build/esm/isLocaleSupported.mjs +1 -6
- package/build/esm/locales.d.ts +1 -2
- package/build/esm/locales.mjs +0 -1
- package/package.json +11 -13
- package/build/cjs/Locale.d.ts +0 -61
- package/build/cjs/Locale.js +0 -102
- package/build/cjs/Locale.test.d.ts +0 -1
- package/build/cjs/Locale.test.js +0 -120
- package/build/esm/Locale.d.ts +0 -61
- package/build/esm/Locale.mjs +0 -99
- package/build/esm/Locale.test.d.ts +0 -1
- package/build/esm/Locale.test.mjs +0 -118
package/build/cjs/index.d.ts
CHANGED
package/build/cjs/index.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, "Locale", {
|
|
4
|
-
enumerable: true,
|
|
5
|
-
get: function get() {
|
|
6
|
-
return _Locale.Locale;
|
|
7
|
-
}
|
|
8
|
-
});
|
|
9
3
|
Object.defineProperty(exports, "isLocaleSupported", {
|
|
10
4
|
enumerable: true,
|
|
11
5
|
get: function get() {
|
|
@@ -21,6 +15,5 @@ Object.defineProperty(exports, "supportedLocales", {
|
|
|
21
15
|
exports.translations = void 0;
|
|
22
16
|
var translations = require("./messages/index.js");
|
|
23
17
|
exports.translations = translations;
|
|
24
|
-
var _Locale = require("./Locale");
|
|
25
18
|
var _isLocaleSupported = require("./isLocaleSupported");
|
|
26
19
|
var _locales = require("./locales");
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function isLocaleSupported(code: Locale | Locale.AnyCode): boolean;
|
|
1
|
+
export declare function isLocaleSupported(code: string): boolean;
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.isLocaleSupported = isLocaleSupported;
|
|
4
|
-
var _Locale = require("./Locale");
|
|
5
4
|
var _locales = require("./locales");
|
|
6
5
|
function isLocaleSupported(code) {
|
|
7
|
-
|
|
8
|
-
return _locales.locales.includes(_Locale.Locale.from(code).isoCode);
|
|
9
|
-
} catch (_unused) {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
6
|
+
return _locales.locales.indexOf(code) >= 0;
|
|
12
7
|
}
|
package/build/cjs/locales.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const locales: Locale.IsoCode[];
|
|
1
|
+
export declare const locales: string[];
|
package/build/cjs/locales.js
CHANGED
|
@@ -2,5 +2,4 @@
|
|
|
2
2
|
|
|
3
3
|
exports.locales = void 0;
|
|
4
4
|
// WARNING: This code is generated by build-locales.js. Please do not modify it directly (including formatting).
|
|
5
|
-
|
|
6
5
|
var locales = exports.locales = ['af', 'ar', 'az', 'be', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'fi', 'fil', 'fr', 'ga', 'he', 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kk', 'ko', 'lt', 'lv', 'mt', 'nl', 'no', 'pl', 'pt', 'pt-BR', 'ro', 'ru', 'sk', 'sl', 'sr', 'sv', 'sw', 'th', 'tr', 'uk', 'ur', 'uz', 'vi', 'zh-CN', 'zh-TW'];
|
package/build/esm/index.d.ts
CHANGED
package/build/esm/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as translations from "./messages/index.mjs"; // eslint-disable-next-line import/no-default-export
|
|
2
2
|
export { translations };
|
|
3
|
-
export { Locale } from "./Locale.mjs";
|
|
4
3
|
export { isLocaleSupported } from "./isLocaleSupported.mjs";
|
|
5
4
|
export { locales as supportedLocales } from "./locales.mjs";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function isLocaleSupported(code: Locale | Locale.AnyCode): boolean;
|
|
1
|
+
export declare function isLocaleSupported(code: string): boolean;
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import { Locale } from "./Locale.mjs";
|
|
2
1
|
import { locales as supportedLocales } from "./locales.mjs";
|
|
3
2
|
export function isLocaleSupported(code) {
|
|
4
|
-
|
|
5
|
-
return supportedLocales.includes(Locale.from(code).isoCode);
|
|
6
|
-
} catch (_unused) {
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
3
|
+
return supportedLocales.indexOf(code) >= 0;
|
|
9
4
|
}
|
package/build/esm/locales.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const locales: Locale.IsoCode[];
|
|
1
|
+
export declare const locales: string[];
|
package/build/esm/locales.mjs
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
// WARNING: This code is generated by build-locales.js. Please do not modify it directly (including formatting).
|
|
2
|
-
|
|
3
2
|
export var locales = ['af', 'ar', 'az', 'be', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'fi', 'fil', 'fr', 'ga', 'he', 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kk', 'ko', 'lt', 'lv', 'mt', 'nl', 'no', 'pl', 'pt', 'pt-BR', 'ro', 'ru', 'sk', 'sl', 'sr', 'sv', 'sw', 'th', 'tr', 'uk', 'ur', 'uz', 'vi', 'zh-CN', 'zh-TW'];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prezly/theme-kit-intl",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.6.1-alpha.0",
|
|
4
4
|
"description": "Translations for Prezly themes",
|
|
5
5
|
"main": "build/cjs/index.js",
|
|
6
6
|
"module": "build/esm/index.mjs",
|
|
@@ -36,8 +36,7 @@
|
|
|
36
36
|
"lint": "eslint ./src/",
|
|
37
37
|
"prettier:check": "prettier --check './src/**/*.{ts,js}'",
|
|
38
38
|
"prettier:fix": "prettier --write './src/**/*.{ts,js}'",
|
|
39
|
-
"test": "npm run test:
|
|
40
|
-
"test:unit": "jest",
|
|
39
|
+
"test": "npm run test:build",
|
|
41
40
|
"test:build": "npm run test:build:messages && npm run test:build:cjs && npm run test:build:esm && npm run test:build:dts",
|
|
42
41
|
"test:build:cjs": "node test/test-build.cjs",
|
|
43
42
|
"test:build:esm": "node test/test-build.mjs",
|
|
@@ -61,20 +60,19 @@
|
|
|
61
60
|
},
|
|
62
61
|
"homepage": "https://github.com/prezly/theme-kit-js/tree/main/packages/intl#readme",
|
|
63
62
|
"dependencies": {
|
|
64
|
-
"@formatjs/intl": "^1.16.0"
|
|
65
|
-
"@technically/is-not-undefined": "^1.0.0"
|
|
63
|
+
"@formatjs/intl": "^1.16.0"
|
|
66
64
|
},
|
|
67
65
|
"devDependencies": {
|
|
68
|
-
"@babel/cli": "
|
|
69
|
-
"@babel/core": "
|
|
70
|
-
"@babel/plugin-transform-modules-commonjs": "
|
|
71
|
-
"@babel/preset-env": "
|
|
72
|
-
"@babel/preset-typescript": "
|
|
73
|
-
"@formatjs/cli": "
|
|
74
|
-
"babel-plugin-add-import-extension": "
|
|
66
|
+
"@babel/cli": "7.23.0",
|
|
67
|
+
"@babel/core": "7.23.3",
|
|
68
|
+
"@babel/plugin-transform-modules-commonjs": "7.23.3",
|
|
69
|
+
"@babel/preset-env": "7.23.3",
|
|
70
|
+
"@babel/preset-typescript": "7.23.3",
|
|
71
|
+
"@formatjs/cli": "4.8.4",
|
|
72
|
+
"babel-plugin-add-import-extension": "1.6.0"
|
|
75
73
|
},
|
|
76
74
|
"publishConfig": {
|
|
77
75
|
"access": "public"
|
|
78
76
|
},
|
|
79
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "e6a2db0dda3d8517f184f432ea24d3813d36ab05"
|
|
80
78
|
}
|
package/build/cjs/Locale.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
export interface Locale {
|
|
2
|
-
/**
|
|
3
|
-
* Full locale code with underscores.
|
|
4
|
-
* Example: 'nl_BE'
|
|
5
|
-
*/
|
|
6
|
-
code: Locale.Code;
|
|
7
|
-
/**
|
|
8
|
-
* Full locale code in ISO format (with dashes instead of underscores)
|
|
9
|
-
* Example: 'nl-BE'
|
|
10
|
-
*/
|
|
11
|
-
isoCode: Locale.IsoCode;
|
|
12
|
-
/**
|
|
13
|
-
* URL-friendly case-insensitive locale code.
|
|
14
|
-
* Example: 'nl-be'
|
|
15
|
-
*/
|
|
16
|
-
slug: Locale.UrlSlug;
|
|
17
|
-
/**
|
|
18
|
-
* Language code.
|
|
19
|
-
* Examples: `nl`, `en`, `fr`.
|
|
20
|
-
*/
|
|
21
|
-
lang: Locale.LangCode;
|
|
22
|
-
/**
|
|
23
|
-
* Text direction for the locale.
|
|
24
|
-
*/
|
|
25
|
-
direction: 'ltr' | 'rtl';
|
|
26
|
-
/**
|
|
27
|
-
* Locale region code.
|
|
28
|
-
* E.g. `en-US` has `US` as region, while `en` is region independent and does not have a `regionCode`.
|
|
29
|
-
*/
|
|
30
|
-
region: Locale.RegionCode | undefined;
|
|
31
|
-
/**
|
|
32
|
-
* Locale script code.
|
|
33
|
-
* E.g. `zh-Hant` has `Hant` as script code (this is not a region).
|
|
34
|
-
*/
|
|
35
|
-
script: Locale.ScriptCode | undefined;
|
|
36
|
-
}
|
|
37
|
-
export declare namespace Locale {
|
|
38
|
-
export type AnyCode = Code | IsoCode | UrlSlug;
|
|
39
|
-
/**
|
|
40
|
-
* Shortest possible slug that can identify a locale for the given newsroom.
|
|
41
|
-
* This can be full language code or lowercase region code if they're unanbiguously identify a locale
|
|
42
|
-
* or full locale slug if nothing else applies.
|
|
43
|
-
*/
|
|
44
|
-
export type AnySlug = UrlSlug | LangCode | LowercaseRegionCode;
|
|
45
|
-
type LowercaseRegionCode = `${Lowercase<string>}`;
|
|
46
|
-
export type Code = `${LangCode}` | `${LangCode}_${RegionCode}` | `${LangCode}_${ScriptCode}` | `${LangCode}_${ScriptCode}_${RegionCode}`;
|
|
47
|
-
export type IsoCode = `${LangCode}` | `${LangCode}-${RegionCode}` | `${LangCode}-${ScriptCode}` | `${LangCode}-${ScriptCode}-${RegionCode}`;
|
|
48
|
-
export type UrlSlug = string;
|
|
49
|
-
export type LangCode = `${Lowercase<string>}`;
|
|
50
|
-
export type RegionCode = `${Uppercase<string>}`;
|
|
51
|
-
export type ScriptCode = string;
|
|
52
|
-
export function from(locale: AnyCode | Locale): Locale;
|
|
53
|
-
export function isValid(locale: AnyCode | string): boolean;
|
|
54
|
-
export function isLanguageCode(locale: AnyCode | Locale, langCode: LangCode): boolean;
|
|
55
|
-
export function isRegionCode(locale: AnyCode | Locale, regionCode: Locale.RegionCode | LowercaseRegionCode): boolean;
|
|
56
|
-
export function isRegionIndependent(locale: AnyCode | Locale): boolean;
|
|
57
|
-
export function isEqual(a: Locale | AnyCode, b: Locale | AnyCode): boolean;
|
|
58
|
-
export function isSameLang(a: Locale | AnyCode, b: Locale | AnyCode): boolean;
|
|
59
|
-
export function isSameRegion(a: Locale | AnyCode, b: Locale | AnyCode): boolean;
|
|
60
|
-
export {};
|
|
61
|
-
}
|
package/build/cjs/Locale.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.Locale = void 0;
|
|
4
|
-
var _isNotUndefined = require("@technically/is-not-undefined");
|
|
5
|
-
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
6
|
-
|
|
7
|
-
var KNOWN_SCRIPTS = ['hant', 'hans'];
|
|
8
|
-
var KNOWN_RTL_LANGUAGES = ['ar', 'he', 'ur'];
|
|
9
|
-
var LANG_CODE_REGEX = /^[a-z]{2,3}$/;
|
|
10
|
-
var CACHE = new Map();
|
|
11
|
-
var Locale;
|
|
12
|
-
(function (_Locale) {
|
|
13
|
-
/**
|
|
14
|
-
* Shortest possible slug that can identify a locale for the given newsroom.
|
|
15
|
-
* This can be full language code or lowercase region code if they're unanbiguously identify a locale
|
|
16
|
-
* or full locale slug if nothing else applies.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
function from(locale) {
|
|
20
|
-
if (typeof locale === 'object') {
|
|
21
|
-
return locale;
|
|
22
|
-
}
|
|
23
|
-
var cached = CACHE.get(locale);
|
|
24
|
-
if (cached) {
|
|
25
|
-
return cached;
|
|
26
|
-
}
|
|
27
|
-
var [lang, ...rest] = locale.toLowerCase().split(/[_-]/g);
|
|
28
|
-
if (!lang.match(LANG_CODE_REGEX)) {
|
|
29
|
-
throw new Error("Invalid locale code provided: \"".concat(locale, "\"."));
|
|
30
|
-
}
|
|
31
|
-
var scripts = rest.filter(s => KNOWN_SCRIPTS.includes(s));
|
|
32
|
-
var regions = rest.filter(s => !KNOWN_SCRIPTS.includes(s)).map(region => region.toUpperCase());
|
|
33
|
-
if (scripts.length > 1) {
|
|
34
|
-
throw new Error("Unable to parse the provided locale code: \"".concat(locale, "\". Multiple script codes detected."));
|
|
35
|
-
}
|
|
36
|
-
if (regions.length > 1) {
|
|
37
|
-
throw new Error("Unable to parse the provided locale code: \"".concat(locale, "\". Multiple region codes detected."));
|
|
38
|
-
}
|
|
39
|
-
var scriptCode = scripts[0];
|
|
40
|
-
var regionCode = regions[0];
|
|
41
|
-
var code = [lang.toLowerCase(), regionCode, scriptCode ? toPascalCase(scriptCode) : undefined].filter(_isNotUndefined.isNotUndefined).join('_');
|
|
42
|
-
var isoCode = code.replace('_', '-');
|
|
43
|
-
var obj = {
|
|
44
|
-
code,
|
|
45
|
-
isoCode,
|
|
46
|
-
slug: isoCode.toLowerCase(),
|
|
47
|
-
direction: KNOWN_RTL_LANGUAGES.includes(lang) ? 'rtl' : 'ltr',
|
|
48
|
-
lang,
|
|
49
|
-
region: regionCode,
|
|
50
|
-
script: scriptCode ? toPascalCase(scriptCode) : undefined
|
|
51
|
-
};
|
|
52
|
-
CACHE.set(obj.code, obj);
|
|
53
|
-
CACHE.set(obj.isoCode, obj);
|
|
54
|
-
CACHE.set(obj.slug, obj);
|
|
55
|
-
return obj;
|
|
56
|
-
}
|
|
57
|
-
_Locale.from = from;
|
|
58
|
-
function isValid(locale) {
|
|
59
|
-
try {
|
|
60
|
-
Locale.from(locale);
|
|
61
|
-
} catch (_unused) {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
_Locale.isValid = isValid;
|
|
67
|
-
function isLanguageCode(locale, langCode) {
|
|
68
|
-
return Locale.from(locale).lang === langCode.toLowerCase();
|
|
69
|
-
}
|
|
70
|
-
_Locale.isLanguageCode = isLanguageCode;
|
|
71
|
-
function isRegionCode(locale, regionCode) {
|
|
72
|
-
return Locale.from(locale).region === regionCode.toUpperCase();
|
|
73
|
-
}
|
|
74
|
-
_Locale.isRegionCode = isRegionCode;
|
|
75
|
-
function isRegionIndependent(locale) {
|
|
76
|
-
return !Locale.from(locale).region;
|
|
77
|
-
}
|
|
78
|
-
_Locale.isRegionIndependent = isRegionIndependent;
|
|
79
|
-
function isEqual(a, b) {
|
|
80
|
-
var al = Locale.from(a);
|
|
81
|
-
var bl = Locale.from(b);
|
|
82
|
-
return al.lang === bl.lang && al.region === bl.region && al.script === bl.script;
|
|
83
|
-
}
|
|
84
|
-
_Locale.isEqual = isEqual;
|
|
85
|
-
function isSameLang(a, b) {
|
|
86
|
-
return Locale.from(a).lang === Locale.from(b).lang;
|
|
87
|
-
}
|
|
88
|
-
_Locale.isSameLang = isSameLang;
|
|
89
|
-
function isSameRegion(a, b) {
|
|
90
|
-
var al = Locale.from(a);
|
|
91
|
-
var bl = Locale.from(b);
|
|
92
|
-
if (!al.region || !bl.region) {
|
|
93
|
-
// It's never the same region, if it's not defined.
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
return al.region === bl.region;
|
|
97
|
-
}
|
|
98
|
-
_Locale.isSameRegion = isSameRegion;
|
|
99
|
-
})(Locale || (exports.Locale = Locale = {}));
|
|
100
|
-
function toPascalCase(input) {
|
|
101
|
-
return "".concat(input.substring(0, 1).toUpperCase()).concat(input.substring(1).toLowerCase());
|
|
102
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/build/cjs/Locale.test.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Locale = require("./Locale");
|
|
4
|
-
var _locales = require("./locales");
|
|
5
|
-
describe('Locale', () => {
|
|
6
|
-
it('should throw when created from invalid code', () => {
|
|
7
|
-
expect(() => _Locale.Locale.from('1234')).toThrow('Invalid locale code provided: "1234".');
|
|
8
|
-
expect(() => _Locale.Locale.from('*!en-US')).toThrow('Invalid locale code provided: "*!en-US".');
|
|
9
|
-
expect(() => _Locale.Locale.from('zh-Hant-Hans')).toThrow('Unable to parse the provided locale code: "zh-Hant-Hans". Multiple script codes detected.');
|
|
10
|
-
expect(() => _Locale.Locale.from('en_US_GB')).toThrow('Unable to parse the provided locale code: "en_US_GB". Multiple region codes detected.');
|
|
11
|
-
});
|
|
12
|
-
it('should accept valid codes', () => {
|
|
13
|
-
expect(() => _Locale.Locale.from('en')).not.toThrow();
|
|
14
|
-
expect(() => _Locale.Locale.from('en-us')).not.toThrow();
|
|
15
|
-
expect(() => _Locale.Locale.from('en-US')).not.toThrow();
|
|
16
|
-
expect(() => _Locale.Locale.from('EN-US')).not.toThrow();
|
|
17
|
-
expect(() => _Locale.Locale.from('en_us')).not.toThrow();
|
|
18
|
-
expect(() => _Locale.Locale.from('en_US')).not.toThrow();
|
|
19
|
-
expect(() => _Locale.Locale.from('EN_US')).not.toThrow();
|
|
20
|
-
expect(() => _Locale.Locale.from('zh-Hant')).not.toThrow();
|
|
21
|
-
expect(() => _Locale.Locale.from('zh-Hans')).not.toThrow();
|
|
22
|
-
expect(() => _Locale.Locale.from('es-419')).not.toThrow();
|
|
23
|
-
expect(() => _Locale.Locale.from('es_419')).not.toThrow();
|
|
24
|
-
});
|
|
25
|
-
it('should cache created locale objects', () => {
|
|
26
|
-
expect(_Locale.Locale.from('en_US')).toBe(_Locale.Locale.from('en-us'));
|
|
27
|
-
});
|
|
28
|
-
it('should provide underscore code', () => {
|
|
29
|
-
expect(_Locale.Locale.from('en').code).toBe('en');
|
|
30
|
-
expect(_Locale.Locale.from('en-us').code).toBe('en_US');
|
|
31
|
-
expect(_Locale.Locale.from('en-US').code).toBe('en_US');
|
|
32
|
-
expect(_Locale.Locale.from('EN-US').code).toBe('en_US');
|
|
33
|
-
expect(_Locale.Locale.from('en_us').code).toBe('en_US');
|
|
34
|
-
expect(_Locale.Locale.from('en_US').code).toBe('en_US');
|
|
35
|
-
expect(_Locale.Locale.from('EN_US').code).toBe('en_US');
|
|
36
|
-
});
|
|
37
|
-
it('should provide ISO code', () => {
|
|
38
|
-
expect(_Locale.Locale.from('en').isoCode).toBe('en');
|
|
39
|
-
expect(_Locale.Locale.from('en-us').isoCode).toBe('en-US');
|
|
40
|
-
expect(_Locale.Locale.from('en-US').isoCode).toBe('en-US');
|
|
41
|
-
expect(_Locale.Locale.from('EN-US').isoCode).toBe('en-US');
|
|
42
|
-
expect(_Locale.Locale.from('en_us').isoCode).toBe('en-US');
|
|
43
|
-
expect(_Locale.Locale.from('en_US').isoCode).toBe('en-US');
|
|
44
|
-
expect(_Locale.Locale.from('EN_US').isoCode).toBe('en-US');
|
|
45
|
-
});
|
|
46
|
-
it('should provide URL slug', () => {
|
|
47
|
-
expect(_Locale.Locale.from('en').slug).toBe('en');
|
|
48
|
-
expect(_Locale.Locale.from('en-us').slug).toBe('en-us');
|
|
49
|
-
expect(_Locale.Locale.from('en-US').slug).toBe('en-us');
|
|
50
|
-
expect(_Locale.Locale.from('EN-US').slug).toBe('en-us');
|
|
51
|
-
expect(_Locale.Locale.from('en_us').slug).toBe('en-us');
|
|
52
|
-
expect(_Locale.Locale.from('en_US').slug).toBe('en-us');
|
|
53
|
-
expect(_Locale.Locale.from('EN_US').slug).toBe('en-us');
|
|
54
|
-
});
|
|
55
|
-
it('should provide language code', () => {
|
|
56
|
-
expect(_Locale.Locale.from('en').lang).toBe('en');
|
|
57
|
-
expect(_Locale.Locale.from('en-us').lang).toBe('en');
|
|
58
|
-
expect(_Locale.Locale.from('en-US').lang).toBe('en');
|
|
59
|
-
expect(_Locale.Locale.from('EN-US').lang).toBe('en');
|
|
60
|
-
expect(_Locale.Locale.from('en_us').lang).toBe('en');
|
|
61
|
-
expect(_Locale.Locale.from('en_US').lang).toBe('en');
|
|
62
|
-
expect(_Locale.Locale.from('EN_US').lang).toBe('en');
|
|
63
|
-
});
|
|
64
|
-
it('should provide region code', () => {
|
|
65
|
-
expect(_Locale.Locale.from('en').region).toBe(undefined);
|
|
66
|
-
expect(_Locale.Locale.from('en-us').region).toBe('US');
|
|
67
|
-
expect(_Locale.Locale.from('en-US').region).toBe('US');
|
|
68
|
-
expect(_Locale.Locale.from('EN-US').region).toBe('US');
|
|
69
|
-
expect(_Locale.Locale.from('en_us').region).toBe('US');
|
|
70
|
-
expect(_Locale.Locale.from('en_US').region).toBe('US');
|
|
71
|
-
expect(_Locale.Locale.from('EN_US').region).toBe('US');
|
|
72
|
-
});
|
|
73
|
-
it('should check if two locales are equal', () => {
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
75
|
-
var en_US = _Locale.Locale.from('en-US');
|
|
76
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
77
|
-
var en_US2 = _Locale.Locale.from('en-US');
|
|
78
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
79
|
-
var de_DE = _Locale.Locale.from('de-DE');
|
|
80
|
-
expect(_Locale.Locale.isEqual(en_US, en_US2)).toBe(true);
|
|
81
|
-
expect(_Locale.Locale.isEqual(en_US2, en_US)).toBe(true);
|
|
82
|
-
expect(_Locale.Locale.isEqual(en_US, de_DE)).toBe(false);
|
|
83
|
-
expect(_Locale.Locale.isEqual(de_DE, en_US)).toBe(false);
|
|
84
|
-
expect(_Locale.Locale.isEqual('en_US', 'en-us')).toBe(true);
|
|
85
|
-
expect(_Locale.Locale.isEqual('en_US', _Locale.Locale.from('en_US'))).toBe(true);
|
|
86
|
-
});
|
|
87
|
-
it('should check if two locales are of the same language', () => {
|
|
88
|
-
expect(_Locale.Locale.isSameLang(_Locale.Locale.from('en-US'), _Locale.Locale.from('en-GB'))).toBe(true);
|
|
89
|
-
expect(_Locale.Locale.isSameLang('en-US', _Locale.Locale.from('en-GB'))).toBe(true);
|
|
90
|
-
expect(_Locale.Locale.isSameLang('en-us', 'en_GB')).toBe(true);
|
|
91
|
-
expect(_Locale.Locale.isSameLang('en-FR', 'en')).toBe(true);
|
|
92
|
-
expect(_Locale.Locale.isSameLang('zh_Hant', 'zh_Hans')).toBe(true);
|
|
93
|
-
expect(_Locale.Locale.isSameLang('en_US', 'de_DE')).toBe(false);
|
|
94
|
-
expect(_Locale.Locale.isSameLang('en_US', 'fr')).toBe(false);
|
|
95
|
-
});
|
|
96
|
-
it('should check if two locales are of the same region', () => {
|
|
97
|
-
expect(_Locale.Locale.isSameRegion(_Locale.Locale.from('en-US'), _Locale.Locale.from('es-US'))).toBe(true);
|
|
98
|
-
expect(_Locale.Locale.isSameRegion('en-US', _Locale.Locale.from('es-US'))).toBe(true);
|
|
99
|
-
expect(_Locale.Locale.isSameRegion('en-us', 'es_US')).toBe(true);
|
|
100
|
-
|
|
101
|
-
// Region-independent locales (with no region) are never considered of the same region.
|
|
102
|
-
expect(_Locale.Locale.isSameRegion('en', 'en')).toBe(false);
|
|
103
|
-
expect(_Locale.Locale.isSameRegion('en-US', 'es_ES')).toBe(false);
|
|
104
|
-
expect(_Locale.Locale.isSameRegion('en_US', 'de_DE')).toBe(false);
|
|
105
|
-
expect(_Locale.Locale.isSameRegion('en_US', 'fr')).toBe(false);
|
|
106
|
-
});
|
|
107
|
-
it('should tell language direction', () => {
|
|
108
|
-
expect(_Locale.Locale.from('ar_AR').direction).toBe('rtl');
|
|
109
|
-
expect(_Locale.Locale.from('he').direction).toBe('rtl');
|
|
110
|
-
expect(_Locale.Locale.from('ur-pk').direction).toBe('rtl');
|
|
111
|
-
expect(_Locale.Locale.from('en_GB').direction).toBe('ltr');
|
|
112
|
-
expect(_Locale.Locale.from('fr').direction).toBe('ltr');
|
|
113
|
-
expect(_Locale.Locale.from('zh_Hant').direction).toBe('ltr');
|
|
114
|
-
});
|
|
115
|
-
it('should work for all supported locales', () => {
|
|
116
|
-
_locales.locales.forEach(code => {
|
|
117
|
-
expect(() => _Locale.Locale.from(code)).not.toThrow();
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
});
|
package/build/esm/Locale.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
export interface Locale {
|
|
2
|
-
/**
|
|
3
|
-
* Full locale code with underscores.
|
|
4
|
-
* Example: 'nl_BE'
|
|
5
|
-
*/
|
|
6
|
-
code: Locale.Code;
|
|
7
|
-
/**
|
|
8
|
-
* Full locale code in ISO format (with dashes instead of underscores)
|
|
9
|
-
* Example: 'nl-BE'
|
|
10
|
-
*/
|
|
11
|
-
isoCode: Locale.IsoCode;
|
|
12
|
-
/**
|
|
13
|
-
* URL-friendly case-insensitive locale code.
|
|
14
|
-
* Example: 'nl-be'
|
|
15
|
-
*/
|
|
16
|
-
slug: Locale.UrlSlug;
|
|
17
|
-
/**
|
|
18
|
-
* Language code.
|
|
19
|
-
* Examples: `nl`, `en`, `fr`.
|
|
20
|
-
*/
|
|
21
|
-
lang: Locale.LangCode;
|
|
22
|
-
/**
|
|
23
|
-
* Text direction for the locale.
|
|
24
|
-
*/
|
|
25
|
-
direction: 'ltr' | 'rtl';
|
|
26
|
-
/**
|
|
27
|
-
* Locale region code.
|
|
28
|
-
* E.g. `en-US` has `US` as region, while `en` is region independent and does not have a `regionCode`.
|
|
29
|
-
*/
|
|
30
|
-
region: Locale.RegionCode | undefined;
|
|
31
|
-
/**
|
|
32
|
-
* Locale script code.
|
|
33
|
-
* E.g. `zh-Hant` has `Hant` as script code (this is not a region).
|
|
34
|
-
*/
|
|
35
|
-
script: Locale.ScriptCode | undefined;
|
|
36
|
-
}
|
|
37
|
-
export declare namespace Locale {
|
|
38
|
-
export type AnyCode = Code | IsoCode | UrlSlug;
|
|
39
|
-
/**
|
|
40
|
-
* Shortest possible slug that can identify a locale for the given newsroom.
|
|
41
|
-
* This can be full language code or lowercase region code if they're unanbiguously identify a locale
|
|
42
|
-
* or full locale slug if nothing else applies.
|
|
43
|
-
*/
|
|
44
|
-
export type AnySlug = UrlSlug | LangCode | LowercaseRegionCode;
|
|
45
|
-
type LowercaseRegionCode = `${Lowercase<string>}`;
|
|
46
|
-
export type Code = `${LangCode}` | `${LangCode}_${RegionCode}` | `${LangCode}_${ScriptCode}` | `${LangCode}_${ScriptCode}_${RegionCode}`;
|
|
47
|
-
export type IsoCode = `${LangCode}` | `${LangCode}-${RegionCode}` | `${LangCode}-${ScriptCode}` | `${LangCode}-${ScriptCode}-${RegionCode}`;
|
|
48
|
-
export type UrlSlug = string;
|
|
49
|
-
export type LangCode = `${Lowercase<string>}`;
|
|
50
|
-
export type RegionCode = `${Uppercase<string>}`;
|
|
51
|
-
export type ScriptCode = string;
|
|
52
|
-
export function from(locale: AnyCode | Locale): Locale;
|
|
53
|
-
export function isValid(locale: AnyCode | string): boolean;
|
|
54
|
-
export function isLanguageCode(locale: AnyCode | Locale, langCode: LangCode): boolean;
|
|
55
|
-
export function isRegionCode(locale: AnyCode | Locale, regionCode: Locale.RegionCode | LowercaseRegionCode): boolean;
|
|
56
|
-
export function isRegionIndependent(locale: AnyCode | Locale): boolean;
|
|
57
|
-
export function isEqual(a: Locale | AnyCode, b: Locale | AnyCode): boolean;
|
|
58
|
-
export function isSameLang(a: Locale | AnyCode, b: Locale | AnyCode): boolean;
|
|
59
|
-
export function isSameRegion(a: Locale | AnyCode, b: Locale | AnyCode): boolean;
|
|
60
|
-
export {};
|
|
61
|
-
}
|
package/build/esm/Locale.mjs
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
2
|
-
|
|
3
|
-
import { isNotUndefined } from '@technically/is-not-undefined';
|
|
4
|
-
var KNOWN_SCRIPTS = ['hant', 'hans'];
|
|
5
|
-
var KNOWN_RTL_LANGUAGES = ['ar', 'he', 'ur'];
|
|
6
|
-
var LANG_CODE_REGEX = /^[a-z]{2,3}$/;
|
|
7
|
-
var CACHE = new Map();
|
|
8
|
-
export var Locale;
|
|
9
|
-
(function (_Locale) {
|
|
10
|
-
/**
|
|
11
|
-
* Shortest possible slug that can identify a locale for the given newsroom.
|
|
12
|
-
* This can be full language code or lowercase region code if they're unanbiguously identify a locale
|
|
13
|
-
* or full locale slug if nothing else applies.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
function from(locale) {
|
|
17
|
-
if (typeof locale === 'object') {
|
|
18
|
-
return locale;
|
|
19
|
-
}
|
|
20
|
-
var cached = CACHE.get(locale);
|
|
21
|
-
if (cached) {
|
|
22
|
-
return cached;
|
|
23
|
-
}
|
|
24
|
-
var [lang, ...rest] = locale.toLowerCase().split(/[_-]/g);
|
|
25
|
-
if (!lang.match(LANG_CODE_REGEX)) {
|
|
26
|
-
throw new Error("Invalid locale code provided: \"".concat(locale, "\"."));
|
|
27
|
-
}
|
|
28
|
-
var scripts = rest.filter(s => KNOWN_SCRIPTS.includes(s));
|
|
29
|
-
var regions = rest.filter(s => !KNOWN_SCRIPTS.includes(s)).map(region => region.toUpperCase());
|
|
30
|
-
if (scripts.length > 1) {
|
|
31
|
-
throw new Error("Unable to parse the provided locale code: \"".concat(locale, "\". Multiple script codes detected."));
|
|
32
|
-
}
|
|
33
|
-
if (regions.length > 1) {
|
|
34
|
-
throw new Error("Unable to parse the provided locale code: \"".concat(locale, "\". Multiple region codes detected."));
|
|
35
|
-
}
|
|
36
|
-
var scriptCode = scripts[0];
|
|
37
|
-
var regionCode = regions[0];
|
|
38
|
-
var code = [lang.toLowerCase(), regionCode, scriptCode ? toPascalCase(scriptCode) : undefined].filter(isNotUndefined).join('_');
|
|
39
|
-
var isoCode = code.replace('_', '-');
|
|
40
|
-
var obj = {
|
|
41
|
-
code,
|
|
42
|
-
isoCode,
|
|
43
|
-
slug: isoCode.toLowerCase(),
|
|
44
|
-
direction: KNOWN_RTL_LANGUAGES.includes(lang) ? 'rtl' : 'ltr',
|
|
45
|
-
lang,
|
|
46
|
-
region: regionCode,
|
|
47
|
-
script: scriptCode ? toPascalCase(scriptCode) : undefined
|
|
48
|
-
};
|
|
49
|
-
CACHE.set(obj.code, obj);
|
|
50
|
-
CACHE.set(obj.isoCode, obj);
|
|
51
|
-
CACHE.set(obj.slug, obj);
|
|
52
|
-
return obj;
|
|
53
|
-
}
|
|
54
|
-
_Locale.from = from;
|
|
55
|
-
function isValid(locale) {
|
|
56
|
-
try {
|
|
57
|
-
Locale.from(locale);
|
|
58
|
-
} catch (_unused) {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
_Locale.isValid = isValid;
|
|
64
|
-
function isLanguageCode(locale, langCode) {
|
|
65
|
-
return Locale.from(locale).lang === langCode.toLowerCase();
|
|
66
|
-
}
|
|
67
|
-
_Locale.isLanguageCode = isLanguageCode;
|
|
68
|
-
function isRegionCode(locale, regionCode) {
|
|
69
|
-
return Locale.from(locale).region === regionCode.toUpperCase();
|
|
70
|
-
}
|
|
71
|
-
_Locale.isRegionCode = isRegionCode;
|
|
72
|
-
function isRegionIndependent(locale) {
|
|
73
|
-
return !Locale.from(locale).region;
|
|
74
|
-
}
|
|
75
|
-
_Locale.isRegionIndependent = isRegionIndependent;
|
|
76
|
-
function isEqual(a, b) {
|
|
77
|
-
var al = Locale.from(a);
|
|
78
|
-
var bl = Locale.from(b);
|
|
79
|
-
return al.lang === bl.lang && al.region === bl.region && al.script === bl.script;
|
|
80
|
-
}
|
|
81
|
-
_Locale.isEqual = isEqual;
|
|
82
|
-
function isSameLang(a, b) {
|
|
83
|
-
return Locale.from(a).lang === Locale.from(b).lang;
|
|
84
|
-
}
|
|
85
|
-
_Locale.isSameLang = isSameLang;
|
|
86
|
-
function isSameRegion(a, b) {
|
|
87
|
-
var al = Locale.from(a);
|
|
88
|
-
var bl = Locale.from(b);
|
|
89
|
-
if (!al.region || !bl.region) {
|
|
90
|
-
// It's never the same region, if it's not defined.
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
return al.region === bl.region;
|
|
94
|
-
}
|
|
95
|
-
_Locale.isSameRegion = isSameRegion;
|
|
96
|
-
})(Locale || (Locale = {}));
|
|
97
|
-
function toPascalCase(input) {
|
|
98
|
-
return "".concat(input.substring(0, 1).toUpperCase()).concat(input.substring(1).toLowerCase());
|
|
99
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { Locale } from "./Locale.mjs";
|
|
2
|
-
import { locales } from "./locales.mjs";
|
|
3
|
-
describe('Locale', () => {
|
|
4
|
-
it('should throw when created from invalid code', () => {
|
|
5
|
-
expect(() => Locale.from('1234')).toThrow('Invalid locale code provided: "1234".');
|
|
6
|
-
expect(() => Locale.from('*!en-US')).toThrow('Invalid locale code provided: "*!en-US".');
|
|
7
|
-
expect(() => Locale.from('zh-Hant-Hans')).toThrow('Unable to parse the provided locale code: "zh-Hant-Hans". Multiple script codes detected.');
|
|
8
|
-
expect(() => Locale.from('en_US_GB')).toThrow('Unable to parse the provided locale code: "en_US_GB". Multiple region codes detected.');
|
|
9
|
-
});
|
|
10
|
-
it('should accept valid codes', () => {
|
|
11
|
-
expect(() => Locale.from('en')).not.toThrow();
|
|
12
|
-
expect(() => Locale.from('en-us')).not.toThrow();
|
|
13
|
-
expect(() => Locale.from('en-US')).not.toThrow();
|
|
14
|
-
expect(() => Locale.from('EN-US')).not.toThrow();
|
|
15
|
-
expect(() => Locale.from('en_us')).not.toThrow();
|
|
16
|
-
expect(() => Locale.from('en_US')).not.toThrow();
|
|
17
|
-
expect(() => Locale.from('EN_US')).not.toThrow();
|
|
18
|
-
expect(() => Locale.from('zh-Hant')).not.toThrow();
|
|
19
|
-
expect(() => Locale.from('zh-Hans')).not.toThrow();
|
|
20
|
-
expect(() => Locale.from('es-419')).not.toThrow();
|
|
21
|
-
expect(() => Locale.from('es_419')).not.toThrow();
|
|
22
|
-
});
|
|
23
|
-
it('should cache created locale objects', () => {
|
|
24
|
-
expect(Locale.from('en_US')).toBe(Locale.from('en-us'));
|
|
25
|
-
});
|
|
26
|
-
it('should provide underscore code', () => {
|
|
27
|
-
expect(Locale.from('en').code).toBe('en');
|
|
28
|
-
expect(Locale.from('en-us').code).toBe('en_US');
|
|
29
|
-
expect(Locale.from('en-US').code).toBe('en_US');
|
|
30
|
-
expect(Locale.from('EN-US').code).toBe('en_US');
|
|
31
|
-
expect(Locale.from('en_us').code).toBe('en_US');
|
|
32
|
-
expect(Locale.from('en_US').code).toBe('en_US');
|
|
33
|
-
expect(Locale.from('EN_US').code).toBe('en_US');
|
|
34
|
-
});
|
|
35
|
-
it('should provide ISO code', () => {
|
|
36
|
-
expect(Locale.from('en').isoCode).toBe('en');
|
|
37
|
-
expect(Locale.from('en-us').isoCode).toBe('en-US');
|
|
38
|
-
expect(Locale.from('en-US').isoCode).toBe('en-US');
|
|
39
|
-
expect(Locale.from('EN-US').isoCode).toBe('en-US');
|
|
40
|
-
expect(Locale.from('en_us').isoCode).toBe('en-US');
|
|
41
|
-
expect(Locale.from('en_US').isoCode).toBe('en-US');
|
|
42
|
-
expect(Locale.from('EN_US').isoCode).toBe('en-US');
|
|
43
|
-
});
|
|
44
|
-
it('should provide URL slug', () => {
|
|
45
|
-
expect(Locale.from('en').slug).toBe('en');
|
|
46
|
-
expect(Locale.from('en-us').slug).toBe('en-us');
|
|
47
|
-
expect(Locale.from('en-US').slug).toBe('en-us');
|
|
48
|
-
expect(Locale.from('EN-US').slug).toBe('en-us');
|
|
49
|
-
expect(Locale.from('en_us').slug).toBe('en-us');
|
|
50
|
-
expect(Locale.from('en_US').slug).toBe('en-us');
|
|
51
|
-
expect(Locale.from('EN_US').slug).toBe('en-us');
|
|
52
|
-
});
|
|
53
|
-
it('should provide language code', () => {
|
|
54
|
-
expect(Locale.from('en').lang).toBe('en');
|
|
55
|
-
expect(Locale.from('en-us').lang).toBe('en');
|
|
56
|
-
expect(Locale.from('en-US').lang).toBe('en');
|
|
57
|
-
expect(Locale.from('EN-US').lang).toBe('en');
|
|
58
|
-
expect(Locale.from('en_us').lang).toBe('en');
|
|
59
|
-
expect(Locale.from('en_US').lang).toBe('en');
|
|
60
|
-
expect(Locale.from('EN_US').lang).toBe('en');
|
|
61
|
-
});
|
|
62
|
-
it('should provide region code', () => {
|
|
63
|
-
expect(Locale.from('en').region).toBe(undefined);
|
|
64
|
-
expect(Locale.from('en-us').region).toBe('US');
|
|
65
|
-
expect(Locale.from('en-US').region).toBe('US');
|
|
66
|
-
expect(Locale.from('EN-US').region).toBe('US');
|
|
67
|
-
expect(Locale.from('en_us').region).toBe('US');
|
|
68
|
-
expect(Locale.from('en_US').region).toBe('US');
|
|
69
|
-
expect(Locale.from('EN_US').region).toBe('US');
|
|
70
|
-
});
|
|
71
|
-
it('should check if two locales are equal', () => {
|
|
72
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
73
|
-
var en_US = Locale.from('en-US');
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
75
|
-
var en_US2 = Locale.from('en-US');
|
|
76
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
77
|
-
var de_DE = Locale.from('de-DE');
|
|
78
|
-
expect(Locale.isEqual(en_US, en_US2)).toBe(true);
|
|
79
|
-
expect(Locale.isEqual(en_US2, en_US)).toBe(true);
|
|
80
|
-
expect(Locale.isEqual(en_US, de_DE)).toBe(false);
|
|
81
|
-
expect(Locale.isEqual(de_DE, en_US)).toBe(false);
|
|
82
|
-
expect(Locale.isEqual('en_US', 'en-us')).toBe(true);
|
|
83
|
-
expect(Locale.isEqual('en_US', Locale.from('en_US'))).toBe(true);
|
|
84
|
-
});
|
|
85
|
-
it('should check if two locales are of the same language', () => {
|
|
86
|
-
expect(Locale.isSameLang(Locale.from('en-US'), Locale.from('en-GB'))).toBe(true);
|
|
87
|
-
expect(Locale.isSameLang('en-US', Locale.from('en-GB'))).toBe(true);
|
|
88
|
-
expect(Locale.isSameLang('en-us', 'en_GB')).toBe(true);
|
|
89
|
-
expect(Locale.isSameLang('en-FR', 'en')).toBe(true);
|
|
90
|
-
expect(Locale.isSameLang('zh_Hant', 'zh_Hans')).toBe(true);
|
|
91
|
-
expect(Locale.isSameLang('en_US', 'de_DE')).toBe(false);
|
|
92
|
-
expect(Locale.isSameLang('en_US', 'fr')).toBe(false);
|
|
93
|
-
});
|
|
94
|
-
it('should check if two locales are of the same region', () => {
|
|
95
|
-
expect(Locale.isSameRegion(Locale.from('en-US'), Locale.from('es-US'))).toBe(true);
|
|
96
|
-
expect(Locale.isSameRegion('en-US', Locale.from('es-US'))).toBe(true);
|
|
97
|
-
expect(Locale.isSameRegion('en-us', 'es_US')).toBe(true);
|
|
98
|
-
|
|
99
|
-
// Region-independent locales (with no region) are never considered of the same region.
|
|
100
|
-
expect(Locale.isSameRegion('en', 'en')).toBe(false);
|
|
101
|
-
expect(Locale.isSameRegion('en-US', 'es_ES')).toBe(false);
|
|
102
|
-
expect(Locale.isSameRegion('en_US', 'de_DE')).toBe(false);
|
|
103
|
-
expect(Locale.isSameRegion('en_US', 'fr')).toBe(false);
|
|
104
|
-
});
|
|
105
|
-
it('should tell language direction', () => {
|
|
106
|
-
expect(Locale.from('ar_AR').direction).toBe('rtl');
|
|
107
|
-
expect(Locale.from('he').direction).toBe('rtl');
|
|
108
|
-
expect(Locale.from('ur-pk').direction).toBe('rtl');
|
|
109
|
-
expect(Locale.from('en_GB').direction).toBe('ltr');
|
|
110
|
-
expect(Locale.from('fr').direction).toBe('ltr');
|
|
111
|
-
expect(Locale.from('zh_Hant').direction).toBe('ltr');
|
|
112
|
-
});
|
|
113
|
-
it('should work for all supported locales', () => {
|
|
114
|
-
locales.forEach(code => {
|
|
115
|
-
expect(() => Locale.from(code)).not.toThrow();
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
});
|