@itwin/core-i18n 3.5.0-dev.5 → 3.5.0-dev.7
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/cjs/ITwinLocalization.d.ts +98 -98
- package/lib/cjs/ITwinLocalization.js +226 -226
- package/lib/cjs/ITwinLocalization.js.map +1 -1
- package/lib/cjs/core-i18n.d.ts +7 -7
- package/lib/cjs/core-i18n.js +23 -23
- package/lib/cjs/core-i18n.js.map +1 -1
- package/lib/cjs/test/ITwinLocalization.test.d.ts +1 -1
- package/lib/cjs/test/ITwinLocalization.test.js +124 -124
- package/lib/cjs/test/ITwinLocalization.test.js.map +1 -1
- package/lib/cjs/test/webpack/bundled-tests.js +6043 -6043
- package/lib/cjs/test/webpack/bundled-tests.js.map +1 -1
- package/lib/esm/ITwinLocalization.d.ts +98 -98
- package/lib/esm/ITwinLocalization.js +219 -219
- package/lib/esm/ITwinLocalization.js.map +1 -1
- package/lib/esm/core-i18n.d.ts +7 -7
- package/lib/esm/core-i18n.js +11 -11
- package/lib/esm/core-i18n.js.map +1 -1
- package/lib/esm/test/ITwinLocalization.test.d.ts +1 -1
- package/lib/esm/test/ITwinLocalization.test.js +122 -122
- package/lib/esm/test/ITwinLocalization.test.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
-
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const chai_1 = require("chai");
|
|
8
|
-
const ITwinLocalization_1 = require("../ITwinLocalization");
|
|
9
|
-
describe("ITwinLocalization", () => {
|
|
10
|
-
let localization;
|
|
11
|
-
describe("#initialize", () => {
|
|
12
|
-
describe("with default namespace provided in constructor", () => {
|
|
13
|
-
let itwinLocalization;
|
|
14
|
-
before(() => {
|
|
15
|
-
itwinLocalization = new ITwinLocalization_1.ITwinLocalization({ initOptions: { defaultNS: "Default" } });
|
|
16
|
-
});
|
|
17
|
-
it("default namespace set when initialized with empty array", async () => {
|
|
18
|
-
await itwinLocalization.initialize([]);
|
|
19
|
-
chai_1.assert.equal(itwinLocalization.i18next.options.defaultNS, "Default");
|
|
20
|
-
});
|
|
21
|
-
it("default namespace not overridden by one namespace", async () => {
|
|
22
|
-
await itwinLocalization.initialize(["Test"]);
|
|
23
|
-
chai_1.assert.equal(itwinLocalization.i18next.options.defaultNS, "Default");
|
|
24
|
-
});
|
|
25
|
-
it("default namespace not overridden by two namespaces", async () => {
|
|
26
|
-
await itwinLocalization.initialize(["NotExist", "Test"]);
|
|
27
|
-
chai_1.assert.equal(itwinLocalization.i18next.options.defaultNS, "Default");
|
|
28
|
-
});
|
|
29
|
-
it("duplicate namespace value does not break default namespace", async () => {
|
|
30
|
-
await itwinLocalization.initialize(["Default"]);
|
|
31
|
-
chai_1.assert.equal(itwinLocalization.i18next.options.defaultNS, "Default");
|
|
32
|
-
});
|
|
33
|
-
it("default namespace is in list of all namespaces initalized with empty array", async () => {
|
|
34
|
-
var _a;
|
|
35
|
-
await itwinLocalization.initialize([]);
|
|
36
|
-
chai_1.assert.isTrue((_a = itwinLocalization.i18next.options.ns) === null || _a === void 0 ? void 0 : _a.includes("Default"));
|
|
37
|
-
});
|
|
38
|
-
it("default namespace is in list of all namespaces", async () => {
|
|
39
|
-
var _a;
|
|
40
|
-
await itwinLocalization.initialize(["Test"]);
|
|
41
|
-
chai_1.assert.isTrue((_a = itwinLocalization.i18next.options.ns) === null || _a === void 0 ? void 0 : _a.includes("Default"));
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
// The goal is not to test i18next's interpolation,
|
|
46
|
-
// but just to have some simple tests to make sure the
|
|
47
|
-
// basics work through the ITwinLocalization class.
|
|
48
|
-
// For interpolation options, see: https://www.i18next.com/translation-function/interpolation
|
|
49
|
-
describe("#getLocalizedString", () => {
|
|
50
|
-
before(async () => {
|
|
51
|
-
localization = new ITwinLocalization_1.ITwinLocalization();
|
|
52
|
-
await localization.initialize(["Default", "Test"]);
|
|
53
|
-
});
|
|
54
|
-
describe("Default Namespace", () => {
|
|
55
|
-
it("first level with no substitution", () => {
|
|
56
|
-
chai_1.assert.equal(localization.getLocalizedString("FirstTrivial"), "First level string (default)");
|
|
57
|
-
});
|
|
58
|
-
it("second level with no substitution", () => {
|
|
59
|
-
chai_1.assert.equal(localization.getLocalizedString("SecondTrivial.Test1"), "Second level string 1 (default)");
|
|
60
|
-
chai_1.assert.equal(localization.getLocalizedString("SecondTrivial.Test2"), "Second level string 2 (default)");
|
|
61
|
-
});
|
|
62
|
-
it("first level with substitution", () => {
|
|
63
|
-
chai_1.assert.equal(localization.getLocalizedString("FirstSubstitution1", { str: "CUSTOM1" }), "First level CUSTOM1 (default)");
|
|
64
|
-
chai_1.assert.equal(localization.getLocalizedString("FirstSubstitution1", { str: "CUSTOM2" }), "First level CUSTOM2 (default)");
|
|
65
|
-
chai_1.assert.equal(localization.getLocalizedString("FirstSubstitution2", { str1: "CUSTOM1", str2: "CUSTOM2" }), "First level CUSTOM1 and CUSTOM2 (default)");
|
|
66
|
-
});
|
|
67
|
-
it("second level with substitution", () => {
|
|
68
|
-
chai_1.assert.equal(localization.getLocalizedString("SecondSubstitution.Test1", { varA: "Variable1", varB: "Variable2" }), "Substitute Variable1 and Variable2 (default)");
|
|
69
|
-
chai_1.assert.equal(localization.getLocalizedString("SecondSubstitution.Test2", { varA: "Variable1", varB: "Variable2" }), "Reverse substitute Variable2 and Variable1 (default)");
|
|
70
|
-
});
|
|
71
|
-
it("first level missing key doesn't find a value", () => {
|
|
72
|
-
chai_1.assert.equal(localization.getLocalizedString("MissingKeyString"), "MissingKeyString");
|
|
73
|
-
});
|
|
74
|
-
it("second level missing key doesn't find a value", () => {
|
|
75
|
-
chai_1.assert.equal(localization.getLocalizedString("SecondTrivial.MissingString"), "SecondTrivial.MissingString");
|
|
76
|
-
chai_1.assert.equal(localization.getLocalizedString("MissingKeyObject.MissingString"), "MissingKeyObject.MissingString");
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
describe("Given Namespace", () => {
|
|
80
|
-
it("first level with no substitution", () => {
|
|
81
|
-
chai_1.assert.equal(localization.getLocalizedString("Default:FirstTrivial"), "First level string (default)");
|
|
82
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:FirstTrivial"), "First level string (test)");
|
|
83
|
-
});
|
|
84
|
-
it("second level with no substitution", () => {
|
|
85
|
-
chai_1.assert.equal(localization.getLocalizedString("Default:SecondTrivial.Test1"), "Second level string 1 (default)");
|
|
86
|
-
chai_1.assert.equal(localization.getLocalizedString("Default:SecondTrivial.Test2"), "Second level string 2 (default)");
|
|
87
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:SecondTrivial.Test1"), "Second level string 1 (test)");
|
|
88
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:SecondTrivial.Test2"), "Second level string 2 (test)");
|
|
89
|
-
});
|
|
90
|
-
it("first level with substitution", () => {
|
|
91
|
-
chai_1.assert.equal(localization.getLocalizedString("Default:FirstSubstitution1", { str: "CUSTOM1" }), "First level CUSTOM1 (default)");
|
|
92
|
-
chai_1.assert.equal(localization.getLocalizedString("Default:FirstSubstitution1", { str: "CUSTOM2" }), "First level CUSTOM2 (default)");
|
|
93
|
-
chai_1.assert.equal(localization.getLocalizedString("Default:FirstSubstitution2", { str1: "CUSTOM1", str2: "CUSTOM2" }), "First level CUSTOM1 and CUSTOM2 (default)");
|
|
94
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:FirstSubstitution1", { str: "CUSTOM1" }), "First level CUSTOM1 (test)");
|
|
95
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:FirstSubstitution1", { str: "CUSTOM2" }), "First level CUSTOM2 (test)");
|
|
96
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:FirstSubstitution2", { str1: "CUSTOM1", str2: "CUSTOM2" }), "First level CUSTOM1 and CUSTOM2 (test)");
|
|
97
|
-
});
|
|
98
|
-
it("second level with substitution", () => {
|
|
99
|
-
chai_1.assert.equal(localization.getLocalizedString("Default:SecondSubstitution.Test1", { varA: "Variable1", varB: "Variable2" }), "Substitute Variable1 and Variable2 (default)");
|
|
100
|
-
chai_1.assert.equal(localization.getLocalizedString("Default:SecondSubstitution.Test2", { varA: "Variable1", varB: "Variable2" }), "Reverse substitute Variable2 and Variable1 (default)");
|
|
101
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:SecondSubstitution.Test1", { varA: "Variable1", varB: "Variable2" }), "Substitute Variable1 and Variable2 (test)");
|
|
102
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:SecondSubstitution.Test2", { varA: "Variable1", varB: "Variable2" }), "Reverse substitute Variable2 and Variable1 (test)");
|
|
103
|
-
});
|
|
104
|
-
it("first level missing key doesn't find a value", () => {
|
|
105
|
-
chai_1.assert.equal(localization.getLocalizedString("Default:MissingKeyString"), "MissingKeyString");
|
|
106
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:MissingKeyString"), "MissingKeyString");
|
|
107
|
-
});
|
|
108
|
-
it("second level missing key doesn't find a value", () => {
|
|
109
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:SecondTrivial.MissingString"), "SecondTrivial.MissingString");
|
|
110
|
-
chai_1.assert.equal(localization.getLocalizedString("Test:MissingKeyObject.MissingString"), "MissingKeyObject.MissingString");
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
describe("Nonexisting Namespace", () => {
|
|
114
|
-
it("first level fails", () => {
|
|
115
|
-
chai_1.assert.equal(localization.getLocalizedString("Nonexisting:FirstTrivial"), "FirstTrivial");
|
|
116
|
-
chai_1.assert.equal(localization.getLocalizedString("Nonexisting:MissingKeyString"), "MissingKeyString");
|
|
117
|
-
});
|
|
118
|
-
it("second level fails", () => {
|
|
119
|
-
chai_1.assert.equal(localization.getLocalizedString("Nonexisting:SecondTrivial.Test1"), "SecondTrivial.Test1");
|
|
120
|
-
chai_1.assert.equal(localization.getLocalizedString("Nonexisting:Missing.String"), "Missing.String");
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
});
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const chai_1 = require("chai");
|
|
8
|
+
const ITwinLocalization_1 = require("../ITwinLocalization");
|
|
9
|
+
describe("ITwinLocalization", () => {
|
|
10
|
+
let localization;
|
|
11
|
+
describe("#initialize", () => {
|
|
12
|
+
describe("with default namespace provided in constructor", () => {
|
|
13
|
+
let itwinLocalization;
|
|
14
|
+
before(() => {
|
|
15
|
+
itwinLocalization = new ITwinLocalization_1.ITwinLocalization({ initOptions: { defaultNS: "Default" } });
|
|
16
|
+
});
|
|
17
|
+
it("default namespace set when initialized with empty array", async () => {
|
|
18
|
+
await itwinLocalization.initialize([]);
|
|
19
|
+
chai_1.assert.equal(itwinLocalization.i18next.options.defaultNS, "Default");
|
|
20
|
+
});
|
|
21
|
+
it("default namespace not overridden by one namespace", async () => {
|
|
22
|
+
await itwinLocalization.initialize(["Test"]);
|
|
23
|
+
chai_1.assert.equal(itwinLocalization.i18next.options.defaultNS, "Default");
|
|
24
|
+
});
|
|
25
|
+
it("default namespace not overridden by two namespaces", async () => {
|
|
26
|
+
await itwinLocalization.initialize(["NotExist", "Test"]);
|
|
27
|
+
chai_1.assert.equal(itwinLocalization.i18next.options.defaultNS, "Default");
|
|
28
|
+
});
|
|
29
|
+
it("duplicate namespace value does not break default namespace", async () => {
|
|
30
|
+
await itwinLocalization.initialize(["Default"]);
|
|
31
|
+
chai_1.assert.equal(itwinLocalization.i18next.options.defaultNS, "Default");
|
|
32
|
+
});
|
|
33
|
+
it("default namespace is in list of all namespaces initalized with empty array", async () => {
|
|
34
|
+
var _a;
|
|
35
|
+
await itwinLocalization.initialize([]);
|
|
36
|
+
chai_1.assert.isTrue((_a = itwinLocalization.i18next.options.ns) === null || _a === void 0 ? void 0 : _a.includes("Default"));
|
|
37
|
+
});
|
|
38
|
+
it("default namespace is in list of all namespaces", async () => {
|
|
39
|
+
var _a;
|
|
40
|
+
await itwinLocalization.initialize(["Test"]);
|
|
41
|
+
chai_1.assert.isTrue((_a = itwinLocalization.i18next.options.ns) === null || _a === void 0 ? void 0 : _a.includes("Default"));
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
// The goal is not to test i18next's interpolation,
|
|
46
|
+
// but just to have some simple tests to make sure the
|
|
47
|
+
// basics work through the ITwinLocalization class.
|
|
48
|
+
// For interpolation options, see: https://www.i18next.com/translation-function/interpolation
|
|
49
|
+
describe("#getLocalizedString", () => {
|
|
50
|
+
before(async () => {
|
|
51
|
+
localization = new ITwinLocalization_1.ITwinLocalization();
|
|
52
|
+
await localization.initialize(["Default", "Test"]);
|
|
53
|
+
});
|
|
54
|
+
describe("Default Namespace", () => {
|
|
55
|
+
it("first level with no substitution", () => {
|
|
56
|
+
chai_1.assert.equal(localization.getLocalizedString("FirstTrivial"), "First level string (default)");
|
|
57
|
+
});
|
|
58
|
+
it("second level with no substitution", () => {
|
|
59
|
+
chai_1.assert.equal(localization.getLocalizedString("SecondTrivial.Test1"), "Second level string 1 (default)");
|
|
60
|
+
chai_1.assert.equal(localization.getLocalizedString("SecondTrivial.Test2"), "Second level string 2 (default)");
|
|
61
|
+
});
|
|
62
|
+
it("first level with substitution", () => {
|
|
63
|
+
chai_1.assert.equal(localization.getLocalizedString("FirstSubstitution1", { str: "CUSTOM1" }), "First level CUSTOM1 (default)");
|
|
64
|
+
chai_1.assert.equal(localization.getLocalizedString("FirstSubstitution1", { str: "CUSTOM2" }), "First level CUSTOM2 (default)");
|
|
65
|
+
chai_1.assert.equal(localization.getLocalizedString("FirstSubstitution2", { str1: "CUSTOM1", str2: "CUSTOM2" }), "First level CUSTOM1 and CUSTOM2 (default)");
|
|
66
|
+
});
|
|
67
|
+
it("second level with substitution", () => {
|
|
68
|
+
chai_1.assert.equal(localization.getLocalizedString("SecondSubstitution.Test1", { varA: "Variable1", varB: "Variable2" }), "Substitute Variable1 and Variable2 (default)");
|
|
69
|
+
chai_1.assert.equal(localization.getLocalizedString("SecondSubstitution.Test2", { varA: "Variable1", varB: "Variable2" }), "Reverse substitute Variable2 and Variable1 (default)");
|
|
70
|
+
});
|
|
71
|
+
it("first level missing key doesn't find a value", () => {
|
|
72
|
+
chai_1.assert.equal(localization.getLocalizedString("MissingKeyString"), "MissingKeyString");
|
|
73
|
+
});
|
|
74
|
+
it("second level missing key doesn't find a value", () => {
|
|
75
|
+
chai_1.assert.equal(localization.getLocalizedString("SecondTrivial.MissingString"), "SecondTrivial.MissingString");
|
|
76
|
+
chai_1.assert.equal(localization.getLocalizedString("MissingKeyObject.MissingString"), "MissingKeyObject.MissingString");
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe("Given Namespace", () => {
|
|
80
|
+
it("first level with no substitution", () => {
|
|
81
|
+
chai_1.assert.equal(localization.getLocalizedString("Default:FirstTrivial"), "First level string (default)");
|
|
82
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:FirstTrivial"), "First level string (test)");
|
|
83
|
+
});
|
|
84
|
+
it("second level with no substitution", () => {
|
|
85
|
+
chai_1.assert.equal(localization.getLocalizedString("Default:SecondTrivial.Test1"), "Second level string 1 (default)");
|
|
86
|
+
chai_1.assert.equal(localization.getLocalizedString("Default:SecondTrivial.Test2"), "Second level string 2 (default)");
|
|
87
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:SecondTrivial.Test1"), "Second level string 1 (test)");
|
|
88
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:SecondTrivial.Test2"), "Second level string 2 (test)");
|
|
89
|
+
});
|
|
90
|
+
it("first level with substitution", () => {
|
|
91
|
+
chai_1.assert.equal(localization.getLocalizedString("Default:FirstSubstitution1", { str: "CUSTOM1" }), "First level CUSTOM1 (default)");
|
|
92
|
+
chai_1.assert.equal(localization.getLocalizedString("Default:FirstSubstitution1", { str: "CUSTOM2" }), "First level CUSTOM2 (default)");
|
|
93
|
+
chai_1.assert.equal(localization.getLocalizedString("Default:FirstSubstitution2", { str1: "CUSTOM1", str2: "CUSTOM2" }), "First level CUSTOM1 and CUSTOM2 (default)");
|
|
94
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:FirstSubstitution1", { str: "CUSTOM1" }), "First level CUSTOM1 (test)");
|
|
95
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:FirstSubstitution1", { str: "CUSTOM2" }), "First level CUSTOM2 (test)");
|
|
96
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:FirstSubstitution2", { str1: "CUSTOM1", str2: "CUSTOM2" }), "First level CUSTOM1 and CUSTOM2 (test)");
|
|
97
|
+
});
|
|
98
|
+
it("second level with substitution", () => {
|
|
99
|
+
chai_1.assert.equal(localization.getLocalizedString("Default:SecondSubstitution.Test1", { varA: "Variable1", varB: "Variable2" }), "Substitute Variable1 and Variable2 (default)");
|
|
100
|
+
chai_1.assert.equal(localization.getLocalizedString("Default:SecondSubstitution.Test2", { varA: "Variable1", varB: "Variable2" }), "Reverse substitute Variable2 and Variable1 (default)");
|
|
101
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:SecondSubstitution.Test1", { varA: "Variable1", varB: "Variable2" }), "Substitute Variable1 and Variable2 (test)");
|
|
102
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:SecondSubstitution.Test2", { varA: "Variable1", varB: "Variable2" }), "Reverse substitute Variable2 and Variable1 (test)");
|
|
103
|
+
});
|
|
104
|
+
it("first level missing key doesn't find a value", () => {
|
|
105
|
+
chai_1.assert.equal(localization.getLocalizedString("Default:MissingKeyString"), "MissingKeyString");
|
|
106
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:MissingKeyString"), "MissingKeyString");
|
|
107
|
+
});
|
|
108
|
+
it("second level missing key doesn't find a value", () => {
|
|
109
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:SecondTrivial.MissingString"), "SecondTrivial.MissingString");
|
|
110
|
+
chai_1.assert.equal(localization.getLocalizedString("Test:MissingKeyObject.MissingString"), "MissingKeyObject.MissingString");
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe("Nonexisting Namespace", () => {
|
|
114
|
+
it("first level fails", () => {
|
|
115
|
+
chai_1.assert.equal(localization.getLocalizedString("Nonexisting:FirstTrivial"), "FirstTrivial");
|
|
116
|
+
chai_1.assert.equal(localization.getLocalizedString("Nonexisting:MissingKeyString"), "MissingKeyString");
|
|
117
|
+
});
|
|
118
|
+
it("second level fails", () => {
|
|
119
|
+
chai_1.assert.equal(localization.getLocalizedString("Nonexisting:SecondTrivial.Test1"), "SecondTrivial.Test1");
|
|
120
|
+
chai_1.assert.equal(localization.getLocalizedString("Nonexisting:Missing.String"), "Missing.String");
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
125
|
//# sourceMappingURL=ITwinLocalization.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ITwinLocalization.test.js","sourceRoot":"","sources":["../../../src/test/ITwinLocalization.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert } from \"chai\";\nimport { Localization } from \"@itwin/core-common\";\nimport { ITwinLocalization } from \"../ITwinLocalization\";\n\ndescribe(\"ITwinLocalization\", () => {\n\n let localization: Localization;\n\n describe(\"#initialize\", () => {\n\n describe(\"with default namespace provided in constructor\", () => {\n let itwinLocalization: ITwinLocalization;\n before(() => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\" } });\n });\n\n it(\"default namespace set when initialized with empty array\", async () => {\n await itwinLocalization.initialize([]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"default namespace not overridden by one namespace\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"default namespace not overridden by two namespaces\", async () => {\n await itwinLocalization.initialize([\"NotExist\", \"Test\"]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"duplicate namespace value does not break default namespace\", async () => {\n await itwinLocalization.initialize([\"Default\"]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"default namespace is in list of all namespaces initalized with empty array\", async () => {\n await itwinLocalization.initialize([]);\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n });\n\n it(\"default namespace is in list of all namespaces\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n });\n });\n });\n\n // The goal is not to test i18next's interpolation,\n // but just to have some simple tests to make sure the\n // basics work through the ITwinLocalization class.\n // For interpolation options, see: https://www.i18next.com/translation-function/interpolation\n describe(\"#getLocalizedString\", () => {\n\n before(async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\", \"Test\"]);\n });\n\n describe(\"Default Namespace\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedString(\"MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Given Namespace\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test1\"), \"Second level string 1 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test2\"), \"Second level string 2 (test)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"Default:MissingKeyString\"), \"MissingKeyString\");\n assert.equal(localization.getLocalizedString(\"Test:MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedString(\"Test:MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Nonexisting Namespace\", () => {\n\n it(\"first level fails\", () => {\n assert.equal(localization.getLocalizedString(\"Nonexisting:FirstTrivial\"), \"FirstTrivial\");\n assert.equal(localization.getLocalizedString(\"Nonexisting:MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level fails\", () => {\n assert.equal(localization.getLocalizedString(\"Nonexisting:SecondTrivial.Test1\"), \"SecondTrivial.Test1\");\n assert.equal(localization.getLocalizedString(\"Nonexisting:Missing.String\"), \"Missing.String\");\n });\n });\n });\n\n});\n"]}
|
|
1
|
+
{"version":3,"file":"ITwinLocalization.test.js","sourceRoot":"","sources":["../../../src/test/ITwinLocalization.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert } from \"chai\";\r\nimport { Localization } from \"@itwin/core-common\";\r\nimport { ITwinLocalization } from \"../ITwinLocalization\";\r\n\r\ndescribe(\"ITwinLocalization\", () => {\r\n\r\n let localization: Localization;\r\n\r\n describe(\"#initialize\", () => {\r\n\r\n describe(\"with default namespace provided in constructor\", () => {\r\n let itwinLocalization: ITwinLocalization;\r\n before(() => {\r\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\" } });\r\n });\r\n\r\n it(\"default namespace set when initialized with empty array\", async () => {\r\n await itwinLocalization.initialize([]);\r\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\r\n });\r\n\r\n it(\"default namespace not overridden by one namespace\", async () => {\r\n await itwinLocalization.initialize([\"Test\"]);\r\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\r\n });\r\n\r\n it(\"default namespace not overridden by two namespaces\", async () => {\r\n await itwinLocalization.initialize([\"NotExist\", \"Test\"]);\r\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\r\n });\r\n\r\n it(\"duplicate namespace value does not break default namespace\", async () => {\r\n await itwinLocalization.initialize([\"Default\"]);\r\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\r\n });\r\n\r\n it(\"default namespace is in list of all namespaces initalized with empty array\", async () => {\r\n await itwinLocalization.initialize([]);\r\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\r\n });\r\n\r\n it(\"default namespace is in list of all namespaces\", async () => {\r\n await itwinLocalization.initialize([\"Test\"]);\r\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\r\n });\r\n });\r\n });\r\n\r\n // The goal is not to test i18next's interpolation,\r\n // but just to have some simple tests to make sure the\r\n // basics work through the ITwinLocalization class.\r\n // For interpolation options, see: https://www.i18next.com/translation-function/interpolation\r\n describe(\"#getLocalizedString\", () => {\r\n\r\n before(async () => {\r\n localization = new ITwinLocalization();\r\n await localization.initialize([\"Default\", \"Test\"]);\r\n });\r\n\r\n describe(\"Default Namespace\", () => {\r\n\r\n it(\"first level with no substitution\", () => {\r\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\r\n });\r\n\r\n it(\"second level with no substitution\", () => {\r\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\r\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test2\"), \"Second level string 2 (default)\");\r\n });\r\n\r\n it(\"first level with substitution\", () => {\r\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\r\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\r\n assert.equal(localization.getLocalizedString(\"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\r\n });\r\n\r\n it(\"second level with substitution\", () => {\r\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\r\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\r\n });\r\n\r\n it(\"first level missing key doesn't find a value\", () => {\r\n assert.equal(localization.getLocalizedString(\"MissingKeyString\"), \"MissingKeyString\");\r\n });\r\n\r\n it(\"second level missing key doesn't find a value\", () => {\r\n assert.equal(localization.getLocalizedString(\"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\r\n assert.equal(localization.getLocalizedString(\"MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\r\n });\r\n });\r\n\r\n describe(\"Given Namespace\", () => {\r\n\r\n it(\"first level with no substitution\", () => {\r\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default)\");\r\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\r\n });\r\n\r\n it(\"second level with no substitution\", () => {\r\n assert.equal(localization.getLocalizedString(\"Default:SecondTrivial.Test1\"), \"Second level string 1 (default)\");\r\n assert.equal(localization.getLocalizedString(\"Default:SecondTrivial.Test2\"), \"Second level string 2 (default)\");\r\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test1\"), \"Second level string 1 (test)\");\r\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test2\"), \"Second level string 2 (test)\");\r\n });\r\n\r\n it(\"first level with substitution\", () => {\r\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\r\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\r\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\r\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\r\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\r\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\r\n });\r\n\r\n it(\"second level with substitution\", () => {\r\n assert.equal(localization.getLocalizedString(\"Default:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\r\n assert.equal(localization.getLocalizedString(\"Default:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\r\n assert.equal(localization.getLocalizedString(\"Test:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\r\n assert.equal(localization.getLocalizedString(\"Test:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\r\n });\r\n\r\n it(\"first level missing key doesn't find a value\", () => {\r\n assert.equal(localization.getLocalizedString(\"Default:MissingKeyString\"), \"MissingKeyString\");\r\n assert.equal(localization.getLocalizedString(\"Test:MissingKeyString\"), \"MissingKeyString\");\r\n });\r\n\r\n it(\"second level missing key doesn't find a value\", () => {\r\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\r\n assert.equal(localization.getLocalizedString(\"Test:MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\r\n });\r\n });\r\n\r\n describe(\"Nonexisting Namespace\", () => {\r\n\r\n it(\"first level fails\", () => {\r\n assert.equal(localization.getLocalizedString(\"Nonexisting:FirstTrivial\"), \"FirstTrivial\");\r\n assert.equal(localization.getLocalizedString(\"Nonexisting:MissingKeyString\"), \"MissingKeyString\");\r\n });\r\n\r\n it(\"second level fails\", () => {\r\n assert.equal(localization.getLocalizedString(\"Nonexisting:SecondTrivial.Test1\"), \"SecondTrivial.Test1\");\r\n assert.equal(localization.getLocalizedString(\"Nonexisting:Missing.String\"), \"Missing.String\");\r\n });\r\n });\r\n });\r\n\r\n});\r\n"]}
|