smartloc 2.0.1 → 2.0.3
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/adapters/adapter-base.d.ts +12 -0
- package/adapters/adapter-base.js +56 -0
- package/adapters/adapter-base.js.map +1 -0
- package/adapters/index.d.ts +4 -0
- package/adapters/index.js +32 -0
- package/adapters/index.js.map +1 -0
- package/adapters/json.d.ts +6 -0
- package/adapters/json.js +23 -0
- package/adapters/json.js.map +1 -0
- package/adapters/xliff.d.ts +6 -0
- package/adapters/xliff.js +35 -0
- package/adapters/xliff.js.map +1 -0
- package/cli/cli.d.ts +2 -0
- package/cli/cli.js +129 -0
- package/cli/cli.js.map +1 -0
- package/cli/collect.d.ts +14 -0
- package/{src/cli/collect.ts → cli/collect.js} +59 -75
- package/cli/collect.js.map +1 -0
- package/cli/interfaces.js +3 -0
- package/cli/interfaces.js.map +1 -0
- package/cli/reconciliate.d.ts +6 -0
- package/{src/cli/reconciliate.ts → cli/reconciliate.js} +35 -40
- package/cli/reconciliate.js.map +1 -0
- package/cli/utils.d.ts +6 -0
- package/{src/cli/utils.ts → cli/utils.js} +16 -12
- package/cli/utils.js.map +1 -0
- package/core/default-locale.d.ts +10 -0
- package/{src/core/default-locale.tsx → core/default-locale.js} +23 -28
- package/core/default-locale.js.map +1 -0
- package/{src/core/interfaces.ts → core/interfaces.d.ts} +15 -20
- package/core/interfaces.js +3 -0
- package/core/interfaces.js.map +1 -0
- package/core/json-utils.d.ts +19 -0
- package/{src/core/json-utils.ts → core/json-utils.js} +27 -33
- package/core/json-utils.js.map +1 -0
- package/core/literal.d.ts +13 -0
- package/{src/core/literal.ts → core/literal.js} +20 -19
- package/core/literal.js.map +1 -0
- package/core/load.d.ts +32 -0
- package/core/load.js +50 -0
- package/core/load.js.map +1 -0
- package/core/locale-list.d.ts +27 -0
- package/{src/core/locale-list.ts → core/locale-list.js} +36 -37
- package/core/locale-list.js.map +1 -0
- package/core/locale.d.ts +15 -0
- package/{src/core/locale.tsx → core/locale.js} +29 -28
- package/core/locale.js.map +1 -0
- package/core/smartloc.d.ts +39 -0
- package/{src/core/smartloc.tsx → core/smartloc.js} +113 -120
- package/core/smartloc.js.map +1 -0
- package/core/tag.d.ts +13 -0
- package/core/tag.js +28 -0
- package/core/tag.js.map +1 -0
- package/core/utils.d.ts +4 -0
- package/core/utils.js +30 -0
- package/core/utils.js.map +1 -0
- package/express.d.ts +12 -0
- package/{src/express.ts → express.js} +33 -41
- package/express.js.map +1 -0
- package/graphql.d.ts +13 -0
- package/{src/graphql.ts → graphql.js} +62 -74
- package/graphql.js.map +1 -0
- package/index.js +30 -1
- package/index.js.map +1 -0
- package/node/index.d.ts +1 -0
- package/node/index.js +18 -0
- package/node/index.js.map +1 -0
- package/node/load.d.ts +12 -0
- package/node/load.js +37 -0
- package/node/load.js.map +1 -0
- package/package.json +3 -22
- package/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc +0 -111
- package/.vscode/launch.json +0 -65
- package/.vscode/settings.json +0 -14
- package/.vscode/tasks.json +0 -27
- package/build/README.md +0 -225
- package/build/package.json +0 -60
- package/bun.lock +0 -310
- package/samples/express/main.ts +0 -37
- package/samples/express/package.json +0 -10
- package/samples/graphql/main.ts +0 -73
- package/samples/graphql/package.json +0 -15
- package/src/adapters/adapter-base.ts +0 -58
- package/src/adapters/index.ts +0 -31
- package/src/adapters/json.ts +0 -18
- package/src/adapters/xliff.ts +0 -30
- package/src/cli/cli.ts +0 -137
- package/src/core/load.ts +0 -82
- package/src/core/tag.ts +0 -40
- package/src/core/utils.tsx +0 -24
- package/src/node/index.ts +0 -1
- package/src/node/load.ts +0 -32
- package/test/collect.spec.ts +0 -45
- package/test/reconciliation.spec.ts +0 -132
- package/test/serialization.spec.ts +0 -162
- package/test/translation.spec.ts +0 -61
- package/tsconfig.json +0 -37
- package/tslint.json +0 -103
- /package/{src/cli/interfaces.ts → cli/interfaces.d.ts} +0 -0
- /package/{src/index.ts → index.d.ts} +0 -0
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.reconciliate = reconciliate;
|
|
7
|
+
const js_levenshtein_1 = __importDefault(require("js-levenshtein"));
|
|
8
|
+
const diacritics_1 = __importDefault(require("diacritics"));
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
const cache = {};
|
|
11
|
+
function asKey(t) {
|
|
9
12
|
const str = typeof t === 'string' ? t : t.plural;
|
|
10
13
|
if (cache[str]) {
|
|
11
14
|
return cache[str];
|
|
12
15
|
}
|
|
13
|
-
return cache[str] =
|
|
16
|
+
return cache[str] = diacritics_1.default.remove(str.toLowerCase().trim());
|
|
14
17
|
}
|
|
15
|
-
|
|
16
|
-
export function reconciliate(translations: Translation, source: Translation) {
|
|
18
|
+
function reconciliate(translations, source) {
|
|
17
19
|
// source is the new one
|
|
18
20
|
translations.sourceLanguage = source.targetLanguage;
|
|
19
|
-
|
|
20
21
|
// stores which translations do not exist in code anymore
|
|
21
|
-
const translatedLost
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (trans.source && !deepEqual(trans.source, src.target)) {
|
|
22
|
+
const translatedLost = {};
|
|
23
|
+
function updateWithOrig(trans, origId, src) {
|
|
24
|
+
if (trans.source && !(0, utils_1.deepEqual)(trans.source, src.target)) {
|
|
25
25
|
trans.dirty = true;
|
|
26
26
|
}
|
|
27
27
|
trans.source = src.target ?? undefined;
|
|
@@ -29,14 +29,14 @@ export function reconciliate(translations: Translation, source: Translation) {
|
|
|
29
29
|
// remove it from 'def'
|
|
30
30
|
delete source.resources[origId];
|
|
31
31
|
}
|
|
32
|
-
|
|
33
32
|
// update source lines
|
|
34
33
|
for (const [id, trans] of Object.entries(translations.resources)) {
|
|
35
34
|
const d = source.resources[id];
|
|
36
35
|
if (d) {
|
|
37
36
|
// already exists => update
|
|
38
37
|
updateWithOrig(trans, id, d);
|
|
39
|
-
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
40
|
// does not exist anymore => remove, but keep in mind.
|
|
41
41
|
delete translations.resources[id];
|
|
42
42
|
if (trans.source) {
|
|
@@ -44,7 +44,6 @@ export function reconciliate(translations: Translation, source: Translation) {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
|
|
48
47
|
// for each NEW translations missing
|
|
49
48
|
// try to reconciliate with those which have changed id, but still same translation.
|
|
50
49
|
for (const [id, value] of Object.entries(source.resources)) {
|
|
@@ -56,30 +55,27 @@ export function reconciliate(translations: Translation, source: Translation) {
|
|
|
56
55
|
updateWithOrig(translatedLost[cleanTarget], id, value);
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
|
-
|
|
60
58
|
// try to reconciliate with strings that look alike
|
|
61
59
|
// nb: avoid doing that when too much deleted translations: Levenshtein distance computation is expensive
|
|
62
60
|
const lostKeys = Object.keys(translatedLost);
|
|
63
61
|
if (Object.keys(source.resources).length * lostKeys.length < 5000 && lostKeys.length > 0) {
|
|
64
|
-
const reconc
|
|
62
|
+
const reconc = [];
|
|
65
63
|
for (const lk of lostKeys) {
|
|
66
64
|
reconc.push(...Object.entries(source.resources)
|
|
67
65
|
.map(([id, orig]) => {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
66
|
+
// distance between the lost source & the new source
|
|
67
|
+
const target = orig.target ? asKey(orig.target) : null;
|
|
68
|
+
const distance = target ? (0, js_levenshtein_1.default)(lk, target) : Infinity;
|
|
69
|
+
return {
|
|
70
|
+
origId: id,
|
|
71
|
+
orig,
|
|
72
|
+
translatedLostSource: lk,
|
|
73
|
+
distance: distance,
|
|
74
|
+
};
|
|
75
|
+
})
|
|
78
76
|
// forbids to much change
|
|
79
|
-
.filter(x => x.distance < lk.length / 1.5)
|
|
80
|
-
);
|
|
77
|
+
.filter(x => x.distance < lk.length / 1.5));
|
|
81
78
|
}
|
|
82
|
-
|
|
83
79
|
reconc.sort((a, b) => a.distance - b.distance);
|
|
84
80
|
const done = new Set();
|
|
85
81
|
for (const d of reconc) {
|
|
@@ -90,25 +86,23 @@ export function reconciliate(translations: Translation, source: Translation) {
|
|
|
90
86
|
updateWithOrig(translatedLost[d.translatedLostSource], d.origId, d.orig);
|
|
91
87
|
}
|
|
92
88
|
}
|
|
93
|
-
|
|
94
89
|
// finally, add new translations...
|
|
95
90
|
for (const [id, value] of Object.entries(source.resources)) {
|
|
96
91
|
translations.resources[id] = {
|
|
97
92
|
source: value.target ?? undefined,
|
|
98
93
|
};
|
|
99
94
|
}
|
|
100
|
-
|
|
101
95
|
// try to reconciliate
|
|
102
|
-
|
|
103
96
|
// count things
|
|
104
97
|
let missing = 0;
|
|
105
|
-
const same
|
|
98
|
+
const same = [];
|
|
106
99
|
let dirty = 0;
|
|
107
100
|
for (const [k, c] of Object.entries(translations.resources)) {
|
|
108
101
|
if (!c.target) {
|
|
109
102
|
missing++;
|
|
110
103
|
c.target = null; // so it is serialized as json
|
|
111
|
-
}
|
|
104
|
+
}
|
|
105
|
+
else if (c.target === c.source) {
|
|
112
106
|
same.push(k);
|
|
113
107
|
}
|
|
114
108
|
if (c.dirty) {
|
|
@@ -116,4 +110,5 @@ export function reconciliate(translations: Translation, source: Translation) {
|
|
|
116
110
|
}
|
|
117
111
|
}
|
|
118
112
|
return { missing, same, dirty };
|
|
119
|
-
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=reconciliate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciliate.js","sourceRoot":"","sources":["../../src/cli/reconciliate.ts"],"names":[],"mappings":"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"}
|
package/cli/utils.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CollectResult, GroupedTranslation, Translation } from '../core/load';
|
|
2
|
+
export declare function groupByNamespace(trans: CollectResult): {
|
|
3
|
+
[namespace: string]: CollectResult;
|
|
4
|
+
};
|
|
5
|
+
export declare function toGroupedTranslation(translation: Translation): GroupedTranslation;
|
|
6
|
+
export declare function deepEqual<T>(obj1: T, obj2: T): boolean;
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.groupByNamespace = groupByNamespace;
|
|
7
|
+
exports.toGroupedTranslation = toGroupedTranslation;
|
|
8
|
+
exports.deepEqual = deepEqual;
|
|
9
|
+
const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
|
|
10
|
+
function groupByNamespace(trans) {
|
|
11
|
+
const result = {};
|
|
6
12
|
for (let [id, v] of Object.entries(trans)) {
|
|
7
13
|
let namespace = '$default';
|
|
8
14
|
const i = id.indexOf('.');
|
|
@@ -17,20 +23,18 @@ export function groupByNamespace(trans: CollectResult): {[namespace: string]: Co
|
|
|
17
23
|
}
|
|
18
24
|
return result;
|
|
19
25
|
}
|
|
20
|
-
|
|
21
|
-
export function toGroupedTranslation(translation: Translation): GroupedTranslation {
|
|
26
|
+
function toGroupedTranslation(translation) {
|
|
22
27
|
return {
|
|
23
28
|
resources: groupByNamespace(translation.resources),
|
|
24
29
|
sourceLanguage: translation.sourceLanguage,
|
|
25
30
|
targetLanguage: translation.targetLanguage,
|
|
26
31
|
};
|
|
27
32
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
export function deepEqual<T>(obj1: T, obj2: T): boolean {
|
|
33
|
+
function deepEqual(obj1, obj2) {
|
|
31
34
|
// if (typeof Bun !== 'undefined') {
|
|
32
35
|
// const inst = Bun;
|
|
33
36
|
// return inst.deepEquals(obj1, obj2);
|
|
34
37
|
// }
|
|
35
|
-
return
|
|
36
|
-
}
|
|
38
|
+
return (0, fast_deep_equal_1.default)(obj1, obj2);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=utils.js.map
|
package/cli/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":";;;;;AAGA,4CAeC;AAED,oDAMC;AAGD,8BAMC;AAnCD,sEAA4C;AAG5C,SAAgB,gBAAgB,CAAC,KAAoB;IACjD,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,IAAI,SAAS,GAAG,UAAU,CAAC;QAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAAwB;IACzD,OAAO;QACH,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC;QAClD,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,cAAc,EAAE,WAAW,CAAC,cAAc;KAC7C,CAAC;AACN,CAAC;AAGD,SAAgB,SAAS,CAAI,IAAO,EAAE,IAAO;IACzC,oCAAoC;IACpC,wBAAwB;IACxB,0CAA0C;IAC1C,IAAI;IACJ,OAAO,IAAA,yBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ILocaleDef, LocLiteral, ILiteralLocalizer } from './interfaces';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export declare class DefaultLocale implements ILocaleDef {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly literals: ILiteralLocalizer;
|
|
6
|
+
readonly code: string | undefined;
|
|
7
|
+
constructor(id: string);
|
|
8
|
+
localize(id: string, count: number | null, parts: TemplateStringsArray | null, placeholders: LocLiteral[] | null, react: false): string;
|
|
9
|
+
localize(id: string, count: number | null, parts: TemplateStringsArray | null, placeholders: LocLiteral[] | null, react: true): React.ReactNode;
|
|
10
|
+
}
|
|
@@ -1,54 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const emptyStringAutoId = autoGenerateId([]);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.literals = new LiteralLocalizer(this);
|
|
15
|
-
this.code = getLocaleCode(id);
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultLocale = void 0;
|
|
4
|
+
const literal_1 = require("./literal");
|
|
5
|
+
const locale_list_1 = require("./locale-list");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const emptyStringAutoId = (0, utils_1.autoGenerateId)([]);
|
|
8
|
+
class DefaultLocale {
|
|
9
|
+
id;
|
|
10
|
+
literals;
|
|
11
|
+
code;
|
|
12
|
+
constructor(id) {
|
|
13
|
+
this.id = id;
|
|
14
|
+
this.literals = new literal_1.LiteralLocalizer(this);
|
|
15
|
+
this.code = (0, utils_1.getLocaleCode)(id);
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
localize(id: string, count: number | null, parts: TemplateStringsArray | null, placeholders: LocLiteral[] | null, react: true): React.ReactNode;
|
|
20
|
-
localize(id: string, count: number | null, parts: TemplateStringsArray | null, placeholders: LocLiteral[] | null, react: boolean): string | React.ReactNode {
|
|
21
|
-
const existing = getLocale(this.id);
|
|
17
|
+
localize(id, count, parts, placeholders, react) {
|
|
18
|
+
const existing = (0, locale_list_1.getLocale)(this.id);
|
|
22
19
|
if (existing) {
|
|
23
20
|
const exist = existing.localize(id, count, parts, placeholders, react);
|
|
24
21
|
if (exist) {
|
|
25
22
|
return exist;
|
|
26
23
|
}
|
|
27
24
|
}
|
|
28
|
-
|
|
29
25
|
if (!parts || !placeholders) {
|
|
30
26
|
// special case for empty string, which could not be translated.
|
|
31
27
|
if (id === emptyStringAutoId) {
|
|
32
28
|
return '';
|
|
33
29
|
}
|
|
34
|
-
throw new Error(`The smartloc string "${id}" cannot be translated to your default locale. It is likely that is has been deserialized. In order to support deserialized strings, you MUST load your default locale as a classic locale. nb: To generate your default locale translation file through smartloc CLI, use --generateDefault option`)
|
|
30
|
+
throw new Error(`The smartloc string "${id}" cannot be translated to your default locale. It is likely that is has been deserialized. In order to support deserialized strings, you MUST load your default locale as a classic locale. nb: To generate your default locale translation file through smartloc CLI, use --generateDefault option`);
|
|
35
31
|
}
|
|
36
|
-
|
|
37
32
|
// fallback to the in-code translation
|
|
38
|
-
const result
|
|
39
|
-
|
|
33
|
+
const result = [];
|
|
40
34
|
// interleave the literals with the placeholders
|
|
41
35
|
for (let i = 0; i < placeholders.length; i++) {
|
|
42
36
|
result.push(parts[i]);
|
|
43
37
|
result.push(this.literals.localize(placeholders[i], react));
|
|
44
38
|
}
|
|
45
|
-
|
|
46
39
|
// add the last literal
|
|
47
40
|
result.push(parts[parts.length - 1]);
|
|
48
41
|
if (react) {
|
|
49
42
|
// return a fragment having result as children
|
|
50
|
-
return asFragment(result);
|
|
43
|
+
return (0, utils_1.asFragment)(result);
|
|
51
44
|
}
|
|
52
45
|
return result.join('');
|
|
53
46
|
}
|
|
54
|
-
}
|
|
47
|
+
}
|
|
48
|
+
exports.DefaultLocale = DefaultLocale;
|
|
49
|
+
//# sourceMappingURL=default-locale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-locale.js","sourceRoot":"","sources":["../../src/core/default-locale.tsx"],"names":[],"mappings":";;;AACA,uCAA6C;AAC7C,+CAA0C;AAC1C,mCAAoE;AAGpE,MAAM,iBAAiB,GAAG,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC;AAC7C,MAAa,aAAa;IAKD;IAHZ,QAAQ,CAAoB;IAC5B,IAAI,CAAqB;IAElC,YAAqB,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,0BAAgB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAA,qBAAa,EAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAID,QAAQ,CAAC,EAAU,EAAE,KAAoB,EAAE,KAAkC,EAAE,YAAiC,EAAE,KAAc;QAC5H,MAAM,QAAQ,GAAG,IAAA,uBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACvE,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,gEAAgE;YAChE,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,qSAAqS,CAAC,CAAA;QACpV,CAAC;QAED,sCAAsC;QACtC,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,gDAAgD;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,uBAAuB;QACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACR,8CAA8C;YAC9C,OAAO,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;CACJ;AA9CD,sCA8CC"}
|
|
@@ -1,26 +1,21 @@
|
|
|
1
1
|
export type LocStr = InternalLocStr & React.ReactElement;
|
|
2
|
-
|
|
3
2
|
export interface InternalLocStr {
|
|
4
3
|
/**
|
|
5
4
|
* Localizes this string. To be used within a @see withLocales scope to have an actual translation.
|
|
6
5
|
*/
|
|
7
6
|
toString(locale?: string | ILocaleDef): string;
|
|
8
7
|
toJSON(): any;
|
|
9
|
-
|
|
10
8
|
/** Apply a transformation to the final translated text */
|
|
11
9
|
transform(transformer: (x: string) => string): LocStr;
|
|
12
|
-
|
|
13
10
|
/** React hook equivalent of .toString(), but which will updated when local changes */
|
|
14
11
|
useAsString(): string;
|
|
15
12
|
}
|
|
16
|
-
|
|
17
13
|
export type LocLiteral = string | number | Date | LocStr | React.ReactNode;
|
|
18
14
|
export interface ILiteralLocalizer {
|
|
19
15
|
localize(data: LocLiteral, react: false): string;
|
|
20
16
|
localize(data: LocLiteral, react: true): React.ReactNode;
|
|
21
17
|
localize(data: LocLiteral, react: boolean): string | React.ReactNode;
|
|
22
18
|
}
|
|
23
|
-
|
|
24
19
|
export interface ILocaleDef {
|
|
25
20
|
readonly id: string;
|
|
26
21
|
readonly code: string | undefined;
|
|
@@ -29,21 +24,21 @@ export interface ILocaleDef {
|
|
|
29
24
|
localize(id: string, count: number | null, parts: TemplateStringsArray | null, placeholders: LocLiteral[] | null, react: true): React.ReactNode | null;
|
|
30
25
|
localize(id: string, count: number | null, parts: TemplateStringsArray | null, placeholders: LocLiteral[] | null, react: boolean): string | React.ReactNode | null;
|
|
31
26
|
}
|
|
32
|
-
|
|
33
27
|
export type TranslationTarget = string | {
|
|
34
28
|
singular: string | null;
|
|
35
29
|
plural: string;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
: T
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
:
|
|
47
|
-
:
|
|
48
|
-
|
|
49
|
-
|
|
30
|
+
};
|
|
31
|
+
export type TranslationOf<T> = T extends LocStr ? string : T extends Object ? {
|
|
32
|
+
[K in keyof T]: TranslationOf<T[K]>;
|
|
33
|
+
} : T extends (infer E)[] ? TranslationOf<E>[] : T;
|
|
34
|
+
export type StorableOf<T> = T extends LocStr ? Stored : T extends Object ? {
|
|
35
|
+
[K in keyof T]: StorableOf<T[K]>;
|
|
36
|
+
} : T extends (infer E)[] ? StorableOf<E>[] : T;
|
|
37
|
+
type Stored = string | {
|
|
38
|
+
[key: string]: string;
|
|
39
|
+
} | {
|
|
40
|
+
i18n: string;
|
|
41
|
+
data: any[];
|
|
42
|
+
count?: number;
|
|
43
|
+
} | LocStr;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SerializationContextOptions } from './smartloc';
|
|
2
|
+
import type { TranslationOf, StorableOf } from './interfaces';
|
|
3
|
+
/**
|
|
4
|
+
* Parse a JSON string where localized strings have been serialized in their non translated form
|
|
5
|
+
*/
|
|
6
|
+
export declare function jsonParseLocalized(value: string): any;
|
|
7
|
+
/**
|
|
8
|
+
* Transforms an object that has been deserialized from a non translated from to an object that is translatable
|
|
9
|
+
*/
|
|
10
|
+
export declare function toLocalizable(value: any): any;
|
|
11
|
+
/**
|
|
12
|
+
* Transforms an object so it can be stored with localized strings in their non translated form
|
|
13
|
+
* @returns Either a new copy of your object, or your object (if had no smarloc strings in it)
|
|
14
|
+
*/
|
|
15
|
+
export declare function toJsonStorable<T>(value: T, options?: SerializationContextOptions): StorableOf<T>;
|
|
16
|
+
/** Translates an object to the given language */
|
|
17
|
+
export declare function translateObject<T>(locales: string | string[], object: T): TranslationOf<T>;
|
|
18
|
+
/** Translates an object according to the current context (call this when wrapped in withSerializationContext() or withLocales()) */
|
|
19
|
+
export declare function translateInContext(object: any): any;
|
|
@@ -1,35 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jsonParseLocalized = jsonParseLocalized;
|
|
4
|
+
exports.toLocalizable = toLocalizable;
|
|
5
|
+
exports.toJsonStorable = toJsonStorable;
|
|
6
|
+
exports.translateObject = translateObject;
|
|
7
|
+
exports.translateInContext = translateInContext;
|
|
8
|
+
const smartloc_1 = require("./smartloc");
|
|
9
|
+
const literal_1 = require("./literal");
|
|
5
10
|
/**
|
|
6
11
|
* Parse a JSON string where localized strings have been serialized in their non translated form
|
|
7
12
|
*/
|
|
8
|
-
|
|
13
|
+
function jsonParseLocalized(value) {
|
|
9
14
|
const parsed = JSON.parse(value);
|
|
10
15
|
return _toLocalizable(parsed, 50);
|
|
11
16
|
}
|
|
12
|
-
|
|
13
17
|
/**
|
|
14
18
|
* Transforms an object that has been deserialized from a non translated from to an object that is translatable
|
|
15
19
|
*/
|
|
16
|
-
|
|
20
|
+
function toLocalizable(value) {
|
|
17
21
|
return _toLocalizable(value, 50);
|
|
18
22
|
}
|
|
19
|
-
function _toLocalizable(value
|
|
23
|
+
function _toLocalizable(value, depth) {
|
|
20
24
|
if (depth < 0) {
|
|
21
25
|
throw new Error('This object is either too nested, or has cycles');
|
|
22
26
|
}
|
|
23
27
|
if (!value) {
|
|
24
28
|
return value;
|
|
25
29
|
}
|
|
26
|
-
|
|
27
30
|
if (typeof value === 'string') {
|
|
28
31
|
if (value.startsWith('i18n/single:')) {
|
|
29
|
-
return singleLoc(value.substr('i18n/single:'.length));
|
|
32
|
+
return (0, smartloc_1.singleLoc)(value.substr('i18n/single:'.length));
|
|
30
33
|
}
|
|
31
34
|
if (value.startsWith('i18n/id:')) {
|
|
32
|
-
return smartLoc({
|
|
35
|
+
return (0, smartloc_1.smartLoc)({
|
|
33
36
|
id: value.substr('i18n/id:'.length),
|
|
34
37
|
count: undefined,
|
|
35
38
|
literals: null,
|
|
@@ -38,11 +41,9 @@ function _toLocalizable(value: any, depth: number): any {
|
|
|
38
41
|
}
|
|
39
42
|
return value;
|
|
40
43
|
}
|
|
41
|
-
|
|
42
44
|
if (typeof value !== 'object' || value instanceof Date) {
|
|
43
45
|
return value;
|
|
44
46
|
}
|
|
45
|
-
|
|
46
47
|
// === handle arrays
|
|
47
48
|
if (value instanceof Array) {
|
|
48
49
|
const retArray = [];
|
|
@@ -60,26 +61,23 @@ function _toLocalizable(value: any, depth: number): any {
|
|
|
60
61
|
if (!keys.length) {
|
|
61
62
|
return value;
|
|
62
63
|
}
|
|
63
|
-
|
|
64
64
|
// === handle smartloc with args
|
|
65
65
|
if (keys.length === 2 && keys.includes('i18n') && keys.includes('data') && typeof value.i18n === 'string' && value.data instanceof Array) {
|
|
66
|
-
return smartLoc({
|
|
66
|
+
return (0, smartloc_1.smartLoc)({
|
|
67
67
|
id: value.i18n,
|
|
68
68
|
literals: null,
|
|
69
69
|
placeholders: value.data,
|
|
70
70
|
count: value.count
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
-
|
|
74
73
|
// === handle multi
|
|
75
|
-
const ret
|
|
74
|
+
const ret = {};
|
|
76
75
|
if (!keys.some(x => !x.startsWith('i18n:'))) {
|
|
77
76
|
for (const k of keys) {
|
|
78
77
|
ret[k.substr('i18n:'.length)] = value[k];
|
|
79
78
|
}
|
|
80
|
-
return multiLoc(ret);
|
|
79
|
+
return (0, smartloc_1.multiLoc)(ret);
|
|
81
80
|
}
|
|
82
|
-
|
|
83
81
|
// === handle plain object
|
|
84
82
|
let changed = false;
|
|
85
83
|
for (const k of keys) {
|
|
@@ -90,29 +88,25 @@ function _toLocalizable(value: any, depth: number): any {
|
|
|
90
88
|
? ret
|
|
91
89
|
: value;
|
|
92
90
|
}
|
|
93
|
-
|
|
94
91
|
/**
|
|
95
92
|
* Transforms an object so it can be stored with localized strings in their non translated form
|
|
96
93
|
* @returns Either a new copy of your object, or your object (if had no smarloc strings in it)
|
|
97
94
|
*/
|
|
98
|
-
|
|
99
|
-
return withSerializationContext(() => _toJsonStorable(value, 50), options);
|
|
95
|
+
function toJsonStorable(value, options) {
|
|
96
|
+
return (0, smartloc_1.withSerializationContext)(() => _toJsonStorable(value, 50), options);
|
|
100
97
|
}
|
|
101
|
-
|
|
102
98
|
/** Translates an object to the given language */
|
|
103
|
-
|
|
99
|
+
function translateObject(locales, object) {
|
|
104
100
|
if (typeof locales === 'string') {
|
|
105
101
|
locales = [locales];
|
|
106
102
|
}
|
|
107
|
-
return withLocales(locales, () => _toJsonStorable(object, 50));
|
|
103
|
+
return (0, smartloc_1.withLocales)(locales, () => _toJsonStorable(object, 50));
|
|
108
104
|
}
|
|
109
|
-
|
|
110
105
|
/** Translates an object according to the current context (call this when wrapped in withSerializationContext() or withLocales()) */
|
|
111
|
-
|
|
106
|
+
function translateInContext(object) {
|
|
112
107
|
return _toJsonStorable(object, 50);
|
|
113
108
|
}
|
|
114
|
-
|
|
115
|
-
function _toJsonStorable(v: any, depth: number) {
|
|
109
|
+
function _toJsonStorable(v, depth) {
|
|
116
110
|
if (depth < 0) {
|
|
117
111
|
throw new Error('This object is either too nested, or has cycles');
|
|
118
112
|
}
|
|
@@ -126,7 +120,7 @@ function _toJsonStorable(v: any, depth: number) {
|
|
|
126
120
|
return v;
|
|
127
121
|
}
|
|
128
122
|
if (v instanceof Array) {
|
|
129
|
-
let ret
|
|
123
|
+
let ret = undefined;
|
|
130
124
|
for (let i = 0; i < v.length; i++) {
|
|
131
125
|
const p = _toJsonStorable(v[i], depth - 1);
|
|
132
126
|
if (p !== v[i] && !ret) {
|
|
@@ -141,11 +135,10 @@ function _toJsonStorable(v: any, depth: number) {
|
|
|
141
135
|
}
|
|
142
136
|
return ret || v;
|
|
143
137
|
}
|
|
144
|
-
if (isLocStr(v)) {
|
|
138
|
+
if ((0, literal_1.isLocStr)(v)) {
|
|
145
139
|
return v.toJSON();
|
|
146
140
|
}
|
|
147
|
-
|
|
148
|
-
const obj: Record<string, any> = {};
|
|
141
|
+
const obj = {};
|
|
149
142
|
let diff = false;
|
|
150
143
|
for (const [k, p] of Object.entries(v)) {
|
|
151
144
|
const val = _toJsonStorable(p, depth - 1);
|
|
@@ -160,3 +153,4 @@ function _toJsonStorable(v: any, depth: number) {
|
|
|
160
153
|
Object.setPrototypeOf(obj, Object.getPrototypeOf(v));
|
|
161
154
|
return obj;
|
|
162
155
|
}
|
|
156
|
+
//# sourceMappingURL=json-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-utils.js","sourceRoot":"","sources":["../../src/core/json-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { LocLiteral, LocStr, ILocaleDef, ILiteralLocalizer } from './interfaces';
|
|
3
|
+
export declare function isLocStr(data: any): data is LocStr;
|
|
4
|
+
export declare function setIsLoc(data: any): void;
|
|
5
|
+
export declare class LiteralLocalizer implements ILiteralLocalizer {
|
|
6
|
+
private locale;
|
|
7
|
+
private numbers;
|
|
8
|
+
private dateTimeFormat;
|
|
9
|
+
private dateFormat;
|
|
10
|
+
constructor(locale: ILocaleDef);
|
|
11
|
+
localize(data: LocLiteral, react: false): string;
|
|
12
|
+
localize(data: LocLiteral, react: true): React.ReactNode;
|
|
13
|
+
}
|