intl-template 0.0.1 → 0.0.2
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/README.md +0 -0
- package/dist/intl.js +8 -7
- package/dist/intl.js.map +1 -1
- package/dist/intl.test.d.ts +1 -0
- package/dist/intl.test.js +78 -0
- package/dist/intl.test.js.map +1 -0
- package/package.json +5 -3
- package/src/intl.js +8 -7
- package/src/intl.test.js +28 -0
package/README.md
ADDED
|
File without changes
|
package/dist/intl.js
CHANGED
|
@@ -42,19 +42,20 @@ export function translate(locale, strings) {
|
|
|
42
42
|
if (template.length !== strings.length) {
|
|
43
43
|
throw new Error("translate template parts length not match. locale: ".concat(locale, ", key: ").concat(key));
|
|
44
44
|
}
|
|
45
|
-
var ret =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
var ret = template.reduce(function (ret, template, idx) {
|
|
46
|
+
ret.push(template);
|
|
47
|
+
var orderIdx = order[idx];
|
|
48
|
+
if (orderIdx >= 0) {
|
|
49
|
+
var part = parts[orderIdx];
|
|
49
50
|
if (typeof part == "function") {
|
|
50
51
|
ret.push(part(locale, translation));
|
|
51
52
|
}
|
|
52
53
|
else {
|
|
53
54
|
ret.push(part);
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
}
|
|
57
|
+
return ret;
|
|
58
|
+
}, []);
|
|
58
59
|
var text = ret.join("");
|
|
59
60
|
Object.defineProperty(ret, "toString", {
|
|
60
61
|
enumerable: false,
|
package/dist/intl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intl.js","sourceRoot":"","sources":["../src/intl.js"],"names":[],"mappings":"AAAA,IAAM,YAAY,GAAG,EAAE,CAAA;AAEvB,MAAM,UAAU,aAAa,CAAC,MAAM,EAAE,UAAU;IAC/C,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,EAAY;YAAX,GAAG,QAAA,EAAE,KAAK,QAAA;QAChF,IAAM,KAAK,GAAG,EAAE,CAAC;QACjB,IAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACpC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK;YACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnB,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClB,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACxB,OAAM;YACP,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClB,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;gBAC3C,OAAM;YACP,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,CAAA;QAE9B,OAAO,GAAG,CAAA;IACX,CAAC,EAAE,EAAE,CAAC,CAAA;AACP,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAM,EAAE,OAAO;IAAE,eAAQ;SAAR,UAAQ,EAAR,qBAAQ,EAAR,IAAQ;QAAR,8BAAQ;;IAClD,IAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAM,WAAW,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,MAAM,CAAC,CAAA;IACtC,IAAA,KAAsB,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,GAAG,CAAC,KAAI,EAAE,EAA5C,QAAQ,cAAA,EAAE,KAAK,WAA6B,CAAA;IAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mCAA4B,GAAG,CAAE,EAAE,EAAE,WAAW,aAAA,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,KAAK,OAAA,EAAE,CAAC,CAAA;QACxF,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;QAC1B,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,EAAD,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6DAAsD,MAAM,oBAAU,GAAG,CAAE,CAAC,CAAA;IAC7F,CAAC;IAED,IAAM,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"intl.js","sourceRoot":"","sources":["../src/intl.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
+
return cooked;
|
|
4
|
+
};
|
|
5
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
6
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
9
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
11
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
15
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
16
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
17
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
18
|
+
function step(op) {
|
|
19
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
20
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
21
|
+
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;
|
|
22
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
23
|
+
switch (op[0]) {
|
|
24
|
+
case 0: case 1: t = op; break;
|
|
25
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
26
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
27
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
28
|
+
default:
|
|
29
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
30
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
31
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
32
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
33
|
+
if (t[2]) _.ops.pop();
|
|
34
|
+
_.trys.pop(); continue;
|
|
35
|
+
}
|
|
36
|
+
op = body.call(thisArg, _);
|
|
37
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
38
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
import assert from 'node:assert';
|
|
42
|
+
import test from 'node:test';
|
|
43
|
+
import { translate, setTransition } from './intl.js';
|
|
44
|
+
test('apply template', function (t) { return __awaiter(void 0, void 0, void 0, function () {
|
|
45
|
+
var l10n;
|
|
46
|
+
return __generator(this, function (_a) {
|
|
47
|
+
setTransition('zh-CN', {
|
|
48
|
+
'abc {} def {}': '甲乙丙 {} {} 丁戊卯',
|
|
49
|
+
});
|
|
50
|
+
l10n = translate.bind(null, 'zh-CN');
|
|
51
|
+
assert.deepEqual(l10n(templateObject_1 || (templateObject_1 = __makeTemplateObject(["abc ", " def ", ""], ["abc ", " def ", ""])), 123, 345), ['甲乙丙 ', 123, ' ', 345, ' 丁戊卯']);
|
|
52
|
+
return [2 /*return*/];
|
|
53
|
+
});
|
|
54
|
+
}); });
|
|
55
|
+
test('change slot order', function (t) { return __awaiter(void 0, void 0, void 0, function () {
|
|
56
|
+
var l10n;
|
|
57
|
+
return __generator(this, function (_a) {
|
|
58
|
+
setTransition('zh-CN', {
|
|
59
|
+
'abc {} def {}': '甲乙丙 {1} {0} 丁戊卯',
|
|
60
|
+
});
|
|
61
|
+
l10n = translate.bind(null, 'zh-CN');
|
|
62
|
+
assert.equal(l10n(templateObject_2 || (templateObject_2 = __makeTemplateObject(["abc ", " def ", ""], ["abc ", " def ", ""])), 123, 345).toString(), '甲乙丙 345 123 丁戊卯');
|
|
63
|
+
return [2 /*return*/];
|
|
64
|
+
});
|
|
65
|
+
}); });
|
|
66
|
+
test('slot function', function (t) { return __awaiter(void 0, void 0, void 0, function () {
|
|
67
|
+
var l10n;
|
|
68
|
+
return __generator(this, function (_a) {
|
|
69
|
+
setTransition('zh-CN', {
|
|
70
|
+
'{} def {}': '{1} {0} 丁戊卯',
|
|
71
|
+
});
|
|
72
|
+
l10n = translate.bind(null, 'zh-CN');
|
|
73
|
+
assert.equal(l10n(templateObject_3 || (templateObject_3 = __makeTemplateObject(["", " def ", ""], ["", " def ", ""])), function (locale) { return locale; }, 345).toString(), '345 zh-CN 丁戊卯');
|
|
74
|
+
return [2 /*return*/];
|
|
75
|
+
});
|
|
76
|
+
}); });
|
|
77
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
|
78
|
+
//# sourceMappingURL=intl.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intl.test.js","sourceRoot":"","sources":["../src/intl.test.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGrD,IAAI,CAAC,gBAAgB,EAAE,UAAO,CAAC;;;QAC9B,aAAa,CAAC,OAAO,EAAE;YACtB,eAAe,EAAE,eAAe;SAChC,CAAC,CAAA;QACI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,sFAAA,MAAO,EAAG,OAAQ,EAAG,EAAE,KAAhB,GAAG,EAAQ,GAAG,GAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;;;KAC9E,CAAC,CAAC;AAEH,IAAI,CAAC,mBAAmB,EAAE,UAAO,CAAC;;;QACjC,aAAa,CAAC,OAAO,EAAE;YACtB,eAAe,EAAE,iBAAiB;SAClC,CAAC,CAAA;QACI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,sFAAA,MAAO,EAAG,OAAQ,EAAG,EAAE,KAAhB,GAAG,EAAQ,GAAG,EAAG,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAA;;;KACvE,CAAC,CAAC;AAEH,IAAI,CAAC,eAAe,EAAE,UAAO,CAAC;;;QAC7B,aAAa,CAAC,OAAO,EAAE;YACtB,WAAW,EAAE,aAAa;SAC1B,CAAC,CAAA;QACI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,kFAAA,EAAG,EAAgB,OAAQ,EAAG,EAAE,KAA7B,UAAA,MAAM,IAAI,OAAA,MAAM,EAAN,CAAM,EAAQ,GAAG,EAAG,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;;;KAC9E,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "intl-template",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "l10n tagged template literals",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "dist/intl.js",
|
|
6
7
|
"module": "src/intl.js",
|
|
7
8
|
"scripts": {
|
|
8
|
-
"build": "tsc"
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"test": "node --test"
|
|
9
11
|
},
|
|
10
12
|
"keywords": [
|
|
11
13
|
"i18n",
|
package/src/intl.js
CHANGED
|
@@ -44,18 +44,19 @@ export function translate(locale, strings, ...parts) {
|
|
|
44
44
|
throw new Error(`translate template parts length not match. locale: ${locale}, key: ${key}`)
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
const ret =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
const ret = template.reduce((ret, template, idx) => {
|
|
48
|
+
ret.push(template)
|
|
49
|
+
const orderIdx = order[idx]
|
|
50
|
+
if (orderIdx >= 0) {
|
|
51
|
+
const part = parts[orderIdx]
|
|
51
52
|
if (typeof part == "function") {
|
|
52
53
|
ret.push(part(locale, translation))
|
|
53
54
|
} else {
|
|
54
55
|
ret.push(part)
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
}
|
|
58
|
+
return ret
|
|
59
|
+
}, [])
|
|
59
60
|
|
|
60
61
|
const text = ret.join("")
|
|
61
62
|
Object.defineProperty(ret, "toString", {
|
package/src/intl.test.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { translate, setTransition } from './intl.js';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
test('apply template', async (t) => {
|
|
7
|
+
setTransition('zh-CN', {
|
|
8
|
+
'abc {} def {}': '甲乙丙 {} {} 丁戊卯',
|
|
9
|
+
})
|
|
10
|
+
const l10n = translate.bind(null, 'zh-CN')
|
|
11
|
+
assert.deepEqual(l10n`abc ${123} def ${345}`, ['甲乙丙 ', 123, ' ', 345, ' 丁戊卯'])
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('change slot order', async (t) => {
|
|
15
|
+
setTransition('zh-CN', {
|
|
16
|
+
'abc {} def {}': '甲乙丙 {1} {0} 丁戊卯',
|
|
17
|
+
})
|
|
18
|
+
const l10n = translate.bind(null, 'zh-CN')
|
|
19
|
+
assert.equal(l10n`abc ${123} def ${345}`.toString(), '甲乙丙 345 123 丁戊卯')
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('slot function', async (t) => {
|
|
23
|
+
setTransition('zh-CN', {
|
|
24
|
+
'{} def {}': '{1} {0} 丁戊卯',
|
|
25
|
+
})
|
|
26
|
+
const l10n = translate.bind(null, 'zh-CN')
|
|
27
|
+
assert.equal(l10n`${locale => locale} def ${345}`.toString(), '345 zh-CN 丁戊卯')
|
|
28
|
+
});
|