@taon-dev/i18n 21.0.20 → 21.0.22
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 +5 -0
- package/assets/shared/shared_folder_info.txt +7 -0
- package/browser/README.md +24 -0
- package/browser/fesm2022/i18n-browser.mjs +1567 -0
- package/browser/fesm2022/i18n-browser.mjs.map +1 -0
- package/browser/package.json +20 -1
- package/browser/types/i18n-browser.d.ts +195 -0
- package/browser-prod/README.md +24 -0
- package/browser-prod/fesm2022/i18n-browser-prod.mjs +1556 -0
- package/browser-prod/fesm2022/i18n-browser-prod.mjs.map +1 -0
- package/browser-prod/package.json +20 -2
- package/browser-prod/types/i18n-browser-prod.d.ts +189 -0
- package/browser-prod.re-export.json +1 -0
- package/browser-prod.split-namespaces.json +28 -0
- package/cli.d.ts +1 -0
- package/cli.js +8 -0
- package/cli.js.map +1 -0
- package/html/app/main-page/main-page.container.html +4 -0
- package/html/assets/generated/pwa/html-pwa.html +60 -0
- package/html/imports.html +3 -0
- package/index.d.ts +3 -0
- package/index.js +20 -0
- package/index.js.map +1 -0
- package/lib/build-info._auto-generated_.d.ts +24 -0
- package/lib/build-info._auto-generated_.js +30 -0
- package/lib/build-info._auto-generated_.js.map +1 -0
- package/lib/env/env.angular-node-app.d.ts +67 -0
- package/lib/env/env.angular-node-app.js +141 -0
- package/lib/env/env.angular-node-app.js.map +1 -0
- package/lib/env/env.docs-webapp.d.ts +67 -0
- package/lib/env/env.docs-webapp.js +141 -0
- package/lib/env/env.docs-webapp.js.map +1 -0
- package/lib/env/env.electron-app.d.ts +67 -0
- package/lib/env/env.electron-app.js +141 -0
- package/lib/env/env.electron-app.js.map +1 -0
- package/lib/env/env.mobile-app.d.ts +67 -0
- package/lib/env/env.mobile-app.js +141 -0
- package/lib/env/env.mobile-app.js.map +1 -0
- package/lib/env/env.npm-lib-and-cli-tool.d.ts +67 -0
- package/lib/env/env.npm-lib-and-cli-tool.js +141 -0
- package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -0
- package/lib/env/env.vscode-plugin.d.ts +67 -0
- package/lib/env/env.vscode-plugin.js +141 -0
- package/lib/env/env.vscode-plugin.js.map +1 -0
- package/lib/env/index.d.ts +6 -0
- package/lib/env/index.js +23 -0
- package/lib/env/index.js.map +1 -0
- package/lib/index._auto-generated_.d.ts +11 -0
- package/lib/index._auto-generated_.js +33 -0
- package/lib/index._auto-generated_.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +20 -0
- package/lib/index.js.map +1 -0
- package/lib/package.json +1 -1
- package/lib/start-cli.d.ts +7 -0
- package/lib/start-cli.js +48 -0
- package/lib/start-cli.js.map +1 -0
- package/lib/translate.directive.d.ts +16 -0
- package/lib/translate.pipe.d.ts +10 -0
- package/lib/translate.service.d.ts +13 -0
- package/lib/translation-manager.d.ts +33 -0
- package/lib/translation-manager.js +119 -0
- package/lib/translation-manager.js.map +1 -0
- package/lib/translation.d.ts +44 -0
- package/lib/translation.js +253 -0
- package/lib/translation.js.map +1 -0
- package/lib/translation.models.d.ts +25 -0
- package/lib/translation.models.js +3 -0
- package/lib/translation.models.js.map +1 -0
- package/lib/utils-i18n-extract-gettext-translate-from-html.d.ts +4 -0
- package/lib/utils-i18n-extract-gettext-translate-from-html.js +465 -0
- package/lib/utils-i18n-extract-gettext-translate-from-html.js.map +1 -0
- package/lib/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
- package/lib/utils-i18n-extract-gettext-translate-from-html.test.js +282 -0
- package/lib/utils-i18n-extract-gettext-translate-from-html.test.js.map +1 -0
- package/lib/utils-i18n-html.d.ts +5 -0
- package/lib/utils-i18n-html.js +125 -0
- package/lib/utils-i18n-html.js.map +1 -0
- package/lib/utils-i18n-html.test.d.ts +1 -0
- package/lib/utils-i18n-html.test.js +147 -0
- package/lib/utils-i18n-html.test.js.map +1 -0
- package/lib/utils-po-file.d.ts +8 -0
- package/lib/utils-po-file.js +245 -0
- package/lib/utils-po-file.js.map +1 -0
- package/lib/utils-po-file.test.d.ts +1 -0
- package/lib/utils-po-file.test.js +239 -0
- package/lib/utils-po-file.test.js.map +1 -0
- package/lib-esm/app/main-page/main-page.active.context.d.ts +19 -0
- package/lib-esm/app/main-page/main-page.active.context.js +19 -0
- package/lib-esm/app/main-page/main-page.active.context.js.map +1 -0
- package/lib-esm/app.d.ts +3 -0
- package/lib-esm/app.electron.d.ts +1 -0
- package/lib-esm/app.electron.js +2 -0
- package/lib-esm/app.electron.js.map +1 -0
- package/lib-esm/app.hosts.d.ts +147 -0
- package/lib-esm/app.hosts.js +217 -0
- package/lib-esm/app.hosts.js.map +1 -0
- package/lib-esm/app.js +460 -0
- package/lib-esm/app.js.map +1 -0
- package/lib-esm/app.vscode.d.ts +9 -0
- package/lib-esm/app.vscode.js +37 -0
- package/lib-esm/app.vscode.js.map +1 -0
- package/lib-esm/cli.d.ts +1 -0
- package/lib-esm/cli.js +4 -0
- package/lib-esm/cli.js.map +1 -0
- package/lib-esm/index.d.ts +3 -0
- package/lib-esm/index.js +4 -0
- package/lib-esm/index.js.map +1 -0
- package/lib-esm/lib/build-info._auto-generated_.d.ts +24 -0
- package/lib-esm/lib/build-info._auto-generated_.js +27 -0
- package/lib-esm/lib/build-info._auto-generated_.js.map +1 -0
- package/lib-esm/lib/env/env.angular-node-app.d.ts +67 -0
- package/lib-esm/lib/env/env.angular-node-app.js +137 -0
- package/lib-esm/lib/env/env.angular-node-app.js.map +1 -0
- package/lib-esm/lib/env/env.docs-webapp.d.ts +67 -0
- package/lib-esm/lib/env/env.docs-webapp.js +137 -0
- package/lib-esm/lib/env/env.docs-webapp.js.map +1 -0
- package/lib-esm/lib/env/env.electron-app.d.ts +67 -0
- package/lib-esm/lib/env/env.electron-app.js +137 -0
- package/lib-esm/lib/env/env.electron-app.js.map +1 -0
- package/lib-esm/lib/env/env.mobile-app.d.ts +67 -0
- package/lib-esm/lib/env/env.mobile-app.js +137 -0
- package/lib-esm/lib/env/env.mobile-app.js.map +1 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +67 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +137 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -0
- package/lib-esm/lib/env/env.vscode-plugin.d.ts +67 -0
- package/lib-esm/lib/env/env.vscode-plugin.js +137 -0
- package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -0
- package/lib-esm/lib/env/index.d.ts +6 -0
- package/lib-esm/lib/env/index.js +7 -0
- package/lib-esm/lib/env/index.js.map +1 -0
- package/lib-esm/lib/index._auto-generated_.d.ts +8 -0
- package/lib-esm/lib/index._auto-generated_.js +17 -0
- package/lib-esm/lib/index._auto-generated_.js.map +1 -0
- package/lib-esm/lib/index.d.ts +4 -0
- package/lib-esm/lib/index.js +4 -0
- package/lib-esm/lib/index.js.map +1 -0
- package/lib-esm/lib/start-cli.d.ts +7 -0
- package/lib-esm/lib/start-cli.js +45 -0
- package/lib-esm/lib/start-cli.js.map +1 -0
- package/lib-esm/lib/translation-manager.d.ts +33 -0
- package/lib-esm/lib/translation-manager.js +115 -0
- package/lib-esm/lib/translation-manager.js.map +1 -0
- package/lib-esm/lib/translation.d.ts +43 -0
- package/lib-esm/lib/translation.js +249 -0
- package/lib-esm/lib/translation.js.map +1 -0
- package/lib-esm/lib/translation.models.d.ts +25 -0
- package/lib-esm/lib/translation.models.js +2 -0
- package/lib-esm/lib/translation.models.js.map +1 -0
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.d.ts +4 -0
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.js +462 -0
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.js.map +1 -0
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.js +280 -0
- package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.js.map +1 -0
- package/lib-esm/lib/utils-i18n-html.d.ts +5 -0
- package/lib-esm/lib/utils-i18n-html.js +122 -0
- package/lib-esm/lib/utils-i18n-html.js.map +1 -0
- package/lib-esm/lib/utils-i18n-html.test.d.ts +1 -0
- package/lib-esm/lib/utils-i18n-html.test.js +145 -0
- package/lib-esm/lib/utils-i18n-html.test.js.map +1 -0
- package/lib-esm/lib/utils-po-file.d.ts +8 -0
- package/lib-esm/lib/utils-po-file.js +242 -0
- package/lib-esm/lib/utils-po-file.js.map +1 -0
- package/lib-esm/lib/utils-po-file.test.d.ts +1 -0
- package/lib-esm/lib/utils-po-file.test.js +237 -0
- package/lib-esm/lib/utils-po-file.test.js.map +1 -0
- package/lib-prod/build-info._auto-generated_.d.ts +24 -0
- package/lib-prod/build-info._auto-generated_.js +27 -0
- package/lib-prod/build-info._auto-generated_.js.map +1 -0
- package/lib-prod/env/env.angular-node-app.d.ts +67 -0
- package/lib-prod/env/env.angular-node-app.js +137 -0
- package/lib-prod/env/env.angular-node-app.js.map +1 -0
- package/lib-prod/env/env.docs-webapp.d.ts +67 -0
- package/lib-prod/env/env.docs-webapp.js +137 -0
- package/lib-prod/env/env.docs-webapp.js.map +1 -0
- package/lib-prod/env/env.electron-app.d.ts +67 -0
- package/lib-prod/env/env.electron-app.js +137 -0
- package/lib-prod/env/env.electron-app.js.map +1 -0
- package/lib-prod/env/env.mobile-app.d.ts +67 -0
- package/lib-prod/env/env.mobile-app.js +137 -0
- package/lib-prod/env/env.mobile-app.js.map +1 -0
- package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +67 -0
- package/lib-prod/env/env.npm-lib-and-cli-tool.js +137 -0
- package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -0
- package/lib-prod/env/env.vscode-plugin.d.ts +67 -0
- package/lib-prod/env/env.vscode-plugin.js +137 -0
- package/lib-prod/env/env.vscode-plugin.js.map +1 -0
- package/lib-prod/env/index.d.ts +6 -0
- package/lib-prod/env/index.js +7 -0
- package/lib-prod/env/index.js.map +1 -0
- package/lib-prod/index._auto-generated_.d.ts +8 -0
- package/lib-prod/index._auto-generated_.js +17 -0
- package/lib-prod/index._auto-generated_.js.map +1 -0
- package/lib-prod/index.d.ts +4 -0
- package/lib-prod/index.js +4 -0
- package/lib-prod/index.js.map +1 -0
- package/lib-prod/package.json +1 -1
- package/lib-prod/start-cli.d.ts +7 -0
- package/lib-prod/start-cli.js +45 -0
- package/lib-prod/start-cli.js.map +1 -0
- package/lib-prod/translation-manager.d.ts +33 -0
- package/lib-prod/translation-manager.js +115 -0
- package/lib-prod/translation-manager.js.map +1 -0
- package/lib-prod/translation.d.ts +43 -0
- package/lib-prod/translation.js +249 -0
- package/lib-prod/translation.js.map +1 -0
- package/lib-prod/translation.models.d.ts +25 -0
- package/lib-prod/translation.models.js +2 -0
- package/lib-prod/translation.models.js.map +1 -0
- package/lib-prod/utils-i18n-extract-gettext-translate-from-html.d.ts +2 -0
- package/lib-prod/utils-i18n-extract-gettext-translate-from-html.js +460 -0
- package/lib-prod/utils-i18n-extract-gettext-translate-from-html.js.map +1 -0
- package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
- package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.js +280 -0
- package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.js.map +1 -0
- package/lib-prod/utils-i18n-html.d.ts +3 -0
- package/lib-prod/utils-i18n-html.js +119 -0
- package/lib-prod/utils-i18n-html.js.map +1 -0
- package/lib-prod/utils-i18n-html.test.d.ts +1 -0
- package/lib-prod/utils-i18n-html.test.js +145 -0
- package/lib-prod/utils-i18n-html.test.js.map +1 -0
- package/lib-prod/utils-po-file.d.ts +6 -0
- package/lib-prod/utils-po-file.js +236 -0
- package/lib-prod/utils-po-file.js.map +1 -0
- package/lib-prod/utils-po-file.test.d.ts +1 -0
- package/lib-prod/utils-po-file.test.js +237 -0
- package/lib-prod/utils-po-file.test.js.map +1 -0
- package/lib-prod.re-export.json +1 -0
- package/lib-prod.split-namespaces.json +28 -0
- package/package.json +1 -1
- package/scss/app/main-page/main-page.container.scss +3 -0
- package/scss/global.scss +94 -0
- package/scss/index.scss +2 -0
- package/scss/lib/index.scss +2 -0
- package/scss/vars.scss +7 -0
- package/src.js +4 -0
- package/websql/README.md +24 -0
- package/websql/fesm2022/i18n-websql.mjs +1567 -0
- package/websql/fesm2022/i18n-websql.mjs.map +1 -0
- package/websql/package.json +20 -1
- package/websql/types/i18n-websql.d.ts +195 -0
- package/websql-prod/README.md +24 -0
- package/websql-prod/fesm2022/i18n-websql-prod.mjs +1556 -0
- package/websql-prod/fesm2022/i18n-websql-prod.mjs.map +1 -0
- package/websql-prod/package.json +20 -2
- package/websql-prod/types/i18n-websql-prod.d.ts +189 -0
- package/websql-prod.re-export.json +1 -0
- package/websql-prod.split-namespaces.json +28 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from 'fs'; // @backend
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
//namespace UtilsPoFile
|
|
4
|
+
//#region generate po files
|
|
5
|
+
export function UtilsPoFile__NS__generatePoFiles(files, locales, destinationAbsFolderPath) {
|
|
6
|
+
//#region @backendFunc
|
|
7
|
+
mkdirSync(destinationAbsFolderPath, { recursive: true });
|
|
8
|
+
for (const locale of locales) {
|
|
9
|
+
const poContent = UtilsPoFile__NS__generatePoFileContent(files, locale);
|
|
10
|
+
const poFilePath = join(destinationAbsFolderPath, `${locale}.po`);
|
|
11
|
+
writeFileSync(poFilePath, poContent, 'utf8');
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region generate po file content
|
|
17
|
+
export function UtilsPoFile__NS__generatePoFileContent(files, locale) {
|
|
18
|
+
//#region @backendFunc
|
|
19
|
+
const entries = new Map();
|
|
20
|
+
for (const file of files) {
|
|
21
|
+
for (const tag of file.tags) {
|
|
22
|
+
const context = tag.context || '';
|
|
23
|
+
const key = `${context}\u0004${tag.gettextString}`;
|
|
24
|
+
let entry = entries.get(key);
|
|
25
|
+
if (!entry) {
|
|
26
|
+
entry = {
|
|
27
|
+
msgid: tag.gettextString,
|
|
28
|
+
context: tag.context,
|
|
29
|
+
translation: tag.translation,
|
|
30
|
+
refs: [],
|
|
31
|
+
};
|
|
32
|
+
entries.set(key, entry);
|
|
33
|
+
}
|
|
34
|
+
entry.refs.push(`${file.fileRelativePath}:${tag.lineNumber}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const lines = [];
|
|
38
|
+
lines.push('msgid ""');
|
|
39
|
+
lines.push('msgstr ""');
|
|
40
|
+
lines.push(`"Language: ${escapePoString(locale)}\\n"`);
|
|
41
|
+
lines.push('"Content-Type: text/plain; charset=UTF-8\\n"');
|
|
42
|
+
lines.push('"Content-Transfer-Encoding: 8bit\\n"');
|
|
43
|
+
lines.push('');
|
|
44
|
+
for (const entry of entries.values()) {
|
|
45
|
+
for (const ref of entry.refs) {
|
|
46
|
+
lines.push(`#: ${ref}`);
|
|
47
|
+
}
|
|
48
|
+
if (entry.context) {
|
|
49
|
+
lines.push(`msgctxt "${escapePoString(entry.context)}"`);
|
|
50
|
+
}
|
|
51
|
+
lines.push(`msgid "${escapePoString(entry.msgid)}"`);
|
|
52
|
+
lines.push(`msgstr "${entry.translation || ''}"`);
|
|
53
|
+
lines.push('');
|
|
54
|
+
}
|
|
55
|
+
return lines.join('\n');
|
|
56
|
+
//#endregion
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region extract po to json
|
|
60
|
+
export function UtilsPoFile__NS__extractPoToJson(poFileContent) {
|
|
61
|
+
//#region @backendFunc
|
|
62
|
+
const entries = parsePoEntries(poFileContent);
|
|
63
|
+
const filesMap = new Map();
|
|
64
|
+
for (const entry of entries) {
|
|
65
|
+
if (!entry.msgid)
|
|
66
|
+
continue;
|
|
67
|
+
for (const ref of entry.refs) {
|
|
68
|
+
const parsedRef = parsePoRef(ref);
|
|
69
|
+
if (!parsedRef)
|
|
70
|
+
continue;
|
|
71
|
+
let file = filesMap.get(parsedRef.fileAbsPath);
|
|
72
|
+
if (!file) {
|
|
73
|
+
file = {
|
|
74
|
+
fileAbsPath: parsedRef.fileAbsPath,
|
|
75
|
+
tags: [],
|
|
76
|
+
};
|
|
77
|
+
filesMap.set(parsedRef.fileAbsPath, file);
|
|
78
|
+
}
|
|
79
|
+
file.tags.push({
|
|
80
|
+
lineNumber: parsedRef.lineNumber,
|
|
81
|
+
gettextString: entry.msgid,
|
|
82
|
+
context: entry.msgctxt,
|
|
83
|
+
translation: entry.msgstr || undefined,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return [...filesMap.values()];
|
|
88
|
+
//#endregion
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region generate translation override interface
|
|
92
|
+
export function UtilsPoFile__NS__generateTranslationOverrideInterface(file, interfaceName, locale) {
|
|
93
|
+
//#region @backendFunc
|
|
94
|
+
const contexts = new Map();
|
|
95
|
+
for (const tag of file.tags) {
|
|
96
|
+
const context = tag.context ?? '';
|
|
97
|
+
let arr = contexts.get(context);
|
|
98
|
+
if (!arr) {
|
|
99
|
+
arr = [];
|
|
100
|
+
contexts.set(context, arr);
|
|
101
|
+
}
|
|
102
|
+
if (!arr.includes(tag.gettextString)) {
|
|
103
|
+
arr.push(tag.gettextString);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const lines = [];
|
|
107
|
+
lines.push(`export interface ${interfaceName} {`);
|
|
108
|
+
lines.push(` "${escapeTs(locale)}": {`);
|
|
109
|
+
for (const [context, strings] of contexts) {
|
|
110
|
+
lines.push(` "${escapeTs(context)}": {`);
|
|
111
|
+
for (const text of strings.sort()) {
|
|
112
|
+
lines.push(` "${escapeTs(text)}"?: string;`);
|
|
113
|
+
}
|
|
114
|
+
lines.push(` };`);
|
|
115
|
+
lines.push('');
|
|
116
|
+
}
|
|
117
|
+
lines.push(` };`);
|
|
118
|
+
lines.push(`}`);
|
|
119
|
+
return lines.join('\n');
|
|
120
|
+
//#endregion
|
|
121
|
+
}
|
|
122
|
+
function escapeTs(value) {
|
|
123
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
124
|
+
}
|
|
125
|
+
//#endregion
|
|
126
|
+
//#region merge gettext file
|
|
127
|
+
export function UtilsPoFile__NS__mergeGettextFile(jsonContent1FromTsHtml, json2ContentFromPoFileModifedByUser) {
|
|
128
|
+
//#region @backendFunc
|
|
129
|
+
const oldTagsByKey = new Map();
|
|
130
|
+
for (const oldTag of json2ContentFromPoFileModifedByUser?.tags ?? []) {
|
|
131
|
+
oldTagsByKey.set(getGettextTagKey(oldTag), oldTag);
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
fileAbsPath: jsonContent1FromTsHtml.fileAbsPath,
|
|
135
|
+
fileRelativePath: jsonContent1FromTsHtml.fileRelativePath,
|
|
136
|
+
isAppFile: jsonContent1FromTsHtml.isAppFile,
|
|
137
|
+
tags: jsonContent1FromTsHtml.tags.map(sourceTag => {
|
|
138
|
+
const oldTag = oldTagsByKey.get(getGettextTagKey(sourceTag));
|
|
139
|
+
return {
|
|
140
|
+
...sourceTag,
|
|
141
|
+
lineNumber: sourceTag.lineNumber,
|
|
142
|
+
translation: oldTag?.translation || undefined,
|
|
143
|
+
};
|
|
144
|
+
}),
|
|
145
|
+
};
|
|
146
|
+
//#endregion
|
|
147
|
+
}
|
|
148
|
+
//#endregion
|
|
149
|
+
//#region models & helpers
|
|
150
|
+
function getGettextTagKey(tag) {
|
|
151
|
+
return `${tag.context ?? ''}\u0004${tag.gettextString}`;
|
|
152
|
+
}
|
|
153
|
+
function parsePoEntries(po) {
|
|
154
|
+
//#region @backendFunc
|
|
155
|
+
const lines = po.split(/\r?\n/);
|
|
156
|
+
const entries = [];
|
|
157
|
+
let current = { refs: [] };
|
|
158
|
+
let activeField = null;
|
|
159
|
+
const flush = () => {
|
|
160
|
+
if (current.refs.length ||
|
|
161
|
+
current.msgctxt !== undefined ||
|
|
162
|
+
current.msgid !== undefined ||
|
|
163
|
+
current.msgstr !== undefined) {
|
|
164
|
+
entries.push(current);
|
|
165
|
+
}
|
|
166
|
+
current = { refs: [] };
|
|
167
|
+
activeField = null;
|
|
168
|
+
};
|
|
169
|
+
for (const line of lines) {
|
|
170
|
+
const trimmed = line.trim();
|
|
171
|
+
if (!trimmed) {
|
|
172
|
+
flush();
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (trimmed.startsWith('#:')) {
|
|
176
|
+
current.refs.push(...trimmed.slice(2).trim().split(/\s+/));
|
|
177
|
+
activeField = null;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
if (trimmed.startsWith('msgctxt')) {
|
|
181
|
+
current.msgctxt = readPoQuoted(trimmed.slice('msgctxt'.length).trim());
|
|
182
|
+
activeField = 'msgctxt';
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
if (trimmed.startsWith('msgid')) {
|
|
186
|
+
current.msgid = readPoQuoted(trimmed.slice('msgid'.length).trim());
|
|
187
|
+
activeField = 'msgid';
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (trimmed.startsWith('msgstr')) {
|
|
191
|
+
current.msgstr = readPoQuoted(trimmed.slice('msgstr'.length).trim());
|
|
192
|
+
activeField = 'msgstr';
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
if (trimmed.startsWith('"') && activeField) {
|
|
196
|
+
current[activeField] =
|
|
197
|
+
(current[activeField] ?? '') + readPoQuoted(trimmed);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
flush();
|
|
201
|
+
// skip header
|
|
202
|
+
return entries.filter(entry => !(entry.msgid === '' && !entry.refs.length));
|
|
203
|
+
//#endregion
|
|
204
|
+
}
|
|
205
|
+
function parsePoRef(ref) {
|
|
206
|
+
//#region @backendFunc
|
|
207
|
+
const match = ref.match(/^(.+):(\d+)$/);
|
|
208
|
+
if (!match)
|
|
209
|
+
return null;
|
|
210
|
+
return {
|
|
211
|
+
fileAbsPath: match[1],
|
|
212
|
+
lineNumber: Number(match[2]),
|
|
213
|
+
};
|
|
214
|
+
//#endregion
|
|
215
|
+
}
|
|
216
|
+
function escapePoString(value) {
|
|
217
|
+
return value
|
|
218
|
+
.replace(/\\/g, '\\\\')
|
|
219
|
+
.replace(/"/g, '\\"')
|
|
220
|
+
.replace(/\n/g, '\\n');
|
|
221
|
+
}
|
|
222
|
+
function readPoQuoted(value) {
|
|
223
|
+
const match = value.match(/^"([\s\S]*)"$/);
|
|
224
|
+
if (!match)
|
|
225
|
+
return '';
|
|
226
|
+
return unescapePoString(match[1]);
|
|
227
|
+
}
|
|
228
|
+
function unescapePoString(value) {
|
|
229
|
+
return value
|
|
230
|
+
.replace(/\\n/g, '\n')
|
|
231
|
+
.replace(/\\"/g, '"')
|
|
232
|
+
.replace(/\\\\/g, '\\');
|
|
233
|
+
}
|
|
234
|
+
//#endregion
|
|
235
|
+
//end of namespace UtilsPoFile
|
|
236
|
+
//# sourceMappingURL=utils-po-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-po-file.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { UtilsPoFile__NS__extractPoToJson, UtilsPoFile__NS__mergeGettextFile } from './utils-po-file';
|
|
2
|
+
describe('UtilsPoFile__NS__extractPoToJson', () => {
|
|
3
|
+
it('extracts translations from msgstr', () => {
|
|
4
|
+
const po = `
|
|
5
|
+
msgid ""
|
|
6
|
+
msgstr ""
|
|
7
|
+
"Language: pl-PL\\n"
|
|
8
|
+
"Content-Type: text/plain; charset=UTF-8\\n"
|
|
9
|
+
|
|
10
|
+
#: src/lib/test.html:8
|
|
11
|
+
msgctxt "taon-ui"
|
|
12
|
+
msgid "You purchased"
|
|
13
|
+
msgstr "Kupiłeś"
|
|
14
|
+
|
|
15
|
+
#: src/lib/test.html:9
|
|
16
|
+
msgid "products"
|
|
17
|
+
msgstr "produkty"
|
|
18
|
+
|
|
19
|
+
#: src/lib/test.html:11
|
|
20
|
+
msgid "You purchased [[ howMany ]] products"
|
|
21
|
+
msgstr "Kupiłeś [[ howMany ]] produktów"
|
|
22
|
+
`;
|
|
23
|
+
expect(UtilsPoFile__NS__extractPoToJson(po)).toEqual([
|
|
24
|
+
{
|
|
25
|
+
fileAbsPath: 'src/lib/test.html',
|
|
26
|
+
tags: [
|
|
27
|
+
{
|
|
28
|
+
lineNumber: 8,
|
|
29
|
+
gettextString: 'You purchased',
|
|
30
|
+
context: 'taon-ui',
|
|
31
|
+
translation: 'Kupiłeś',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
lineNumber: 9,
|
|
35
|
+
gettextString: 'products',
|
|
36
|
+
context: undefined,
|
|
37
|
+
translation: 'produkty',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
lineNumber: 11,
|
|
41
|
+
gettextString: 'You purchased [[ howMany ]] products',
|
|
42
|
+
context: undefined,
|
|
43
|
+
translation: 'Kupiłeś [[ howMany ]] produktów',
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
});
|
|
49
|
+
it('keeps empty msgstr as undefined', () => {
|
|
50
|
+
const po = `
|
|
51
|
+
#: src/lib/test.html:1
|
|
52
|
+
msgid "Hello"
|
|
53
|
+
msgstr ""
|
|
54
|
+
`;
|
|
55
|
+
expect(UtilsPoFile__NS__extractPoToJson(po)).toEqual([
|
|
56
|
+
{
|
|
57
|
+
fileAbsPath: 'src/lib/test.html',
|
|
58
|
+
tags: [
|
|
59
|
+
{
|
|
60
|
+
lineNumber: 1,
|
|
61
|
+
gettextString: 'Hello',
|
|
62
|
+
context: undefined,
|
|
63
|
+
translation: undefined,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
]);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('UtilsPoFile__NS__mergeGettextFile', () => {
|
|
71
|
+
it('keeps translations from old po json and refreshes line numbers from source', () => {
|
|
72
|
+
const freshFromSource = {
|
|
73
|
+
fileAbsPath: 'c:/project/src/lib/test.component.html',
|
|
74
|
+
fileRelativePath: 'src/lib/test.component.html',
|
|
75
|
+
isAppFile: false,
|
|
76
|
+
tags: [
|
|
77
|
+
{
|
|
78
|
+
lineNumber: 20,
|
|
79
|
+
gettextString: 'You purchased',
|
|
80
|
+
context: 'taon-ui',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
lineNumber: 21,
|
|
84
|
+
gettextString: 'products',
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
};
|
|
88
|
+
const oldFromPo = {
|
|
89
|
+
fileAbsPath: 'src/lib/test.component.html',
|
|
90
|
+
tags: [
|
|
91
|
+
{
|
|
92
|
+
lineNumber: 8,
|
|
93
|
+
gettextString: 'You purchased',
|
|
94
|
+
context: 'taon-ui',
|
|
95
|
+
translation: 'Kupiłeś',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
lineNumber: 9,
|
|
99
|
+
gettextString: 'products',
|
|
100
|
+
translation: 'produkty',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
};
|
|
104
|
+
expect(UtilsPoFile__NS__mergeGettextFile(freshFromSource, oldFromPo)).toEqual({
|
|
105
|
+
fileAbsPath: 'c:/project/src/lib/test.component.html',
|
|
106
|
+
fileRelativePath: 'src/lib/test.component.html',
|
|
107
|
+
isAppFile: false,
|
|
108
|
+
tags: [
|
|
109
|
+
{
|
|
110
|
+
lineNumber: 20,
|
|
111
|
+
gettextString: 'You purchased',
|
|
112
|
+
context: 'taon-ui',
|
|
113
|
+
translation: 'Kupiłeś',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
lineNumber: 21,
|
|
117
|
+
gettextString: 'products',
|
|
118
|
+
translation: 'produkty',
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
it('returns fresh source tags when old po json does not exist', () => {
|
|
124
|
+
const freshFromSource = {
|
|
125
|
+
fileAbsPath: 'c:/project/src/lib/test.component.html',
|
|
126
|
+
fileRelativePath: 'src/lib/test.component.html',
|
|
127
|
+
isAppFile: false,
|
|
128
|
+
tags: [
|
|
129
|
+
{
|
|
130
|
+
lineNumber: 1,
|
|
131
|
+
gettextString: 'Hello',
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
};
|
|
135
|
+
expect(UtilsPoFile__NS__mergeGettextFile(freshFromSource, null)).toEqual({
|
|
136
|
+
fileAbsPath: 'c:/project/src/lib/test.component.html',
|
|
137
|
+
fileRelativePath: 'src/lib/test.component.html',
|
|
138
|
+
isAppFile: false,
|
|
139
|
+
tags: [
|
|
140
|
+
{
|
|
141
|
+
lineNumber: 1,
|
|
142
|
+
gettextString: 'Hello',
|
|
143
|
+
translation: undefined,
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
it('does not keep translations for removed source strings', () => {
|
|
149
|
+
const freshFromSource = {
|
|
150
|
+
fileAbsPath: 'c:/project/src/lib/test.component.html',
|
|
151
|
+
tags: [
|
|
152
|
+
{
|
|
153
|
+
lineNumber: 1,
|
|
154
|
+
gettextString: 'Still exists',
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
};
|
|
158
|
+
const oldFromPo = {
|
|
159
|
+
fileAbsPath: 'src/lib/test.component.html',
|
|
160
|
+
tags: [
|
|
161
|
+
{
|
|
162
|
+
lineNumber: 1,
|
|
163
|
+
gettextString: 'Still exists',
|
|
164
|
+
translation: 'Nadal istnieje',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
lineNumber: 2,
|
|
168
|
+
gettextString: 'Removed',
|
|
169
|
+
translation: 'Usunięte',
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
};
|
|
173
|
+
expect(UtilsPoFile__NS__mergeGettextFile(freshFromSource, oldFromPo)).toEqual({
|
|
174
|
+
fileAbsPath: 'c:/project/src/lib/test.component.html',
|
|
175
|
+
fileRelativePath: undefined,
|
|
176
|
+
isAppFile: undefined,
|
|
177
|
+
tags: [
|
|
178
|
+
{
|
|
179
|
+
lineNumber: 1,
|
|
180
|
+
gettextString: 'Still exists',
|
|
181
|
+
translation: 'Nadal istnieje',
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
it('matches context and empty context separately', () => {
|
|
187
|
+
const freshFromSource = {
|
|
188
|
+
fileAbsPath: 'c:/project/src/lib/test.component.html',
|
|
189
|
+
tags: [
|
|
190
|
+
{
|
|
191
|
+
lineNumber: 1,
|
|
192
|
+
gettextString: 'Save',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
lineNumber: 2,
|
|
196
|
+
gettextString: 'Save',
|
|
197
|
+
context: 'admin',
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
};
|
|
201
|
+
const oldFromPo = {
|
|
202
|
+
fileAbsPath: 'src/lib/test.component.html',
|
|
203
|
+
tags: [
|
|
204
|
+
{
|
|
205
|
+
lineNumber: 10,
|
|
206
|
+
gettextString: 'Save',
|
|
207
|
+
translation: 'Zapisz',
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
lineNumber: 11,
|
|
211
|
+
gettextString: 'Save',
|
|
212
|
+
context: 'admin',
|
|
213
|
+
translation: 'Zapisz admina',
|
|
214
|
+
},
|
|
215
|
+
],
|
|
216
|
+
};
|
|
217
|
+
expect(UtilsPoFile__NS__mergeGettextFile(freshFromSource, oldFromPo)).toEqual({
|
|
218
|
+
fileAbsPath: 'c:/project/src/lib/test.component.html',
|
|
219
|
+
fileRelativePath: undefined,
|
|
220
|
+
isAppFile: undefined,
|
|
221
|
+
tags: [
|
|
222
|
+
{
|
|
223
|
+
lineNumber: 1,
|
|
224
|
+
gettextString: 'Save',
|
|
225
|
+
translation: 'Zapisz',
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
lineNumber: 2,
|
|
229
|
+
gettextString: 'Save',
|
|
230
|
+
context: 'admin',
|
|
231
|
+
translation: 'Zapisz admina',
|
|
232
|
+
},
|
|
233
|
+
],
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
//# sourceMappingURL=utils-po-file.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-po-file.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAEA,OAAO,EAAE,gCAAgC,EAAmI,iCAAiC,EAAE,MAAM,iBAAiB,CAAC;AAEvO,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;;;CAkBd,CAAC;QAEE,MAAM,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE;oBACJ;wBACE,UAAU,EAAE,CAAC;wBACb,aAAa,EAAE,eAAe;wBAC9B,OAAO,EAAE,SAAS;wBAClB,WAAW,EAAE,SAAS;qBACvB;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,aAAa,EAAE,UAAU;wBACzB,OAAO,EAAE,SAAS;wBAClB,WAAW,EAAE,UAAU;qBACxB;oBACD;wBACE,UAAU,EAAE,EAAE;wBACd,aAAa,EAAE,sCAAsC;wBACrD,OAAO,EAAE,SAAS;wBAClB,WAAW,EAAE,iCAAiC;qBAC/C;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,GAAG;;;;CAId,CAAC;QAEE,MAAM,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE;oBACJ;wBACE,UAAU,EAAE,CAAC;wBACb,aAAa,EAAE,OAAO;wBACtB,OAAO,EAAE,SAAS;wBAClB,WAAW,EAAE,SAAS;qBACvB;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,eAAe,GAA+B;YAClD,WAAW,EAAE,wCAAwC;YACrD,gBAAgB,EAAE,6BAA6B;YAC/C,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,eAAe;oBAC9B,OAAO,EAAE,SAAS;iBACnB;gBACD;oBACE,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,UAAU;iBAC1B;aACF;SACF,CAAC;QAEF,MAAM,SAAS,GAA+B;YAC5C,WAAW,EAAE,6BAA6B;YAC1C,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,eAAe;oBAC9B,OAAO,EAAE,SAAS;oBAClB,WAAW,EAAE,SAAS;iBACvB;gBACD;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,UAAU;oBACzB,WAAW,EAAE,UAAU;iBACxB;aACF;SACF,CAAC;QAEF,MAAM,CAAC,iCAAiC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5E,WAAW,EAAE,wCAAwC;YACrD,gBAAgB,EAAE,6BAA6B;YAC/C,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,eAAe;oBAC9B,OAAO,EAAE,SAAS;oBAClB,WAAW,EAAE,SAAS;iBACvB;gBACD;oBACE,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,UAAU;oBACzB,WAAW,EAAE,UAAU;iBACxB;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,eAAe,GAA+B;YAClD,WAAW,EAAE,wCAAwC;YACrD,gBAAgB,EAAE,6BAA6B;YAC/C,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,OAAO;iBACvB;aACF;SACF,CAAC;QAEF,MAAM,CAAC,iCAAiC,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACvE,WAAW,EAAE,wCAAwC;YACrD,gBAAgB,EAAE,6BAA6B;YAC/C,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,OAAO;oBACtB,WAAW,EAAE,SAAS;iBACvB;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,eAAe,GAA+B;YAClD,WAAW,EAAE,wCAAwC;YACrD,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,cAAc;iBAC9B;aACF;SACF,CAAC;QAEF,MAAM,SAAS,GAA+B;YAC5C,WAAW,EAAE,6BAA6B;YAC1C,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,cAAc;oBAC7B,WAAW,EAAE,gBAAgB;iBAC9B;gBACD;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,SAAS;oBACxB,WAAW,EAAE,UAAU;iBACxB;aACF;SACF,CAAC;QAEF,MAAM,CAAC,iCAAiC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5E,WAAW,EAAE,wCAAwC;YACrD,gBAAgB,EAAE,SAAS;YAC3B,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,cAAc;oBAC7B,WAAW,EAAE,gBAAgB;iBAC9B;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,eAAe,GAA+B;YAClD,WAAW,EAAE,wCAAwC;YACrD,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,MAAM;iBACtB;gBACD;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,MAAM;oBACrB,OAAO,EAAE,OAAO;iBACjB;aACF;SACF,CAAC;QAEF,MAAM,SAAS,GAA+B;YAC5C,WAAW,EAAE,6BAA6B;YAC1C,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,MAAM;oBACrB,WAAW,EAAE,QAAQ;iBACtB;gBACD;oBACE,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,MAAM;oBACrB,OAAO,EAAE,OAAO;oBAChB,WAAW,EAAE,eAAe;iBAC7B;aACF;SACF,CAAC;QAEF,MAAM,CAAC,iCAAiC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5E,WAAW,EAAE,wCAAwC;YACrD,gBAAgB,EAAE,SAAS;YAC3B,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,MAAM;oBACrB,WAAW,EAAE,QAAQ;iBACtB;gBACD;oBACE,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,MAAM;oBACrB,OAAO,EAAE,OAAO;oBAChB,WAAW,EAAE,eAAe;iBAC7B;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"namespacesMapObj": {
|
|
3
|
+
"UtilsI18nExtractGettextTranslateFromHtml.extractGettextTranslateFromHtml": "UtilsI18nExtractGettextTranslateFromHtml__NS__extractGettextTranslateFromHtml",
|
|
4
|
+
"UtilsI18nHtml.extractGettextTranslateFromHtml": "UtilsI18nHtml__NS__extractGettextTranslateFromHtml",
|
|
5
|
+
"UtilsI18nHtml.replaceTranslatePipieDirectiveTContext": "UtilsI18nHtml__NS__replaceTranslatePipieDirectiveTContext",
|
|
6
|
+
"UtilsPoFile.generatePoFiles": "UtilsPoFile__NS__generatePoFiles",
|
|
7
|
+
"UtilsPoFile.generatePoFileContent": "UtilsPoFile__NS__generatePoFileContent",
|
|
8
|
+
"UtilsPoFile.extractPoToJson": "UtilsPoFile__NS__extractPoToJson",
|
|
9
|
+
"UtilsPoFile.generateTranslationOverrideInterface": "UtilsPoFile__NS__generateTranslationOverrideInterface",
|
|
10
|
+
"UtilsPoFile.mergeGettextFile": "UtilsPoFile__NS__mergeGettextFile"
|
|
11
|
+
},
|
|
12
|
+
"namespacesReplace": {
|
|
13
|
+
"UtilsI18nExtractGettextTranslateFromHtml": [
|
|
14
|
+
"UtilsI18nExtractGettextTranslateFromHtml__NS__extractGettextTranslateFromHtml"
|
|
15
|
+
],
|
|
16
|
+
"UtilsI18nHtml": [
|
|
17
|
+
"UtilsI18nHtml__NS__extractGettextTranslateFromHtml",
|
|
18
|
+
"UtilsI18nHtml__NS__replaceTranslatePipieDirectiveTContext"
|
|
19
|
+
],
|
|
20
|
+
"UtilsPoFile": [
|
|
21
|
+
"UtilsPoFile__NS__extractPoToJson",
|
|
22
|
+
"UtilsPoFile__NS__generatePoFileContent",
|
|
23
|
+
"UtilsPoFile__NS__generatePoFiles",
|
|
24
|
+
"UtilsPoFile__NS__generateTranslationOverrideInterface",
|
|
25
|
+
"UtilsPoFile__NS__mergeGettextFile"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
package/package.json
CHANGED
package/scss/global.scss
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
@use './vars.scss' as vars;
|
|
2
|
+
// @use 'bootstrap/scss/bootstrap' as *; Conflict with primeflex
|
|
3
|
+
@use '@angular/material' as mat;
|
|
4
|
+
|
|
5
|
+
// tailwind included out of box
|
|
6
|
+
@import 'tailwindcss';
|
|
7
|
+
|
|
8
|
+
@import 'primeicons/primeicons.css';
|
|
9
|
+
@import 'animate.css/animate.min.css';
|
|
10
|
+
|
|
11
|
+
@include mat.core();
|
|
12
|
+
|
|
13
|
+
// Light palette
|
|
14
|
+
$light-theme: mat.define-theme(
|
|
15
|
+
(
|
|
16
|
+
color: (
|
|
17
|
+
theme-type: light,
|
|
18
|
+
primary: mat.$azure-palette,
|
|
19
|
+
),
|
|
20
|
+
)
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
// Dark palette
|
|
24
|
+
$dark-theme: mat.define-theme(
|
|
25
|
+
(
|
|
26
|
+
color: (
|
|
27
|
+
theme-type: dark,
|
|
28
|
+
primary: mat.$azure-palette,
|
|
29
|
+
),
|
|
30
|
+
)
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
// Apply scoped themes
|
|
34
|
+
.light-taon-theme {
|
|
35
|
+
// color-scheme: light;
|
|
36
|
+
@include mat.all-component-themes($light-theme);
|
|
37
|
+
--main-bg-color: rgb(255, 255, 255);
|
|
38
|
+
--font-color: rgb(14, 15, 26);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.dark-taon-theme {
|
|
42
|
+
// color-scheme: dark;
|
|
43
|
+
@include mat.all-component-themes($dark-theme);
|
|
44
|
+
--main-bg-color: rgb(42, 56, 71);
|
|
45
|
+
--font-color: rgb(198, 210, 219);
|
|
46
|
+
--mat-sys-primary: #4758b8;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@font-face {
|
|
50
|
+
font-family: 'Material Icons';
|
|
51
|
+
font-style: normal;
|
|
52
|
+
font-weight: 400;
|
|
53
|
+
src: url('#{ vars.$basename }assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2')
|
|
54
|
+
format('woff2');
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.material-icons {
|
|
58
|
+
font-family: 'Material Icons';
|
|
59
|
+
font-weight: normal;
|
|
60
|
+
font-style: normal;
|
|
61
|
+
font-size: 24px;
|
|
62
|
+
line-height: 1;
|
|
63
|
+
letter-spacing: normal;
|
|
64
|
+
text-transform: none;
|
|
65
|
+
display: inline-block;
|
|
66
|
+
white-space: nowrap;
|
|
67
|
+
word-wrap: normal;
|
|
68
|
+
direction: ltr;
|
|
69
|
+
-webkit-font-feature-settings: 'liga';
|
|
70
|
+
-webkit-font-smoothing: antialiased;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.ng-scroll-content {
|
|
74
|
+
// TODO QUICK_FIX for modal mode
|
|
75
|
+
display: block !important;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
body,
|
|
79
|
+
html {
|
|
80
|
+
font-family: 'Roboto', sans-serif;
|
|
81
|
+
font-optical-sizing: auto;
|
|
82
|
+
font-weight: 100;
|
|
83
|
+
font-style: normal;
|
|
84
|
+
font-variation-settings: 'wdth' 100;
|
|
85
|
+
color: var(--font-color);
|
|
86
|
+
background: var(--main-bg-color);
|
|
87
|
+
|
|
88
|
+
transition:
|
|
89
|
+
background 200ms ease,
|
|
90
|
+
color 200ms ease;
|
|
91
|
+
|
|
92
|
+
margin: 0px !important; // TODO QUICK FIX for weird chrome padding
|
|
93
|
+
overflow: hidden; // for ngx-scrollbar to work
|
|
94
|
+
}
|
package/scss/index.scss
ADDED
package/scss/vars.scss
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// THIS FILE IS GENERATED - DO NOT MODIFY
|
|
2
|
+
// CORE ASSETS BASENAME - use it only for asset from core container
|
|
3
|
+
$basename: '/';
|
|
4
|
+
$website_title: 'I 18 N';
|
|
5
|
+
$website_domain: 'i18n.example.domain.com';
|
|
6
|
+
$project_npm_name: '@taon-dev/i18n';
|
|
7
|
+
// THIS FILE IS GENERATED - DO NOT MODIFY
|
package/src.js
ADDED