@taon-dev/i18n 21.0.25 → 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.
Files changed (79) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/browser/fesm2022/i18n-browser.mjs +220 -35
  3. package/browser/fesm2022/i18n-browser.mjs.map +1 -1
  4. package/browser/package.json +1 -1
  5. package/browser/types/i18n-browser.d.ts +73 -11
  6. package/browser-prod/fesm2022/i18n-browser-prod.mjs +220 -35
  7. package/browser-prod/fesm2022/i18n-browser-prod.mjs.map +1 -1
  8. package/browser-prod/package.json +1 -1
  9. package/browser-prod/types/i18n-browser-prod.d.ts +73 -11
  10. package/lib/build-info._auto-generated_.d.ts +1 -1
  11. package/lib/build-info._auto-generated_.js +1 -1
  12. package/lib/index._auto-generated_.d.ts +1 -0
  13. package/lib/index._auto-generated_.js +1 -0
  14. package/lib/index._auto-generated_.js.map +1 -1
  15. package/lib/local-translation.d.ts +67 -0
  16. package/lib/local-translation.js +172 -0
  17. package/lib/local-translation.js.map +1 -0
  18. package/lib/package.json +1 -1
  19. package/lib/start-cli.d.ts +0 -5
  20. package/lib/start-cli.js +9 -39
  21. package/lib/start-cli.js.map +1 -1
  22. package/lib/utils-po-file-extracto-to-json.test.d.ts +1 -0
  23. package/lib/utils-po-file-extracto-to-json.test.js +147 -0
  24. package/lib/utils-po-file-extracto-to-json.test.js.map +1 -0
  25. package/lib/utils-po-file.js +26 -13
  26. package/lib/utils-po-file.js.map +1 -1
  27. package/lib/utils-po-file.test.js +2 -0
  28. package/lib/utils-po-file.test.js.map +1 -1
  29. package/lib-esm/app.electron.d.ts +1 -1
  30. package/lib-esm/app.electron.js +1 -1
  31. package/lib-esm/app.vscode.d.ts +0 -9
  32. package/lib-esm/app.vscode.js +54 -36
  33. package/lib-esm/app.vscode.js.map +1 -1
  34. package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
  35. package/lib-esm/lib/build-info._auto-generated_.js +1 -1
  36. package/lib-esm/lib/index._auto-generated_.d.ts +1 -0
  37. package/lib-esm/lib/index._auto-generated_.js +1 -0
  38. package/lib-esm/lib/index._auto-generated_.js.map +1 -1
  39. package/lib-esm/lib/local-translation.d.ts +67 -0
  40. package/lib-esm/lib/local-translation.js +168 -0
  41. package/lib-esm/lib/local-translation.js.map +1 -0
  42. package/lib-esm/lib/start-cli.d.ts +0 -5
  43. package/lib-esm/lib/start-cli.js +9 -39
  44. package/lib-esm/lib/start-cli.js.map +1 -1
  45. package/lib-esm/lib/utils-po-file-extracto-to-json.test.d.ts +1 -0
  46. package/lib-esm/lib/utils-po-file-extracto-to-json.test.js +145 -0
  47. package/lib-esm/lib/utils-po-file-extracto-to-json.test.js.map +1 -0
  48. package/lib-esm/lib/utils-po-file.js +26 -13
  49. package/lib-esm/lib/utils-po-file.js.map +1 -1
  50. package/lib-esm/lib/utils-po-file.test.js +2 -0
  51. package/lib-esm/lib/utils-po-file.test.js.map +1 -1
  52. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  53. package/lib-prod/build-info._auto-generated_.js +1 -1
  54. package/lib-prod/index._auto-generated_.d.ts +1 -0
  55. package/lib-prod/index._auto-generated_.js +1 -0
  56. package/lib-prod/index._auto-generated_.js.map +1 -1
  57. package/lib-prod/local-translation.d.ts +67 -0
  58. package/lib-prod/local-translation.js +168 -0
  59. package/lib-prod/local-translation.js.map +1 -0
  60. package/lib-prod/package.json +1 -1
  61. package/lib-prod/start-cli.d.ts +0 -5
  62. package/lib-prod/start-cli.js +9 -39
  63. package/lib-prod/start-cli.js.map +1 -1
  64. package/lib-prod/utils-po-file-extracto-to-json.test.d.ts +1 -0
  65. package/lib-prod/utils-po-file-extracto-to-json.test.js +145 -0
  66. package/lib-prod/utils-po-file-extracto-to-json.test.js.map +1 -0
  67. package/lib-prod/utils-po-file.js +26 -13
  68. package/lib-prod/utils-po-file.js.map +1 -1
  69. package/lib-prod/utils-po-file.test.js +2 -0
  70. package/lib-prod/utils-po-file.test.js.map +1 -1
  71. package/package.json +1 -1
  72. package/websql/fesm2022/i18n-websql.mjs +220 -35
  73. package/websql/fesm2022/i18n-websql.mjs.map +1 -1
  74. package/websql/package.json +1 -1
  75. package/websql/types/i18n-websql.d.ts +73 -11
  76. package/websql-prod/fesm2022/i18n-websql-prod.mjs +220 -35
  77. package/websql-prod/fesm2022/i18n-websql-prod.mjs.map +1 -1
  78. package/websql-prod/package.json +1 -1
  79. package/websql-prod/types/i18n-websql-prod.d.ts +73 -11
@@ -0,0 +1,67 @@
1
+ import { UtilsI18n } from 'tnp-core';
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,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalTranslationService = void 0;
4
+ const node_fs_1 = require("node:fs");
5
+ const lib_1 = require("tnp-core/lib");
6
+ const MODEL_ID = 'Xenova/nllb-200-distilled-600M';
7
+ const nllbLanguageCodes = {
8
+ 'en-US': 'eng_Latn',
9
+ 'pl-PL': 'pol_Latn',
10
+ 'de-DE': 'deu_Latn',
11
+ };
12
+ class LocalTranslationService {
13
+ translatorPromise;
14
+ aiReady = false;
15
+ warmupPromise;
16
+ progressListeners = new Set();
17
+ /**
18
+ * Downloads, caches and loads the translation model.
19
+ *
20
+ * Multiple simultaneous calls share the same initialization promise.
21
+ * After this resolves, translate() reuses the already loaded model.
22
+ */
23
+ async makeSureAiDownloaded(options = {}) {
24
+ //#region @backendFunc
25
+ const { onProgress, warmup = false } = options;
26
+ if (onProgress) {
27
+ this.progressListeners.add(onProgress);
28
+ }
29
+ try {
30
+ const translator = await this.getTranslator();
31
+ if (warmup) {
32
+ await this.warmupTranslator(translator);
33
+ }
34
+ }
35
+ finally {
36
+ if (onProgress) {
37
+ this.progressListeners.delete(onProgress);
38
+ }
39
+ }
40
+ //#endregion
41
+ }
42
+ /**
43
+ * True only in this process after pipeline initialization succeeded.
44
+ */
45
+ isAiReady() {
46
+ return this.aiReady;
47
+ }
48
+ getTranslator() {
49
+ this.translatorPromise ??= this.createTranslator().catch(error => {
50
+ // Allow a later call to retry after a network or disk failure.
51
+ this.translatorPromise = undefined;
52
+ this.aiReady = false;
53
+ throw error;
54
+ });
55
+ return this.translatorPromise;
56
+ }
57
+ async createTranslator() {
58
+ //#region @backendFunc
59
+ const { env, pipeline } = await Promise.resolve().then(() => require('@huggingface/transformers'));
60
+ env.cacheDir = this.getModelsCachePath();
61
+ const translator = await pipeline('translation', MODEL_ID, {
62
+ dtype: 'q8',
63
+ progress_callback: (progress) => {
64
+ this.emitProgress(progress);
65
+ },
66
+ });
67
+ this.aiReady = true;
68
+ this.emitProgress({
69
+ status: 'ready',
70
+ progress: 100,
71
+ });
72
+ return translator;
73
+ //#endregion
74
+ }
75
+ emitProgress(progress) {
76
+ for (const listener of this.progressListeners) {
77
+ try {
78
+ listener(progress);
79
+ }
80
+ catch {
81
+ // A UI callback must not break model initialization.
82
+ }
83
+ }
84
+ }
85
+ warmupTranslator(translator) {
86
+ this.warmupPromise ??= translator('Hello.', {
87
+ src_lang: 'eng_Latn',
88
+ tgt_lang: 'pol_Latn',
89
+ max_new_tokens: 16,
90
+ })
91
+ .then(() => undefined)
92
+ .catch(error => {
93
+ this.warmupPromise = undefined;
94
+ throw error;
95
+ });
96
+ return this.warmupPromise;
97
+ }
98
+ async translate(options) {
99
+ //#region @backendFunc
100
+ let { text, context, from, to, glossary } = options;
101
+ const fromOrg = from;
102
+ const toOrg = to;
103
+ from = lib_1._.first(from.split('-'));
104
+ to = lib_1._.first(to.split('-'));
105
+ if (!text.trim() || from === to) {
106
+ return text;
107
+ }
108
+ const srcLang = nllbLanguageCodes[fromOrg];
109
+ const tgtLang = nllbLanguageCodes[toOrg];
110
+ if (!srcLang) {
111
+ throw new Error(`Unsupported source translation locale: ${fromOrg}`);
112
+ }
113
+ if (!tgtLang) {
114
+ throw new Error(`Unsupported target translation locale: ${toOrg}`);
115
+ }
116
+ const input = context?.trim()
117
+ ? `${context.trim()}\n\n${text.trim()}`
118
+ : text;
119
+ const protectedInput = this.protectGlossary(input, glossary);
120
+ const translator = await this.getTranslator();
121
+ const result = await translator(protectedInput.preparedText, {
122
+ src_lang: srcLang,
123
+ tgt_lang: tgtLang,
124
+ });
125
+ const translatedText = result[0]?.translation_text ?? '';
126
+ return protectedInput.restore(translatedText);
127
+ //#endregion
128
+ }
129
+ protectGlossary(text, glossary) {
130
+ if (!glossary || Object.keys(glossary).length === 0) {
131
+ return {
132
+ preparedText: text,
133
+ restore: translatedText => translatedText,
134
+ };
135
+ }
136
+ const replacements = [];
137
+ let preparedText = text;
138
+ Object.entries(glossary)
139
+ .sort(([left], [right]) => right.length - left.length)
140
+ .forEach(([sourceValue, translatedValue], index) => {
141
+ const placeholder = `TAONTERM${index}PLACEHOLDER`;
142
+ preparedText = preparedText.replaceAll(sourceValue, placeholder);
143
+ replacements.push({
144
+ placeholder,
145
+ translatedValue,
146
+ });
147
+ });
148
+ return {
149
+ preparedText,
150
+ restore(translatedText) {
151
+ let result = translatedText;
152
+ for (const replacement of replacements) {
153
+ result = result.replaceAll(replacement.placeholder, replacement.translatedValue);
154
+ }
155
+ return result;
156
+ },
157
+ };
158
+ }
159
+ getModelsCachePath() {
160
+ const cachePath = (0, lib_1.crossPlatformPath)([
161
+ lib_1.UtilsOs.getRealHomeDir(),
162
+ lib_1.dotTaonFolder,
163
+ 'ai-models-cache',
164
+ ]);
165
+ (0, node_fs_1.mkdirSync)(cachePath, {
166
+ recursive: true,
167
+ });
168
+ return cachePath;
169
+ }
170
+ }
171
+ exports.LocalTranslationService = LocalTranslationService;
172
+ //# 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/package.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@taon-dev/i18n/lib",
3
- "version": "21.0.25"
3
+ "version": "21.0.30"
4
4
  }
@@ -1,7 +1,2 @@
1
- /**
2
- *
3
- * @param argsv process.argsv
4
- * @param filename needed if you want ipc communicaiton
5
- */
6
1
  export declare function startCli(argsv: string[], filename: string): Promise<void>;
7
2
  export default startCli;
package/lib/start-cli.js CHANGED
@@ -1,47 +1,17 @@
1
1
  "use strict";
2
- //#region tnp-helpers cli template
3
- // import { CoreModels } from 'tnp-core/src';
4
- // import { Helpers, BaseCommandLineFeature } from 'tnp-helpers/src';
5
- // import { BaseProject, BaseStartConfig } from 'tnp-helpers/src'; // @backend
6
2
  Object.defineProperty(exports, "__esModule", { value: true });
7
3
  exports.startCli = startCli;
8
- // class $Global extends BaseCommandLineFeature<{}> {
9
- // static [CoreModels.ClassNameStaticProperty] = '';
10
- // public _() {
11
- // console.log(`Hello world from cli`);
12
- // this._exit();
13
- // }
14
- // }
15
- //#endregion
16
- /**
17
- *
18
- * @param argsv process.argsv
19
- * @param filename needed if you want ipc communicaiton
20
- */
4
+ const local_translation_1 = require("./local-translation");
21
5
  async function startCli(argsv, filename) {
22
6
  //#region @backendFunc
23
- console.log('Hello from cli');
24
- // console.log({ argsv });
25
- // process.exit(0);
26
- //#region start config
27
- // new BaseStartConfig({
28
- // ProjectClass: BaseProject,
29
- // functionsOrClasses: [
30
- // {
31
- // classOrFnName: '$Version',
32
- // funcOrClass: $Global,
33
- // },
34
- // ],
35
- // argsv,
36
- // useStringArrForArgsFunctions: true,
37
- // shortArgsReplaceConfig: {
38
- // v: 'version',
39
- // },
40
- // callbackNotRecognizedCommand: async () => {
41
- // Helpers.error(`Command not recognized`, false, true);
42
- // },
43
- // });
44
- //#endregion
7
+ const s = new local_translation_1.LocalTranslationService();
8
+ const result = await s.translate({
9
+ from: 'en-US',
10
+ to: 'de-DE',
11
+ text: argsv.slice(2).join(' '),
12
+ });
13
+ console.log(`Translated: ${result}`);
14
+ process.exit(0);
45
15
  //#endregion
46
16
  }
47
17
  exports.default = startCli;
@@ -1 +1 @@
1
- {"version":3,"file":"start-cli.js","sourceRoot":"","sources":[""],"names":[],"mappings":";AAAA,kCAAkC;AAClC,6CAA6C;AAC7C,qEAAqE;AACrE,8EAA8E;;AAgB9E,4BA6BC;AA3CD,qDAAqD;AACrD,sDAAsD;AACtD,iBAAiB;AACjB,2CAA2C;AAC3C,oBAAoB;AACpB,MAAM;AACN,IAAI;AACJ,YAAY;AAEZ;;;;GAIG;AACI,KAAK,UAAU,QAAQ,CAC5B,KAAe,EACf,QAAgB;IAEhB,sBAAsB;IACtB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,0BAA0B;IAC1B,mBAAmB;IAEnB,sBAAsB;IACtB,wBAAwB;IACxB,+BAA+B;IAC/B,0BAA0B;IAC1B,QAAQ;IACR,mCAAmC;IACnC,8BAA8B;IAC9B,SAAS;IACT,OAAO;IACP,WAAW;IACX,wCAAwC;IACxC,8BAA8B;IAC9B,oBAAoB;IACpB,OAAO;IACP,gDAAgD;IAChD,4DAA4D;IAC5D,OAAO;IACP,MAAM;IACN,YAAY;IACZ,YAAY;AACd,CAAC;AAED,kBAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"start-cli.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AAEA,4BAcC;AAhBD,2DAA8D;AAEvD,KAAK,UAAU,QAAQ,CAC5B,KAAe,EACf,QAAgB;IAEhB,sBAAsB;IACtB,MAAM,CAAC,GAAG,IAAI,2CAAuB,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,kBAAe,QAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,147 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-po-file-extracto-to-json.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -54,7 +54,7 @@ var UtilsPoFile;
54
54
  lines.push(`msgctxt "${escapePoString(entry.context)}"`);
55
55
  }
56
56
  lines.push(`msgid "${escapePoString(entry.msgid)}"`);
57
- lines.push(`msgstr "${entry.translation || ''}"`);
57
+ lines.push(`msgstr "${escapePoString(normalizePoTranslation(entry.translation) ?? '')}"`);
58
58
  lines.push('');
59
59
  }
60
60
  return lines.join('\n');
@@ -68,16 +68,20 @@ var UtilsPoFile;
68
68
  const entries = parsePoEntries(poFileContent);
69
69
  const filesMap = new Map();
70
70
  for (const entry of entries) {
71
- if (!entry.msgid)
71
+ if (!entry.msgid) {
72
72
  continue;
73
+ }
74
+ const translation = normalizePoTranslation(entry.msgstr);
73
75
  for (const ref of entry.refs) {
74
76
  const parsedRef = parsePoRef(ref);
75
- if (!parsedRef)
77
+ if (!parsedRef) {
76
78
  continue;
79
+ }
77
80
  let file = filesMap.get(parsedRef.fileAbsPath);
78
81
  if (!file) {
79
82
  file = {
80
83
  fileAbsPath: parsedRef.fileAbsPath,
84
+ fileRelativePath: parsedRef.fileAbsPath,
81
85
  tags: [],
82
86
  };
83
87
  filesMap.set(parsedRef.fileAbsPath, file);
@@ -86,7 +90,7 @@ var UtilsPoFile;
86
90
  lineNumber: parsedRef.lineNumber,
87
91
  gettextString: entry.msgid,
88
92
  context: entry.msgctxt,
89
- translation: entry.msgstr || undefined,
93
+ translation,
90
94
  });
91
95
  }
92
96
  }
@@ -146,8 +150,7 @@ var UtilsPoFile;
146
150
  const oldTag = oldTagsByKey.get(getGettextTagKey(sourceTag));
147
151
  return {
148
152
  ...sourceTag,
149
- lineNumber: sourceTag.lineNumber,
150
- translation: oldTag?.translation || undefined,
153
+ translation: normalizePoTranslation(oldTag?.translation),
151
154
  };
152
155
  }),
153
156
  };
@@ -161,12 +164,13 @@ var UtilsPoFile;
161
164
  }
162
165
  function parsePoEntries(po) {
163
166
  //#region @backendFunc
164
- const lines = po.split(/\r?\n/);
167
+ const normalizedPo = po.replace(/^\uFEFF/, '');
168
+ const lines = normalizedPo.split(/\r?\n/);
165
169
  const entries = [];
166
170
  let current = { refs: [] };
167
171
  let activeField = null;
168
172
  const flush = () => {
169
- if (current.refs.length ||
173
+ if (current.refs.length > 0 ||
170
174
  current.msgctxt !== undefined ||
171
175
  current.msgid !== undefined ||
172
176
  current.msgstr !== undefined) {
@@ -207,18 +211,21 @@ var UtilsPoFile;
207
211
  }
208
212
  }
209
213
  flush();
210
- // skip header
211
- return entries.filter(entry => !(entry.msgid === '' && !entry.refs.length));
214
+ return entries.filter(entry => {
215
+ const isHeader = entry.msgid === '' && entry.refs.length === 0;
216
+ return !isHeader;
217
+ });
212
218
  //#endregion
213
219
  }
214
220
  function parsePoRef(ref) {
215
221
  //#region @backendFunc
216
- const match = ref.match(/^(.+):(\d+)$/);
217
- if (!match)
222
+ const match = ref.match(/^(.+?)(?::(\d+))?$/);
223
+ if (!match) {
218
224
  return null;
225
+ }
219
226
  return {
220
227
  fileAbsPath: match[1],
221
- lineNumber: Number(match[2]),
228
+ lineNumber: match[2] ? Number(match[2]) : 0,
222
229
  };
223
230
  //#endregion
224
231
  }
@@ -234,6 +241,12 @@ var UtilsPoFile;
234
241
  return '';
235
242
  return unescapePoString(match[1]);
236
243
  }
244
+ function normalizePoTranslation(translation) {
245
+ if (translation === undefined || translation === null) {
246
+ return undefined;
247
+ }
248
+ return translation.trim().length > 0 ? translation : undefined;
249
+ }
237
250
  function unescapePoString(value) {
238
251
  return value
239
252
  .replace(/\\n/g, '\n')
@@ -1 +1 @@
1
- {"version":3,"file":"utils-po-file.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils-po-file.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ msgstr "Kupiłeś [[ howMany ]] produktów"
25
25
  expect(utils_po_file_1.UtilsPoFile.extractPoToJson(po)).toEqual([
26
26
  {
27
27
  fileAbsPath: 'src/lib/test.html',
28
+ fileRelativePath: 'src/lib/test.html',
28
29
  tags: [
29
30
  {
30
31
  lineNumber: 8,
@@ -57,6 +58,7 @@ msgstr ""
57
58
  expect(utils_po_file_1.UtilsPoFile.extractPoToJson(po)).toEqual([
58
59
  {
59
60
  fileAbsPath: 'src/lib/test.html',
61
+ fileRelativePath: 'src/lib/test.html',
60
62
  tags: [
61
63
  {
62
64
  lineNumber: 1,