@taon-dev/i18n 21.0.35 → 21.0.43
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/VERIFIED-BUILD-DATA.jsonc +3 -3
- package/bin/start.js +37 -37
- package/browser/README.md +24 -24
- package/browser/fesm2022/i18n-browser.mjs +20 -12
- package/browser/fesm2022/i18n-browser.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/browser/types/i18n-browser.d.ts +11 -7
- package/browser-prod/README.md +24 -24
- package/browser-prod/fesm2022/i18n-browser-prod.mjs +20 -12
- package/browser-prod/fesm2022/i18n-browser-prod.mjs.map +1 -1
- package/browser-prod/package.json +1 -1
- package/browser-prod/types/i18n-browser-prod.d.ts +11 -7
- package/full-dts/build-info._auto-generated_.d.ts +24 -0
- package/full-dts/env/env.angular-node-app.d.ts +68 -0
- package/full-dts/env/env.docs-webapp.d.ts +68 -0
- package/full-dts/env/env.electron-app.d.ts +68 -0
- package/full-dts/env/env.mobile-app.d.ts +68 -0
- package/full-dts/env/env.npm-lib-and-cli-tool.d.ts +68 -0
- package/full-dts/env/env.vscode-plugin.d.ts +68 -0
- package/full-dts/env/index.d.ts +6 -0
- package/full-dts/i18n/lib.translation.d.ts +4 -0
- package/full-dts/i18n/translation.ts.en-US.i18n.data.d.ts +17 -0
- package/full-dts/i18n/translation.ts.pl-PL.i18n.data.d.ts +17 -0
- package/full-dts/index._auto-generated_.d.ts +13 -0
- package/full-dts/index.d.ts +4 -0
- package/full-dts/local-translation.d.ts +67 -0
- package/full-dts/start-cli.d.ts +2 -0
- package/full-dts/translation-manager.d.ts +34 -0
- package/full-dts/translation.d.ts +48 -0
- package/full-dts/translation.models.d.ts +25 -0
- package/full-dts/utils-i18n-extract-gettext-translate-from-html.d.ts +4 -0
- package/full-dts/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
- package/full-dts/utils-i18n-html.d.ts +9 -0
- package/full-dts/utils-i18n-html.test.d.ts +1 -0
- package/full-dts/utils-po-file-extracto-to-json.test.d.ts +1 -0
- package/full-dts/utils-po-file.d.ts +8 -0
- package/full-dts/utils-po-file.test.d.ts +1 -0
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/env/env.angular-node-app.d.ts +1 -0
- package/lib/env/env.angular-node-app.js +6 -2
- package/lib/env/env.angular-node-app.js.map +1 -1
- package/lib/env/env.docs-webapp.d.ts +1 -0
- package/lib/env/env.docs-webapp.js +6 -2
- package/lib/env/env.docs-webapp.js.map +1 -1
- package/lib/env/env.electron-app.d.ts +1 -0
- package/lib/env/env.electron-app.js +6 -2
- package/lib/env/env.electron-app.js.map +1 -1
- package/lib/env/env.mobile-app.d.ts +1 -0
- package/lib/env/env.mobile-app.js +6 -2
- package/lib/env/env.mobile-app.js.map +1 -1
- package/lib/env/env.npm-lib-and-cli-tool.d.ts +1 -0
- package/lib/env/env.npm-lib-and-cli-tool.js +6 -2
- package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
- package/lib/env/env.vscode-plugin.d.ts +1 -0
- package/lib/env/env.vscode-plugin.js +6 -2
- package/lib/env/env.vscode-plugin.js.map +1 -1
- package/lib/i18n/lib.translation.d.ts +2 -2
- package/lib/i18n/translation.ts.en-US.i18n.data.js +3 -3
- package/lib/i18n/translation.ts.pl-PL.i18n.data.js +3 -3
- package/lib/index._auto-generated_.d.ts +1 -4
- package/lib/local-translation.d.ts +2 -2
- package/lib/package.json +1 -1
- package/lib/translation-manager.d.ts +2 -2
- package/lib/translation.d.ts +8 -5
- package/lib/translation.js +5 -1
- package/lib/translation.js.map +1 -1
- package/lib/translation.models.d.ts +2 -2
- package/lib/utils-i18n-extract-gettext-translate-from-html.d.ts +2 -2
- package/lib/utils-i18n-html.d.ts +2 -2
- package/lib/utils-po-file.d.ts +2 -2
- package/lib-esm/app/main-page/main-page.active.context.d.ts +0 -20
- package/lib-esm/app/main-page/main-page.active.context.js +1 -18
- package/lib-esm/app/main-page/main-page.active.context.js.map +1 -1
- package/lib-esm/app/main-page/main-page.container.d.ts +0 -0
- package/lib-esm/app/main-page/main-page.container.js +2 -0
- package/lib-esm/app/main-page/main-page.container.js.map +1 -0
- package/lib-esm/app/main-page/main-page.routes.d.ts +0 -0
- package/lib-esm/app/main-page/main-page.routes.js +2 -0
- package/lib-esm/app/main-page/main-page.routes.js.map +1 -0
- package/lib-esm/app.d.ts +0 -3
- package/lib-esm/app.electron.d.ts +0 -1
- package/lib-esm/app.electron.js +1 -1
- package/lib-esm/app.electron.js.map +1 -1
- package/lib-esm/app.hosts.d.ts +0 -147
- package/lib-esm/app.hosts.js +1 -216
- package/lib-esm/app.hosts.js.map +1 -1
- package/lib-esm/app.js +1 -459
- package/lib-esm/app.js.map +1 -1
- package/lib-esm/app.vscode.js +1 -54
- package/lib-esm/app.vscode.js.map +1 -1
- package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib-esm/lib/build-info._auto-generated_.js +1 -1
- package/lib-esm/lib/env/env.angular-node-app.d.ts +1 -0
- package/lib-esm/lib/env/env.angular-node-app.js +3 -0
- package/lib-esm/lib/env/env.angular-node-app.js.map +1 -1
- package/lib-esm/lib/env/env.docs-webapp.d.ts +1 -0
- package/lib-esm/lib/env/env.docs-webapp.js +3 -0
- package/lib-esm/lib/env/env.docs-webapp.js.map +1 -1
- package/lib-esm/lib/env/env.electron-app.d.ts +1 -0
- package/lib-esm/lib/env/env.electron-app.js +3 -0
- package/lib-esm/lib/env/env.electron-app.js.map +1 -1
- package/lib-esm/lib/env/env.mobile-app.d.ts +1 -0
- package/lib-esm/lib/env/env.mobile-app.js +3 -0
- package/lib-esm/lib/env/env.mobile-app.js.map +1 -1
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +1 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +3 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
- package/lib-esm/lib/env/env.vscode-plugin.d.ts +1 -0
- package/lib-esm/lib/env/env.vscode-plugin.js +3 -0
- package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -1
- package/lib-esm/lib/i18n/translation.ts.en-US.i18n.data.js +3 -3
- package/lib-esm/lib/i18n/translation.ts.pl-PL.i18n.data.js +3 -3
- package/lib-esm/lib/local-translation.js +23 -0
- package/lib-esm/lib/local-translation.js.map +1 -1
- package/lib-esm/lib/translation.d.ts +4 -0
- package/lib-esm/lib/translation.js +5 -1
- package/lib-esm/lib/translation.js.map +1 -1
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.js +146 -0
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.js.map +1 -1
- package/lib-esm/lib/utils-i18n-html.js +245 -0
- package/lib-esm/lib/utils-i18n-html.js.map +1 -1
- package/lib-prod/build-info._auto-generated_.d.ts +1 -1
- package/lib-prod/build-info._auto-generated_.js +1 -1
- package/lib-prod/env/env.angular-node-app.d.ts +1 -0
- package/lib-prod/env/env.angular-node-app.js +3 -0
- package/lib-prod/env/env.angular-node-app.js.map +1 -1
- package/lib-prod/env/env.docs-webapp.d.ts +1 -0
- package/lib-prod/env/env.docs-webapp.js +3 -0
- package/lib-prod/env/env.docs-webapp.js.map +1 -1
- package/lib-prod/env/env.electron-app.d.ts +1 -0
- package/lib-prod/env/env.electron-app.js +3 -0
- package/lib-prod/env/env.electron-app.js.map +1 -1
- package/lib-prod/env/env.mobile-app.d.ts +1 -0
- package/lib-prod/env/env.mobile-app.js +3 -0
- package/lib-prod/env/env.mobile-app.js.map +1 -1
- package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +1 -0
- package/lib-prod/env/env.npm-lib-and-cli-tool.js +3 -0
- package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -1
- package/lib-prod/env/env.vscode-plugin.d.ts +1 -0
- package/lib-prod/env/env.vscode-plugin.js +3 -0
- package/lib-prod/env/env.vscode-plugin.js.map +1 -1
- package/lib-prod/i18n/translation.ts.en-US.i18n.data.js +3 -3
- package/lib-prod/i18n/translation.ts.pl-PL.i18n.data.js +3 -3
- package/lib-prod/local-translation.js.map +1 -1
- package/lib-prod/package.json +1 -1
- package/lib-prod/translation-manager.js.map +1 -1
- package/lib-prod/translation.d.ts +4 -0
- package/lib-prod/translation.js +5 -1
- package/lib-prod/translation.js.map +1 -1
- package/package.json +1 -1
- package/src.d.ts +1 -1
- package/websql/README.md +24 -24
- package/websql/fesm2022/i18n-websql.mjs +20 -12
- package/websql/fesm2022/i18n-websql.mjs.map +1 -1
- package/websql/package.json +1 -1
- package/websql/types/i18n-websql.d.ts +11 -7
- package/websql-prod/README.md +24 -24
- package/websql-prod/fesm2022/i18n-websql-prod.mjs +20 -12
- package/websql-prod/fesm2022/i18n-websql-prod.mjs.map +1 -1
- package/websql-prod/package.json +1 -1
- package/websql-prod/types/i18n-websql-prod.d.ts +11 -7
- package/lib/translate.directive.d.ts +0 -16
- package/lib/translate.pipe.d.ts +0 -10
- package/lib/translate.service.d.ts +0 -7
- package/lib/utils-i18n-extract-gettext-translate-from-html.test.d.ts +0 -1
- package/lib/utils-i18n-extract-gettext-translate-from-html.test.js +0 -324
- package/lib/utils-i18n-extract-gettext-translate-from-html.test.js.map +0 -1
- package/lib/utils-i18n-html.test.d.ts +0 -1
- package/lib/utils-i18n-html.test.js +0 -182
- package/lib/utils-i18n-html.test.js.map +0 -1
- package/lib/utils-po-file-extracto-to-json.test.d.ts +0 -1
- package/lib/utils-po-file-extracto-to-json.test.js +0 -147
- package/lib/utils-po-file-extracto-to-json.test.js.map +0 -1
- package/lib/utils-po-file.test.d.ts +0 -1
- package/lib/utils-po-file.test.js +0 -241
- package/lib/utils-po-file.test.js.map +0 -1
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.d.ts +0 -1
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.js +0 -322
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.js.map +0 -1
- package/lib-esm/lib/utils-i18n-html.test.d.ts +0 -1
- package/lib-esm/lib/utils-i18n-html.test.js +0 -180
- package/lib-esm/lib/utils-i18n-html.test.js.map +0 -1
- package/lib-esm/lib/utils-po-file-extracto-to-json.test.d.ts +0 -1
- package/lib-esm/lib/utils-po-file-extracto-to-json.test.js +0 -145
- package/lib-esm/lib/utils-po-file-extracto-to-json.test.js.map +0 -1
- package/lib-esm/lib/utils-po-file.test.d.ts +0 -1
- package/lib-esm/lib/utils-po-file.test.js +0 -239
- package/lib-esm/lib/utils-po-file.test.js.map +0 -1
- package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.d.ts +0 -1
- package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.js +0 -322
- package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.js.map +0 -1
- package/lib-prod/utils-i18n-html.test.d.ts +0 -1
- package/lib-prod/utils-i18n-html.test.js +0 -180
- package/lib-prod/utils-i18n-html.test.js.map +0 -1
- package/lib-prod/utils-po-file-extracto-to-json.test.d.ts +0 -1
- package/lib-prod/utils-po-file-extracto-to-json.test.js +0 -145
- package/lib-prod/utils-po-file-extracto-to-json.test.js.map +0 -1
- package/lib-prod/utils-po-file.test.d.ts +0 -1
- package/lib-prod/utils-po-file.test.js +0 -239
- package/lib-prod/utils-po-file.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,324 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utils_i18n_html_1 = require("./utils-i18n-html");
|
|
4
|
-
describe('UtilsI18nHtml.extractFromHtml', () => {
|
|
5
|
-
it('extracts element with translate attribute', () => {
|
|
6
|
-
const html = `
|
|
7
|
-
<span translate>
|
|
8
|
-
You have errors in this form. Please click 'Edit incorrect data' to jump to the section and input correct data.
|
|
9
|
-
</span>
|
|
10
|
-
`;
|
|
11
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
12
|
-
{
|
|
13
|
-
lineNumber: 2,
|
|
14
|
-
gettextString: "You have errors in this form. Please click 'Edit incorrect data' to jump to the section and input correct data.",
|
|
15
|
-
// params: null,
|
|
16
|
-
context: undefined,
|
|
17
|
-
},
|
|
18
|
-
]);
|
|
19
|
-
});
|
|
20
|
-
it('extracts translate attribute with translate params', () => {
|
|
21
|
-
const html = `
|
|
22
|
-
<p
|
|
23
|
-
*ngSwitchDefault
|
|
24
|
-
translate
|
|
25
|
-
[translate-params]="{
|
|
26
|
-
size: dialogData.applicationsOidsToRemove.length
|
|
27
|
-
}"
|
|
28
|
-
>
|
|
29
|
-
Do you want to remove [[ size ]] applications?
|
|
30
|
-
</p>
|
|
31
|
-
`;
|
|
32
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
33
|
-
{
|
|
34
|
-
lineNumber: 2,
|
|
35
|
-
gettextString: 'Do you want to remove [[ size ]] applications?',
|
|
36
|
-
// params: {
|
|
37
|
-
// size: 'dialogData.applicationsOidsToRemove.length',
|
|
38
|
-
// },
|
|
39
|
-
context: undefined,
|
|
40
|
-
},
|
|
41
|
-
]);
|
|
42
|
-
});
|
|
43
|
-
it('extracts static strings from conditional translate pipe', () => {
|
|
44
|
-
const html = `
|
|
45
|
-
<span>{{ row.cutOffAtDaymax ? 'Yes' : 'No' | translate }}</span>
|
|
46
|
-
`;
|
|
47
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html).map(m => m.gettextString)).toEqual(['No']);
|
|
48
|
-
});
|
|
49
|
-
it('extracts both strings when translate pipe wraps conditional expression', () => {
|
|
50
|
-
const html = `
|
|
51
|
-
<span>{{ (row.cutOffAtDaymax ? 'Yes' : 'No') | translate }}</span>
|
|
52
|
-
`;
|
|
53
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html).map(m => m.gettextString)).toEqual(['Yes', 'No']);
|
|
54
|
-
});
|
|
55
|
-
it('skips variable-only translate pipe', () => {
|
|
56
|
-
const html = `
|
|
57
|
-
<input placeholder="{{ repsTextFilterPlaceholder | translate }}">
|
|
58
|
-
`;
|
|
59
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([]);
|
|
60
|
-
});
|
|
61
|
-
it('extracts static string translate pipe', () => {
|
|
62
|
-
const html = `
|
|
63
|
-
<span>{{ 'something to tranlaste ' | translate }}</span>
|
|
64
|
-
`;
|
|
65
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
66
|
-
{
|
|
67
|
-
lineNumber: 2,
|
|
68
|
-
gettextString: 'something to tranlaste',
|
|
69
|
-
// params: null,
|
|
70
|
-
context: undefined,
|
|
71
|
-
},
|
|
72
|
-
]);
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
describe('UtilsI18nHtml.extractGettextTranslateFromHtml - t.gettext()', () => {
|
|
76
|
-
it('extracts simple t.gettext from interpolation', () => {
|
|
77
|
-
const html = `
|
|
78
|
-
<span>{{ t.gettext('translation-app works!') }}</span>
|
|
79
|
-
`;
|
|
80
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
81
|
-
{
|
|
82
|
-
lineNumber: 2,
|
|
83
|
-
gettextString: 'translation-app works!',
|
|
84
|
-
// params: null,
|
|
85
|
-
context: undefined,
|
|
86
|
-
},
|
|
87
|
-
]);
|
|
88
|
-
});
|
|
89
|
-
it('extracts t.gettext with null params and context', () => {
|
|
90
|
-
const html = `
|
|
91
|
-
<span>{{ t.gettext('translation-app works!', null, 'context jakis') }}</span>
|
|
92
|
-
`;
|
|
93
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
94
|
-
{
|
|
95
|
-
lineNumber: 2,
|
|
96
|
-
gettextString: 'translation-app works!',
|
|
97
|
-
// params: null,
|
|
98
|
-
context: 'context jakis',
|
|
99
|
-
},
|
|
100
|
-
]);
|
|
101
|
-
});
|
|
102
|
-
it('extracts t.gettext with params and context', () => {
|
|
103
|
-
const html = `
|
|
104
|
-
<span>{{ t.gettext('heloo [[ aa ]]!', { aa: somethingFromComponent }, 'context jakis') }}</span>
|
|
105
|
-
`;
|
|
106
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
107
|
-
{
|
|
108
|
-
lineNumber: 2,
|
|
109
|
-
gettextString: 'heloo [[ aa ]]!',
|
|
110
|
-
// params: null,
|
|
111
|
-
context: 'context jakis',
|
|
112
|
-
},
|
|
113
|
-
]);
|
|
114
|
-
});
|
|
115
|
-
it('extracts multiple gettext calls from one interpolation', () => {
|
|
116
|
-
const html = `
|
|
117
|
-
<span>{{ t.gettext('Yes') + ' / ' + t.gettext('No') }}</span>
|
|
118
|
-
`;
|
|
119
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html).map(x => x.gettextString)).toEqual(['Yes', 'No']);
|
|
120
|
-
});
|
|
121
|
-
it('extracts nested property chain ending with gettext', () => {
|
|
122
|
-
const html = `
|
|
123
|
-
<span>{{ something.deep.t.gettext('Deep hello') }}</span>
|
|
124
|
-
`;
|
|
125
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
126
|
-
{
|
|
127
|
-
lineNumber: 2,
|
|
128
|
-
gettextString: 'Deep hello',
|
|
129
|
-
// params: null,
|
|
130
|
-
context: undefined,
|
|
131
|
-
},
|
|
132
|
-
]);
|
|
133
|
-
});
|
|
134
|
-
it('skips dynamic gettext string', () => {
|
|
135
|
-
const html = `
|
|
136
|
-
<span>{{ t.gettext(dynamicLabel) }}</span>
|
|
137
|
-
`;
|
|
138
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([]);
|
|
139
|
-
});
|
|
140
|
-
it('extracts gettext with double quotes', () => {
|
|
141
|
-
const html = `
|
|
142
|
-
<span>{{ t.gettext("Double quote text") }}</span>
|
|
143
|
-
`;
|
|
144
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
145
|
-
{
|
|
146
|
-
lineNumber: 2,
|
|
147
|
-
gettextString: 'Double quote text',
|
|
148
|
-
// params: null,
|
|
149
|
-
context: undefined,
|
|
150
|
-
},
|
|
151
|
-
]);
|
|
152
|
-
});
|
|
153
|
-
it('extracts gettext with backticks without interpolation', () => {
|
|
154
|
-
const html = `
|
|
155
|
-
<span>{{ t.gettext(\`Backtick text\`) }}</span>
|
|
156
|
-
`;
|
|
157
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
158
|
-
{
|
|
159
|
-
lineNumber: 2,
|
|
160
|
-
gettextString: 'Backtick text',
|
|
161
|
-
// params: null,
|
|
162
|
-
context: undefined,
|
|
163
|
-
},
|
|
164
|
-
]);
|
|
165
|
-
});
|
|
166
|
-
it('should extract select lang', () => {
|
|
167
|
-
const html = `<span>{{ t.gettext('Select Language') }}</span>`;
|
|
168
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
169
|
-
{
|
|
170
|
-
lineNumber: 1,
|
|
171
|
-
gettextString: 'Select Language',
|
|
172
|
-
// params: null,
|
|
173
|
-
context: undefined,
|
|
174
|
-
},
|
|
175
|
-
]);
|
|
176
|
-
});
|
|
177
|
-
it('should extract trasnlated please wait', () => {
|
|
178
|
-
const html = `
|
|
179
|
-
<div class="p-4">
|
|
180
|
-
<h3 class="w-full" translate>Please wait...</h3>
|
|
181
|
-
<mat-progress-bar mode="indeterminate" />
|
|
182
|
-
</div>
|
|
183
|
-
`;
|
|
184
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
185
|
-
{
|
|
186
|
-
lineNumber: 3,
|
|
187
|
-
gettextString: 'Please wait...',
|
|
188
|
-
// params: null,
|
|
189
|
-
context: undefined,
|
|
190
|
-
},
|
|
191
|
-
]);
|
|
192
|
-
});
|
|
193
|
-
it('should extract file with angular syntax', () => {
|
|
194
|
-
const html = `
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
@if (stateService.isLoadingVideos$ | async) {
|
|
198
|
-
<div class="p-4">
|
|
199
|
-
<h3 class="w-full" translate >Please wait...</h3>
|
|
200
|
-
<mat-progress-bar mode="indeterminate" />
|
|
201
|
-
</div>
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
`;
|
|
205
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html).length).be.above(0);
|
|
206
|
-
});
|
|
207
|
-
it('should extract file with angular block syntax', () => {
|
|
208
|
-
const html = `
|
|
209
|
-
@if (stateService.isLoadingVideos$ | async) {
|
|
210
|
-
<div class="p-4">
|
|
211
|
-
<h3 class="w-full" translate>Please wait...</h3>
|
|
212
|
-
<mat-progress-bar mode="indeterminate" />
|
|
213
|
-
</div>
|
|
214
|
-
}
|
|
215
|
-
`;
|
|
216
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
217
|
-
{
|
|
218
|
-
lineNumber: 4,
|
|
219
|
-
gettextString: 'Please wait...',
|
|
220
|
-
context: undefined,
|
|
221
|
-
},
|
|
222
|
-
]);
|
|
223
|
-
});
|
|
224
|
-
it('should extract when new angula syntax', () => {
|
|
225
|
-
const html = `
|
|
226
|
-
@for (vid of section.children; track vid.productId) {
|
|
227
|
-
@let isLoggedIn = session.isLoggedIn$ | async;
|
|
228
|
-
@let isProcessing =
|
|
229
|
-
processingPaymentInProgressForProductId.includes(vid.parentId);
|
|
230
|
-
@let isAuthorized = authorizedSectionsId.includes(vid.parentId);
|
|
231
|
-
@let title =
|
|
232
|
-
isProcessing
|
|
233
|
-
? t.gettext('Processing Payment. Please wait.')
|
|
234
|
-
: vid.productTitle;
|
|
235
|
-
|
|
236
|
-
<div class="col-span-12 p-2 md:col-span-6 lg:col-span-4">
|
|
237
|
-
<h4 class="mt-0 md:hidden">
|
|
238
|
-
{{ title }}
|
|
239
|
-
</h4>
|
|
240
|
-
|
|
241
|
-
<h4
|
|
242
|
-
class="mt-0 hidden w-full min-w-0 overflow-hidden text-ellipsis whitespace-nowrap md:block">
|
|
243
|
-
{{ title }}
|
|
244
|
-
</h4>
|
|
245
|
-
|
|
246
|
-
<taon-youtube-video
|
|
247
|
-
[videoId]="vid.productId"
|
|
248
|
-
[matTooltip]="vid.productTitle"
|
|
249
|
-
height="222px"
|
|
250
|
-
[state]="
|
|
251
|
-
isLoggedIn && isAuthorized
|
|
252
|
-
? 'video-preview-private'
|
|
253
|
-
: 'preview-picture-locked'
|
|
254
|
-
"
|
|
255
|
-
(paddlockClicked)="isLoggedIn ? confirmBuy(vid) : paddlockClicked()">
|
|
256
|
-
</taon-youtube-video>
|
|
257
|
-
|
|
258
|
-
<br /><br />
|
|
259
|
-
</div>
|
|
260
|
-
}
|
|
261
|
-
`;
|
|
262
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html).length).to.be.above(0);
|
|
263
|
-
});
|
|
264
|
-
it('should not extract when translate inside class name', () => {
|
|
265
|
-
const html = `
|
|
266
|
-
<button
|
|
267
|
-
mat-icon-button
|
|
268
|
-
class="absolute right-4 top-1/2 z-20 -translate-y-1/2 text-white"
|
|
269
|
-
(click)="next()">
|
|
270
|
-
<mat-icon>chevron_right</mat-icon>
|
|
271
|
-
</button>
|
|
272
|
-
`;
|
|
273
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html).length).to.be.eq(0);
|
|
274
|
-
});
|
|
275
|
-
it('should from angular inline component template', () => {
|
|
276
|
-
const html = `
|
|
277
|
-
import { Component, OnInit } from "@angular/core";
|
|
278
|
-
import { Translation } from "@taon-dev/i18n/src";
|
|
279
|
-
import { Taon } from "taon/src";
|
|
280
|
-
const t = Translation.for(Taon.__FILE_RELATIVE_PATH, Taon.LANG_IMPORT_MAP);
|
|
281
|
-
|
|
282
|
-
@Component({
|
|
283
|
-
selector: "selector-name",
|
|
284
|
-
template: \`
|
|
285
|
-
<mat-card-content>
|
|
286
|
-
<h3 translate>Example hello world from backend API:</h3>
|
|
287
|
-
{{ t.gettext("hello world from backend:") }}
|
|
288
|
-
<strong>{{ hello$ | async }}</strong>
|
|
289
|
-
</mat-card-content>
|
|
290
|
-
\`,
|
|
291
|
-
})
|
|
292
|
-
export class NameComponent {
|
|
293
|
-
t = t.for(this);
|
|
294
|
-
signalText = this.t.signal.gettext('hello',null,'helo from component');
|
|
295
|
-
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
`;
|
|
299
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([
|
|
300
|
-
{
|
|
301
|
-
lineNumber: 11,
|
|
302
|
-
gettextString: 'Example hello world from backend API:',
|
|
303
|
-
context: undefined,
|
|
304
|
-
},
|
|
305
|
-
{
|
|
306
|
-
lineNumber: 12,
|
|
307
|
-
gettextString: 'hello world from backend:',
|
|
308
|
-
context: undefined,
|
|
309
|
-
},
|
|
310
|
-
{
|
|
311
|
-
lineNumber: 19,
|
|
312
|
-
gettextString: 'hello',
|
|
313
|
-
context: 'helo from component',
|
|
314
|
-
},
|
|
315
|
-
]);
|
|
316
|
-
});
|
|
317
|
-
// it('skips gettext with template interpolation', () => {
|
|
318
|
-
// const html = `
|
|
319
|
-
// <span>{{ t.gettext(\`Hello \${name}\`) }}</span>
|
|
320
|
-
// `;
|
|
321
|
-
// expect(UtilsI18nHtml.extractGettextTranslateFromHtml(html)).toEqual([]);
|
|
322
|
-
// });
|
|
323
|
-
});
|
|
324
|
-
//# sourceMappingURL=utils-i18n-extract-gettext-translate-from-html.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils-i18n-extract-gettext-translate-from-html.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utils_i18n_html_1 = require("./utils-i18n-html");
|
|
4
|
-
describe('UtilsI18nHtml.replaceTranslatePipieDirectiveTContext', () => {
|
|
5
|
-
it('adds translate-t to translate directive', () => {
|
|
6
|
-
const html = `
|
|
7
|
-
<p translate>
|
|
8
|
-
translation-app works!
|
|
9
|
-
</p>
|
|
10
|
-
`;
|
|
11
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toContain(`<p translate [translate-t]="t">`);
|
|
12
|
-
});
|
|
13
|
-
it('does not duplicate translate-t', () => {
|
|
14
|
-
const html = `
|
|
15
|
-
<p translate [translate-t]="t">
|
|
16
|
-
translation-app works!
|
|
17
|
-
</p>
|
|
18
|
-
`;
|
|
19
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toBe(html);
|
|
20
|
-
});
|
|
21
|
-
it('adds t to translate pipe', () => {
|
|
22
|
-
const html = `
|
|
23
|
-
{{ 'translation-app works!' | translate }}
|
|
24
|
-
`;
|
|
25
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toContain(`{{ 'translation-app works!' | translate:t }}`);
|
|
26
|
-
});
|
|
27
|
-
it('does not modify translate pipe with existing args', () => {
|
|
28
|
-
const html = `
|
|
29
|
-
{{ 'translation-app works!' | translate:t }}
|
|
30
|
-
{{ 'hello' | translate:t:{ a: 1 } }}
|
|
31
|
-
`;
|
|
32
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toBe(html);
|
|
33
|
-
});
|
|
34
|
-
it('handles directive and pipe together', () => {
|
|
35
|
-
const html = `
|
|
36
|
-
<code>
|
|
37
|
-
<p
|
|
38
|
-
translate>
|
|
39
|
-
translation-app works!
|
|
40
|
-
</p>
|
|
41
|
-
</code>
|
|
42
|
-
TRANSLATE PIPIE<br />
|
|
43
|
-
<code> {{ 'translation-app works!' | translate }} </code>
|
|
44
|
-
`;
|
|
45
|
-
const result = utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html);
|
|
46
|
-
expect(result).toContain(`translate [translate-t]="t">`);
|
|
47
|
-
expect(result).toContain(`| translate:t`);
|
|
48
|
-
});
|
|
49
|
-
it('handles self closing tags', () => {
|
|
50
|
-
const html = `<input translate />`;
|
|
51
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toBe(`<input translate [translate-t]="t"/>`);
|
|
52
|
-
});
|
|
53
|
-
it('Should handle angular stuff', () => {
|
|
54
|
-
const html = `
|
|
55
|
-
|
|
56
|
-
<ng-template #loadingVideos>
|
|
57
|
-
@if (stateService.isLoadingVideos$ | async) {
|
|
58
|
-
<div class="p-4">
|
|
59
|
-
<h3
|
|
60
|
-
class="w-full"
|
|
61
|
-
translate>
|
|
62
|
-
Please wait...
|
|
63
|
-
</h3>
|
|
64
|
-
<mat-progress-bar mode="indeterminate" />
|
|
65
|
-
</div>
|
|
66
|
-
}
|
|
67
|
-
</ng-template>
|
|
68
|
-
|
|
69
|
-
`;
|
|
70
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).to.includes(`[translate-t]="t"`);
|
|
71
|
-
});
|
|
72
|
-
it('Should not replace when in class', () => {
|
|
73
|
-
const html = ` <button
|
|
74
|
-
mat-icon-button
|
|
75
|
-
class="absolute right-4 top-1/2 z-20 -translate-y-1/2 text-white"
|
|
76
|
-
(click)="next()">
|
|
77
|
-
<mat-icon>chevron_right</mat-icon>
|
|
78
|
-
</button>`;
|
|
79
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).to.be.eq(html);
|
|
80
|
-
});
|
|
81
|
-
it('handles @for block with translate directive', () => {
|
|
82
|
-
const html = `
|
|
83
|
-
@for (item of items; track item.id) {
|
|
84
|
-
<span translate>Hello</span>
|
|
85
|
-
}
|
|
86
|
-
`;
|
|
87
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toContain(`<span translate [translate-t]="t">`);
|
|
88
|
-
});
|
|
89
|
-
it('handles @else block with translate directive', () => {
|
|
90
|
-
const html = `
|
|
91
|
-
@if (ready) {
|
|
92
|
-
<p>Ready</p>
|
|
93
|
-
} @else {
|
|
94
|
-
<p translate>Loading</p>
|
|
95
|
-
}
|
|
96
|
-
`;
|
|
97
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toContain(`<p translate [translate-t]="t">`);
|
|
98
|
-
});
|
|
99
|
-
it('handles nested angular blocks', () => {
|
|
100
|
-
const html = `
|
|
101
|
-
@if (items.length) {
|
|
102
|
-
@for (item of items; track item.id) {
|
|
103
|
-
<h4 translate>{{ item.title }}</h4>
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
`;
|
|
107
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toContain(`<h4 translate [translate-t]="t">`);
|
|
108
|
-
});
|
|
109
|
-
it('does not duplicate translate-t inside angular block', () => {
|
|
110
|
-
const html = `
|
|
111
|
-
@if (visible) {
|
|
112
|
-
<p translate [translate-t]="t">Hello</p>
|
|
113
|
-
}
|
|
114
|
-
`;
|
|
115
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toBe(html);
|
|
116
|
-
});
|
|
117
|
-
it('handles translate pipe inside @let', () => {
|
|
118
|
-
const html = `
|
|
119
|
-
@let title = 'Hello' | translate;
|
|
120
|
-
<h1>{{ title }}</h1>
|
|
121
|
-
`;
|
|
122
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toContain(`@let title = 'Hello' | translate:t;`);
|
|
123
|
-
});
|
|
124
|
-
it('does not touch translate-looking text in normal attributes', () => {
|
|
125
|
-
const html = `
|
|
126
|
-
<div
|
|
127
|
-
data-test="translate"
|
|
128
|
-
aria-label="please translate this"
|
|
129
|
-
class="translate-x-4">
|
|
130
|
-
</div>
|
|
131
|
-
`;
|
|
132
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toBe(html);
|
|
133
|
-
});
|
|
134
|
-
it('handles multiple translate directives', () => {
|
|
135
|
-
const html = `
|
|
136
|
-
<p translate>One</p>
|
|
137
|
-
<span translate>Two</span>
|
|
138
|
-
`;
|
|
139
|
-
const result = utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html);
|
|
140
|
-
expect(result.match(/\[translate-t\]="t"/g)?.length).toBe(2);
|
|
141
|
-
});
|
|
142
|
-
it('handles translate directive with other attributes after it', () => {
|
|
143
|
-
const html = `<p translate class="text-lg">Hello</p>`;
|
|
144
|
-
expect(utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(html)).toBe(`<p translate class="text-lg" [translate-t]="t">Hello</p>`);
|
|
145
|
-
});
|
|
146
|
-
const htmlAngularInlineComponent = `
|
|
147
|
-
import { Component, OnInit } from "@angular/core";
|
|
148
|
-
import { Translation } from "@taon-dev/i18n/src";
|
|
149
|
-
import { Taon } from "taon/src";
|
|
150
|
-
const t = Translation.for(Taon.__FILE_RELATIVE_PATH, Taon.LANG_IMPORT_MAP);
|
|
151
|
-
|
|
152
|
-
@Component({
|
|
153
|
-
selector: "selector-name",
|
|
154
|
-
template: \`
|
|
155
|
-
<mat-card-content>
|
|
156
|
-
<h3 translate>Example hello world from backend API:</h3>
|
|
157
|
-
{{ t.gettext("hello world from backend:") }}
|
|
158
|
-
<strong>{{ hello$ | async }}</strong>
|
|
159
|
-
</mat-card-content>
|
|
160
|
-
\`,
|
|
161
|
-
})
|
|
162
|
-
export class NameComponent {
|
|
163
|
-
t = t.for(this);
|
|
164
|
-
signalText = this.t.signal.gettext('hello',null,'helo from component');
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
`;
|
|
169
|
-
it('handle inline components template when explicite ', () => {
|
|
170
|
-
const changed = utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(htmlAngularInlineComponent, {
|
|
171
|
-
angularTsWithInlineHtml: true,
|
|
172
|
-
});
|
|
173
|
-
// console.log({ changed });
|
|
174
|
-
expect(changed).to.includes(`translate [translate-t]="t"`);
|
|
175
|
-
});
|
|
176
|
-
it('handle inline components template when detection ', () => {
|
|
177
|
-
const changed = utils_i18n_html_1.UtilsI18nHtml.replaceTranslatePipieDirectiveTContext(htmlAngularInlineComponent);
|
|
178
|
-
// console.log({ changed });
|
|
179
|
-
expect(changed).to.includes(`translate [translate-t]="t"`);
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
//# sourceMappingURL=utils-i18n-html.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils-i18n-html.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utils_po_file_1 = require("./utils-po-file");
|
|
4
|
-
describe('UtilsPoFile.extractPoToJson', () => {
|
|
5
|
-
it('extracts Poedit PO entries and ignores empty translations', () => {
|
|
6
|
-
const poContent = `
|
|
7
|
-
msgid ""
|
|
8
|
-
msgstr ""
|
|
9
|
-
"Project-Id-Version: \\\\n"
|
|
10
|
-
"Language: de_DE\\\\n"
|
|
11
|
-
"Content-Type: text/plain; charset=UTF-8\\\\n"
|
|
12
|
-
"X-Generator: Poedit 3.9\\\\n"
|
|
13
|
-
|
|
14
|
-
#: lib/gm-special-draw-api/gm-special-draw.model.ts
|
|
15
|
-
msgid "13-er Ergebniswette"
|
|
16
|
-
msgstr ""
|
|
17
|
-
|
|
18
|
-
#: lib/gm-messages/gm-messages.ts
|
|
19
|
-
msgid "Device not found"
|
|
20
|
-
msgstr "Gerät nicht gefunden"
|
|
21
|
-
|
|
22
|
-
#: lib/gm-messages/gm-messages.ts
|
|
23
|
-
msgid "Discount amount exceeds minimum amount"
|
|
24
|
-
msgstr " "
|
|
25
|
-
|
|
26
|
-
#: lib/gm-messages/gm-messages.ts lib/gm-messages/gm-rpc-generated-errors.ts
|
|
27
|
-
msgid "Data corrupted"
|
|
28
|
-
msgstr "Daten beschädigt"
|
|
29
|
-
`;
|
|
30
|
-
const result = utils_po_file_1.UtilsPoFile.extractPoToJson(poContent);
|
|
31
|
-
expect(result).toEqual([
|
|
32
|
-
{
|
|
33
|
-
fileAbsPath: 'lib/gm-special-draw-api/gm-special-draw.model.ts',
|
|
34
|
-
fileRelativePath: 'lib/gm-special-draw-api/gm-special-draw.model.ts',
|
|
35
|
-
tags: [
|
|
36
|
-
{
|
|
37
|
-
lineNumber: 0,
|
|
38
|
-
gettextString: '13-er Ergebniswette',
|
|
39
|
-
context: undefined,
|
|
40
|
-
translation: undefined,
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
fileAbsPath: 'lib/gm-messages/gm-messages.ts',
|
|
46
|
-
fileRelativePath: 'lib/gm-messages/gm-messages.ts',
|
|
47
|
-
tags: [
|
|
48
|
-
{
|
|
49
|
-
lineNumber: 0,
|
|
50
|
-
gettextString: 'Device not found',
|
|
51
|
-
context: undefined,
|
|
52
|
-
translation: 'Gerät nicht gefunden',
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
lineNumber: 0,
|
|
56
|
-
gettextString: 'Discount amount exceeds minimum amount',
|
|
57
|
-
context: undefined,
|
|
58
|
-
translation: undefined,
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
lineNumber: 0,
|
|
62
|
-
gettextString: 'Data corrupted',
|
|
63
|
-
context: undefined,
|
|
64
|
-
translation: 'Daten beschädigt',
|
|
65
|
-
},
|
|
66
|
-
],
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
fileAbsPath: 'lib/gm-messages/gm-rpc-generated-errors.ts',
|
|
70
|
-
fileRelativePath: 'lib/gm-messages/gm-rpc-generated-errors.ts',
|
|
71
|
-
tags: [
|
|
72
|
-
{
|
|
73
|
-
lineNumber: 0,
|
|
74
|
-
gettextString: 'Data corrupted',
|
|
75
|
-
context: undefined,
|
|
76
|
-
translation: 'Daten beschädigt',
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
},
|
|
80
|
-
]);
|
|
81
|
-
});
|
|
82
|
-
it('supports references containing line numbers', () => {
|
|
83
|
-
const poContent = `
|
|
84
|
-
#: lib/example.ts:15 lib/second.ts:31
|
|
85
|
-
msgid "Device not found"
|
|
86
|
-
msgstr "Gerät nicht gefunden"
|
|
87
|
-
`;
|
|
88
|
-
expect(utils_po_file_1.UtilsPoFile.extractPoToJson(poContent)).toEqual([
|
|
89
|
-
{
|
|
90
|
-
fileAbsPath: 'lib/example.ts',
|
|
91
|
-
fileRelativePath: 'lib/example.ts',
|
|
92
|
-
tags: [
|
|
93
|
-
{
|
|
94
|
-
lineNumber: 15,
|
|
95
|
-
gettextString: 'Device not found',
|
|
96
|
-
context: undefined,
|
|
97
|
-
translation: 'Gerät nicht gefunden',
|
|
98
|
-
},
|
|
99
|
-
],
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
fileAbsPath: 'lib/second.ts',
|
|
103
|
-
fileRelativePath: 'lib/second.ts',
|
|
104
|
-
tags: [
|
|
105
|
-
{
|
|
106
|
-
lineNumber: 31,
|
|
107
|
-
gettextString: 'Device not found',
|
|
108
|
-
context: undefined,
|
|
109
|
-
translation: 'Gerät nicht gefunden',
|
|
110
|
-
},
|
|
111
|
-
],
|
|
112
|
-
},
|
|
113
|
-
]);
|
|
114
|
-
});
|
|
115
|
-
it('supports PO files containing UTF-8 BOM', () => {
|
|
116
|
-
const poContent = '\uFEFF' +
|
|
117
|
-
`
|
|
118
|
-
msgid ""
|
|
119
|
-
msgstr ""
|
|
120
|
-
"Language: de_DE\\\\n"
|
|
121
|
-
|
|
122
|
-
#: lib/example.ts:4
|
|
123
|
-
msgid "Access prohibited"
|
|
124
|
-
msgstr "Zugriff verboten"
|
|
125
|
-
`;
|
|
126
|
-
const result = utils_po_file_1.UtilsPoFile.extractPoToJson(poContent);
|
|
127
|
-
expect(result[0]?.tags[0]?.translation).toBe('Zugriff verboten');
|
|
128
|
-
});
|
|
129
|
-
it('escapes translations when generating PO content', () => {
|
|
130
|
-
const result = utils_po_file_1.UtilsPoFile.generatePoFileContent([
|
|
131
|
-
{
|
|
132
|
-
fileAbsPath: '/project/lib/example.ts',
|
|
133
|
-
fileRelativePath: 'lib/example.ts',
|
|
134
|
-
tags: [
|
|
135
|
-
{
|
|
136
|
-
lineNumber: 10,
|
|
137
|
-
gettextString: 'Displayed "message"',
|
|
138
|
-
translation: 'Eine "Nachricht"\\nmit neuer Zeile',
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
},
|
|
142
|
-
], 'de-DE');
|
|
143
|
-
expect(result).toContain('msgid "Displayed \\"message\\""');
|
|
144
|
-
expect(result).toContain('msgstr "Eine \\"Nachricht\\"\\\\nmit neuer Zeile"');
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
//# sourceMappingURL=utils-po-file-extracto-to-json.test.js.map
|