@entropic-bond/localize-react 1.3.3 → 1.4.1
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/lib/locale.d.ts +2 -4
- package/lib/locale.js +68 -131
- package/lib/locale.js.map +1 -1
- package/lib/locale.spec.js +70 -204
- package/lib/locale.spec.js.map +1 -1
- package/lib/localized-component.js +26 -58
- package/lib/localized-component.js.map +1 -1
- package/lib/react-localizer.spec.js +72 -198
- package/lib/react-localizer.spec.js.map +1 -1
- package/package.json +13 -12
package/lib/locale.d.ts
CHANGED
|
@@ -9,15 +9,13 @@ declare type Rule = (word: string, locale: string) => string;
|
|
|
9
9
|
export declare class Locale {
|
|
10
10
|
private constructor();
|
|
11
11
|
static get instance(): Locale;
|
|
12
|
-
pluralize(word: string, amount?: number, pluralizer?: (word: string, locale: string) => string):
|
|
12
|
+
pluralize(word: string, amount?: number, pluralizer?: LocaleEntries | ((word: string, locale: string) => string)): string;
|
|
13
13
|
static config(config: LocaleConfig): void;
|
|
14
14
|
get(component: string): Promise<{}>;
|
|
15
15
|
private fetchCache;
|
|
16
16
|
private getLocaleFilePath;
|
|
17
17
|
static useRule(rule: Rule, locale: string): void;
|
|
18
|
-
static rules
|
|
19
|
-
endsY: (word: string, locale: string) => string;
|
|
20
|
-
};
|
|
18
|
+
private static rules;
|
|
21
19
|
private static _instance;
|
|
22
20
|
private static _registeredConfig;
|
|
23
21
|
private static _registeredRules;
|
package/lib/locale.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -19,37 +8,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
19
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
9
|
});
|
|
21
10
|
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
12
|
exports.Locale = void 0;
|
|
51
|
-
|
|
52
|
-
|
|
13
|
+
class Locale {
|
|
14
|
+
constructor(config) {
|
|
53
15
|
this._pendingPromise = null;
|
|
54
16
|
this._table = null;
|
|
55
17
|
this._table = null;
|
|
@@ -57,107 +19,82 @@ var Locale = /** @class */ (function () {
|
|
|
57
19
|
this._lang = config.locale || 'en';
|
|
58
20
|
this._localePath = config.localePath || '';
|
|
59
21
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
rules = Locale._registeredRules[this._lang];
|
|
88
|
-
while (!plural && rules && i < rules.length) {
|
|
89
|
-
plural = rules[i++](word, this._lang);
|
|
90
|
-
}
|
|
91
|
-
return [2 /*return*/, plural || word + 's'];
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
|
-
Locale.config = function (config) {
|
|
97
|
-
this._registeredConfig = __assign(__assign({}, this._registeredConfig), config);
|
|
22
|
+
static get instance() {
|
|
23
|
+
if (!this._instance) {
|
|
24
|
+
this._instance = new Locale(this._registeredConfig);
|
|
25
|
+
}
|
|
26
|
+
return this._instance;
|
|
27
|
+
}
|
|
28
|
+
pluralize(word, amount = 0, pluralizer) {
|
|
29
|
+
if (amount === 1)
|
|
30
|
+
return word;
|
|
31
|
+
let plural;
|
|
32
|
+
if (typeof pluralizer !== 'function') {
|
|
33
|
+
plural = pluralizer === null || pluralizer === void 0 ? void 0 : pluralizer[word];
|
|
34
|
+
if (plural)
|
|
35
|
+
return plural;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
plural = pluralizer === null || pluralizer === void 0 ? void 0 : pluralizer(word, this._lang);
|
|
39
|
+
}
|
|
40
|
+
let i = 0;
|
|
41
|
+
const rules = Locale._registeredRules[this._lang];
|
|
42
|
+
while (!plural && rules && i < rules.length) {
|
|
43
|
+
plural = rules[i++](word, this._lang);
|
|
44
|
+
}
|
|
45
|
+
return plural || word + 's';
|
|
46
|
+
}
|
|
47
|
+
static config(config) {
|
|
48
|
+
this._registeredConfig = Object.assign(Object.assign({}, this._registeredConfig), config);
|
|
98
49
|
this._instance = null;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
case 0:
|
|
114
|
-
_a.trys.push([0, 2, , 4]);
|
|
115
|
-
return [4 /*yield*/, fetch(this.getLocaleFilePath())];
|
|
116
|
-
case 1: return [2 /*return*/, (_a.sent()).json()];
|
|
117
|
-
case 2:
|
|
118
|
-
error_1 = _a.sent();
|
|
119
|
-
return [4 /*yield*/, fetch(this.getLocaleFilePath('en'))];
|
|
120
|
-
case 3: return [2 /*return*/, (_a.sent()).json()];
|
|
121
|
-
case 4: return [2 /*return*/];
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}); })];
|
|
125
|
-
case 1:
|
|
126
|
-
_a._table = _b.sent();
|
|
127
|
-
_b.label = 2;
|
|
128
|
-
case 2: return [2 /*return*/, this._table[component]];
|
|
129
|
-
}
|
|
130
|
-
});
|
|
50
|
+
}
|
|
51
|
+
get(component) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
if (!this._table) {
|
|
54
|
+
this._table = yield this.fetchCache(() => __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
try {
|
|
56
|
+
return (yield fetch(this.getLocaleFilePath())).json();
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return (yield fetch(this.getLocaleFilePath('en'))).json();
|
|
60
|
+
}
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
return this._table[component];
|
|
131
64
|
});
|
|
132
|
-
}
|
|
133
|
-
|
|
65
|
+
}
|
|
66
|
+
fetchCache(cachedPromise) {
|
|
134
67
|
if (!this._pendingPromise) {
|
|
135
|
-
this._pendingPromise = new Promise(
|
|
68
|
+
this._pendingPromise = new Promise(resolve => resolve(cachedPromise()));
|
|
136
69
|
}
|
|
137
70
|
return this._pendingPromise;
|
|
138
|
-
}
|
|
139
|
-
|
|
71
|
+
}
|
|
72
|
+
getLocaleFilePath(locale) {
|
|
140
73
|
if (this._lang.indexOf('http') < 0) {
|
|
141
|
-
return
|
|
74
|
+
return `${this._localePath}/${locale || this._lang}.json`;
|
|
142
75
|
}
|
|
143
76
|
return this._lang;
|
|
144
|
-
}
|
|
145
|
-
|
|
77
|
+
}
|
|
78
|
+
static useRule(rule, locale) {
|
|
146
79
|
if (!Locale._registeredRules[locale])
|
|
147
80
|
Locale._registeredRules[locale] = [];
|
|
148
81
|
Locale._registeredRules[locale].push(rule);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
endsY: function (word, locale) {
|
|
152
|
-
if (locale !== 'en')
|
|
153
|
-
return;
|
|
154
|
-
return word.slice(-1) === 'y' ? word.slice(0, -1) + 'ies' : word;
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
Locale._instance = null;
|
|
158
|
-
Locale._registeredConfig = {};
|
|
159
|
-
Locale._registeredRules = {};
|
|
160
|
-
return Locale;
|
|
161
|
-
}());
|
|
82
|
+
}
|
|
83
|
+
}
|
|
162
84
|
exports.Locale = Locale;
|
|
85
|
+
Locale.rules = [
|
|
86
|
+
(word, locale) => {
|
|
87
|
+
if (locale !== 'en')
|
|
88
|
+
return;
|
|
89
|
+
return word.slice(-1) === 'y' ? word.slice(0, -1) + 'ies' : undefined;
|
|
90
|
+
},
|
|
91
|
+
(word, locale) => {
|
|
92
|
+
if (locale !== 'en')
|
|
93
|
+
return;
|
|
94
|
+
return word.slice(-1) === 's' ? word + 'es' : undefined;
|
|
95
|
+
}
|
|
96
|
+
];
|
|
97
|
+
Locale._instance = null;
|
|
98
|
+
Locale._registeredConfig = {};
|
|
99
|
+
Locale._registeredRules = { en: Locale.rules };
|
|
163
100
|
//# sourceMappingURL=locale.js.map
|
package/lib/locale.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"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"}
|
package/lib/locale.spec.js
CHANGED
|
@@ -8,234 +8,100 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
13
|
};
|
|
41
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
describe('Locale',
|
|
45
|
-
beforeEach(
|
|
15
|
+
const fetch_mock_1 = __importDefault(require("fetch-mock"));
|
|
16
|
+
const locale_1 = require("./locale");
|
|
17
|
+
describe('Locale', () => {
|
|
18
|
+
beforeEach(() => {
|
|
46
19
|
locale_1.Locale.config({
|
|
47
20
|
localePath: 'locales'
|
|
48
21
|
});
|
|
49
|
-
fetch_mock_1.default.mock('locales/en.json',
|
|
22
|
+
fetch_mock_1.default.mock('locales/en.json', () => {
|
|
50
23
|
return {
|
|
51
24
|
"hi": "Hello",
|
|
52
25
|
"moduleA": {
|
|
53
26
|
"bye": "Bye",
|
|
54
27
|
"goodMorning": "Good Morning"
|
|
55
|
-
},
|
|
56
|
-
"pluralizeExceptions": {
|
|
57
|
-
"mouse": "mice",
|
|
58
|
-
"foot": "feet"
|
|
59
28
|
}
|
|
60
29
|
};
|
|
61
30
|
});
|
|
62
|
-
fetch_mock_1.default.mock('locales/es.json',
|
|
31
|
+
fetch_mock_1.default.mock('locales/es.json', () => {
|
|
63
32
|
return {
|
|
64
33
|
"hi": "Hola!!!"
|
|
65
34
|
};
|
|
66
35
|
});
|
|
67
36
|
});
|
|
68
|
-
afterEach(
|
|
69
|
-
it('should translate string',
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
37
|
+
afterEach(() => fetch_mock_1.default.restore());
|
|
38
|
+
it('should translate string', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
|
+
expect(yield locale_1.Locale.instance.get('hi')).toEqual('Hello');
|
|
40
|
+
}));
|
|
41
|
+
it('should change locale', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
42
|
+
locale_1.Locale.config({ locale: 'es' });
|
|
43
|
+
expect(yield locale_1.Locale.instance.get('hi')).toEqual('Hola!!!');
|
|
44
|
+
}));
|
|
45
|
+
it('should work for named modules', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
+
locale_1.Locale.config({ locale: 'en' });
|
|
47
|
+
const module = yield locale_1.Locale.instance.get('moduleA');
|
|
48
|
+
expect(module['bye']).toEqual('Bye');
|
|
49
|
+
expect(module['goodMorning']).toEqual('Good Morning');
|
|
50
|
+
}));
|
|
51
|
+
it('should retrieve data only once in successive calls to get (cache calls)', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
+
expect(fetch_mock_1.default.calls().length).toBe(0);
|
|
53
|
+
locale_1.Locale.instance.get('moduleA');
|
|
54
|
+
locale_1.Locale.instance.get('hi');
|
|
55
|
+
locale_1.Locale.instance.get('moduleA')['bye'];
|
|
56
|
+
expect(fetch_mock_1.default.calls('locales/en.json').length).toBe(1);
|
|
57
|
+
}));
|
|
58
|
+
describe('Pluralizer', () => {
|
|
59
|
+
it('should pluralize by default', () => {
|
|
60
|
+
expect(locale_1.Locale.instance.pluralize('apple')).toEqual('apples');
|
|
80
61
|
});
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
case 0:
|
|
87
|
-
locale_1.Locale.config({ locale: 'es' });
|
|
88
|
-
_a = expect;
|
|
89
|
-
return [4 /*yield*/, locale_1.Locale.instance.get('hi')];
|
|
90
|
-
case 1:
|
|
91
|
-
_a.apply(void 0, [_b.sent()]).toEqual('Hola!!!');
|
|
92
|
-
return [2 /*return*/];
|
|
93
|
-
}
|
|
62
|
+
it('should pluralize exceptions', () => {
|
|
63
|
+
expect(locale_1.Locale.instance.pluralize('mouse', 2, {
|
|
64
|
+
mouse: 'mice',
|
|
65
|
+
foot: 'feet'
|
|
66
|
+
})).toEqual('mice');
|
|
94
67
|
});
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
case 0:
|
|
101
|
-
locale_1.Locale.config({ locale: 'en' });
|
|
102
|
-
return [4 /*yield*/, locale_1.Locale.instance.get('moduleA')];
|
|
103
|
-
case 1:
|
|
104
|
-
module = _a.sent();
|
|
105
|
-
expect(module['bye']).toEqual('Bye');
|
|
106
|
-
expect(module['goodMorning']).toEqual('Good Morning');
|
|
107
|
-
return [2 /*return*/];
|
|
108
|
-
}
|
|
68
|
+
it('should NOT pluralize exceptions with amount 1', () => {
|
|
69
|
+
expect(locale_1.Locale.instance.pluralize('mouse', 1, {
|
|
70
|
+
mouse: 'mice',
|
|
71
|
+
foot: 'feet'
|
|
72
|
+
})).toEqual('mouse');
|
|
109
73
|
});
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
locale_1.Locale.instance.
|
|
115
|
-
locale_1.Locale.instance.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
74
|
+
it('should not pluralize on amount equal to 1', () => {
|
|
75
|
+
expect(locale_1.Locale.instance.pluralize('apple', 1)).toEqual('apple');
|
|
76
|
+
});
|
|
77
|
+
it('should pluralize on amounts greather than 1', () => {
|
|
78
|
+
expect(locale_1.Locale.instance.pluralize('apple', 2)).toEqual('apples');
|
|
79
|
+
expect(locale_1.Locale.instance.pluralize('apple', 3)).toEqual('apples');
|
|
80
|
+
});
|
|
81
|
+
it('should pluralize on negative amounts', () => {
|
|
82
|
+
expect(locale_1.Locale.instance.pluralize('apple', -1)).toEqual('apples');
|
|
83
|
+
expect(locale_1.Locale.instance.pluralize('apple', -2)).toEqual('apples');
|
|
84
|
+
expect(locale_1.Locale.instance.pluralize('apple', -3)).toEqual('apples');
|
|
85
|
+
});
|
|
86
|
+
it('should pluralize on 0 amount', () => {
|
|
87
|
+
expect(locale_1.Locale.instance.pluralize('apple', 0)).toEqual('apples');
|
|
88
|
+
});
|
|
89
|
+
it('should use provided pluralize function', () => {
|
|
90
|
+
const endsY = (word, locale) => {
|
|
91
|
+
if (locale !== 'en')
|
|
92
|
+
return;
|
|
93
|
+
return word.slice(-1) === 'y' ? word.slice(0, -1) + 'ies' : word;
|
|
94
|
+
};
|
|
95
|
+
expect(locale_1.Locale.instance.pluralize('city', 0, endsY)).toEqual('cities');
|
|
96
|
+
});
|
|
97
|
+
it('should use rules', () => {
|
|
98
|
+
expect(locale_1.Locale.instance.pluralize('city')).toEqual('cities');
|
|
99
|
+
expect(locale_1.Locale.instance.pluralize('class')).toEqual('classes');
|
|
100
|
+
});
|
|
101
|
+
it('should register rules', () => {
|
|
102
|
+
locale_1.Locale.useRule(word => word + ' fake', 'en');
|
|
103
|
+
expect(locale_1.Locale.instance.pluralize('something')).toEqual('something fake');
|
|
119
104
|
});
|
|
120
|
-
}); });
|
|
121
|
-
describe('Pluralizer', function () {
|
|
122
|
-
it('should pluralize by default', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
123
|
-
var _a;
|
|
124
|
-
return __generator(this, function (_b) {
|
|
125
|
-
switch (_b.label) {
|
|
126
|
-
case 0:
|
|
127
|
-
_a = expect;
|
|
128
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple')];
|
|
129
|
-
case 1:
|
|
130
|
-
_a.apply(void 0, [_b.sent()]).toEqual('apples');
|
|
131
|
-
return [2 /*return*/];
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}); });
|
|
135
|
-
it('should pluralize exceptions', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
136
|
-
var _a;
|
|
137
|
-
return __generator(this, function (_b) {
|
|
138
|
-
switch (_b.label) {
|
|
139
|
-
case 0:
|
|
140
|
-
_a = expect;
|
|
141
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('mouse')];
|
|
142
|
-
case 1:
|
|
143
|
-
_a.apply(void 0, [_b.sent()]).toEqual('mice');
|
|
144
|
-
return [2 /*return*/];
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
}); });
|
|
148
|
-
it('should not pluralize on amount equal to 1', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
149
|
-
var _a;
|
|
150
|
-
return __generator(this, function (_b) {
|
|
151
|
-
switch (_b.label) {
|
|
152
|
-
case 0:
|
|
153
|
-
_a = expect;
|
|
154
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 1)];
|
|
155
|
-
case 1:
|
|
156
|
-
_a.apply(void 0, [_b.sent()]).toEqual('apple');
|
|
157
|
-
return [2 /*return*/];
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
}); });
|
|
161
|
-
it('should pluralize on amounts greather than 1', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
162
|
-
var _a, _b;
|
|
163
|
-
return __generator(this, function (_c) {
|
|
164
|
-
switch (_c.label) {
|
|
165
|
-
case 0:
|
|
166
|
-
_a = expect;
|
|
167
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 2)];
|
|
168
|
-
case 1:
|
|
169
|
-
_a.apply(void 0, [_c.sent()]).toEqual('apples');
|
|
170
|
-
_b = expect;
|
|
171
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 3)];
|
|
172
|
-
case 2:
|
|
173
|
-
_b.apply(void 0, [_c.sent()]).toEqual('apples');
|
|
174
|
-
return [2 /*return*/];
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
}); });
|
|
178
|
-
it('should pluralize on negative amounts', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
179
|
-
var _a, _b, _c;
|
|
180
|
-
return __generator(this, function (_d) {
|
|
181
|
-
switch (_d.label) {
|
|
182
|
-
case 0:
|
|
183
|
-
_a = expect;
|
|
184
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', -1)];
|
|
185
|
-
case 1:
|
|
186
|
-
_a.apply(void 0, [_d.sent()]).toEqual('apples');
|
|
187
|
-
_b = expect;
|
|
188
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', -2)];
|
|
189
|
-
case 2:
|
|
190
|
-
_b.apply(void 0, [_d.sent()]).toEqual('apples');
|
|
191
|
-
_c = expect;
|
|
192
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', -3)];
|
|
193
|
-
case 3:
|
|
194
|
-
_c.apply(void 0, [_d.sent()]).toEqual('apples');
|
|
195
|
-
return [2 /*return*/];
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
}); });
|
|
199
|
-
it('should pluralize on 0 amount', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
200
|
-
var _a;
|
|
201
|
-
return __generator(this, function (_b) {
|
|
202
|
-
switch (_b.label) {
|
|
203
|
-
case 0:
|
|
204
|
-
_a = expect;
|
|
205
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 0)];
|
|
206
|
-
case 1:
|
|
207
|
-
_a.apply(void 0, [_b.sent()]).toEqual('apples');
|
|
208
|
-
return [2 /*return*/];
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
}); });
|
|
212
|
-
it('should use provided pluralize function', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
213
|
-
var _a;
|
|
214
|
-
return __generator(this, function (_b) {
|
|
215
|
-
switch (_b.label) {
|
|
216
|
-
case 0:
|
|
217
|
-
_a = expect;
|
|
218
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('city', 0, locale_1.Locale.rules.endsY)];
|
|
219
|
-
case 1:
|
|
220
|
-
_a.apply(void 0, [_b.sent()]).toEqual('cities');
|
|
221
|
-
return [2 /*return*/];
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
}); });
|
|
225
|
-
it('should use rules', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
226
|
-
var _a;
|
|
227
|
-
return __generator(this, function (_b) {
|
|
228
|
-
switch (_b.label) {
|
|
229
|
-
case 0:
|
|
230
|
-
locale_1.Locale.useRule(locale_1.Locale.rules.endsY, 'en');
|
|
231
|
-
_a = expect;
|
|
232
|
-
return [4 /*yield*/, locale_1.Locale.instance.pluralize('city')];
|
|
233
|
-
case 1:
|
|
234
|
-
_a.apply(void 0, [_b.sent()]).toEqual('cities');
|
|
235
|
-
return [2 /*return*/];
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
}); });
|
|
239
105
|
});
|
|
240
106
|
});
|
|
241
107
|
//# sourceMappingURL=locale.spec.js.map
|
package/lib/locale.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.spec.js","sourceRoot":"","sources":["../src/locale.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"locale.spec.js","sourceRoot":"","sources":["../src/locale.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
3
|
exports.useLocale = exports.localize = exports.LocalizedComponent = void 0;
|
|
30
|
-
|
|
31
|
-
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const locale_1 = require("./locale");
|
|
32
6
|
/**
|
|
33
7
|
* Derive React components from this class to provide locale capabilities.
|
|
34
8
|
*
|
|
@@ -40,28 +14,25 @@ var locale_1 = require("./locale");
|
|
|
40
14
|
* You can use this method or @see localize method to provide localization to your
|
|
41
15
|
* component.
|
|
42
16
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
_this.state = { locale: {} };
|
|
17
|
+
class LocalizedComponent extends react_1.Component {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
super(props);
|
|
20
|
+
this.state = { locale: {} };
|
|
48
21
|
Promise.all([
|
|
49
|
-
locale_1.Locale.instance.get(
|
|
22
|
+
locale_1.Locale.instance.get(this.className()),
|
|
50
23
|
locale_1.Locale.instance.get('Generic')
|
|
51
|
-
]).then(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
24
|
+
]).then(resp => {
|
|
25
|
+
const locale = Object.assign(Object.assign({}, resp[0]), resp[1]);
|
|
26
|
+
this.setState({ locale });
|
|
27
|
+
this.onLoadLocale(locale);
|
|
55
28
|
});
|
|
56
|
-
return _this;
|
|
57
29
|
}
|
|
58
30
|
/**
|
|
59
31
|
* Override this method to get a notification when the locale has been loaded
|
|
60
32
|
* @param locale the loaded locale
|
|
61
33
|
*/
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}(react_1.Component));
|
|
34
|
+
onLoadLocale(locale) { }
|
|
35
|
+
}
|
|
65
36
|
exports.LocalizedComponent = LocalizedComponent;
|
|
66
37
|
/**
|
|
67
38
|
* Decorator to inject locale capabilities. The decorator will set the component
|
|
@@ -77,23 +48,20 @@ exports.LocalizedComponent = LocalizedComponent;
|
|
|
77
48
|
*/
|
|
78
49
|
function localize(className) {
|
|
79
50
|
return function (constructor) {
|
|
80
|
-
return
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
_this.loadLocale = Promise.all([
|
|
51
|
+
return class extends constructor {
|
|
52
|
+
constructor() {
|
|
53
|
+
super(...arguments);
|
|
54
|
+
this.state = Object.assign({ locale: {} }, this['state']);
|
|
55
|
+
this.loadLocale = Promise.all([
|
|
86
56
|
locale_1.Locale.instance.get(className),
|
|
87
57
|
locale_1.Locale.instance.get('Generic')
|
|
88
|
-
]).then(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
58
|
+
]).then(resp => {
|
|
59
|
+
const locale = Object.assign(Object.assign({}, resp[0]), resp[1]);
|
|
60
|
+
this['setState']({ locale });
|
|
61
|
+
this['onLoadLocale'] && this['onLoadLocale'](locale);
|
|
92
62
|
});
|
|
93
|
-
return _this;
|
|
94
63
|
}
|
|
95
|
-
|
|
96
|
-
}(constructor));
|
|
64
|
+
};
|
|
97
65
|
};
|
|
98
66
|
}
|
|
99
67
|
exports.localize = localize;
|
|
@@ -105,12 +73,12 @@ exports.localize = localize;
|
|
|
105
73
|
* @returns an object with the localized strings
|
|
106
74
|
*/
|
|
107
75
|
function useLocale(componentName) {
|
|
108
|
-
|
|
109
|
-
(0, react_1.useEffect)(
|
|
76
|
+
const [locale, setLocale] = (0, react_1.useState)({});
|
|
77
|
+
(0, react_1.useEffect)(() => {
|
|
110
78
|
Promise.all([
|
|
111
79
|
locale_1.Locale.instance.get(componentName),
|
|
112
80
|
locale_1.Locale.instance.get('Generic')
|
|
113
|
-
]).then(
|
|
81
|
+
]).then(resp => setLocale(Object.assign(Object.assign({}, resp[0]), resp[1])));
|
|
114
82
|
}, []);
|
|
115
83
|
return locale;
|
|
116
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localized-component.js","sourceRoot":"","sources":["../src/localized-component.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"localized-component.js","sourceRoot":"","sources":["../src/localized-component.tsx"],"names":[],"mappings":";;;AAAA,iCAAsD;AACtD,qCAAgD;AAQhD;;;;;;;;;;GAUG;AACH,MAAsB,kBAAkE,SAAQ,iBAAe;IAC9G,YAAa,KAAQ;QACpB,KAAK,CAAE,KAAK,CAAE,CAAA;QAEd,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAO,CAAA;QAEhC,OAAO,CAAC,GAAG,CAAC;YACX,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,IAAI,CAAC,SAAS,EAAE,CAAE;YACvC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;SAChC,CAAC,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE;YACf,MAAM,MAAM,mCAAQ,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,CAAE,CAAA;YAEzC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAG,CAAC,CAAA;YAC1B,IAAI,CAAC,YAAY,CAAE,MAAM,CAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;IACH,CAAC;IAQD;;;OAGG;IACH,YAAY,CAAE,MAAqB,IAAI,CAAC;CACxC;AA5BD,gDA4BC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ,CAAE,SAAiB;IAC1C,OAAO,UAAiD,WAAc;QACrE,OAAO,KAAM,SAAQ,WAAW;YAAzB;;gBACL,UAAK,mBAAK,MAAM,EAAE,EAAE,IAAK,IAAI,CAAC,OAAO,CAAC,EAAE;gBACxC,eAAU,GAAG,OAAO,CAAC,GAAG,CAAC;oBACxB,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;oBAChC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;iBAChC,CAAC,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE;oBACf,MAAM,MAAM,mCAAQ,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,CAAE,CAAA;oBACzC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;oBAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAE,MAAM,CAAE,CAAA;gBACvD,CAAC,CAAC,CAAA;YACJ,CAAC;SAAA,CAAA;IACF,CAAC,CAAA;AACF,CAAC;AAdD,4BAcC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CAAE,aAAqB;IAC/C,MAAM,CAAE,MAAM,EAAE,SAAS,CAAE,GAAG,IAAA,gBAAQ,EAAC,EAA+B,CAAC,CAAA;IAEvE,IAAA,iBAAS,EAAE,GAAG,EAAE;QAEf,OAAO,CAAC,GAAG,CAAC;YACX,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,aAAa,CAAE;YACpC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;SAChC,CAAC,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,CAAC,SAAS,iCAAM,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,EAAG,CAAC,CAAA;IAExD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,MAAM,CAAA;AACd,CAAC;AAbD,8BAaC"}
|
|
@@ -1,30 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
29
3
|
if (k2 === undefined) k2 = k;
|
|
30
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -63,99 +37,66 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
63
37
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
64
38
|
});
|
|
65
39
|
};
|
|
66
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
67
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
68
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
69
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
70
|
-
function step(op) {
|
|
71
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
72
|
-
while (_) try {
|
|
73
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
74
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
75
|
-
switch (op[0]) {
|
|
76
|
-
case 0: case 1: t = op; break;
|
|
77
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
78
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
79
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
80
|
-
default:
|
|
81
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
82
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
83
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
84
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
85
|
-
if (t[2]) _.ops.pop();
|
|
86
|
-
_.trys.pop(); continue;
|
|
87
|
-
}
|
|
88
|
-
op = body.call(thisArg, _);
|
|
89
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
90
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
40
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
94
41
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
95
42
|
};
|
|
96
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
_this.state = {
|
|
44
|
+
const react_1 = __importStar(require("react"));
|
|
45
|
+
const react_2 = require("@testing-library/react");
|
|
46
|
+
const fetch_mock_1 = __importDefault(require("fetch-mock"));
|
|
47
|
+
const locale_1 = require("./locale");
|
|
48
|
+
const localized_component_1 = require("./localized-component");
|
|
49
|
+
let loadedSpy = jest.fn();
|
|
50
|
+
let LocalizedWithDecorator = class LocalizedWithDecorator extends react_1.Component {
|
|
51
|
+
constructor(props) {
|
|
52
|
+
super(props);
|
|
53
|
+
this.state = {
|
|
108
54
|
someState: 'a decorator nice starting point'
|
|
109
55
|
};
|
|
110
|
-
return _this;
|
|
111
56
|
}
|
|
112
|
-
|
|
57
|
+
onLoadLocale(locale) {
|
|
113
58
|
loadedSpy(locale);
|
|
114
|
-
}
|
|
115
|
-
|
|
59
|
+
}
|
|
60
|
+
render() {
|
|
116
61
|
return (react_1.default.createElement("div", null,
|
|
117
62
|
react_1.default.createElement("p", { "data-testid": "casa" },
|
|
118
63
|
"Casa es ",
|
|
119
64
|
this.state.locale.house),
|
|
120
65
|
react_1.default.createElement("span", null, this.state.someState)));
|
|
121
|
-
};
|
|
122
|
-
LocalizedWithDecorator = __decorate([
|
|
123
|
-
(0, localized_component_1.localize)('LocalizedWithDecorator')
|
|
124
|
-
], LocalizedWithDecorator);
|
|
125
|
-
return LocalizedWithDecorator;
|
|
126
|
-
}(react_1.Component));
|
|
127
|
-
var LocalizedWithClass = /** @class */ (function (_super) {
|
|
128
|
-
__extends(LocalizedWithClass, _super);
|
|
129
|
-
function LocalizedWithClass(props) {
|
|
130
|
-
var _this = _super.call(this, props) || this;
|
|
131
|
-
_this.state = __assign({ someState: 'a class nice starting point' }, _this.state);
|
|
132
|
-
return _this;
|
|
133
66
|
}
|
|
134
|
-
|
|
67
|
+
};
|
|
68
|
+
LocalizedWithDecorator = __decorate([
|
|
69
|
+
(0, localized_component_1.localize)('LocalizedWithDecorator')
|
|
70
|
+
], LocalizedWithDecorator);
|
|
71
|
+
class LocalizedWithClass extends localized_component_1.LocalizedComponent {
|
|
72
|
+
constructor(props) {
|
|
73
|
+
super(props);
|
|
74
|
+
this.state = Object.assign({ someState: 'a class nice starting point' }, this.state);
|
|
75
|
+
}
|
|
76
|
+
onLoadLocale(locale) {
|
|
135
77
|
loadedSpy(locale);
|
|
136
|
-
}
|
|
137
|
-
|
|
78
|
+
}
|
|
79
|
+
render() {
|
|
138
80
|
return (react_1.default.createElement("div", null,
|
|
139
81
|
react_1.default.createElement("p", { "data-testid": "casa" },
|
|
140
82
|
"Casa es ",
|
|
141
83
|
this.state.locale.house),
|
|
142
84
|
react_1.default.createElement("span", null, this.state.someState)));
|
|
143
|
-
}
|
|
144
|
-
|
|
85
|
+
}
|
|
86
|
+
className() {
|
|
145
87
|
return 'LocalizedWithClass';
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
}(localized_component_1.LocalizedComponent));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
149
90
|
function LocalizedWithHook() {
|
|
150
|
-
|
|
91
|
+
const locale = (0, localized_component_1.useLocale)('LocalizedWithHook');
|
|
151
92
|
return (react_1.default.createElement("div", null,
|
|
152
93
|
react_1.default.createElement("p", { "data-testid": "casa" },
|
|
153
94
|
"Casa es ",
|
|
154
95
|
locale.house)));
|
|
155
96
|
}
|
|
156
|
-
describe('React Component Localizer',
|
|
157
|
-
beforeEach(
|
|
158
|
-
fetch_mock_1.default.mock('locales/en.json',
|
|
97
|
+
describe('React Component Localizer', () => {
|
|
98
|
+
beforeEach(() => {
|
|
99
|
+
fetch_mock_1.default.mock('locales/en.json', () => {
|
|
159
100
|
return {
|
|
160
101
|
"hi": "Hello",
|
|
161
102
|
"LocalizedWithClass": {
|
|
@@ -173,115 +114,48 @@ describe('React Component Localizer', function () {
|
|
|
173
114
|
localePath: 'locales'
|
|
174
115
|
});
|
|
175
116
|
});
|
|
176
|
-
afterEach(
|
|
117
|
+
afterEach(() => {
|
|
177
118
|
fetch_mock_1.default.restore();
|
|
178
119
|
loadedSpy.mockReset();
|
|
179
120
|
});
|
|
180
|
-
it('should render localized word with decorator',
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
return [2 /*return*/];
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
}); });
|
|
208
|
-
it('should not overwrite state of localized class', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
209
|
-
var classWrapper, decoratorWrapper, _a, _b;
|
|
210
|
-
return __generator(this, function (_c) {
|
|
211
|
-
switch (_c.label) {
|
|
212
|
-
case 0:
|
|
213
|
-
classWrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
|
|
214
|
-
decoratorWrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
215
|
-
_a = expect;
|
|
216
|
-
return [4 /*yield*/, classWrapper.findByText('a class nice starting point')];
|
|
217
|
-
case 1:
|
|
218
|
-
_a.apply(void 0, [_c.sent()]).toBeInTheDocument();
|
|
219
|
-
_b = expect;
|
|
220
|
-
return [4 /*yield*/, decoratorWrapper.findByText('a decorator nice starting point')];
|
|
221
|
-
case 2:
|
|
222
|
-
_b.apply(void 0, [_c.sent()]).toBeInTheDocument();
|
|
223
|
-
return [2 /*return*/];
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
}); });
|
|
227
|
-
it('should render localized word with hook', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
228
|
-
var wrapper, elem;
|
|
229
|
-
return __generator(this, function (_a) {
|
|
230
|
-
switch (_a.label) {
|
|
231
|
-
case 0:
|
|
232
|
-
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithHook, null));
|
|
233
|
-
return [4 /*yield*/, wrapper.findByText('Casa es morada')];
|
|
234
|
-
case 1:
|
|
235
|
-
elem = _a.sent();
|
|
236
|
-
expect(elem).toBeInTheDocument();
|
|
237
|
-
return [2 /*return*/];
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
}); });
|
|
241
|
-
it('should wait locale json to load', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
242
|
-
var wrapper, elem;
|
|
243
|
-
return __generator(this, function (_a) {
|
|
244
|
-
switch (_a.label) {
|
|
245
|
-
case 0:
|
|
246
|
-
locale_1.Locale.config({
|
|
247
|
-
locale: 'en'
|
|
248
|
-
});
|
|
249
|
-
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
250
|
-
return [4 /*yield*/, wrapper.findByText('Casa es maison')];
|
|
251
|
-
case 1:
|
|
252
|
-
elem = _a.sent();
|
|
253
|
-
expect(elem).toBeInTheDocument();
|
|
254
|
-
return [2 /*return*/];
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
}); });
|
|
258
|
-
it('should notify on locale loaded with decorator', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
259
|
-
var wrapper;
|
|
260
|
-
return __generator(this, function (_a) {
|
|
261
|
-
switch (_a.label) {
|
|
262
|
-
case 0:
|
|
263
|
-
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
264
|
-
return [4 /*yield*/, wrapper.findByText('Casa es maison')];
|
|
265
|
-
case 1:
|
|
266
|
-
_a.sent();
|
|
267
|
-
expect(loadedSpy).toHaveBeenCalledWith(expect.objectContaining({ house: 'maison' }));
|
|
268
|
-
return [2 /*return*/];
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
}); });
|
|
272
|
-
it('should notify on locale loaded with class', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
273
|
-
var wrapper;
|
|
274
|
-
return __generator(this, function (_a) {
|
|
275
|
-
switch (_a.label) {
|
|
276
|
-
case 0:
|
|
277
|
-
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
|
|
278
|
-
return [4 /*yield*/, wrapper.findByText('Casa es albergo')];
|
|
279
|
-
case 1:
|
|
280
|
-
_a.sent();
|
|
281
|
-
expect(loadedSpy).toHaveBeenCalledWith(expect.objectContaining({ house: 'albergo' }));
|
|
282
|
-
return [2 /*return*/];
|
|
283
|
-
}
|
|
121
|
+
it('should render localized word with decorator', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
122
|
+
const wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
123
|
+
const elem = yield wrapper.findByText('Casa es maison');
|
|
124
|
+
expect(elem).toBeInTheDocument();
|
|
125
|
+
}));
|
|
126
|
+
it('should render localized word by extending class', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
127
|
+
const wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
|
|
128
|
+
const elem = yield wrapper.findByText('Casa es albergo');
|
|
129
|
+
expect(elem).toBeInTheDocument();
|
|
130
|
+
}));
|
|
131
|
+
it('should not overwrite state of localized class', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
132
|
+
const classWrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
|
|
133
|
+
const decoratorWrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
134
|
+
expect(yield classWrapper.findByText('a class nice starting point')).toBeInTheDocument();
|
|
135
|
+
expect(yield decoratorWrapper.findByText('a decorator nice starting point')).toBeInTheDocument();
|
|
136
|
+
}));
|
|
137
|
+
it('should render localized word with hook', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
138
|
+
const wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithHook, null));
|
|
139
|
+
const elem = yield wrapper.findByText('Casa es morada');
|
|
140
|
+
expect(elem).toBeInTheDocument();
|
|
141
|
+
}));
|
|
142
|
+
it('should wait locale json to load', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
143
|
+
locale_1.Locale.config({
|
|
144
|
+
locale: 'en'
|
|
284
145
|
});
|
|
285
|
-
|
|
146
|
+
const wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
147
|
+
const elem = yield wrapper.findByText('Casa es maison');
|
|
148
|
+
expect(elem).toBeInTheDocument();
|
|
149
|
+
}));
|
|
150
|
+
it('should notify on locale loaded with decorator', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
151
|
+
const wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
152
|
+
yield wrapper.findByText('Casa es maison');
|
|
153
|
+
expect(loadedSpy).toHaveBeenCalledWith(expect.objectContaining({ house: 'maison' }));
|
|
154
|
+
}));
|
|
155
|
+
it('should notify on locale loaded with class', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
156
|
+
const wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
|
|
157
|
+
yield wrapper.findByText('Casa es albergo');
|
|
158
|
+
expect(loadedSpy).toHaveBeenCalledWith(expect.objectContaining({ house: 'albergo' }));
|
|
159
|
+
}));
|
|
286
160
|
});
|
|
287
161
|
//# sourceMappingURL=react-localizer.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-localizer.spec.js","sourceRoot":"","sources":["../src/react-localizer.spec.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"react-localizer.spec.js","sourceRoot":"","sources":["../src/react-localizer.spec.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entropic-bond/localize-react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"branches": [
|
|
@@ -47,20 +47,21 @@
|
|
|
47
47
|
"@semantic-release/changelog": "^6.0.1",
|
|
48
48
|
"@semantic-release/git": "^10.0.1",
|
|
49
49
|
"@testing-library/jest-dom": "^5.16.4",
|
|
50
|
-
"@testing-library/react": "^13.
|
|
51
|
-
"@testing-library/user-event": "^14.
|
|
52
|
-
"@types/jest": "^27.
|
|
53
|
-
"@types/react": "^18.0.
|
|
54
|
-
"@types/react-dom": "^18.0.
|
|
50
|
+
"@testing-library/react": "^13.3.0",
|
|
51
|
+
"@testing-library/user-event": "^14.2.0",
|
|
52
|
+
"@types/jest": "^27.5.1",
|
|
53
|
+
"@types/react": "^18.0.9",
|
|
54
|
+
"@types/react-dom": "^18.0.5",
|
|
55
55
|
"fetch-mock": "^9.11.0",
|
|
56
56
|
"git-branch-is": "^4.0.0",
|
|
57
|
-
"husky": "^
|
|
58
|
-
"jest": "^
|
|
59
|
-
"
|
|
60
|
-
"react
|
|
57
|
+
"husky": "^8.0.1",
|
|
58
|
+
"jest": "^28.1.0",
|
|
59
|
+
"jest-environment-jsdom": "^28.1.0",
|
|
60
|
+
"react": "^18.1.0",
|
|
61
|
+
"react-dom": "^18.1.0",
|
|
61
62
|
"semantic-release": "^19.0.2",
|
|
62
|
-
"ts-jest": "^
|
|
63
|
-
"typescript": "^4.
|
|
63
|
+
"ts-jest": "^28.0.3",
|
|
64
|
+
"typescript": "^4.7.2"
|
|
64
65
|
},
|
|
65
66
|
"husky": {
|
|
66
67
|
"hooks": {
|