@taon-dev/i18n 21.0.27 → 21.0.30
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 +2 -2
- package/bin/start.js +1 -1
- package/browser/fesm2022/i18n-browser.mjs +220 -35
- package/browser/fesm2022/i18n-browser.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/browser/types/i18n-browser.d.ts +73 -11
- package/browser-prod/fesm2022/i18n-browser-prod.mjs +220 -35
- 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 +73 -11
- package/html/assets/generated/pwa/html-pwa.html +53 -53
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/index._auto-generated_.d.ts +1 -0
- package/lib/index._auto-generated_.js +1 -0
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/local-translation.d.ts +67 -0
- package/lib/local-translation.js +172 -0
- package/lib/local-translation.js.map +1 -0
- package/lib/package.json +1 -1
- package/lib/start-cli.d.ts +0 -5
- package/lib/start-cli.js +9 -39
- package/lib/start-cli.js.map +1 -1
- package/lib/utils-po-file-extracto-to-json.test.d.ts +1 -0
- package/lib/utils-po-file-extracto-to-json.test.js +147 -0
- package/lib/utils-po-file-extracto-to-json.test.js.map +1 -0
- package/lib/utils-po-file.js +26 -13
- package/lib/utils-po-file.js.map +1 -1
- package/lib/utils-po-file.test.js +2 -0
- package/lib/utils-po-file.test.js.map +1 -1
- package/lib-esm/app.electron.d.ts +1 -1
- package/lib-esm/app.electron.js +1 -1
- package/lib-esm/app.hosts.d.ts +3 -3
- package/lib-esm/app.hosts.js +8 -8
- package/lib-esm/app.vscode.d.ts +0 -9
- package/lib-esm/app.vscode.js +54 -36
- 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/index._auto-generated_.d.ts +1 -0
- package/lib-esm/lib/index._auto-generated_.js +1 -0
- package/lib-esm/lib/index._auto-generated_.js.map +1 -1
- package/lib-esm/lib/local-translation.d.ts +67 -0
- package/lib-esm/lib/local-translation.js +168 -0
- package/lib-esm/lib/local-translation.js.map +1 -0
- package/lib-esm/lib/start-cli.d.ts +0 -5
- package/lib-esm/lib/start-cli.js +9 -39
- package/lib-esm/lib/start-cli.js.map +1 -1
- package/lib-esm/lib/utils-po-file-extracto-to-json.test.d.ts +1 -0
- package/lib-esm/lib/utils-po-file-extracto-to-json.test.js +145 -0
- package/lib-esm/lib/utils-po-file-extracto-to-json.test.js.map +1 -0
- package/lib-esm/lib/utils-po-file.js +26 -13
- package/lib-esm/lib/utils-po-file.js.map +1 -1
- package/lib-esm/lib/utils-po-file.test.js +2 -0
- package/lib-esm/lib/utils-po-file.test.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/index._auto-generated_.d.ts +1 -0
- package/lib-prod/index._auto-generated_.js +1 -0
- package/lib-prod/index._auto-generated_.js.map +1 -1
- package/lib-prod/local-translation.d.ts +67 -0
- package/lib-prod/local-translation.js +168 -0
- package/lib-prod/local-translation.js.map +1 -0
- package/lib-prod/package.json +1 -1
- package/lib-prod/start-cli.d.ts +0 -5
- package/lib-prod/start-cli.js +9 -39
- package/lib-prod/start-cli.js.map +1 -1
- package/lib-prod/utils-po-file-extracto-to-json.test.d.ts +1 -0
- package/lib-prod/utils-po-file-extracto-to-json.test.js +145 -0
- package/lib-prod/utils-po-file-extracto-to-json.test.js.map +1 -0
- package/lib-prod/utils-po-file.js +26 -13
- package/lib-prod/utils-po-file.js.map +1 -1
- package/lib-prod/utils-po-file.test.js +2 -0
- package/lib-prod/utils-po-file.test.js.map +1 -1
- package/package.json +1 -1
- package/websql/fesm2022/i18n-websql.mjs +220 -35
- package/websql/fesm2022/i18n-websql.mjs.map +1 -1
- package/websql/package.json +1 -1
- package/websql/types/i18n-websql.d.ts +73 -11
- package/websql-prod/fesm2022/i18n-websql-prod.mjs +220 -35
- 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 +73 -11
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { UtilsI18n } from 'tnp-core/lib';
|
|
2
|
+
export interface TranslationOptions {
|
|
3
|
+
text: string;
|
|
4
|
+
from: UtilsI18n.CommonLocaleCode;
|
|
5
|
+
to: UtilsI18n.CommonLocaleCode;
|
|
6
|
+
/**
|
|
7
|
+
* Nearby source-language text.
|
|
8
|
+
*/
|
|
9
|
+
context?: string;
|
|
10
|
+
glossary?: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
export interface AiDownloadProgress {
|
|
13
|
+
/**
|
|
14
|
+
* General loading stage reported by Transformers.js.
|
|
15
|
+
*/
|
|
16
|
+
status: 'initiate' | 'download' | 'progress' | 'progress_total' | 'done' | 'ready' | string;
|
|
17
|
+
/**
|
|
18
|
+
* Current filename, when progress concerns an individual file.
|
|
19
|
+
*/
|
|
20
|
+
file?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Progress from 0 to 100.
|
|
23
|
+
*/
|
|
24
|
+
progress?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Downloaded bytes, when provided by Transformers.js.
|
|
27
|
+
*/
|
|
28
|
+
loaded?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Total bytes, when provided by Transformers.js.
|
|
31
|
+
*/
|
|
32
|
+
total?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface MakeSureAiDownloadedOptions {
|
|
35
|
+
onProgress?: (progress: AiDownloadProgress) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Run one tiny translation after loading.
|
|
38
|
+
*
|
|
39
|
+
* This removes most of the delay from the first real translation,
|
|
40
|
+
* but it performs a small amount of additional inference work.
|
|
41
|
+
*/
|
|
42
|
+
warmup?: boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare class LocalTranslationService {
|
|
45
|
+
private translatorPromise?;
|
|
46
|
+
private aiReady;
|
|
47
|
+
private warmupPromise?;
|
|
48
|
+
private progressListeners;
|
|
49
|
+
/**
|
|
50
|
+
* Downloads, caches and loads the translation model.
|
|
51
|
+
*
|
|
52
|
+
* Multiple simultaneous calls share the same initialization promise.
|
|
53
|
+
* After this resolves, translate() reuses the already loaded model.
|
|
54
|
+
*/
|
|
55
|
+
makeSureAiDownloaded(options?: MakeSureAiDownloadedOptions): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* True only in this process after pipeline initialization succeeded.
|
|
58
|
+
*/
|
|
59
|
+
isAiReady(): boolean;
|
|
60
|
+
private getTranslator;
|
|
61
|
+
private createTranslator;
|
|
62
|
+
private emitProgress;
|
|
63
|
+
private warmupTranslator;
|
|
64
|
+
translate(options: TranslationOptions): Promise<string>;
|
|
65
|
+
private protectGlossary;
|
|
66
|
+
private getModelsCachePath;
|
|
67
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { mkdirSync } from 'node:fs';
|
|
2
|
+
import { crossPlatformPath, dotTaonFolder, UtilsOs, _, } from 'tnp-core/lib';
|
|
3
|
+
const MODEL_ID = 'Xenova/nllb-200-distilled-600M';
|
|
4
|
+
const nllbLanguageCodes = {
|
|
5
|
+
'en-US': 'eng_Latn',
|
|
6
|
+
'pl-PL': 'pol_Latn',
|
|
7
|
+
'de-DE': 'deu_Latn',
|
|
8
|
+
};
|
|
9
|
+
export class LocalTranslationService {
|
|
10
|
+
translatorPromise;
|
|
11
|
+
aiReady = false;
|
|
12
|
+
warmupPromise;
|
|
13
|
+
progressListeners = new Set();
|
|
14
|
+
/**
|
|
15
|
+
* Downloads, caches and loads the translation model.
|
|
16
|
+
*
|
|
17
|
+
* Multiple simultaneous calls share the same initialization promise.
|
|
18
|
+
* After this resolves, translate() reuses the already loaded model.
|
|
19
|
+
*/
|
|
20
|
+
async makeSureAiDownloaded(options = {}) {
|
|
21
|
+
//#region @backendFunc
|
|
22
|
+
const { onProgress, warmup = false } = options;
|
|
23
|
+
if (onProgress) {
|
|
24
|
+
this.progressListeners.add(onProgress);
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const translator = await this.getTranslator();
|
|
28
|
+
if (warmup) {
|
|
29
|
+
await this.warmupTranslator(translator);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
if (onProgress) {
|
|
34
|
+
this.progressListeners.delete(onProgress);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* True only in this process after pipeline initialization succeeded.
|
|
41
|
+
*/
|
|
42
|
+
isAiReady() {
|
|
43
|
+
return this.aiReady;
|
|
44
|
+
}
|
|
45
|
+
getTranslator() {
|
|
46
|
+
this.translatorPromise ??= this.createTranslator().catch(error => {
|
|
47
|
+
// Allow a later call to retry after a network or disk failure.
|
|
48
|
+
this.translatorPromise = undefined;
|
|
49
|
+
this.aiReady = false;
|
|
50
|
+
throw error;
|
|
51
|
+
});
|
|
52
|
+
return this.translatorPromise;
|
|
53
|
+
}
|
|
54
|
+
async createTranslator() {
|
|
55
|
+
//#region @backendFunc
|
|
56
|
+
const { env, pipeline } = await import('@huggingface/transformers');
|
|
57
|
+
env.cacheDir = this.getModelsCachePath();
|
|
58
|
+
const translator = await pipeline('translation', MODEL_ID, {
|
|
59
|
+
dtype: 'q8',
|
|
60
|
+
progress_callback: (progress) => {
|
|
61
|
+
this.emitProgress(progress);
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
this.aiReady = true;
|
|
65
|
+
this.emitProgress({
|
|
66
|
+
status: 'ready',
|
|
67
|
+
progress: 100,
|
|
68
|
+
});
|
|
69
|
+
return translator;
|
|
70
|
+
//#endregion
|
|
71
|
+
}
|
|
72
|
+
emitProgress(progress) {
|
|
73
|
+
for (const listener of this.progressListeners) {
|
|
74
|
+
try {
|
|
75
|
+
listener(progress);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// A UI callback must not break model initialization.
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
warmupTranslator(translator) {
|
|
83
|
+
this.warmupPromise ??= translator('Hello.', {
|
|
84
|
+
src_lang: 'eng_Latn',
|
|
85
|
+
tgt_lang: 'pol_Latn',
|
|
86
|
+
max_new_tokens: 16,
|
|
87
|
+
})
|
|
88
|
+
.then(() => undefined)
|
|
89
|
+
.catch(error => {
|
|
90
|
+
this.warmupPromise = undefined;
|
|
91
|
+
throw error;
|
|
92
|
+
});
|
|
93
|
+
return this.warmupPromise;
|
|
94
|
+
}
|
|
95
|
+
async translate(options) {
|
|
96
|
+
//#region @backendFunc
|
|
97
|
+
let { text, context, from, to, glossary } = options;
|
|
98
|
+
const fromOrg = from;
|
|
99
|
+
const toOrg = to;
|
|
100
|
+
from = _.first(from.split('-'));
|
|
101
|
+
to = _.first(to.split('-'));
|
|
102
|
+
if (!text.trim() || from === to) {
|
|
103
|
+
return text;
|
|
104
|
+
}
|
|
105
|
+
const srcLang = nllbLanguageCodes[fromOrg];
|
|
106
|
+
const tgtLang = nllbLanguageCodes[toOrg];
|
|
107
|
+
if (!srcLang) {
|
|
108
|
+
throw new Error(`Unsupported source translation locale: ${fromOrg}`);
|
|
109
|
+
}
|
|
110
|
+
if (!tgtLang) {
|
|
111
|
+
throw new Error(`Unsupported target translation locale: ${toOrg}`);
|
|
112
|
+
}
|
|
113
|
+
const input = context?.trim()
|
|
114
|
+
? `${context.trim()}\n\n${text.trim()}`
|
|
115
|
+
: text;
|
|
116
|
+
const protectedInput = this.protectGlossary(input, glossary);
|
|
117
|
+
const translator = await this.getTranslator();
|
|
118
|
+
const result = await translator(protectedInput.preparedText, {
|
|
119
|
+
src_lang: srcLang,
|
|
120
|
+
tgt_lang: tgtLang,
|
|
121
|
+
});
|
|
122
|
+
const translatedText = result[0]?.translation_text ?? '';
|
|
123
|
+
return protectedInput.restore(translatedText);
|
|
124
|
+
//#endregion
|
|
125
|
+
}
|
|
126
|
+
protectGlossary(text, glossary) {
|
|
127
|
+
if (!glossary || Object.keys(glossary).length === 0) {
|
|
128
|
+
return {
|
|
129
|
+
preparedText: text,
|
|
130
|
+
restore: translatedText => translatedText,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const replacements = [];
|
|
134
|
+
let preparedText = text;
|
|
135
|
+
Object.entries(glossary)
|
|
136
|
+
.sort(([left], [right]) => right.length - left.length)
|
|
137
|
+
.forEach(([sourceValue, translatedValue], index) => {
|
|
138
|
+
const placeholder = `TAONTERM${index}PLACEHOLDER`;
|
|
139
|
+
preparedText = preparedText.replaceAll(sourceValue, placeholder);
|
|
140
|
+
replacements.push({
|
|
141
|
+
placeholder,
|
|
142
|
+
translatedValue,
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
return {
|
|
146
|
+
preparedText,
|
|
147
|
+
restore(translatedText) {
|
|
148
|
+
let result = translatedText;
|
|
149
|
+
for (const replacement of replacements) {
|
|
150
|
+
result = result.replaceAll(replacement.placeholder, replacement.translatedValue);
|
|
151
|
+
}
|
|
152
|
+
return result;
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
getModelsCachePath() {
|
|
157
|
+
const cachePath = crossPlatformPath([
|
|
158
|
+
UtilsOs.getRealHomeDir(),
|
|
159
|
+
dotTaonFolder,
|
|
160
|
+
'ai-models-cache',
|
|
161
|
+
]);
|
|
162
|
+
mkdirSync(cachePath, {
|
|
163
|
+
recursive: true,
|
|
164
|
+
});
|
|
165
|
+
return cachePath;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=local-translation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-translation.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
package/lib-esm/lib/start-cli.js
CHANGED
|
@@ -1,44 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
// import { CoreModels } from 'tnp-core/src';
|
|
3
|
-
// import { Helpers, BaseCommandLineFeature } from 'tnp-helpers/src';
|
|
4
|
-
// import { BaseProject, BaseStartConfig } from 'tnp-helpers/src'; // @backend
|
|
5
|
-
// class $Global extends BaseCommandLineFeature<{}> {
|
|
6
|
-
// static [CoreModels.ClassNameStaticProperty] = '';
|
|
7
|
-
// public _() {
|
|
8
|
-
// console.log(`Hello world from cli`);
|
|
9
|
-
// this._exit();
|
|
10
|
-
// }
|
|
11
|
-
// }
|
|
12
|
-
//#endregion
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
* @param argsv process.argsv
|
|
16
|
-
* @param filename needed if you want ipc communicaiton
|
|
17
|
-
*/
|
|
1
|
+
import { LocalTranslationService } from './local-translation';
|
|
18
2
|
export async function startCli(argsv, filename) {
|
|
19
3
|
//#region @backendFunc
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
// classOrFnName: '$Version',
|
|
29
|
-
// funcOrClass: $Global,
|
|
30
|
-
// },
|
|
31
|
-
// ],
|
|
32
|
-
// argsv,
|
|
33
|
-
// useStringArrForArgsFunctions: true,
|
|
34
|
-
// shortArgsReplaceConfig: {
|
|
35
|
-
// v: 'version',
|
|
36
|
-
// },
|
|
37
|
-
// callbackNotRecognizedCommand: async () => {
|
|
38
|
-
// Helpers.error(`Command not recognized`, false, true);
|
|
39
|
-
// },
|
|
40
|
-
// });
|
|
41
|
-
//#endregion
|
|
4
|
+
const s = new LocalTranslationService();
|
|
5
|
+
const result = await s.translate({
|
|
6
|
+
from: 'en-US',
|
|
7
|
+
to: 'de-DE',
|
|
8
|
+
text: argsv.slice(2).join(' '),
|
|
9
|
+
});
|
|
10
|
+
console.log(`Translated: ${result}`);
|
|
11
|
+
process.exit(0);
|
|
42
12
|
//#endregion
|
|
43
13
|
}
|
|
44
14
|
export default startCli;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-cli.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"start-cli.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,KAAe,EACf,QAAgB;IAEhB,sBAAsB;IACtB,MAAM,CAAC,GAAG,IAAI,uBAAuB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC;QAC/B,IAAI,EAAE,OAAO;QACb,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KAC/B,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,YAAY;AACd,CAAC;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { UtilsPoFile } from "./utils-po-file";
|
|
2
|
+
describe('UtilsPoFile.extractPoToJson', () => {
|
|
3
|
+
it('extracts Poedit PO entries and ignores empty translations', () => {
|
|
4
|
+
const poContent = `
|
|
5
|
+
msgid ""
|
|
6
|
+
msgstr ""
|
|
7
|
+
"Project-Id-Version: \\\\n"
|
|
8
|
+
"Language: de_DE\\\\n"
|
|
9
|
+
"Content-Type: text/plain; charset=UTF-8\\\\n"
|
|
10
|
+
"X-Generator: Poedit 3.9\\\\n"
|
|
11
|
+
|
|
12
|
+
#: lib/gm-special-draw-api/gm-special-draw.model.ts
|
|
13
|
+
msgid "13-er Ergebniswette"
|
|
14
|
+
msgstr ""
|
|
15
|
+
|
|
16
|
+
#: lib/gm-messages/gm-messages.ts
|
|
17
|
+
msgid "Device not found"
|
|
18
|
+
msgstr "Gerät nicht gefunden"
|
|
19
|
+
|
|
20
|
+
#: lib/gm-messages/gm-messages.ts
|
|
21
|
+
msgid "Discount amount exceeds minimum amount"
|
|
22
|
+
msgstr " "
|
|
23
|
+
|
|
24
|
+
#: lib/gm-messages/gm-messages.ts lib/gm-messages/gm-rpc-generated-errors.ts
|
|
25
|
+
msgid "Data corrupted"
|
|
26
|
+
msgstr "Daten beschädigt"
|
|
27
|
+
`;
|
|
28
|
+
const result = UtilsPoFile.extractPoToJson(poContent);
|
|
29
|
+
expect(result).toEqual([
|
|
30
|
+
{
|
|
31
|
+
fileAbsPath: 'lib/gm-special-draw-api/gm-special-draw.model.ts',
|
|
32
|
+
fileRelativePath: 'lib/gm-special-draw-api/gm-special-draw.model.ts',
|
|
33
|
+
tags: [
|
|
34
|
+
{
|
|
35
|
+
lineNumber: 0,
|
|
36
|
+
gettextString: '13-er Ergebniswette',
|
|
37
|
+
context: undefined,
|
|
38
|
+
translation: undefined,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
fileAbsPath: 'lib/gm-messages/gm-messages.ts',
|
|
44
|
+
fileRelativePath: 'lib/gm-messages/gm-messages.ts',
|
|
45
|
+
tags: [
|
|
46
|
+
{
|
|
47
|
+
lineNumber: 0,
|
|
48
|
+
gettextString: 'Device not found',
|
|
49
|
+
context: undefined,
|
|
50
|
+
translation: 'Gerät nicht gefunden',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
lineNumber: 0,
|
|
54
|
+
gettextString: 'Discount amount exceeds minimum amount',
|
|
55
|
+
context: undefined,
|
|
56
|
+
translation: undefined,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
lineNumber: 0,
|
|
60
|
+
gettextString: 'Data corrupted',
|
|
61
|
+
context: undefined,
|
|
62
|
+
translation: 'Daten beschädigt',
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
fileAbsPath: 'lib/gm-messages/gm-rpc-generated-errors.ts',
|
|
68
|
+
fileRelativePath: 'lib/gm-messages/gm-rpc-generated-errors.ts',
|
|
69
|
+
tags: [
|
|
70
|
+
{
|
|
71
|
+
lineNumber: 0,
|
|
72
|
+
gettextString: 'Data corrupted',
|
|
73
|
+
context: undefined,
|
|
74
|
+
translation: 'Daten beschädigt',
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
]);
|
|
79
|
+
});
|
|
80
|
+
it('supports references containing line numbers', () => {
|
|
81
|
+
const poContent = `
|
|
82
|
+
#: lib/example.ts:15 lib/second.ts:31
|
|
83
|
+
msgid "Device not found"
|
|
84
|
+
msgstr "Gerät nicht gefunden"
|
|
85
|
+
`;
|
|
86
|
+
expect(UtilsPoFile.extractPoToJson(poContent)).toEqual([
|
|
87
|
+
{
|
|
88
|
+
fileAbsPath: 'lib/example.ts',
|
|
89
|
+
fileRelativePath: 'lib/example.ts',
|
|
90
|
+
tags: [
|
|
91
|
+
{
|
|
92
|
+
lineNumber: 15,
|
|
93
|
+
gettextString: 'Device not found',
|
|
94
|
+
context: undefined,
|
|
95
|
+
translation: 'Gerät nicht gefunden',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
fileAbsPath: 'lib/second.ts',
|
|
101
|
+
fileRelativePath: 'lib/second.ts',
|
|
102
|
+
tags: [
|
|
103
|
+
{
|
|
104
|
+
lineNumber: 31,
|
|
105
|
+
gettextString: 'Device not found',
|
|
106
|
+
context: undefined,
|
|
107
|
+
translation: 'Gerät nicht gefunden',
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
]);
|
|
112
|
+
});
|
|
113
|
+
it('supports PO files containing UTF-8 BOM', () => {
|
|
114
|
+
const poContent = '\uFEFF' +
|
|
115
|
+
`
|
|
116
|
+
msgid ""
|
|
117
|
+
msgstr ""
|
|
118
|
+
"Language: de_DE\\\\n"
|
|
119
|
+
|
|
120
|
+
#: lib/example.ts:4
|
|
121
|
+
msgid "Access prohibited"
|
|
122
|
+
msgstr "Zugriff verboten"
|
|
123
|
+
`;
|
|
124
|
+
const result = UtilsPoFile.extractPoToJson(poContent);
|
|
125
|
+
expect(result[0]?.tags[0]?.translation).toBe('Zugriff verboten');
|
|
126
|
+
});
|
|
127
|
+
it('escapes translations when generating PO content', () => {
|
|
128
|
+
const result = UtilsPoFile.generatePoFileContent([
|
|
129
|
+
{
|
|
130
|
+
fileAbsPath: '/project/lib/example.ts',
|
|
131
|
+
fileRelativePath: 'lib/example.ts',
|
|
132
|
+
tags: [
|
|
133
|
+
{
|
|
134
|
+
lineNumber: 10,
|
|
135
|
+
gettextString: 'Displayed "message"',
|
|
136
|
+
translation: 'Eine "Nachricht"\\nmit neuer Zeile',
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
},
|
|
140
|
+
], 'de-DE');
|
|
141
|
+
expect(result).toContain('msgid "Displayed \\"message\\""');
|
|
142
|
+
expect(result).toContain('msgstr "Eine \\"Nachricht\\"\\\\nmit neuer Zeile"');
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=utils-po-file-extracto-to-json.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-po-file-extracto-to-json.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,7 @@ export var UtilsPoFile;
|
|
|
51
51
|
lines.push(`msgctxt "${escapePoString(entry.context)}"`);
|
|
52
52
|
}
|
|
53
53
|
lines.push(`msgid "${escapePoString(entry.msgid)}"`);
|
|
54
|
-
lines.push(`msgstr "${entry.translation
|
|
54
|
+
lines.push(`msgstr "${escapePoString(normalizePoTranslation(entry.translation) ?? '')}"`);
|
|
55
55
|
lines.push('');
|
|
56
56
|
}
|
|
57
57
|
return lines.join('\n');
|
|
@@ -65,16 +65,20 @@ export var UtilsPoFile;
|
|
|
65
65
|
const entries = parsePoEntries(poFileContent);
|
|
66
66
|
const filesMap = new Map();
|
|
67
67
|
for (const entry of entries) {
|
|
68
|
-
if (!entry.msgid)
|
|
68
|
+
if (!entry.msgid) {
|
|
69
69
|
continue;
|
|
70
|
+
}
|
|
71
|
+
const translation = normalizePoTranslation(entry.msgstr);
|
|
70
72
|
for (const ref of entry.refs) {
|
|
71
73
|
const parsedRef = parsePoRef(ref);
|
|
72
|
-
if (!parsedRef)
|
|
74
|
+
if (!parsedRef) {
|
|
73
75
|
continue;
|
|
76
|
+
}
|
|
74
77
|
let file = filesMap.get(parsedRef.fileAbsPath);
|
|
75
78
|
if (!file) {
|
|
76
79
|
file = {
|
|
77
80
|
fileAbsPath: parsedRef.fileAbsPath,
|
|
81
|
+
fileRelativePath: parsedRef.fileAbsPath,
|
|
78
82
|
tags: [],
|
|
79
83
|
};
|
|
80
84
|
filesMap.set(parsedRef.fileAbsPath, file);
|
|
@@ -83,7 +87,7 @@ export var UtilsPoFile;
|
|
|
83
87
|
lineNumber: parsedRef.lineNumber,
|
|
84
88
|
gettextString: entry.msgid,
|
|
85
89
|
context: entry.msgctxt,
|
|
86
|
-
translation
|
|
90
|
+
translation,
|
|
87
91
|
});
|
|
88
92
|
}
|
|
89
93
|
}
|
|
@@ -143,8 +147,7 @@ export var UtilsPoFile;
|
|
|
143
147
|
const oldTag = oldTagsByKey.get(getGettextTagKey(sourceTag));
|
|
144
148
|
return {
|
|
145
149
|
...sourceTag,
|
|
146
|
-
|
|
147
|
-
translation: oldTag?.translation || undefined,
|
|
150
|
+
translation: normalizePoTranslation(oldTag?.translation),
|
|
148
151
|
};
|
|
149
152
|
}),
|
|
150
153
|
};
|
|
@@ -158,12 +161,13 @@ export var UtilsPoFile;
|
|
|
158
161
|
}
|
|
159
162
|
function parsePoEntries(po) {
|
|
160
163
|
//#region @backendFunc
|
|
161
|
-
const
|
|
164
|
+
const normalizedPo = po.replace(/^\uFEFF/, '');
|
|
165
|
+
const lines = normalizedPo.split(/\r?\n/);
|
|
162
166
|
const entries = [];
|
|
163
167
|
let current = { refs: [] };
|
|
164
168
|
let activeField = null;
|
|
165
169
|
const flush = () => {
|
|
166
|
-
if (current.refs.length ||
|
|
170
|
+
if (current.refs.length > 0 ||
|
|
167
171
|
current.msgctxt !== undefined ||
|
|
168
172
|
current.msgid !== undefined ||
|
|
169
173
|
current.msgstr !== undefined) {
|
|
@@ -204,18 +208,21 @@ export var UtilsPoFile;
|
|
|
204
208
|
}
|
|
205
209
|
}
|
|
206
210
|
flush();
|
|
207
|
-
|
|
208
|
-
|
|
211
|
+
return entries.filter(entry => {
|
|
212
|
+
const isHeader = entry.msgid === '' && entry.refs.length === 0;
|
|
213
|
+
return !isHeader;
|
|
214
|
+
});
|
|
209
215
|
//#endregion
|
|
210
216
|
}
|
|
211
217
|
function parsePoRef(ref) {
|
|
212
218
|
//#region @backendFunc
|
|
213
|
-
const match = ref.match(/^(
|
|
214
|
-
if (!match)
|
|
219
|
+
const match = ref.match(/^(.+?)(?::(\d+))?$/);
|
|
220
|
+
if (!match) {
|
|
215
221
|
return null;
|
|
222
|
+
}
|
|
216
223
|
return {
|
|
217
224
|
fileAbsPath: match[1],
|
|
218
|
-
lineNumber: Number(match[2]),
|
|
225
|
+
lineNumber: match[2] ? Number(match[2]) : 0,
|
|
219
226
|
};
|
|
220
227
|
//#endregion
|
|
221
228
|
}
|
|
@@ -231,6 +238,12 @@ export var UtilsPoFile;
|
|
|
231
238
|
return '';
|
|
232
239
|
return unescapePoString(match[1]);
|
|
233
240
|
}
|
|
241
|
+
function normalizePoTranslation(translation) {
|
|
242
|
+
if (translation === undefined || translation === null) {
|
|
243
|
+
return undefined;
|
|
244
|
+
}
|
|
245
|
+
return translation.trim().length > 0 ? translation : undefined;
|
|
246
|
+
}
|
|
234
247
|
function unescapePoString(value) {
|
|
235
248
|
return value
|
|
236
249
|
.replace(/\\n/g, '\n')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-po-file.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC,WAAW;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,MAAM,KAAW,WAAW,
|
|
1
|
+
{"version":3,"file":"utils-po-file.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ msgstr "Kupiłeś [[ howMany ]] produktów"
|
|
|
23
23
|
expect(UtilsPoFile.extractPoToJson(po)).toEqual([
|
|
24
24
|
{
|
|
25
25
|
fileAbsPath: 'src/lib/test.html',
|
|
26
|
+
fileRelativePath: 'src/lib/test.html',
|
|
26
27
|
tags: [
|
|
27
28
|
{
|
|
28
29
|
lineNumber: 8,
|
|
@@ -55,6 +56,7 @@ msgstr ""
|
|
|
55
56
|
expect(UtilsPoFile.extractPoToJson(po)).toEqual([
|
|
56
57
|
{
|
|
57
58
|
fileAbsPath: 'src/lib/test.html',
|
|
59
|
+
fileRelativePath: 'src/lib/test.html',
|
|
58
60
|
tags: [
|
|
59
61
|
{
|
|
60
62
|
lineNumber: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-po-file.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils-po-file.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|