UNPKG

11.7 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3function buildLocale(locale, definition) {
4 return { locale: locale, definition: definition };
5}
6exports.buildLocale = buildLocale;
7function createStringBuilders(locale) {
8 var MessageFormat = require('messageformat');
9 var mf = new MessageFormat(locale);
10 return {
11 constant: function (str) {
12 return function () { return str; };
13 },
14 callback: function (cb) {
15 return cb;
16 },
17 messageFormat: function (formatString) {
18 return mf.compile(formatString);
19 },
20 };
21}
22function format(definition, fallback, bundleOrKey, data) {
23 if (process.env.NODE_ENV !== 'production' && !definition) {
24 throw new TypeError('definition must be provided');
25 }
26 if (bundleOrKey && typeof bundleOrKey === 'object') {
27 var targetKey = definition[bundleOrKey.key] || (fallback && fallback[bundleOrKey.key]);
28 if (process.env.NODE_ENV !== 'production' && !targetKey) {
29 throw new TypeError('provided bundle key does not exist in definition or the fallback');
30 }
31 return targetKey(bundleOrKey.data);
32 }
33 if (typeof bundleOrKey === 'string') {
34 var targetKey = definition[bundleOrKey] || (fallback && fallback[bundleOrKey]);
35 if (process.env.NODE_ENV !== 'production' && !targetKey) {
36 throw new TypeError('provided key does not exist in definition or the fallback');
37 }
38 return targetKey(data);
39 }
40 return '';
41}
42function internationalize(main) {
43 var alts = [];
44 for (var _i = 1; _i < arguments.length; _i++) {
45 alts[_i - 1] = arguments[_i];
46 }
47 var mainDefinition = main.definition(createStringBuilders(main.locale));
48 var keys = {};
49 for (var _a = 0, _b = Object.keys(mainDefinition); _a < _b.length; _a++) {
50 var key = _b[_a];
51 keys[key] = key;
52 }
53 function bundle(key, data) {
54 return { key: key, data: data };
55 }
56 function buildFormatter(locale) {
57 if (locale === main.locale) {
58 return function (bundleOrKey, data) {
59 return format(mainDefinition, undefined, bundleOrKey, data);
60 };
61 }
62 var target = alts.find(function (alt) { return alt.locale === locale; });
63 if (!target) {
64 throw new Error("The provided locale " + locale + " does not exist in the list of languages.");
65 }
66 var targetDefinition = target.definition(createStringBuilders(locale));
67 return function (bundleOrKey, data) {
68 return format(targetDefinition, mainDefinition, bundleOrKey, data);
69 };
70 }
71 return { keys: keys, bundle: bundle, buildFormatter: buildFormatter };
72}
73exports.internationalize = internationalize;
74//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0JBLHFCQUNFLE1BQWMsRUFDZCxVQUE2RDtJQUU3RCxNQUFNLENBQUMsRUFBRSxNQUFNLFFBQUEsRUFBRSxVQUFVLFlBQUEsRUFBRSxDQUFDO0FBQ2hDLENBQUM7QUFMRCxrQ0FLQztBQXFCRCw4QkFBOEIsTUFBYztJQUMxQyxJQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsSUFBTSxFQUFFLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFckMsTUFBTSxDQUFDO1FBQ0wsUUFBUSxZQUFDLEdBQVc7WUFDbEIsTUFBTSxDQUFDLGNBQU0sT0FBQSxHQUFHLEVBQUgsQ0FBRyxDQUFDO1FBQ25CLENBQUM7UUFDRCxRQUFRLFlBQUMsRUFBMEI7WUFDakMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxhQUFhLFlBQUMsWUFBb0I7WUFDaEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsZ0JBQ0UsVUFBeUIsRUFDekIsUUFBbUMsRUFDbkMsV0FBNEIsRUFDNUIsSUFBVTtJQUVWLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxJQUFJLFNBQVMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxFQUFFLENBQUMsQ0FBQyxXQUFXLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJ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eHBvcnQgaW50ZXJmYWNlIEJ1bmRsZTxLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBEID0gYW55PiB7XHJcbiAga2V5OiBLO1xyXG4gIGRhdGE/OiBEO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ0J1aWxkZXI8RCA9IGFueT4ge1xyXG4gIChkYXRhPzogRCk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdCdWlsZGVycyB7XHJcbiAgY29uc3RhbnQoc3RyOiBzdHJpbmcpOiBTdHJpbmdCdWlsZGVyPHVuZGVmaW5lZD47XHJcbiAgY2FsbGJhY2s8RD4oY2FsbGJhY2s6IChkYXRhPzogRCkgPT4gc3RyaW5nKTogU3RyaW5nQnVpbGRlcjxEPjtcclxuICBtZXNzYWdlRm9ybWF0PEQ+KGZvcm1hdFN0cmluZzogc3RyaW5nKTogU3RyaW5nQnVpbGRlcjxEPjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGVmaW5pdGlvbjxUPiA9IHtcclxuICBbUCBpbiBrZXlvZiBUXTogU3RyaW5nQnVpbGRlcjxUW1BdPjtcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxlPFQ+IHtcclxuICBsb2NhbGU6IHN0cmluZztcclxuICBkZWZpbml0aW9uOiAoYnVpbGRlcnM6IFN0cmluZ0J1aWxkZXJzKSA9PiBEZWZpbml0aW9uPFQ+O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMb2NhbGU8VD4oXHJcbiAgbG9jYWxlOiBzdHJpbmcsXHJcbiAgZGVmaW5pdGlvbjogKHN0cmluZ0J1aWxkZXJzOiBTdHJpbmdCdWlsZGVycykgPT4gRGVmaW5pdGlvbjxUPixcclxuKTogTG9jYWxlPFQ+IHtcclxuICByZXR1cm4geyBsb2NhbGUsIGRlZmluaXRpb24gfTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgS2V5czxUPiA9IHtcclxuICBbUCBpbiBrZXlvZiBUXTogUDtcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlcjxUPiB7XHJcbiAgPEsgZXh0ZW5kcyBrZXlvZiBUPihrZXk6IEssIGRhdGE/OiBUW0tdKTogQnVuZGxlPEssIFRbS10+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlcjxUPiB7XHJcbiAgPEsgZXh0ZW5kcyBrZXlvZiBUPihrZXk6IEssIGRhdGE/OiBUW0tdKTogc3RyaW5nO1xyXG4gIDxLIGV4dGVuZHMga2V5b2YgVD4oYnVuZGxlOiBCdW5kbGU8SywgVFtLXT4pOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYXRpb25hbGl6YXRpb248VD4ge1xyXG4gIGtleXM6IEtleXM8VD47XHJcbiAgYnVuZGxlOiBCdW5kbGVyPFQ+O1xyXG4gIGJ1aWxkRm9ybWF0dGVyKGxvY2FsZTogc3RyaW5nKTogRm9ybWF0dGVyPFQ+O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdCdWlsZGVycyhsb2NhbGU6IHN0cmluZyk6IFN0cmluZ0J1aWxkZXJzIHtcclxuICBjb25zdCBNZXNzYWdlRm9ybWF0ID0gcmVxdWlyZSgnbWVzc2FnZWZvcm1hdCcpO1xyXG4gIGNvbnN0IG1mID0gbmV3IE1lc3NhZ2VGb3JtYXQobG9jYWxlKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGNvbnN0YW50KHN0cjogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiAoKSA9PiBzdHI7XHJcbiAgICB9LFxyXG4gICAgY2FsbGJhY2soY2I6IChkYXRhPzogYW55KSA9PiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGNiO1xyXG4gICAgfSxcclxuICAgIG1lc3NhZ2VGb3JtYXQoZm9ybWF0U3RyaW5nOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIG1mLmNvbXBpbGUoZm9ybWF0U3RyaW5nKTtcclxuICAgIH0sXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZm9ybWF0PFQ+KFxyXG4gIGRlZmluaXRpb246IERlZmluaXRpb248VD4sXHJcbiAgZmFsbGJhY2s6IERlZmluaXRpb248VD4gfCB1bmRlZmluZWQsXHJcbiAgYnVuZGxlT3JLZXk6IEJ1bmRsZSB8IHN0cmluZyxcclxuICBkYXRhPzogYW55LFxyXG4pOiBzdHJpbmcge1xyXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFkZWZpbml0aW9uKSB7XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkZWZpbml0aW9uIG11c3QgYmUgcHJvdmlkZWQnKTtcclxuICB9XHJcblxyXG4gIGlmIChidW5kbGVPcktleSAmJiB0eXBlb2YgYnVuZGxlT3JLZXkgPT09ICdvYmplY3QnKSB7XHJcbiAgICBjb25zdCB0YXJnZXRLZXkgPSBkZWZpbml0aW9uW2J1bmRsZU9yS2V5LmtleV0gfHwgKGZhbGxiYWNrICYmIGZhbGxiYWNrW2J1bmRsZU9yS2V5LmtleV0pO1xyXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXRhcmdldEtleSkge1xyXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwcm92aWRlZCBidW5kbGUga2V5IGRvZXMgbm90IGV4aXN0IGluIGRlZmluaXRpb24gb3IgdGhlIGZhbGxiYWNrJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGFyZ2V0S2V5KGJ1bmRsZU9yS2V5LmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHR5cGVvZiBidW5kbGVPcktleSA9PT0gJ3N0cmluZycpIHtcclxuICAgIGNvbnN0IHRhcmdldEtleSA9IGRlZmluaXRpb25bYnVuZGxlT3JLZXldIHx8IChmYWxsYmFjayAmJiBmYWxsYmFja1tidW5kbGVPcktleV0pO1xyXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXRhcmdldEtleSkge1xyXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwcm92aWRlZCBrZXkgZG9lcyBub3QgZXhpc3QgaW4gZGVmaW5pdGlvbiBvciB0aGUgZmFsbGJhY2snKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0YXJnZXRLZXkoZGF0YSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gJyc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbnRlcm5hdGlvbmFsaXplPFQ+KFxyXG4gIG1haW46IExvY2FsZTxUPixcclxuICAuLi5hbHRzOiBMb2NhbGU8UGFydGlhbDxUPj5bXSxcclxuKTogSW50ZXJuYXRpb25hbGl6YXRpb248VD4ge1xyXG4gIGNvbnN0IG1haW5EZWZpbml0aW9uID0gbWFpbi5kZWZpbml0aW9uKGNyZWF0ZVN0cmluZ0J1aWxkZXJzKG1haW4ubG9jYWxlKSk7XHJcblxyXG4gIGNvbnN0IGtleXMgPSA8S2V5czxUPj57fTtcclxuXHJcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWFpbkRlZmluaXRpb24pKSB7XHJcbiAgICBrZXlzW2tleV0gPSBrZXk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBidW5kbGU8SyBleHRlbmRzIGtleW9mIFQ+KGtleTogSywgZGF0YT86IFRbS10pIHtcclxuICAgIHJldHVybiB7IGtleSwgZGF0YSB9O1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gYnVpbGRGb3JtYXR0ZXIobG9jYWxlOiBzdHJpbmcpOiBGb3JtYXR0ZXI8VD4ge1xyXG4gICAgaWYgKGxvY2FsZSA9PT0gbWFpbi5sb2NhbGUpIHtcclxuICAgICAgcmV0dXJuIChidW5kbGVPcktleTogQnVuZGxlIHwgc3RyaW5nLCBkYXRhPzogYW55KSA9PlxyXG4gICAgICAgIGZvcm1hdChtYWluRGVmaW5pdGlvbiwgdW5kZWZpbmVkLCBidW5kbGVPcktleSwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0ID0gYWx0cy5maW5kKGFsdCA9PiBhbHQubG9jYWxlID09PSBsb2NhbGUpO1xyXG5cclxuICAgIGlmICghdGFyZ2V0KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHByb3ZpZGVkIGxvY2FsZSAke2xvY2FsZX0gZG9lcyBub3QgZXhpc3QgaW4gdGhlIGxpc3Qgb2YgbGFuZ3VhZ2VzLmApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRhcmdldERlZmluaXRpb24gPSB0YXJnZXQuZGVmaW5pdGlvbihjcmVhdGVTdHJpbmdCdWlsZGVycyhsb2NhbGUpKTtcclxuXHJcbiAgICByZXR1cm4gKGJ1bmRsZU9yS2V5OiBCdW5kbGUgfCBzdHJpbmcsIGRhdGE/OiBhbnkpID0+XHJcbiAgICAgIGZvcm1hdCh0YXJnZXREZWZpbml0aW9uLCBtYWluRGVmaW5pdGlvbiwgYnVuZGxlT3JLZXksIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHsga2V5cywgYnVuZGxlLCBidWlsZEZvcm1hdHRlciB9O1xyXG59XHJcbiJdfQ==
\No newline at end of file