@theia/localization-manager 1.72.0-next.30 → 1.72.0-next.42

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.
@@ -1 +1 @@
1
- {"version":3,"file":"localization-extractor.d.ts","sourceRoot":"","sources":["../src/localization-extractor.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAC;AAI1D,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AA6CD,wBAAsB,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BvE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAyC1I"}
1
+ {"version":3,"file":"localization-extractor.d.ts","sourceRoot":"","sources":["../src/localization-extractor.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAC;AAI1D,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AA+CD,wBAAsB,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BvE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAiC1I"}
@@ -49,8 +49,9 @@ class SingleFileServiceHost {
49
49
  }
50
50
  }
51
51
  class TypeScriptError extends Error {
52
- constructor(message, node) {
52
+ constructor(message, node, crossFileReference = false) {
53
53
  super(buildErrorMessage(message, node));
54
+ this.crossFileReference = crossFileReference;
54
55
  }
55
56
  }
56
57
  function buildErrorMessage(message, node) {
@@ -103,11 +104,7 @@ async function extractFromFile(file, content, errors, options) {
103
104
  }
104
105
  }
105
106
  catch (err) {
106
- const tsError = err;
107
- errors?.push(tsError.message);
108
- if (!options?.quiet) {
109
- console.log(tsError.message);
110
- }
107
+ reportError(err, errors, options);
111
108
  }
112
109
  }
113
110
  const localizedCommands = collect(sourceFile, node => isCommandLocalizeUtility(node));
@@ -124,15 +121,18 @@ async function extractFromFile(file, content, errors, options) {
124
121
  }
125
122
  }
126
123
  catch (err) {
127
- const tsError = err;
128
- errors?.push(tsError.message);
129
- if (!options?.quiet) {
130
- console.log(tsError.message);
131
- }
124
+ reportError(err, errors, options);
132
125
  }
133
126
  }
134
127
  return localization;
135
128
  }
129
+ function reportError(err, errors, options) {
130
+ const tsError = err;
131
+ errors?.push(tsError.message);
132
+ if (!options?.quiet && !tsError.crossFileReference) {
133
+ console.log(tsError.message);
134
+ }
135
+ }
136
136
  function isExcluded(options, key) {
137
137
  return !!options?.exclude && key.startsWith(options.exclude);
138
138
  }
@@ -234,11 +234,7 @@ function extractFromLocalizedCommandCall(node, errors, options) {
234
234
  propertyMap.set(name, value);
235
235
  }
236
236
  catch (err) {
237
- const tsError = err;
238
- errors?.push(tsError.message);
239
- if (!options?.quiet) {
240
- console.log(tsError.message);
241
- }
237
+ reportError(err, errors, options);
242
238
  }
243
239
  }
244
240
  let labelKey = propertyMap.get('id');
@@ -254,11 +250,7 @@ function extractFromLocalizedCommandCall(node, errors, options) {
254
250
  }
255
251
  }
256
252
  catch (err) {
257
- const tsError = err;
258
- errors?.push(tsError.message);
259
- if (!options?.quiet) {
260
- console.log(tsError.message);
261
- }
253
+ reportError(err, errors, options);
262
254
  }
263
255
  }
264
256
  // We have an explicit category translation key
@@ -268,11 +260,7 @@ function extractFromLocalizedCommandCall(node, errors, options) {
268
260
  categoryNode = args[2];
269
261
  }
270
262
  catch (err) {
271
- const tsError = err;
272
- errors?.push(tsError.message);
273
- if (!options?.quiet) {
274
- console.log(tsError.message);
275
- }
263
+ reportError(err, errors, options);
276
264
  }
277
265
  }
278
266
  if (!labelKey) {
@@ -301,7 +289,7 @@ function extractString(node) {
301
289
  if (ts.isIdentifier(node)) {
302
290
  const reference = followReference(node);
303
291
  if (!reference) {
304
- throw new TypeScriptError(`Could not resolve reference to '${node.text}'`, node);
292
+ throw new TypeScriptError(`Skipping '${node.text}': could not resolve reference (may be imported from another file)`, node, true);
305
293
  }
306
294
  node = reference;
307
295
  }
@@ -320,6 +308,9 @@ function extractString(node) {
320
308
  if (ts.isBinaryExpression(node) && node.operatorToken.kind === ts.SyntaxKind.PlusToken) {
321
309
  return extractString(node.left) + extractString(node.right);
322
310
  }
311
+ if (ts.isPropertyAccessExpression(node) || ts.isCallExpression(node)) {
312
+ throw new TypeScriptError(`Skipping '${node.getText()}': expression cannot be statically resolved`, node, true);
313
+ }
323
314
  if (!ts.isStringLiteralLike(node)) {
324
315
  throw new TypeScriptError(`'${node.getText()}' is not a string constant`, node);
325
316
  }
@@ -333,11 +324,9 @@ function followReference(node) {
333
324
  }
334
325
  return next;
335
326
  }
336
- function collectScope(node, map = new Map()) {
337
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
338
- const locals = node['locals'];
339
- if (locals) {
340
- for (const [key, value] of locals.entries()) {
327
+ function collectSymbols(symbols, map) {
328
+ if (symbols) {
329
+ for (const [key, value] of symbols.entries()) {
341
330
  if (!map.has(key)) {
342
331
  const declaration = value.valueDeclaration;
343
332
  if (declaration && ts.isVariableDeclaration(declaration) && declaration.initializer) {
@@ -346,6 +335,15 @@ function collectScope(node, map = new Map()) {
346
335
  }
347
336
  }
348
337
  }
338
+ }
339
+ function collectScope(node, map = new Map()) {
340
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
341
+ const locals = node['locals'];
342
+ collectSymbols(locals, map);
343
+ // Exported declarations (e.g. `export const`) are stored in `symbol.exports` rather than `locals`
344
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
345
+ const exports = node['symbol']?.exports;
346
+ collectSymbols(exports, map);
349
347
  if (node.parent) {
350
348
  collectScope(node.parent, map);
351
349
  }
@@ -1 +1 @@
1
- {"version":3,"file":"localization-extractor.js","sourceRoot":"","sources":["../src/localization-extractor.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAmEhF,0BA4BC;AAED,0CAyCC;AAxID,+BAA+B;AAC/B,iCAAiC;AACjC,yBAAyB;AACzB,6BAA6B;AAC7B,+BAA4B;AAC5B,+BAAiC;AACjC,uCAAwC;AACxC,qCAA0D;AAE1D,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,WAAI,CAAC,CAAC;AAapC,MAAM,qBAAqB;IAKvB,YAAoB,OAA2B,EAAU,QAAgB,EAAE,QAAgB;QAAvE,YAAO,GAAP,OAAO,CAAoB;QAAU,aAAQ,GAAR,QAAQ,CAAQ;QAKzE,2BAAsB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QAC5C,uBAAkB,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,qBAAgB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;QAC7B,sBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACpF,wBAAmB,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;QAC/B,0BAAqB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;QATrC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAQD,QAAQ,CAAC,IAAY,EAAE,QAA6B;QAChD,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IACD,UAAU,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAClC,CAAC;CACJ;AAED,MAAM,eAAgB,SAAQ,KAAK;IAC/B,YAAY,OAAe,EAAE,IAAa;QACtC,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;CACJ;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,IAAa;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,OAAO,GAAG,UAAU,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,MAAM,OAAO,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,SAAS,GAAuB;IAClC,OAAO,EAAE,IAAI;CAChB,CAAC;AAEK,KAAK,UAAU,OAAO,CAAC,OAA0B;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACpF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAC7D,KAAK,EAAC,OAAO,EAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CACtE,CAAC,CAAC;IACH,IAAI,YAAY,GAAiB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACnF,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACtF,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxC,YAAY,GAAG,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IACD,YAAY,GAAG,IAAA,yBAAgB,EAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE;QAClC,MAAM,EAAE,CAAC;KACZ,CAAC,CAAC;AACP,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,OAAe,EAAE,MAAiB,EAAE,OAA2B;IAC/G,MAAM,WAAW,GAAG,IAAI,qBAAqB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,EAAE,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAG,CAAC,aAAa,CAAC,IAAI,CAAE,CAAC;IAC9D,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACnC,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,GAAY,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IACD,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtF,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACtC,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;YAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,GAAY,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CAAC,OAAsC,EAAE,GAAW;IACnE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,MAAM,CAAC,YAA0B,EAAE,MAAiC;IACzE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,+CAA+C,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3F,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,mCAAmC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5G,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,KAAK,GAAG,EAAE,CAAC;YACf,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC3B,YAAY,GAAG,KAAK,CAAC;QACzB,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,OAAO,CAAC,CAAU,EAAE,EAA8B;IACvD,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,SAAS,IAAI,CAAC,IAAa;QAEvB,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACjC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,cAAc,CAAC;AACxD,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAa,EAAE,OAA2B;IACvE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAE5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,eAAe,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAErC,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,+BAA+B,CAAC,IAAa,EAAE,MAAiB,EAAE,OAA2B;IAIlG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAE5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,eAAe,CAAC,uDAAuD,EAAE,IAAI,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,eAAe,CAAC,sEAAsE,EAAE,IAAI,CAAC,CAAC;IAC5G,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,SAAS,GAAY,IAAI,CAAC;IAE9B,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS;QACb,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,eAAe,CAAC,+DAA+D,EAAE,QAAQ,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,eAAe,CAAC,wEAAwE,EAAE,QAAQ,CAAC,CAAC;QAClH,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,SAAS;QACb,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjC,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC;QACrC,CAAC;QAED,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAClD,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,GAAY,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,WAAW,GAAuB,SAAS,CAAC;IAChD,IAAI,YAAiC,CAAC;IAEtC,4CAA4C;IAC5C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,gBAAgB,EAAE,CAAC;gBACnB,QAAQ,GAAG,gBAAgB,CAAC;gBAC5B,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,GAAY,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,GAAY,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,eAAe,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,eAAe,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,oBAAoB,GAA0C,SAAS,CAAC;IAC5E,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,WAAW,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;QAC/C,oBAAoB,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,OAAO;QACH,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAE,EAAE,SAAS,CAAC;QACvD,QAAQ,EAAE,oBAAoB;KACjC,CAAC;AACN,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAmB;IACjD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB;IACtC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CAAC,mCAAmC,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,GAAG,SAAS,CAAC;IACrB,CAAC;IACD,4FAA4F;IAC5F,8EAA8E;IAC9E,IAAI,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,mFAAmF;IACnF,mFAAmF;IACnF,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,eAAe,CACrB,6JAA6J,EAC7J,IAAI,CACP,CAAC;IACN,CAAC;IACD,kFAAkF;IAClF,uFAAuF;IACvF,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QACrF,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,eAAe,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,4BAA4B,EAAE,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,IAAmB;IACxC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,IAAa,EAAE,MAAkC,IAAI,GAAG,EAAE;IAC5E,8DAA8D;IAC9D,MAAM,MAAM,GAAI,IAAY,CAAC,QAAQ,CAA2B,CAAC;IACjE,IAAI,MAAM,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBAC3C,IAAI,WAAW,IAAI,EAAE,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;oBAClF,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAC1C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAa;IAC3C,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,4BAA4B,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CAAC,GAAW;IACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC;IACf,CAAC;IACD,oFAAoF;IACpF,IAAI,SAAS,GAAG,QAAQ,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,SAAS;QACb,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;QACrD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC;IACf,CAAC;IACD,gEAAgE;IAChE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,WAAW,GAA2B;IACxC,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;CACZ,CAAC;AAEF,SAAS,cAAc,CAAC,GAAW;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACrB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrB,CAAC,EAAE,CAAC;oBACJ,SAAS;gBACb,CAAC;YACL,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"localization-extractor.js","sourceRoot":"","sources":["../src/localization-extractor.ts"],"names":[],"mappings":"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"}
@@ -88,15 +88,23 @@ describe('correctly extracts from file content', () => {
88
88
  const errors = [];
89
89
  assert.deepStrictEqual(await (0, localization_extractor_1.extractFromFile)(TEST_FILE, content, errors, quiet), {});
90
90
  assert.deepStrictEqual(errors, [
91
- "test.ts(1,14): Could not resolve reference to 'a'"
91
+ "test.ts(1,14): Skipping 'a': could not resolve reference (may be imported from another file)"
92
92
  ]);
93
93
  });
94
- it('should return an error when resolving from an expression', async () => {
94
+ it('should return an error when resolving from a property access expression', async () => {
95
95
  const content = "nls.localize(test.value, 'value');";
96
96
  const errors = [];
97
97
  assert.deepStrictEqual(await (0, localization_extractor_1.extractFromFile)(TEST_FILE, content, errors, quiet), {});
98
98
  assert.deepStrictEqual(errors, [
99
- "test.ts(1,14): 'test.value' is not a string constant"
99
+ "test.ts(1,14): Skipping 'test.value': expression cannot be statically resolved"
100
+ ]);
101
+ });
102
+ it('should silently skip call expressions used as arguments', async () => {
103
+ const content = "nls.localize('key', someFunction());";
104
+ const errors = [];
105
+ assert.deepStrictEqual(await (0, localization_extractor_1.extractFromFile)(TEST_FILE, content, errors, quiet), {});
106
+ assert.deepStrictEqual(errors, [
107
+ "test.ts(1,20): Skipping 'someFunction()': expression cannot be statically resolved"
100
108
  ]);
101
109
  });
102
110
  it('should show error when trying to merge an object and a string', async () => {
@@ -174,12 +182,31 @@ describe('correctly extracts from file content', () => {
174
182
  'key': 'part one part two part three'
175
183
  });
176
184
  });
185
+ it('should resolve exported const references', async () => {
186
+ const content = `
187
+ export const MY_MESSAGE = 'Hello World';
188
+ nls.localize('key', MY_MESSAGE);
189
+ `;
190
+ assert.deepStrictEqual(await (0, localization_extractor_1.extractFromFile)(TEST_FILE, content), {
191
+ 'key': 'Hello World'
192
+ });
193
+ });
194
+ it('should resolve exported const with string concatenation', async () => {
195
+ const content = `
196
+ export const MY_MESSAGE = 'Hello '
197
+ + 'World';
198
+ nls.localize('key', MY_MESSAGE);
199
+ `;
200
+ assert.deepStrictEqual(await (0, localization_extractor_1.extractFromFile)(TEST_FILE, content), {
201
+ 'key': 'Hello World'
202
+ });
203
+ });
177
204
  it('should return an error when concatenation includes a non-string expression', async () => {
178
205
  const content = 'nls.localize("key", "hello " + someFunction())';
179
206
  const errors = [];
180
207
  assert.deepStrictEqual(await (0, localization_extractor_1.extractFromFile)(TEST_FILE, content, errors, quiet), {});
181
208
  assert.deepStrictEqual(errors, [
182
- "test.ts(1,31): 'someFunction()' is not a string constant"
209
+ "test.ts(1,31): Skipping 'someFunction()': expression cannot be statically resolved"
183
210
  ]);
184
211
  });
185
212
  });
@@ -1 +1 @@
1
- {"version":3,"file":"localization-extractor.spec.js","sourceRoot":"","sources":["../src/localization-extractor.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localization-extractor.spec.js","sourceRoot":"","sources":["../src/localization-extractor.spec.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export interface LocalizationOptions {
6
6
  sourceFile: string;
7
7
  sourceLanguage?: string;
8
8
  targetLanguages: string[];
9
+ forceKeys?: Set<string>;
9
10
  }
10
11
  export type LocalizationFunction = (parameters: DeeplParameters) => Promise<DeeplResponse>;
11
12
  export declare class LocalizationManager {
@@ -16,10 +17,11 @@ export declare class LocalizationManager {
16
17
  translateLanguage(source: Localization, target: Localization, targetLanguage: string, options: LocalizationOptions): Promise<boolean>;
17
18
  protected addIgnoreTags(text: string): string;
18
19
  protected removeIgnoreTags(text: string): string;
19
- protected buildLocalizationMap(source: Localization, target: Localization): LocalizationMap;
20
+ protected buildLocalizationMap(source: Localization, target: Localization, forceKeys?: Set<string>): LocalizationMap;
20
21
  }
21
22
  export interface LocalizationMap {
22
23
  text: string[];
24
+ keys: string[];
23
25
  localize: (index: number, value: string) => void;
24
26
  }
25
27
  //# sourceMappingURL=localization-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localization-manager.d.ts","sourceRoot":"","sources":["../src/localization-manager.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAiB,eAAe,EAAE,aAAa,EAAyC,MAAM,aAAa,CAAC;AAE1H,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,UAAU,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE3F,qBAAa,mBAAmB;IAEhB,OAAO,CAAC,cAAc;gBAAd,cAAc,eAAQ;IAEpC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmD9D,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMnE,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IA8B3I,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO7C,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMhD,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,eAAe;CAoC9F;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnD"}
1
+ {"version":3,"file":"localization-manager.d.ts","sourceRoot":"","sources":["../src/localization-manager.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAiB,eAAe,EAAE,aAAa,EAAyC,MAAM,aAAa,CAAC;AAE1H,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,UAAU,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE3F,qBAAa,mBAAmB;IAEhB,OAAO,CAAC,cAAc;gBAAd,cAAc,eAAQ;IAEpC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmD9D,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMnE,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiC3I,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO7C,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMhD,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,eAAe;CA4CvH;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnD"}
@@ -84,7 +84,7 @@ class LocalizationManager {
84
84
  return path.join(directory, `${fileName}.${language.toLowerCase()}.json`);
85
85
  }
86
86
  async translateLanguage(source, target, targetLanguage, options) {
87
- const map = this.buildLocalizationMap(source, target);
87
+ const map = this.buildLocalizationMap(source, target, options.forceKeys);
88
88
  if (map.text.length > 0) {
89
89
  try {
90
90
  const translationResponse = await this.localizationFn({
@@ -101,7 +101,10 @@ class LocalizationManager {
101
101
  translationResponse.translations.forEach(({ text }, i) => {
102
102
  map.localize(i, this.removeIgnoreTags(text));
103
103
  });
104
- console.log(chalk.green(`Successfully translated ${map.text.length} value${map.text.length > 1 ? 's' : ''} for language "${targetLanguage}"`));
104
+ console.log(chalk.green(`Successfully translated ${map.text.length} value${map.text.length > 1 ? 's' : ''} for language "${targetLanguage}":`));
105
+ for (const key of map.keys) {
106
+ console.log(chalk.green(` - ${key}`));
107
+ }
105
108
  return true;
106
109
  }
107
110
  catch (e) {
@@ -125,10 +128,11 @@ class LocalizationManager {
125
128
  // Restore escaped angle brackets
126
129
  return result.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
127
130
  }
128
- buildLocalizationMap(source, target) {
131
+ buildLocalizationMap(source, target, forceKeys) {
129
132
  const functionMap = new Map();
130
133
  const text = [];
131
- const process = (s, t) => {
134
+ const keys = [];
135
+ const process = (s, t, prefix = '') => {
132
136
  // Delete all extra keys in the target translation first
133
137
  for (const key of Object.keys(t)) {
134
138
  if (!(key in s)) {
@@ -136,28 +140,36 @@ class LocalizationManager {
136
140
  }
137
141
  }
138
142
  for (const [key, value] of Object.entries(s)) {
143
+ const currentPath = prefix ? `${prefix}/${key}` : key;
139
144
  if (!(key in t)) {
140
145
  if (typeof value === 'string') {
141
146
  functionMap.set(text.length, translation => t[key] = translation);
142
147
  text.push(value);
148
+ keys.push(currentPath);
143
149
  }
144
150
  else {
145
151
  const newLocalization = {};
146
152
  t[key] = newLocalization;
147
- process(value, newLocalization);
153
+ process(value, newLocalization, currentPath);
148
154
  }
149
155
  }
156
+ else if (typeof value === 'string' && forceKeys?.has(currentPath)) {
157
+ functionMap.set(text.length, translation => t[key] = translation);
158
+ text.push(value);
159
+ keys.push(currentPath);
160
+ }
150
161
  else if (typeof value === 'object') {
151
162
  if (typeof t[key] === 'string') {
152
163
  t[key] = {};
153
164
  }
154
- process(value, t[key]);
165
+ process(value, t[key], currentPath);
155
166
  }
156
167
  }
157
168
  };
158
169
  process(source, target);
159
170
  return {
160
171
  text,
172
+ keys,
161
173
  localize: (index, value) => functionMap.get(index)(value)
162
174
  };
163
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"localization-manager.js","sourceRoot":"","sources":["../src/localization-manager.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,+BAA+B;AAC/B,+BAA+B;AAC/B,6BAA6B;AAC7B,qCAA0D;AAC1D,2CAA0H;AAY1H,MAAa,mBAAmB;IAE5B,YAAoB,iBAAiB,iBAAK;QAAtB,mBAAc,GAAd,cAAc,CAAQ;IAAI,CAAC;IAE/C,KAAK,CAAC,QAAQ,CAAC,OAA4B;QACvC,IAAI,MAAM,GAAiB,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC;YACD,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACnD,IAAI,CAAC,IAAA,+BAAmB,EAAC,cAAc,CAAC,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,cAAc,+CAA+C,CAAC,CAAC,CAAC;YAC1G,CAAC;iBAAM,CAAC;gBACJ,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,wEAAwE;YACxE,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;YAC9F,SAAS,CAAC,IAAI,CAAC,GAAG,4BAAgB,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,oBAAoB,GAA8B,IAAI,GAAG,EAAE,CAAC;QAClE,KAAK,MAAM,cAAc,IAAI,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBACxE,oBAAoB,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACL,oBAAoB,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7G,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC;QAC/B,CAAC;QAED,KAAK,MAAM,cAAc,IAAI,SAAS,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YACxE,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;gBAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAA,yBAAgB,EAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,UAAU,GAAG,CAAC,CAAC,CAAC;gBAC7E,MAAM,GAAG,KAAK,CAAC;YACnB,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAES,mBAAmB,CAAC,QAAgB,EAAE,QAAgB;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAoB,EAAE,MAAoB,EAAE,cAAsB,EAAE,OAA4B;QACpH,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC;gBACD,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;oBAClD,QAAQ,EAAE,OAAO,CAAC,OAAO;oBACzB,QAAQ,EAAE,OAAO,CAAC,OAAO;oBACzB,WAAW,EAAE,cAAc,CAAC,WAAW,EAAmB;oBAC1D,WAAW,EAAE,OAAO,CAAC,cAAc,EAAE,WAAW,EAAmB;oBACnE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBAC9C,YAAY,EAAE,CAAC,KAAK,CAAC;oBACrB,WAAW,EAAE,CAAC,GAAG,CAAC;oBAClB,OAAO,EAAE,yIAAyI;0BAC5I,qIAAqI;iBAC9I,CAAC,CAAC;gBACH,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;oBACrD,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,kBAAkB,cAAc,GAAG,CAAC,CAAC,CAAC;gBAC/I,OAAO,IAAI,CAAC;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,cAAc,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnF,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,0CAA0C,cAAc,GAAG,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAES,aAAa,CAAC,IAAY;QAChC,kFAAkF;QAClF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxF,qFAAqF;QACrF,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IAES,gBAAgB,CAAC,IAAY;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACxD,iCAAiC;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACrF,CAAC;IAES,oBAAoB,CAAC,MAAoB,EAAE,MAAoB;QACrE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;QAC/D,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,CAAC,CAAe,EAAE,CAAe,EAAE,EAAE;YACjD,wDAAwD;YACxD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;oBACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC;YACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;oBACd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC5B,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;wBAClE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACJ,MAAM,eAAe,GAAiB,EAAE,CAAC;wBACzC,CAAC,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;wBACzB,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;oBACpC,CAAC;gBACL,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACnC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC7B,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBAChB,CAAC;oBACD,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAiB,CAAC,CAAC;gBAC3C,CAAC;YACL,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAExB,OAAO;YACH,IAAI;YACJ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,KAAK,CAAC;SAC7D,CAAC;IACN,CAAC;CACJ;AA5ID,kDA4IC"}
1
+ {"version":3,"file":"localization-manager.js","sourceRoot":"","sources":["../src/localization-manager.ts"],"names":[],"mappings":"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"}
@@ -121,6 +121,33 @@ describe('localization-manager#translateLanguage', () => {
121
121
  key: '[empty {} braces]'
122
122
  });
123
123
  });
124
+ it('should re-translate forced keys even if they exist in target', async () => {
125
+ const input = { a: 'new-a' };
126
+ const target = { a: 'old-translation' };
127
+ await manager.translateLanguage(input, target, 'EN', {
128
+ ...defaultOptions,
129
+ forceKeys: new Set(['a'])
130
+ });
131
+ assert.deepStrictEqual(target, { a: '[new-a]' });
132
+ });
133
+ it('should re-translate nested forced keys', async () => {
134
+ const input = { a: { b: 'new-b' } };
135
+ const target = { a: { b: 'old-translation' } };
136
+ await manager.translateLanguage(input, target, 'EN', {
137
+ ...defaultOptions,
138
+ forceKeys: new Set(['a/b'])
139
+ });
140
+ assert.deepStrictEqual(target, { a: { b: '[new-b]' } });
141
+ });
142
+ it('should not re-translate keys not in force set', async () => {
143
+ const input = { a: 'new-a', b: 'new-b' };
144
+ const target = { a: 'old-a', b: 'old-b' };
145
+ await manager.translateLanguage(input, target, 'EN', {
146
+ ...defaultOptions,
147
+ forceKeys: new Set(['a'])
148
+ });
149
+ assert.deepStrictEqual(target, { a: '[new-a]', b: 'old-b' });
150
+ });
124
151
  it('should pass context to the localization function', async () => {
125
152
  let receivedContext;
126
153
  const contextCapture = new localization_manager_1.LocalizationManager(async (parameters) => {
@@ -1 +1 @@
1
- {"version":3,"file":"localization-manager.spec.js","sourceRoot":"","sources":["../src/localization-manager.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localization-manager.spec.js","sourceRoot":"","sources":["../src/localization-manager.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/localization-manager",
3
- "version": "1.72.0-next.30+a67ba2fe7",
3
+ "version": "1.72.0-next.42+0bd5c7b25",
4
4
  "description": "Theia localization manager API.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -46,5 +46,5 @@
46
46
  "nyc": {
47
47
  "extends": "../../configs/nyc.json"
48
48
  },
49
- "gitHead": "a67ba2fe771f798785a36f009e32d39f134e3bed"
49
+ "gitHead": "0bd5c7b25cf6f444078681d4a24e263320b29907"
50
50
  }
@@ -96,16 +96,25 @@ describe('correctly extracts from file content', () => {
96
96
  const errors: string[] = [];
97
97
  assert.deepStrictEqual(await extractFromFile(TEST_FILE, content, errors, quiet), {});
98
98
  assert.deepStrictEqual(errors, [
99
- "test.ts(1,14): Could not resolve reference to 'a'"
99
+ "test.ts(1,14): Skipping 'a': could not resolve reference (may be imported from another file)"
100
100
  ]);
101
101
  });
102
102
 
103
- it('should return an error when resolving from an expression', async () => {
103
+ it('should return an error when resolving from a property access expression', async () => {
104
104
  const content = "nls.localize(test.value, 'value');";
105
105
  const errors: string[] = [];
106
106
  assert.deepStrictEqual(await extractFromFile(TEST_FILE, content, errors, quiet), {});
107
107
  assert.deepStrictEqual(errors, [
108
- "test.ts(1,14): 'test.value' is not a string constant"
108
+ "test.ts(1,14): Skipping 'test.value': expression cannot be statically resolved"
109
+ ]);
110
+ });
111
+
112
+ it('should silently skip call expressions used as arguments', async () => {
113
+ const content = "nls.localize('key', someFunction());";
114
+ const errors: string[] = [];
115
+ assert.deepStrictEqual(await extractFromFile(TEST_FILE, content, errors, quiet), {});
116
+ assert.deepStrictEqual(errors, [
117
+ "test.ts(1,20): Skipping 'someFunction()': expression cannot be statically resolved"
109
118
  ]);
110
119
  });
111
120
 
@@ -192,12 +201,33 @@ describe('correctly extracts from file content', () => {
192
201
  });
193
202
  });
194
203
 
204
+ it('should resolve exported const references', async () => {
205
+ const content = `
206
+ export const MY_MESSAGE = 'Hello World';
207
+ nls.localize('key', MY_MESSAGE);
208
+ `;
209
+ assert.deepStrictEqual(await extractFromFile(TEST_FILE, content), {
210
+ 'key': 'Hello World'
211
+ });
212
+ });
213
+
214
+ it('should resolve exported const with string concatenation', async () => {
215
+ const content = `
216
+ export const MY_MESSAGE = 'Hello '
217
+ + 'World';
218
+ nls.localize('key', MY_MESSAGE);
219
+ `;
220
+ assert.deepStrictEqual(await extractFromFile(TEST_FILE, content), {
221
+ 'key': 'Hello World'
222
+ });
223
+ });
224
+
195
225
  it('should return an error when concatenation includes a non-string expression', async () => {
196
226
  const content = 'nls.localize("key", "hello " + someFunction())';
197
227
  const errors: string[] = [];
198
228
  assert.deepStrictEqual(await extractFromFile(TEST_FILE, content, errors, quiet), {});
199
229
  assert.deepStrictEqual(errors, [
200
- "test.ts(1,31): 'someFunction()' is not a string constant"
230
+ "test.ts(1,31): Skipping 'someFunction()': expression cannot be statically resolved"
201
231
  ]);
202
232
  });
203
233
 
@@ -63,8 +63,10 @@ class SingleFileServiceHost implements ts.LanguageServiceHost {
63
63
  }
64
64
 
65
65
  class TypeScriptError extends Error {
66
- constructor(message: string, node: ts.Node) {
66
+ readonly crossFileReference: boolean;
67
+ constructor(message: string, node: ts.Node, crossFileReference = false) {
67
68
  super(buildErrorMessage(message, node));
69
+ this.crossFileReference = crossFileReference;
68
70
  }
69
71
  }
70
72
 
@@ -122,11 +124,7 @@ export async function extractFromFile(file: string, content: string, errors?: st
122
124
  insert(localization, extracted);
123
125
  }
124
126
  } catch (err) {
125
- const tsError = err as Error;
126
- errors?.push(tsError.message);
127
- if (!options?.quiet) {
128
- console.log(tsError.message);
129
- }
127
+ reportError(err, errors, options);
130
128
  }
131
129
  }
132
130
  const localizedCommands = collect(sourceFile, node => isCommandLocalizeUtility(node));
@@ -142,16 +140,20 @@ export async function extractFromFile(file: string, content: string, errors?: st
142
140
  insert(localization, category);
143
141
  }
144
142
  } catch (err) {
145
- const tsError = err as Error;
146
- errors?.push(tsError.message);
147
- if (!options?.quiet) {
148
- console.log(tsError.message);
149
- }
143
+ reportError(err, errors, options);
150
144
  }
151
145
  }
152
146
  return localization;
153
147
  }
154
148
 
149
+ function reportError(err: unknown, errors?: string[], options?: ExtractionOptions): void {
150
+ const tsError = err as TypeScriptError;
151
+ errors?.push(tsError.message);
152
+ if (!options?.quiet && !tsError.crossFileReference) {
153
+ console.log(tsError.message);
154
+ }
155
+ }
156
+
155
157
  function isExcluded(options: ExtractionOptions | undefined, key: string): boolean {
156
158
  return !!options?.exclude && key.startsWith(options.exclude);
157
159
  }
@@ -273,11 +275,7 @@ function extractFromLocalizedCommandCall(node: ts.Node, errors?: string[], optio
273
275
  const value = extractString(property.initializer);
274
276
  propertyMap.set(name, value);
275
277
  } catch (err) {
276
- const tsError = err as Error;
277
- errors?.push(tsError.message);
278
- if (!options?.quiet) {
279
- console.log(tsError.message);
280
- }
278
+ reportError(err, errors, options);
281
279
  }
282
280
  }
283
281
 
@@ -294,11 +292,7 @@ function extractFromLocalizedCommandCall(node: ts.Node, errors?: string[], optio
294
292
  labelNode = args[1];
295
293
  }
296
294
  } catch (err) {
297
- const tsError = err as Error;
298
- errors?.push(tsError.message);
299
- if (!options?.quiet) {
300
- console.log(tsError.message);
301
- }
295
+ reportError(err, errors, options);
302
296
  }
303
297
  }
304
298
 
@@ -308,11 +302,7 @@ function extractFromLocalizedCommandCall(node: ts.Node, errors?: string[], optio
308
302
  categoryKey = extractStringOrUndefined(args[2]);
309
303
  categoryNode = args[2];
310
304
  } catch (err) {
311
- const tsError = err as Error;
312
- errors?.push(tsError.message);
313
- if (!options?.quiet) {
314
- console.log(tsError.message);
315
- }
305
+ reportError(err, errors, options);
316
306
  }
317
307
  }
318
308
 
@@ -347,7 +337,7 @@ function extractString(node: ts.Expression): string {
347
337
  if (ts.isIdentifier(node)) {
348
338
  const reference = followReference(node);
349
339
  if (!reference) {
350
- throw new TypeScriptError(`Could not resolve reference to '${node.text}'`, node);
340
+ throw new TypeScriptError(`Skipping '${node.text}': could not resolve reference (may be imported from another file)`, node, true);
351
341
  }
352
342
  node = reference;
353
343
  }
@@ -369,6 +359,9 @@ function extractString(node: ts.Expression): string {
369
359
  if (ts.isBinaryExpression(node) && node.operatorToken.kind === ts.SyntaxKind.PlusToken) {
370
360
  return extractString(node.left) + extractString(node.right);
371
361
  }
362
+ if (ts.isPropertyAccessExpression(node) || ts.isCallExpression(node)) {
363
+ throw new TypeScriptError(`Skipping '${node.getText()}': expression cannot be statically resolved`, node, true);
364
+ }
372
365
  if (!ts.isStringLiteralLike(node)) {
373
366
  throw new TypeScriptError(`'${node.getText()}' is not a string constant`, node);
374
367
  }
@@ -385,11 +378,9 @@ function followReference(node: ts.Identifier): ts.Expression | undefined {
385
378
  return next;
386
379
  }
387
380
 
388
- function collectScope(node: ts.Node, map: Map<string, ts.Expression> = new Map()): Map<string, ts.Expression> {
389
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
390
- const locals = (node as any)['locals'] as Map<string, ts.Symbol>;
391
- if (locals) {
392
- for (const [key, value] of locals.entries()) {
381
+ function collectSymbols(symbols: Map<string, ts.Symbol> | undefined, map: Map<string, ts.Expression>): void {
382
+ if (symbols) {
383
+ for (const [key, value] of symbols.entries()) {
393
384
  if (!map.has(key)) {
394
385
  const declaration = value.valueDeclaration;
395
386
  if (declaration && ts.isVariableDeclaration(declaration) && declaration.initializer) {
@@ -398,6 +389,16 @@ function collectScope(node: ts.Node, map: Map<string, ts.Expression> = new Map()
398
389
  }
399
390
  }
400
391
  }
392
+ }
393
+
394
+ function collectScope(node: ts.Node, map: Map<string, ts.Expression> = new Map()): Map<string, ts.Expression> {
395
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
396
+ const locals = (node as any)['locals'] as Map<string, ts.Symbol>;
397
+ collectSymbols(locals, map);
398
+ // Exported declarations (e.g. `export const`) are stored in `symbol.exports` rather than `locals`
399
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
400
+ const exports = (node as any)['symbol']?.exports as Map<string, ts.Symbol> | undefined;
401
+ collectSymbols(exports, map);
401
402
  if (node.parent) {
402
403
  collectScope(node.parent, map);
403
404
  }
@@ -133,6 +133,36 @@ describe('localization-manager#translateLanguage', () => {
133
133
  });
134
134
  });
135
135
 
136
+ it('should re-translate forced keys even if they exist in target', async () => {
137
+ const input = { a: 'new-a' };
138
+ const target = { a: 'old-translation' };
139
+ await manager.translateLanguage(input, target, 'EN', {
140
+ ...defaultOptions,
141
+ forceKeys: new Set(['a'])
142
+ });
143
+ assert.deepStrictEqual(target, { a: '[new-a]' });
144
+ });
145
+
146
+ it('should re-translate nested forced keys', async () => {
147
+ const input = { a: { b: 'new-b' } };
148
+ const target = { a: { b: 'old-translation' } };
149
+ await manager.translateLanguage(input, target, 'EN', {
150
+ ...defaultOptions,
151
+ forceKeys: new Set(['a/b'])
152
+ });
153
+ assert.deepStrictEqual(target, { a: { b: '[new-b]' } });
154
+ });
155
+
156
+ it('should not re-translate keys not in force set', async () => {
157
+ const input = { a: 'new-a', b: 'new-b' };
158
+ const target = { a: 'old-a', b: 'old-b' };
159
+ await manager.translateLanguage(input, target, 'EN', {
160
+ ...defaultOptions,
161
+ forceKeys: new Set(['a'])
162
+ });
163
+ assert.deepStrictEqual(target, { a: '[new-a]', b: 'old-b' });
164
+ });
165
+
136
166
  it('should pass context to the localization function', async () => {
137
167
  let receivedContext: string | undefined;
138
168
  const contextCapture = new LocalizationManager(async (parameters: DeeplParameters) => {
@@ -26,6 +26,7 @@ export interface LocalizationOptions {
26
26
  sourceFile: string
27
27
  sourceLanguage?: string
28
28
  targetLanguages: string[]
29
+ forceKeys?: Set<string>
29
30
  }
30
31
 
31
32
  export type LocalizationFunction = (parameters: DeeplParameters) => Promise<DeeplResponse>;
@@ -92,7 +93,7 @@ export class LocalizationManager {
92
93
  }
93
94
 
94
95
  async translateLanguage(source: Localization, target: Localization, targetLanguage: string, options: LocalizationOptions): Promise<boolean> {
95
- const map = this.buildLocalizationMap(source, target);
96
+ const map = this.buildLocalizationMap(source, target, options.forceKeys);
96
97
  if (map.text.length > 0) {
97
98
  try {
98
99
  const translationResponse = await this.localizationFn({
@@ -109,7 +110,10 @@ export class LocalizationManager {
109
110
  translationResponse.translations.forEach(({ text }, i) => {
110
111
  map.localize(i, this.removeIgnoreTags(text));
111
112
  });
112
- console.log(chalk.green(`Successfully translated ${map.text.length} value${map.text.length > 1 ? 's' : ''} for language "${targetLanguage}"`));
113
+ console.log(chalk.green(`Successfully translated ${map.text.length} value${map.text.length > 1 ? 's' : ''} for language "${targetLanguage}":`));
114
+ for (const key of map.keys) {
115
+ console.log(chalk.green(` - ${key}`));
116
+ }
113
117
  return true;
114
118
  } catch (e) {
115
119
  console.log(chalk.red(`Could not translate into language "${targetLanguage}"`), e);
@@ -134,10 +138,11 @@ export class LocalizationManager {
134
138
  return result.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
135
139
  }
136
140
 
137
- protected buildLocalizationMap(source: Localization, target: Localization): LocalizationMap {
141
+ protected buildLocalizationMap(source: Localization, target: Localization, forceKeys?: Set<string>): LocalizationMap {
138
142
  const functionMap = new Map<number, (value: string) => void>();
139
143
  const text: string[] = [];
140
- const process = (s: Localization, t: Localization) => {
144
+ const keys: string[] = [];
145
+ const process = (s: Localization, t: Localization, prefix = '') => {
141
146
  // Delete all extra keys in the target translation first
142
147
  for (const key of Object.keys(t)) {
143
148
  if (!(key in s)) {
@@ -145,20 +150,26 @@ export class LocalizationManager {
145
150
  }
146
151
  }
147
152
  for (const [key, value] of Object.entries(s)) {
153
+ const currentPath = prefix ? `${prefix}/${key}` : key;
148
154
  if (!(key in t)) {
149
155
  if (typeof value === 'string') {
150
156
  functionMap.set(text.length, translation => t[key] = translation);
151
157
  text.push(value);
158
+ keys.push(currentPath);
152
159
  } else {
153
160
  const newLocalization: Localization = {};
154
161
  t[key] = newLocalization;
155
- process(value, newLocalization);
162
+ process(value, newLocalization, currentPath);
156
163
  }
164
+ } else if (typeof value === 'string' && forceKeys?.has(currentPath)) {
165
+ functionMap.set(text.length, translation => t[key] = translation);
166
+ text.push(value);
167
+ keys.push(currentPath);
157
168
  } else if (typeof value === 'object') {
158
169
  if (typeof t[key] === 'string') {
159
170
  t[key] = {};
160
171
  }
161
- process(value, t[key] as Localization);
172
+ process(value, t[key] as Localization, currentPath);
162
173
  }
163
174
  }
164
175
  };
@@ -167,6 +178,7 @@ export class LocalizationManager {
167
178
 
168
179
  return {
169
180
  text,
181
+ keys,
170
182
  localize: (index, value) => functionMap.get(index)!(value)
171
183
  };
172
184
  }
@@ -174,5 +186,6 @@ export class LocalizationManager {
174
186
 
175
187
  export interface LocalizationMap {
176
188
  text: string[]
189
+ keys: string[]
177
190
  localize: (index: number, value: string) => void
178
191
  }