wuchale 0.4.2 → 0.5.0

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.
@@ -0,0 +1,294 @@
1
+ import Preprocess, { IndexTracker, NestText } from "./prep.js";
2
+ import { Parser } from 'acorn';
3
+ import { tsPlugin } from '@sveltejs/acorn-typescript';
4
+ import { parse } from "svelte/compiler";
5
+ import { writeFile, readFile } from 'node:fs/promises';
6
+ import compileTranslation, {} from "./compile.js";
7
+ import GeminiQueue, {} from "./gemini.js";
8
+ import { glob } from "tinyglobby";
9
+ import PO from "pofile";
10
+ import { normalize, relative } from "node:path";
11
+ import { getOptions } from "../config.js";
12
+ const pluginName = 'wuchale';
13
+ const virtualPrefix = `virtual:${pluginName}/`;
14
+ const virtualResolvedPrefix = '\0';
15
+ const modulePatterns = ['.svelte.js', '.svelte.ts'];
16
+ const markupPatterns = ['.svelte'];
17
+ const patterns = [...modulePatterns, ...markupPatterns];
18
+ const ScriptParser = Parser.extend(tsPlugin());
19
+ const scriptParseOptions = {
20
+ sourceType: 'module',
21
+ ecmaVersion: 'latest',
22
+ locations: true
23
+ };
24
+ async function loadPOFile(filename) {
25
+ return new Promise((res, rej) => {
26
+ PO.load(filename, (err, po) => {
27
+ const translations = {};
28
+ let total = 0;
29
+ let obsolete = 0;
30
+ let untranslated = 0;
31
+ if (err) {
32
+ rej(err);
33
+ return;
34
+ }
35
+ for (const item of po.items) {
36
+ total++;
37
+ if (item.obsolete) {
38
+ obsolete++;
39
+ continue;
40
+ }
41
+ if (!item.msgstr[0]) {
42
+ untranslated++;
43
+ }
44
+ const nTxt = new NestText(item.msgid, null, item.msgctxt);
45
+ translations[nTxt.toKey()] = item;
46
+ }
47
+ res({ translations, total, obsolete, untranslated });
48
+ });
49
+ });
50
+ }
51
+ async function savePO(translations, filename) {
52
+ const po = new PO();
53
+ for (const item of Object.values(translations)) {
54
+ po.items.push(item);
55
+ }
56
+ return new Promise((res, rej) => {
57
+ po.save(filename, err => {
58
+ if (err) {
59
+ rej(err);
60
+ }
61
+ else {
62
+ res(null);
63
+ }
64
+ });
65
+ });
66
+ }
67
+ class Plugin {
68
+ name = pluginName;
69
+ #config;
70
+ locales;
71
+ // exposed for testing
72
+ _translations = {};
73
+ _compiled = {};
74
+ #sourceTranslations;
75
+ #compiledFname = {};
76
+ #translationsFname = {};
77
+ #currentPurpose = 'dev';
78
+ #projectRoot = '';
79
+ #indexTracker;
80
+ #geminiQueue = {};
81
+ #transFnamesToLocales = {};
82
+ transform;
83
+ #allowDirs = [];
84
+ constructor() {
85
+ this.#indexTracker = new IndexTracker({});
86
+ }
87
+ init = async (configRaw) => {
88
+ this.#config = await getOptions(configRaw);
89
+ this.locales = [this.#config.sourceLocale, ...this.#config.otherLocales];
90
+ for (const loc of this.locales) {
91
+ this.#compiledFname[loc] = `${this.#config.localesDir}/${loc}.js`;
92
+ this.#translationsFname[loc] = `${this.#config.localesDir}/${loc}.po`;
93
+ }
94
+ for (const loc of this.#config.otherLocales) {
95
+ if (loc === this.#config.sourceLocale) {
96
+ throw Error('Source locale cannot included in other locales.');
97
+ }
98
+ this.#geminiQueue[loc] = new GeminiQueue(this.#config.sourceLocale, loc, this.#config.geminiAPIKey, async () => await this.afterExtract(loc));
99
+ }
100
+ if (this.#config.hmr) {
101
+ this.transform = {
102
+ order: 'pre',
103
+ handler: this.transformHandler,
104
+ };
105
+ }
106
+ };
107
+ directExtract = async () => {
108
+ const all = [];
109
+ for (const dir of this.#config.srcDirs) {
110
+ for (const patternEnd of patterns) {
111
+ for (const file of await glob(`${dir}/**/*${patternEnd}`)) {
112
+ const contents = await readFile(file);
113
+ all.push(this.transformHandler(contents.toString(), normalize(process.cwd() + '/' + file)));
114
+ }
115
+ }
116
+ }
117
+ await Promise.all(all);
118
+ };
119
+ #loadTranslations = async (loc) => {
120
+ try {
121
+ const { translations: trans, total, obsolete, untranslated } = await loadPOFile(this.#translationsFname[loc]);
122
+ this._translations[loc] = trans;
123
+ console.info(`i18n stats (${loc}): total: ${total}, obsolete: ${obsolete}, untranslated: ${untranslated}`);
124
+ }
125
+ catch (err) {
126
+ if (err.code !== 'ENOENT') {
127
+ throw err;
128
+ }
129
+ this._translations[loc] = {};
130
+ if (this.#currentPurpose === 'dev') {
131
+ await this.directExtract();
132
+ }
133
+ }
134
+ };
135
+ #compile = (loc) => {
136
+ this._compiled[loc] = [];
137
+ for (const key in this._translations[loc]) {
138
+ const poItem = this._translations[loc][key];
139
+ const index = this.#indexTracker.get(key);
140
+ this._compiled[loc][index] = compileTranslation(poItem.msgstr[0], this._compiled[this.#config.sourceLocale][index]);
141
+ }
142
+ for (const [i, item] of this._compiled[loc].entries()) {
143
+ if (item == null) {
144
+ this._compiled[loc][i] = 0; // reduce json size
145
+ }
146
+ }
147
+ };
148
+ #loadFilesAndSetup = async () => {
149
+ for (const loc of this.locales) {
150
+ await this.#loadTranslations(loc);
151
+ }
152
+ this.#sourceTranslations = this._translations[this.#config.sourceLocale];
153
+ this.#indexTracker = new IndexTracker(this.#sourceTranslations);
154
+ if (this.#currentPurpose === 'test') {
155
+ return;
156
+ }
157
+ for (const loc of this.locales) {
158
+ this.#compile(loc);
159
+ await writeFile(this.#compiledFname[loc], `export {default} from '${virtualPrefix}${loc}'`);
160
+ }
161
+ };
162
+ afterExtract = async (loc) => {
163
+ if (this.#currentPurpose !== 'test') {
164
+ await savePO(Object.values(this._translations[loc]), this.#translationsFname[loc]);
165
+ }
166
+ if (this.#currentPurpose !== 'extract') {
167
+ this.#compile(loc);
168
+ }
169
+ };
170
+ #preprocess = async (content, ast, filename) => {
171
+ const prep = new Preprocess(this.#indexTracker, this.#config.heuristic);
172
+ const txts = prep.process(content, ast);
173
+ if (!txts.length) {
174
+ return {};
175
+ }
176
+ for (const loc of this.locales) {
177
+ const newTxts = [];
178
+ for (const nTxt of txts) {
179
+ let key = nTxt.toKey();
180
+ let translated = this._translations[loc][key];
181
+ if (!translated) {
182
+ translated = new PO.Item();
183
+ translated.msgid = nTxt.toString();
184
+ this._translations[loc][key] = translated;
185
+ }
186
+ if (nTxt.context) {
187
+ translated.msgctxt = nTxt.context;
188
+ }
189
+ if (!translated.references.includes(filename)) {
190
+ translated.references.push(filename);
191
+ }
192
+ if (loc === this.#config.sourceLocale) {
193
+ const txt = nTxt.toString();
194
+ if (translated.msgstr[0] !== txt) {
195
+ translated.msgstr = [txt];
196
+ newTxts.push(translated);
197
+ }
198
+ }
199
+ else if (!translated.msgstr[0]) {
200
+ newTxts.push(translated);
201
+ }
202
+ }
203
+ if (newTxts.length == 0) {
204
+ continue;
205
+ }
206
+ if (loc === this.#config.sourceLocale || !this.#geminiQueue[loc].url) {
207
+ await this.afterExtract(loc);
208
+ continue;
209
+ }
210
+ const newRequest = this.#geminiQueue[loc].add(newTxts);
211
+ const opType = `(${newRequest ? 'new request' : 'add to request'})`;
212
+ console.info('Gemini translate', newTxts.length, 'items to', loc, opType);
213
+ await this.#geminiQueue[loc].running;
214
+ }
215
+ return {
216
+ code: prep.mstr.toString(),
217
+ map: prep.mstr.generateMap(),
218
+ };
219
+ };
220
+ configResolved = async (config) => {
221
+ if (config.env.EXTRACT) {
222
+ this.#currentPurpose = 'extract';
223
+ }
224
+ else if (config.env.PROD == null) {
225
+ this.#currentPurpose = "test";
226
+ for (const loc of this.locales) {
227
+ this._translations[loc] = {};
228
+ this._compiled[loc] = [];
229
+ }
230
+ this.#sourceTranslations = this._translations[this.#config.sourceLocale];
231
+ } // else, already dev
232
+ this.#projectRoot = config.root;
233
+ // for transform
234
+ for (const dir of this.#config.srcDirs) {
235
+ this.#allowDirs.push(normalize(this.#projectRoot + '/' + dir));
236
+ }
237
+ // for handleHotUpdate below
238
+ this.#transFnamesToLocales = Object.fromEntries(Object.entries(this.#translationsFname)
239
+ .map(([loc, fname]) => [normalize(this.#projectRoot + '/' + fname), loc]));
240
+ await this.#loadFilesAndSetup();
241
+ };
242
+ handleHotUpdate = async (ctx) => {
243
+ // PO file edit -> JS HMR
244
+ if (ctx.file in this.#transFnamesToLocales) {
245
+ const loc = this.#transFnamesToLocales[ctx.file];
246
+ await this.#loadTranslations(loc);
247
+ this.#compile(loc);
248
+ const moduleId = virtualResolvedPrefix + virtualPrefix + loc;
249
+ const module = ctx.server.moduleGraph.getModuleById(moduleId);
250
+ if (module) {
251
+ ctx.server.moduleGraph.invalidateModule(module, [], ctx.timestamp, true);
252
+ return [module];
253
+ }
254
+ }
255
+ };
256
+ resolveId = (source) => {
257
+ if (source.startsWith(virtualPrefix)) {
258
+ return virtualResolvedPrefix + source;
259
+ }
260
+ return null;
261
+ };
262
+ load = (id) => {
263
+ const prefix = virtualResolvedPrefix + virtualPrefix;
264
+ if (!id.startsWith(prefix)) {
265
+ return null;
266
+ }
267
+ const locale = id.slice(prefix.length);
268
+ return `export default ${JSON.stringify(this._compiled[locale])}`;
269
+ };
270
+ transformHandler = async (code, id) => {
271
+ if (!this.#allowDirs.find(dir => id.startsWith(dir))) {
272
+ return;
273
+ }
274
+ const isModule = modulePatterns.find(p => id.endsWith(p));
275
+ if (!markupPatterns.find(p => id.endsWith(p)) && !isModule) {
276
+ return;
277
+ }
278
+ let ast;
279
+ if (isModule) {
280
+ ast = ScriptParser.parse(code, scriptParseOptions);
281
+ }
282
+ else {
283
+ ast = parse(code, { modern: true });
284
+ }
285
+ const filename = relative(this.#projectRoot, id);
286
+ return await this.#preprocess(code, ast, filename);
287
+ };
288
+ }
289
+ export default async function wuchale(config = {}) {
290
+ const plugin = new Plugin();
291
+ await plugin.init(config);
292
+ return plugin;
293
+ }
294
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,13 @@ import MagicString from "magic-string";
2
2
  import type { ItemType } from "./gemini.js";
3
3
  import type { AST } from "svelte/compiler";
4
4
  import type Estree from 'estree';
5
- export type HeuristicFunc = (text: string, scope: TxtScope) => boolean;
5
+ import type { Program, AnyNode } from "acorn";
6
6
  type TxtScope = "script" | "markup" | "attribute";
7
7
  type ElementNode = AST.ElementLike & {
8
8
  inCompoundText: boolean;
9
9
  };
10
- export declare function defaultHeuristic(text: string, scope?: string): boolean;
10
+ export type HeuristicFunc = (text: string, scope: TxtScope) => boolean;
11
+ export declare function defaultHeuristic(text: string, scope: TxtScope): boolean;
11
12
  export declare class NestText extends String {
12
13
  scope: TxtScope;
13
14
  context: string;
@@ -27,14 +28,13 @@ export declare class IndexTracker {
27
28
  }
28
29
  export default class Preprocess {
29
30
  index: IndexTracker;
30
- importFrom: string;
31
31
  heuristic: HeuristicFunc;
32
32
  content: string;
33
33
  mstr: MagicString;
34
34
  forceInclude: boolean | null;
35
- context: string;
35
+ context: string | null;
36
36
  insideDerived: boolean;
37
- constructor(index: IndexTracker, heuristic?: HeuristicFunc, importFrom?: string);
37
+ constructor(index: IndexTracker, heuristic?: HeuristicFunc);
38
38
  checkHeuristic: (text: string, scope: TxtScope) => [boolean, NestText];
39
39
  visitLiteral: (node: Estree.Literal & {
40
40
  start: number;
@@ -53,14 +53,12 @@ export default class Preprocess {
53
53
  visitForInStatement: (node: Estree.ForInStatement) => NestText[];
54
54
  visitStatement: (node: Estree.ForStatement) => NestText[];
55
55
  visitVariableDeclaration: (node: Estree.VariableDeclaration) => NestText[];
56
- visitExportDefaultDeclaration: (node: Estree.ExportDefaultDeclaration) => NestText[];
57
56
  visitArrowFunctionExpression: (node: Estree.ArrowFunctionExpression) => NestText[];
58
57
  visitBlockStatement: (node: Estree.BlockStatement) => NestText[];
59
58
  visitReturnStatement: (node: Estree.ReturnStatement) => NestText[];
60
59
  visitIfStatement: (node: Estree.IfStatement) => NestText[];
61
60
  visitTemplateLiteral: (node: Estree.TemplateLiteral) => NestText[];
62
61
  visitExpressionTag: (node: AST.ExpressionTag) => NestText[];
63
- checkHasCompoundText: (node: AST.ElementLike) => boolean;
64
62
  visitRegularElement: (node: ElementNode & {
65
63
  fragment: AST.Fragment & {
66
64
  nodes: ElementNode[];
@@ -83,7 +81,7 @@ export default class Preprocess {
83
81
  visitProgram: (node: Estree.Program, needImport?: boolean) => NestText[];
84
82
  visitRoot: (node: AST.Root) => NestText[];
85
83
  processCommentDirectives: (data: string) => void;
86
- visit: (node: AST.SvelteNode & Estree.BaseNode) => NestText[];
87
- process: (content: string, ast: Estree.Program | AST.Root) => NestText[];
84
+ visit: (node: AST.SvelteNode | AnyNode) => NestText[];
85
+ process: (content: string, ast: Program | AST.Root) => NestText[];
88
86
  }
89
87
  export {};
@@ -6,7 +6,7 @@ const rtComponent = 'WuchaleTrans';
6
6
  const rtFunc = 'wuchaleTrans';
7
7
  const importModule = `import {${rtFunc}} from "wuchale/runtime.svelte.js"`;
8
8
  const importComponent = `import ${rtComponent} from "wuchale/runtime.svelte"`;
9
- export function defaultHeuristic(text, scope = 'markup') {
9
+ export function defaultHeuristic(text, scope) {
10
10
  if (scope === 'markup') {
11
11
  return true;
12
12
  }
@@ -26,11 +26,9 @@ export class NestText extends String {
26
26
  toKey = () => `${this.toString()}\n${this.context ?? ''}`.trim();
27
27
  }
28
28
  export class IndexTracker {
29
- indices;
30
- nextIndex;
29
+ indices = {};
30
+ nextIndex = 0;
31
31
  constructor(sourceTranslations) {
32
- this.indices = {};
33
- this.nextIndex = 0;
34
32
  for (const txt of Object.keys(sourceTranslations)) {
35
33
  // guaranteed order for strings since ES2015
36
34
  this.indices[txt] = this.nextIndex;
@@ -49,21 +47,15 @@ export class IndexTracker {
49
47
  }
50
48
  export default class Preprocess {
51
49
  index;
52
- importFrom;
53
50
  heuristic;
54
- content;
51
+ content = '';
55
52
  mstr;
56
- forceInclude;
57
- context;
53
+ forceInclude = null;
54
+ context = null;
58
55
  insideDerived = false;
59
- constructor(index, heuristic = defaultHeuristic, importFrom = '') {
56
+ constructor(index, heuristic = defaultHeuristic) {
60
57
  this.index = index;
61
- this.importFrom = importFrom;
62
58
  this.heuristic = heuristic;
63
- this.content = '';
64
- this.mstr = null;
65
- this.forceInclude = null;
66
- this.content = null;
67
59
  }
68
60
  checkHeuristic = (text, scope) => {
69
61
  text = text.replace(/\s+/g, ' ').trim();
@@ -184,7 +176,6 @@ export default class Preprocess {
184
176
  }
185
177
  return txts;
186
178
  };
187
- visitExportDefaultDeclaration = (node) => this.visit(node.declaration);
188
179
  visitArrowFunctionExpression = (node) => this.visit(node.body);
189
180
  visitBlockStatement = (node) => {
190
181
  const txts = [];
@@ -236,21 +227,6 @@ export default class Preprocess {
236
227
  return txts;
237
228
  };
238
229
  visitExpressionTag = (node) => this.visit(node.expression);
239
- checkHasCompoundText = (node) => {
240
- let text = false;
241
- let nonText = false;
242
- for (const child of node.fragment.nodes ?? []) {
243
- if (child.type === 'Text') {
244
- if (child.data.trim()) {
245
- text = true;
246
- }
247
- }
248
- else if (child.type !== 'Comment') {
249
- nonText = true;
250
- }
251
- }
252
- return text && nonText; // mixed content
253
- };
254
230
  visitRegularElement = (node) => {
255
231
  const txts = [];
256
232
  for (const attrib of node.attributes) {
@@ -331,11 +307,11 @@ export default class Preprocess {
331
307
  txts.push(txt);
332
308
  }
333
309
  }
334
- if (nodesWithChildren.includes(child.type)) {
310
+ if (nodesWithChildren.includes(child.type) && chTxt) {
335
311
  chTxt = `<${iTag}>${chTxt}</${iTag}>`;
336
312
  }
337
313
  else {
338
- // InlineComponent
314
+ // childless elements and anything else
339
315
  chTxt = `<${iTag}/>`;
340
316
  }
341
317
  const snippetName = `${snipPrefix}${iTag}`;
@@ -376,8 +352,9 @@ export default class Preprocess {
376
352
  this.mstr.appendLeft(lastChildEnd, begin);
377
353
  this.mstr.appendRight(lastChildEnd, end);
378
354
  }
379
- else if (!node.inCompoundText) {
380
- this.mstr.appendLeft(lastChildEnd, `{${rtFunc}(${this.index.get(nTxt.toKey())}, `);
355
+ else if (!node.inCompoundText) { // no need for component use
356
+ const comma = iArg > 0 ? ', ' : ''; // before first arg
357
+ this.mstr.appendLeft(lastChildEnd, `{${rtFunc}(${this.index.get(nTxt.toKey())}${comma}`);
381
358
  this.mstr.appendRight(lastChildEnd, ')}');
382
359
  }
383
360
  return txts;
@@ -529,9 +506,11 @@ export default class Preprocess {
529
506
  this.processCommentDirectives(node.data.trim());
530
507
  return [];
531
508
  }
532
- // for estree
533
- for (const comment of node.leadingComments ?? []) {
534
- this.processCommentDirectives(comment.value.trim());
509
+ if ('leadingComments' in node) {
510
+ // for estree
511
+ for (const comment of node.leadingComments) {
512
+ this.processCommentDirectives(comment.value.trim());
513
+ }
535
514
  }
536
515
  let txts = [];
537
516
  if (this.forceInclude !== false) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prep.js","sourceRoot":"","sources":["../../src/plugin/prep.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wuchale",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "description": "i18n for svelte without turning your codebase upside down",
5
5
  "scripts": {
6
6
  "build": "tsc",
@@ -16,24 +16,34 @@
16
16
  "runtime.svelte"
17
17
  ],
18
18
  "exports": {
19
- ".": {
20
- "import": "./dist/index.js"
21
- },
22
- "./runtime.svelte.js": {
23
- "import": "./dist/runtime.svelte.js",
24
- "types": "./dist/runtime.svelte.d.ts"
25
- },
26
- "./runtime.svelte": "./runtime.svelte"
19
+ ".": {
20
+ "import": "./dist/index.js"
21
+ },
22
+ "./config.js": {
23
+ "import": "./dist/config.js",
24
+ "types": "./dist/config.d.ts"
25
+ },
26
+ "./runtime.svelte.js": {
27
+ "import": "./dist/runtime.svelte.js",
28
+ "types": "./dist/runtime.svelte.d.ts"
29
+ },
30
+ "./runtime.svelte": "./runtime.svelte"
27
31
  },
28
32
  "types": "./dist/index.d.ts",
33
+ "bin": {
34
+ "wuchale": "./dist/cli.js"
35
+ },
29
36
  "homepage": "https://github.com/K1DV5/wuchale",
30
37
  "bugs": "https://github.com/K1DV5/wuchale/issues",
31
38
  "author": "K1DV5",
32
39
  "license": "MIT",
33
40
  "dependencies": {
34
- "svelte": "^5.28.1",
41
+ "@sveltejs/acorn-typescript": "^1.0.5",
42
+ "acorn": "^8.15.0",
35
43
  "magic-string": "^0.30.17",
36
- "pofile": "^1.1.4"
44
+ "pofile": "^1.1.4",
45
+ "svelte": "^5.28.1",
46
+ "tinyglobby": "^0.2.14"
37
47
  },
38
48
  "devDependencies": {
39
49
  "@types/node": "^24.0.3",
@@ -1 +0,0 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/preprocess/compile.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAOvC,SAAS,gBAAgB,CAAC,IAAgG;IACtH,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,EAAE,CAAA;IACb,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAChC,OAAO,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;aACrC,CAAC,CAAA;IACN,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,EAAE,CAAA;QAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAA;IAC3C,OAAO,EAAE,CAAA;AACb,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,IAAY,EAAE,QAA0B;IAC/E,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,QAAQ,CAAA;IACnB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAA;IACf,CAAC;IACD,+CAA+C;IAC/C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAC/C,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACzC,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClB,OAAO,QAAQ,CAAA;IACnB,CAAC;AACL,CAAC"}
@@ -1,4 +0,0 @@
1
- import PO from 'pofile';
2
- export type ItemType = InstanceType<typeof PO.Item>;
3
- declare function setupGemini(sourceLocale: string, targetLocale: string, apiKey: string | null): (fragments: ItemType[]) => Promise<void>;
4
- export default setupGemini;
@@ -1,55 +0,0 @@
1
- // $$ cd .. && npm run test
2
- // $$ node %f
3
- import PO from 'pofile';
4
- const baseURL = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=';
5
- const h = { 'Content-Type': 'application/json' };
6
- function codeStandard(locale) {
7
- return `ISO 639-${locale.length === 2 ? 1 : 3}`;
8
- }
9
- function prepareData(fragments, sourceLocale, targetLocale) {
10
- const instruction = `
11
- You will be given the contents of a gettext .po file for a web app.
12
- Translate each of the items from the source to the target language.
13
- The source language ${codeStandard(sourceLocale)} code is: ${sourceLocale}.
14
- The target language ${codeStandard(targetLocale)} code is: ${targetLocale}.
15
- You can read all of the information for the items including contexts,
16
- comments and references to get the appropriate context about each item.
17
- Provide the translated fragments in the in the same order, preserving
18
- all placeholders.
19
- The placeholder format is like the following examples:
20
- - {0}: means arbitrary values.
21
- - <0>something</0>: means something enclosed in some tags, like HTML tags
22
- - <0/>: means a self closing tag, like in HTML
23
- In all of the examples, 0 is an example for any integer.
24
- `;
25
- const po = new PO();
26
- po.items = fragments;
27
- return {
28
- system_instruction: {
29
- parts: [{ text: instruction }]
30
- },
31
- contents: [{ parts: [{ text: po.toString() }] }]
32
- };
33
- }
34
- function setupGemini(sourceLocale, targetLocale, apiKey) {
35
- if (apiKey === 'env') {
36
- apiKey = process.env.GEMINI_API_KEY;
37
- }
38
- if (!apiKey) {
39
- return;
40
- }
41
- const url = `${baseURL}${apiKey}`;
42
- return async (fragments) => {
43
- const data = prepareData(fragments, sourceLocale, targetLocale);
44
- const res = await fetch(url, { method: 'POST', headers: h, body: JSON.stringify(data) });
45
- const json = await res.json();
46
- const resText = json.candidates[0]?.content.parts[0].text;
47
- for (const [i, item] of PO.parse(resText).items.entries()) {
48
- if (item.msgstr[0]) {
49
- fragments[i].msgstr = item.msgstr;
50
- }
51
- }
52
- };
53
- }
54
- export default setupGemini;
55
- //# sourceMappingURL=gemini.js.map