i18next-cli 1.47.7 → 1.47.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli.js +1 -1
- package/dist/cjs/instrumenter/core/instrumenter.js +167 -4
- package/dist/cjs/instrumenter/core/transformer.js +53 -11
- package/dist/esm/cli.js +1 -1
- package/dist/esm/instrumenter/core/instrumenter.js +167 -4
- package/dist/esm/instrumenter/core/transformer.js +53 -11
- package/package.json +1 -1
- package/types/instrumenter/core/instrumenter.d.ts.map +1 -1
- package/types/instrumenter/core/transformer.d.ts.map +1 -1
- package/types/types.d.ts +6 -0
- package/types/types.d.ts.map +1 -1
package/dist/cjs/cli.js
CHANGED
|
@@ -31,7 +31,7 @@ const program = new commander.Command();
|
|
|
31
31
|
program
|
|
32
32
|
.name('i18next-cli')
|
|
33
33
|
.description('A unified, high-performance i18next CLI.')
|
|
34
|
-
.version('1.47.
|
|
34
|
+
.version('1.47.8'); // This string is replaced with the actual version at build time by rollup
|
|
35
35
|
// new: global config override option
|
|
36
36
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
37
37
|
program
|
|
@@ -454,12 +454,41 @@ function addComponentFromFunctionNode(name, fnNode, content, components) {
|
|
|
454
454
|
// Non-translatable JSX attributes are defined in utils/jsx-attributes.ts
|
|
455
455
|
// and shared with the linter. The instrumenter uses `ignoredAttributeSet`
|
|
456
456
|
// to skip recursing into non-translatable attribute values.
|
|
457
|
+
/**
|
|
458
|
+
* Returns true when the AST node is a `t(...)` or `i18next.t(...)` call
|
|
459
|
+
* expression — i.e. code that was already instrumented.
|
|
460
|
+
*/
|
|
461
|
+
function isTranslationCall(node) {
|
|
462
|
+
const callee = node.callee;
|
|
463
|
+
if (!callee)
|
|
464
|
+
return false;
|
|
465
|
+
// t(...)
|
|
466
|
+
if (callee.type === 'Identifier' && callee.value === 't')
|
|
467
|
+
return true;
|
|
468
|
+
// i18next.t(...)
|
|
469
|
+
if (callee.type === 'MemberExpression' &&
|
|
470
|
+
!callee.computed &&
|
|
471
|
+
callee.property?.type === 'Identifier' &&
|
|
472
|
+
callee.property.value === 't' &&
|
|
473
|
+
callee.object?.type === 'Identifier' &&
|
|
474
|
+
callee.object.value === 'i18next')
|
|
475
|
+
return true;
|
|
476
|
+
return false;
|
|
477
|
+
}
|
|
457
478
|
/**
|
|
458
479
|
* Recursively visits AST nodes to find string literals.
|
|
459
480
|
*/
|
|
460
481
|
function visitNodeForStrings(node, content, file, config, candidates) {
|
|
461
482
|
if (!node)
|
|
462
483
|
return;
|
|
484
|
+
// Skip already-instrumented t() / i18next.t() calls entirely so that
|
|
485
|
+
// strings inside the options object (defaultValue_one, etc.) are not
|
|
486
|
+
// picked up as new candidates on a second run.
|
|
487
|
+
if (node.type === 'CallExpression' && isTranslationCall(node))
|
|
488
|
+
return;
|
|
489
|
+
// Skip <Trans> elements (already instrumented)
|
|
490
|
+
if (node.type === 'JSXElement' && isTransComponent(node))
|
|
491
|
+
return;
|
|
463
492
|
// Skip non-translatable JSX attributes entirely (e.g. className={...})
|
|
464
493
|
if (node.type === 'JSXAttribute') {
|
|
465
494
|
const nameNode = node.name;
|
|
@@ -633,6 +662,9 @@ function resolveExpressionName(expr, content, usedNames) {
|
|
|
633
662
|
function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
634
663
|
if (!node)
|
|
635
664
|
return;
|
|
665
|
+
// Skip <Trans> elements (already instrumented)
|
|
666
|
+
if (node.type === 'JSXElement' && isTransComponent(node))
|
|
667
|
+
return;
|
|
636
668
|
const children = (node.type === 'JSXElement' || node.type === 'JSXFragment') ? node.children : null;
|
|
637
669
|
if (children?.length > 1) {
|
|
638
670
|
// Build "runs" of consecutive JSXText + simple-expression containers
|
|
@@ -651,6 +683,10 @@ function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
|
651
683
|
// Plural ternary expression — include in the run for merged handling
|
|
652
684
|
currentRun.push(child);
|
|
653
685
|
}
|
|
686
|
+
else if (child.type === 'JSXElement' && isSimpleJSXElement(child)) {
|
|
687
|
+
// Simple HTML element — include in the run for Trans detection
|
|
688
|
+
currentRun.push(child);
|
|
689
|
+
}
|
|
654
690
|
else {
|
|
655
691
|
// JSXElement, complex expression, etc. — break the run
|
|
656
692
|
if (currentRun.length > 0) {
|
|
@@ -665,7 +701,11 @@ function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
|
665
701
|
for (const run of runs) {
|
|
666
702
|
const hasText = run.some(c => c.type === 'JSXText' && c.value?.trim());
|
|
667
703
|
const hasExpr = run.some(c => c.type === 'JSXExpressionContainer');
|
|
668
|
-
|
|
704
|
+
const hasElement = run.some(c => c.type === 'JSXElement');
|
|
705
|
+
// Require at least one text node plus either an expression or element
|
|
706
|
+
if (!hasText || run.length < 2)
|
|
707
|
+
continue;
|
|
708
|
+
if (!hasExpr && !hasElement)
|
|
669
709
|
continue;
|
|
670
710
|
// Check if any expression container in this run is a plural ternary
|
|
671
711
|
let pluralChild = null;
|
|
@@ -681,7 +721,77 @@ function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
|
681
721
|
}
|
|
682
722
|
}
|
|
683
723
|
}
|
|
684
|
-
if (
|
|
724
|
+
if (hasElement) {
|
|
725
|
+
// ── JSX sibling run with nested HTML elements → <Trans> ──
|
|
726
|
+
const spanStart = run[0].span.start;
|
|
727
|
+
const spanEnd = run[run.length - 1].span.end;
|
|
728
|
+
// Build the translation string (with indexed tags) and text-only version (for scoring)
|
|
729
|
+
const usedNames = new Set();
|
|
730
|
+
const interpolations = [];
|
|
731
|
+
let transValue = '';
|
|
732
|
+
let textOnly = '';
|
|
733
|
+
let transContent = '';
|
|
734
|
+
let childIndex = 0;
|
|
735
|
+
let valid = true;
|
|
736
|
+
for (const child of run) {
|
|
737
|
+
if (child.type === 'JSXText') {
|
|
738
|
+
const raw = content.slice(child.span.start, child.span.end);
|
|
739
|
+
transValue += raw;
|
|
740
|
+
textOnly += raw;
|
|
741
|
+
transContent += raw;
|
|
742
|
+
childIndex++;
|
|
743
|
+
}
|
|
744
|
+
else if (child.type === 'JSXExpressionContainer') {
|
|
745
|
+
const info = resolveExpressionName(child.expression, content, usedNames);
|
|
746
|
+
if (!info) {
|
|
747
|
+
valid = false;
|
|
748
|
+
break;
|
|
749
|
+
}
|
|
750
|
+
transValue += `{{${info.name}}}`;
|
|
751
|
+
textOnly += info.name;
|
|
752
|
+
// In <Trans> children, simple expressions become {{ obj }} syntax
|
|
753
|
+
const objExpr = info.name === info.expression ? info.name : `${info.name}: ${info.expression}`;
|
|
754
|
+
transContent += `{{ ${objExpr} }}`;
|
|
755
|
+
interpolations.push(info);
|
|
756
|
+
childIndex++;
|
|
757
|
+
}
|
|
758
|
+
else if (child.type === 'JSXElement') {
|
|
759
|
+
const innerText = getJSXElementTextContent(child, content);
|
|
760
|
+
transValue += `<${childIndex}>${innerText}</${childIndex}>`;
|
|
761
|
+
textOnly += innerText;
|
|
762
|
+
// Keep the original JSX element source for the <Trans> children
|
|
763
|
+
transContent += content.slice(child.span.start, child.span.end);
|
|
764
|
+
childIndex++;
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
if (!valid)
|
|
768
|
+
continue;
|
|
769
|
+
const trimmedText = textOnly.trim();
|
|
770
|
+
const trimmedTransValue = transValue.trim();
|
|
771
|
+
if (!trimmedText || !trimmedTransValue)
|
|
772
|
+
continue;
|
|
773
|
+
const candidate = stringDetector.detectCandidate(trimmedText, spanStart, spanEnd, file, content, config);
|
|
774
|
+
if (candidate) {
|
|
775
|
+
candidate.type = 'jsx-mixed';
|
|
776
|
+
candidate.content = transContent.trim();
|
|
777
|
+
candidate.transValue = trimmedTransValue;
|
|
778
|
+
if (interpolations.length > 0) {
|
|
779
|
+
candidate.interpolations = interpolations;
|
|
780
|
+
}
|
|
781
|
+
// Mixed text + elements in JSX is almost always user-facing
|
|
782
|
+
candidate.confidence = Math.min(1, candidate.confidence + 0.25);
|
|
783
|
+
if (candidate.confidence >= 0.7) {
|
|
784
|
+
// Remove individual candidates that overlap with the merged span
|
|
785
|
+
for (let i = candidates.length - 1; i >= 0; i--) {
|
|
786
|
+
if (candidates[i].offset >= spanStart && candidates[i].endOffset <= spanEnd) {
|
|
787
|
+
candidates.splice(i, 1);
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
candidates.push(candidate);
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
else if (pluralChild && pluralData) {
|
|
685
795
|
// ── JSX sibling run with embedded plural ternary ──
|
|
686
796
|
const countExpr = pluralData.countExpression;
|
|
687
797
|
// Resolve names for non-count, non-plural expressions
|
|
@@ -768,7 +878,7 @@ function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
|
768
878
|
}
|
|
769
879
|
}
|
|
770
880
|
else {
|
|
771
|
-
// ── Original JSX sibling merging (no
|
|
881
|
+
// ── Original JSX sibling merging (text + expressions, no elements) ──
|
|
772
882
|
// Build the interpolated text from the run
|
|
773
883
|
const usedNames = new Set();
|
|
774
884
|
const interpolations = [];
|
|
@@ -841,6 +951,59 @@ function isSimpleJSXExpression(expr) {
|
|
|
841
951
|
return true;
|
|
842
952
|
return false;
|
|
843
953
|
}
|
|
954
|
+
/**
|
|
955
|
+
* Returns true when a JSXElement is "simple" enough to be included in a
|
|
956
|
+
* `<Trans>` JSX sibling run. Accepts:
|
|
957
|
+
* - Self-closing elements (`<br />`, `<img />`)
|
|
958
|
+
* - Elements whose only children are `JSXText` nodes
|
|
959
|
+
* Only HTML-like elements (lowercase tag name) are accepted; React
|
|
960
|
+
* components (uppercase, e.g. `<Button />`) break the run.
|
|
961
|
+
*/
|
|
962
|
+
function isSimpleJSXElement(node) {
|
|
963
|
+
if (node.type !== 'JSXElement')
|
|
964
|
+
return false;
|
|
965
|
+
const namePart = node.opening?.name;
|
|
966
|
+
if (!namePart)
|
|
967
|
+
return false;
|
|
968
|
+
// Only include HTML-like elements (lowercase first char)
|
|
969
|
+
let tagName = null;
|
|
970
|
+
if (namePart.type === 'Identifier') {
|
|
971
|
+
tagName = namePart.value;
|
|
972
|
+
}
|
|
973
|
+
if (!tagName || tagName[0] !== tagName[0].toLowerCase())
|
|
974
|
+
return false;
|
|
975
|
+
// Self-closing elements are simple
|
|
976
|
+
if (node.opening?.selfClosing)
|
|
977
|
+
return true;
|
|
978
|
+
// Elements with only text children (or empty) are simple
|
|
979
|
+
const children = node.children || [];
|
|
980
|
+
return children.length === 0 || children.every((c) => c.type === 'JSXText');
|
|
981
|
+
}
|
|
982
|
+
/**
|
|
983
|
+
* Returns the text content of a simple JSXElement's children.
|
|
984
|
+
*/
|
|
985
|
+
function getJSXElementTextContent(node, content) {
|
|
986
|
+
const children = node.children || [];
|
|
987
|
+
return children
|
|
988
|
+
.filter((c) => c.type === 'JSXText')
|
|
989
|
+
.map((c) => content.slice(c.span.start, c.span.end))
|
|
990
|
+
.join('');
|
|
991
|
+
}
|
|
992
|
+
/**
|
|
993
|
+
* Returns true when a JSXElement is a `<Trans>` component
|
|
994
|
+
* (already instrumented content).
|
|
995
|
+
*/
|
|
996
|
+
function isTransComponent(node) {
|
|
997
|
+
const opening = node.opening;
|
|
998
|
+
if (!opening)
|
|
999
|
+
return false;
|
|
1000
|
+
const name = opening.name;
|
|
1001
|
+
if (name?.type === 'Identifier' && name.value === 'Trans')
|
|
1002
|
+
return true;
|
|
1003
|
+
if (name?.type === 'JSXMemberExpression' && name.property?.type === 'Identifier' && name.property.value === 'Trans')
|
|
1004
|
+
return true;
|
|
1005
|
+
return false;
|
|
1006
|
+
}
|
|
844
1007
|
// ─── Plural conditional pattern detection ────────────────────────────────────
|
|
845
1008
|
/**
|
|
846
1009
|
* Extracts the text value from a string literal or static template literal node.
|
|
@@ -1565,7 +1728,7 @@ async function writeExtractedKeys(candidates, config, namespace, logger$1 = new
|
|
|
1565
1728
|
translations[`${candidate.key}_other`] = pf.other;
|
|
1566
1729
|
}
|
|
1567
1730
|
else {
|
|
1568
|
-
translations[candidate.key] = candidate.content;
|
|
1731
|
+
translations[candidate.key] = candidate.transValue ?? candidate.content;
|
|
1569
1732
|
}
|
|
1570
1733
|
}
|
|
1571
1734
|
}
|
|
@@ -29,6 +29,7 @@ function transformFile(content, file, candidates, options) {
|
|
|
29
29
|
const transformedComponents = new Set();
|
|
30
30
|
let hasComponentCandidates = false;
|
|
31
31
|
let hasNonComponentCandidates = false;
|
|
32
|
+
let hasTransCandidates = false;
|
|
32
33
|
// ── Language-change site injections ────────────────────────────────────
|
|
33
34
|
const languageChangeSites = options.languageChangeSites || [];
|
|
34
35
|
// Track components that need `i18n` from useTranslation()
|
|
@@ -82,9 +83,15 @@ function transformFile(content, file, candidates, options) {
|
|
|
82
83
|
if (replacement) {
|
|
83
84
|
s.overwrite(candidate.offset, candidate.endOffset, replacement);
|
|
84
85
|
transformCount++;
|
|
86
|
+
if (candidate.type === 'jsx-mixed') {
|
|
87
|
+
hasTransCandidates = true;
|
|
88
|
+
}
|
|
85
89
|
if (candidate.insideComponent) {
|
|
86
|
-
|
|
87
|
-
|
|
90
|
+
// jsx-mixed candidates use <Trans>, not t(), so they don't need useTranslation
|
|
91
|
+
if (candidate.type !== 'jsx-mixed') {
|
|
92
|
+
transformedComponents.add(candidate.insideComponent);
|
|
93
|
+
hasComponentCandidates = true;
|
|
94
|
+
}
|
|
88
95
|
}
|
|
89
96
|
else {
|
|
90
97
|
hasNonComponentCandidates = true;
|
|
@@ -108,17 +115,20 @@ function transformFile(content, file, candidates, options) {
|
|
|
108
115
|
const indent = detectIndent(content, comp.bodyStart);
|
|
109
116
|
const defaultNS = options.config.extract?.defaultNS ?? 'translation';
|
|
110
117
|
const nsArg = (options.namespace && options.namespace !== defaultNS) ? `'${options.namespace}'` : '';
|
|
111
|
-
// Build destructuring: include `t` if the component has string candidates
|
|
118
|
+
// Build destructuring: include `t` if the component has string candidates
|
|
119
|
+
// (but not jsx-mixed which use <Trans>),
|
|
112
120
|
// include `i18n` if the component has language-change sites.
|
|
113
|
-
const needsT = highConfidenceCandidates.some(c => c.insideComponent === comp.name);
|
|
121
|
+
const needsT = highConfidenceCandidates.some(c => c.insideComponent === comp.name && c.type !== 'jsx-mixed');
|
|
114
122
|
const needsI18n = componentsNeedingI18n.has(comp.name);
|
|
115
123
|
const parts = [];
|
|
116
124
|
if (needsT)
|
|
117
125
|
parts.push('t');
|
|
118
126
|
if (needsI18n)
|
|
119
127
|
parts.push('i18n');
|
|
120
|
-
if
|
|
121
|
-
|
|
128
|
+
// Skip if component needs neither t nor i18n
|
|
129
|
+
// (e.g. component only has jsx-mixed / <Trans> candidates)
|
|
130
|
+
if (!needsT && !needsI18n)
|
|
131
|
+
continue;
|
|
122
132
|
const destructured = `{ ${parts.join(', ')} }`;
|
|
123
133
|
s.appendRight(comp.bodyStart + 1, `\n${indent}const ${destructured} = useTranslation(${nsArg})`);
|
|
124
134
|
injections.hookInjected = true;
|
|
@@ -148,7 +158,8 @@ function transformFile(content, file, candidates, options) {
|
|
|
148
158
|
// Add import statements
|
|
149
159
|
addImportStatements(s, content, {
|
|
150
160
|
needsUseTranslation: hasComponentCandidates && options.hasReact,
|
|
151
|
-
needsI18next: hasNonComponentCandidates || !options.hasReact
|
|
161
|
+
needsI18next: hasNonComponentCandidates || !options.hasReact,
|
|
162
|
+
needsTrans: hasTransCandidates && options.hasReact
|
|
152
163
|
});
|
|
153
164
|
injections.importAdded = true;
|
|
154
165
|
}
|
|
@@ -232,7 +243,8 @@ function buildReplacement(candidate, key, useHookStyle, namespace) {
|
|
|
232
243
|
return `{${tCall}}`;
|
|
233
244
|
case 'jsx-mixed':
|
|
234
245
|
if (useHookStyle) {
|
|
235
|
-
|
|
246
|
+
const nsAttr = namespace ? ` ns="${namespace}"` : '';
|
|
247
|
+
return `<Trans i18nKey="${key}"${nsAttr}>${candidate.content}</Trans>`;
|
|
236
248
|
}
|
|
237
249
|
return candidate.content;
|
|
238
250
|
case 'template-literal':
|
|
@@ -286,12 +298,24 @@ function detectIndent(content, braceOffset) {
|
|
|
286
298
|
return ' ';
|
|
287
299
|
}
|
|
288
300
|
/**
|
|
289
|
-
* Adds necessary import statements (useTranslation and/or i18next).
|
|
301
|
+
* Adds necessary import statements (useTranslation, Trans, and/or i18next).
|
|
290
302
|
*/
|
|
291
303
|
function addImportStatements(s, content, needs) {
|
|
292
304
|
let importStatement = '';
|
|
293
|
-
|
|
294
|
-
|
|
305
|
+
// Build a combined react-i18next import
|
|
306
|
+
const reactI18nextImports = [];
|
|
307
|
+
if (needs.needsUseTranslation)
|
|
308
|
+
reactI18nextImports.push('useTranslation');
|
|
309
|
+
if (needs.needsTrans)
|
|
310
|
+
reactI18nextImports.push('Trans');
|
|
311
|
+
if (reactI18nextImports.length > 0) {
|
|
312
|
+
if (!hasImport(content, 'react-i18next')) {
|
|
313
|
+
importStatement += `import { ${reactI18nextImports.join(', ')} } from 'react-i18next'\n`;
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
// react-i18next is already imported — augment with any missing named exports
|
|
317
|
+
augmentReactI18nextImport(s, content, reactI18nextImports);
|
|
318
|
+
}
|
|
295
319
|
}
|
|
296
320
|
if (needs.needsI18next && !hasImport(content, 'i18next')) {
|
|
297
321
|
importStatement += "import i18next from 'i18next'\n";
|
|
@@ -316,6 +340,24 @@ function addImportStatements(s, content, needs) {
|
|
|
316
340
|
}
|
|
317
341
|
s.appendRight(insertPos, importStatement);
|
|
318
342
|
}
|
|
343
|
+
/**
|
|
344
|
+
* Augments an existing `import { ... } from 'react-i18next'` with any missing
|
|
345
|
+
* named exports (e.g. adds `Trans` when only `useTranslation` is imported).
|
|
346
|
+
*/
|
|
347
|
+
function augmentReactI18nextImport(s, content, needed) {
|
|
348
|
+
const importMatch = /import\s*\{([^}]*)\}\s*from\s*['"]react-i18next['"]/.exec(content);
|
|
349
|
+
if (!importMatch)
|
|
350
|
+
return;
|
|
351
|
+
const existingImports = importMatch[1].split(',').map(x => x.trim()).filter(Boolean);
|
|
352
|
+
const toAdd = needed.filter(n => !existingImports.includes(n));
|
|
353
|
+
if (toAdd.length === 0)
|
|
354
|
+
return;
|
|
355
|
+
const newImports = [...existingImports, ...toAdd].join(', ');
|
|
356
|
+
const newImportStatement = `import { ${newImports} } from 'react-i18next'`;
|
|
357
|
+
const matchStart = importMatch.index;
|
|
358
|
+
const matchEnd = matchStart + importMatch[0].length;
|
|
359
|
+
s.overwrite(matchStart, matchEnd, newImportStatement);
|
|
360
|
+
}
|
|
319
361
|
/**
|
|
320
362
|
* Generates a unified diff showing what changed.
|
|
321
363
|
*/
|
package/dist/esm/cli.js
CHANGED
|
@@ -29,7 +29,7 @@ const program = new Command();
|
|
|
29
29
|
program
|
|
30
30
|
.name('i18next-cli')
|
|
31
31
|
.description('A unified, high-performance i18next CLI.')
|
|
32
|
-
.version('1.47.
|
|
32
|
+
.version('1.47.8'); // This string is replaced with the actual version at build time by rollup
|
|
33
33
|
// new: global config override option
|
|
34
34
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
35
35
|
program
|
|
@@ -452,12 +452,41 @@ function addComponentFromFunctionNode(name, fnNode, content, components) {
|
|
|
452
452
|
// Non-translatable JSX attributes are defined in utils/jsx-attributes.ts
|
|
453
453
|
// and shared with the linter. The instrumenter uses `ignoredAttributeSet`
|
|
454
454
|
// to skip recursing into non-translatable attribute values.
|
|
455
|
+
/**
|
|
456
|
+
* Returns true when the AST node is a `t(...)` or `i18next.t(...)` call
|
|
457
|
+
* expression — i.e. code that was already instrumented.
|
|
458
|
+
*/
|
|
459
|
+
function isTranslationCall(node) {
|
|
460
|
+
const callee = node.callee;
|
|
461
|
+
if (!callee)
|
|
462
|
+
return false;
|
|
463
|
+
// t(...)
|
|
464
|
+
if (callee.type === 'Identifier' && callee.value === 't')
|
|
465
|
+
return true;
|
|
466
|
+
// i18next.t(...)
|
|
467
|
+
if (callee.type === 'MemberExpression' &&
|
|
468
|
+
!callee.computed &&
|
|
469
|
+
callee.property?.type === 'Identifier' &&
|
|
470
|
+
callee.property.value === 't' &&
|
|
471
|
+
callee.object?.type === 'Identifier' &&
|
|
472
|
+
callee.object.value === 'i18next')
|
|
473
|
+
return true;
|
|
474
|
+
return false;
|
|
475
|
+
}
|
|
455
476
|
/**
|
|
456
477
|
* Recursively visits AST nodes to find string literals.
|
|
457
478
|
*/
|
|
458
479
|
function visitNodeForStrings(node, content, file, config, candidates) {
|
|
459
480
|
if (!node)
|
|
460
481
|
return;
|
|
482
|
+
// Skip already-instrumented t() / i18next.t() calls entirely so that
|
|
483
|
+
// strings inside the options object (defaultValue_one, etc.) are not
|
|
484
|
+
// picked up as new candidates on a second run.
|
|
485
|
+
if (node.type === 'CallExpression' && isTranslationCall(node))
|
|
486
|
+
return;
|
|
487
|
+
// Skip <Trans> elements (already instrumented)
|
|
488
|
+
if (node.type === 'JSXElement' && isTransComponent(node))
|
|
489
|
+
return;
|
|
461
490
|
// Skip non-translatable JSX attributes entirely (e.g. className={...})
|
|
462
491
|
if (node.type === 'JSXAttribute') {
|
|
463
492
|
const nameNode = node.name;
|
|
@@ -631,6 +660,9 @@ function resolveExpressionName(expr, content, usedNames) {
|
|
|
631
660
|
function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
632
661
|
if (!node)
|
|
633
662
|
return;
|
|
663
|
+
// Skip <Trans> elements (already instrumented)
|
|
664
|
+
if (node.type === 'JSXElement' && isTransComponent(node))
|
|
665
|
+
return;
|
|
634
666
|
const children = (node.type === 'JSXElement' || node.type === 'JSXFragment') ? node.children : null;
|
|
635
667
|
if (children?.length > 1) {
|
|
636
668
|
// Build "runs" of consecutive JSXText + simple-expression containers
|
|
@@ -649,6 +681,10 @@ function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
|
649
681
|
// Plural ternary expression — include in the run for merged handling
|
|
650
682
|
currentRun.push(child);
|
|
651
683
|
}
|
|
684
|
+
else if (child.type === 'JSXElement' && isSimpleJSXElement(child)) {
|
|
685
|
+
// Simple HTML element — include in the run for Trans detection
|
|
686
|
+
currentRun.push(child);
|
|
687
|
+
}
|
|
652
688
|
else {
|
|
653
689
|
// JSXElement, complex expression, etc. — break the run
|
|
654
690
|
if (currentRun.length > 0) {
|
|
@@ -663,7 +699,11 @@ function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
|
663
699
|
for (const run of runs) {
|
|
664
700
|
const hasText = run.some(c => c.type === 'JSXText' && c.value?.trim());
|
|
665
701
|
const hasExpr = run.some(c => c.type === 'JSXExpressionContainer');
|
|
666
|
-
|
|
702
|
+
const hasElement = run.some(c => c.type === 'JSXElement');
|
|
703
|
+
// Require at least one text node plus either an expression or element
|
|
704
|
+
if (!hasText || run.length < 2)
|
|
705
|
+
continue;
|
|
706
|
+
if (!hasExpr && !hasElement)
|
|
667
707
|
continue;
|
|
668
708
|
// Check if any expression container in this run is a plural ternary
|
|
669
709
|
let pluralChild = null;
|
|
@@ -679,7 +719,77 @@ function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
|
679
719
|
}
|
|
680
720
|
}
|
|
681
721
|
}
|
|
682
|
-
if (
|
|
722
|
+
if (hasElement) {
|
|
723
|
+
// ── JSX sibling run with nested HTML elements → <Trans> ──
|
|
724
|
+
const spanStart = run[0].span.start;
|
|
725
|
+
const spanEnd = run[run.length - 1].span.end;
|
|
726
|
+
// Build the translation string (with indexed tags) and text-only version (for scoring)
|
|
727
|
+
const usedNames = new Set();
|
|
728
|
+
const interpolations = [];
|
|
729
|
+
let transValue = '';
|
|
730
|
+
let textOnly = '';
|
|
731
|
+
let transContent = '';
|
|
732
|
+
let childIndex = 0;
|
|
733
|
+
let valid = true;
|
|
734
|
+
for (const child of run) {
|
|
735
|
+
if (child.type === 'JSXText') {
|
|
736
|
+
const raw = content.slice(child.span.start, child.span.end);
|
|
737
|
+
transValue += raw;
|
|
738
|
+
textOnly += raw;
|
|
739
|
+
transContent += raw;
|
|
740
|
+
childIndex++;
|
|
741
|
+
}
|
|
742
|
+
else if (child.type === 'JSXExpressionContainer') {
|
|
743
|
+
const info = resolveExpressionName(child.expression, content, usedNames);
|
|
744
|
+
if (!info) {
|
|
745
|
+
valid = false;
|
|
746
|
+
break;
|
|
747
|
+
}
|
|
748
|
+
transValue += `{{${info.name}}}`;
|
|
749
|
+
textOnly += info.name;
|
|
750
|
+
// In <Trans> children, simple expressions become {{ obj }} syntax
|
|
751
|
+
const objExpr = info.name === info.expression ? info.name : `${info.name}: ${info.expression}`;
|
|
752
|
+
transContent += `{{ ${objExpr} }}`;
|
|
753
|
+
interpolations.push(info);
|
|
754
|
+
childIndex++;
|
|
755
|
+
}
|
|
756
|
+
else if (child.type === 'JSXElement') {
|
|
757
|
+
const innerText = getJSXElementTextContent(child, content);
|
|
758
|
+
transValue += `<${childIndex}>${innerText}</${childIndex}>`;
|
|
759
|
+
textOnly += innerText;
|
|
760
|
+
// Keep the original JSX element source for the <Trans> children
|
|
761
|
+
transContent += content.slice(child.span.start, child.span.end);
|
|
762
|
+
childIndex++;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
if (!valid)
|
|
766
|
+
continue;
|
|
767
|
+
const trimmedText = textOnly.trim();
|
|
768
|
+
const trimmedTransValue = transValue.trim();
|
|
769
|
+
if (!trimmedText || !trimmedTransValue)
|
|
770
|
+
continue;
|
|
771
|
+
const candidate = detectCandidate(trimmedText, spanStart, spanEnd, file, content, config);
|
|
772
|
+
if (candidate) {
|
|
773
|
+
candidate.type = 'jsx-mixed';
|
|
774
|
+
candidate.content = transContent.trim();
|
|
775
|
+
candidate.transValue = trimmedTransValue;
|
|
776
|
+
if (interpolations.length > 0) {
|
|
777
|
+
candidate.interpolations = interpolations;
|
|
778
|
+
}
|
|
779
|
+
// Mixed text + elements in JSX is almost always user-facing
|
|
780
|
+
candidate.confidence = Math.min(1, candidate.confidence + 0.25);
|
|
781
|
+
if (candidate.confidence >= 0.7) {
|
|
782
|
+
// Remove individual candidates that overlap with the merged span
|
|
783
|
+
for (let i = candidates.length - 1; i >= 0; i--) {
|
|
784
|
+
if (candidates[i].offset >= spanStart && candidates[i].endOffset <= spanEnd) {
|
|
785
|
+
candidates.splice(i, 1);
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
candidates.push(candidate);
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
else if (pluralChild && pluralData) {
|
|
683
793
|
// ── JSX sibling run with embedded plural ternary ──
|
|
684
794
|
const countExpr = pluralData.countExpression;
|
|
685
795
|
// Resolve names for non-count, non-plural expressions
|
|
@@ -766,7 +876,7 @@ function detectJSXInterpolation(node, content, file, config, candidates) {
|
|
|
766
876
|
}
|
|
767
877
|
}
|
|
768
878
|
else {
|
|
769
|
-
// ── Original JSX sibling merging (no
|
|
879
|
+
// ── Original JSX sibling merging (text + expressions, no elements) ──
|
|
770
880
|
// Build the interpolated text from the run
|
|
771
881
|
const usedNames = new Set();
|
|
772
882
|
const interpolations = [];
|
|
@@ -839,6 +949,59 @@ function isSimpleJSXExpression(expr) {
|
|
|
839
949
|
return true;
|
|
840
950
|
return false;
|
|
841
951
|
}
|
|
952
|
+
/**
|
|
953
|
+
* Returns true when a JSXElement is "simple" enough to be included in a
|
|
954
|
+
* `<Trans>` JSX sibling run. Accepts:
|
|
955
|
+
* - Self-closing elements (`<br />`, `<img />`)
|
|
956
|
+
* - Elements whose only children are `JSXText` nodes
|
|
957
|
+
* Only HTML-like elements (lowercase tag name) are accepted; React
|
|
958
|
+
* components (uppercase, e.g. `<Button />`) break the run.
|
|
959
|
+
*/
|
|
960
|
+
function isSimpleJSXElement(node) {
|
|
961
|
+
if (node.type !== 'JSXElement')
|
|
962
|
+
return false;
|
|
963
|
+
const namePart = node.opening?.name;
|
|
964
|
+
if (!namePart)
|
|
965
|
+
return false;
|
|
966
|
+
// Only include HTML-like elements (lowercase first char)
|
|
967
|
+
let tagName = null;
|
|
968
|
+
if (namePart.type === 'Identifier') {
|
|
969
|
+
tagName = namePart.value;
|
|
970
|
+
}
|
|
971
|
+
if (!tagName || tagName[0] !== tagName[0].toLowerCase())
|
|
972
|
+
return false;
|
|
973
|
+
// Self-closing elements are simple
|
|
974
|
+
if (node.opening?.selfClosing)
|
|
975
|
+
return true;
|
|
976
|
+
// Elements with only text children (or empty) are simple
|
|
977
|
+
const children = node.children || [];
|
|
978
|
+
return children.length === 0 || children.every((c) => c.type === 'JSXText');
|
|
979
|
+
}
|
|
980
|
+
/**
|
|
981
|
+
* Returns the text content of a simple JSXElement's children.
|
|
982
|
+
*/
|
|
983
|
+
function getJSXElementTextContent(node, content) {
|
|
984
|
+
const children = node.children || [];
|
|
985
|
+
return children
|
|
986
|
+
.filter((c) => c.type === 'JSXText')
|
|
987
|
+
.map((c) => content.slice(c.span.start, c.span.end))
|
|
988
|
+
.join('');
|
|
989
|
+
}
|
|
990
|
+
/**
|
|
991
|
+
* Returns true when a JSXElement is a `<Trans>` component
|
|
992
|
+
* (already instrumented content).
|
|
993
|
+
*/
|
|
994
|
+
function isTransComponent(node) {
|
|
995
|
+
const opening = node.opening;
|
|
996
|
+
if (!opening)
|
|
997
|
+
return false;
|
|
998
|
+
const name = opening.name;
|
|
999
|
+
if (name?.type === 'Identifier' && name.value === 'Trans')
|
|
1000
|
+
return true;
|
|
1001
|
+
if (name?.type === 'JSXMemberExpression' && name.property?.type === 'Identifier' && name.property.value === 'Trans')
|
|
1002
|
+
return true;
|
|
1003
|
+
return false;
|
|
1004
|
+
}
|
|
842
1005
|
// ─── Plural conditional pattern detection ────────────────────────────────────
|
|
843
1006
|
/**
|
|
844
1007
|
* Extracts the text value from a string literal or static template literal node.
|
|
@@ -1563,7 +1726,7 @@ async function writeExtractedKeys(candidates, config, namespace, logger = new Co
|
|
|
1563
1726
|
translations[`${candidate.key}_other`] = pf.other;
|
|
1564
1727
|
}
|
|
1565
1728
|
else {
|
|
1566
|
-
translations[candidate.key] = candidate.content;
|
|
1729
|
+
translations[candidate.key] = candidate.transValue ?? candidate.content;
|
|
1567
1730
|
}
|
|
1568
1731
|
}
|
|
1569
1732
|
}
|
|
@@ -27,6 +27,7 @@ function transformFile(content, file, candidates, options) {
|
|
|
27
27
|
const transformedComponents = new Set();
|
|
28
28
|
let hasComponentCandidates = false;
|
|
29
29
|
let hasNonComponentCandidates = false;
|
|
30
|
+
let hasTransCandidates = false;
|
|
30
31
|
// ── Language-change site injections ────────────────────────────────────
|
|
31
32
|
const languageChangeSites = options.languageChangeSites || [];
|
|
32
33
|
// Track components that need `i18n` from useTranslation()
|
|
@@ -80,9 +81,15 @@ function transformFile(content, file, candidates, options) {
|
|
|
80
81
|
if (replacement) {
|
|
81
82
|
s.overwrite(candidate.offset, candidate.endOffset, replacement);
|
|
82
83
|
transformCount++;
|
|
84
|
+
if (candidate.type === 'jsx-mixed') {
|
|
85
|
+
hasTransCandidates = true;
|
|
86
|
+
}
|
|
83
87
|
if (candidate.insideComponent) {
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
// jsx-mixed candidates use <Trans>, not t(), so they don't need useTranslation
|
|
89
|
+
if (candidate.type !== 'jsx-mixed') {
|
|
90
|
+
transformedComponents.add(candidate.insideComponent);
|
|
91
|
+
hasComponentCandidates = true;
|
|
92
|
+
}
|
|
86
93
|
}
|
|
87
94
|
else {
|
|
88
95
|
hasNonComponentCandidates = true;
|
|
@@ -106,17 +113,20 @@ function transformFile(content, file, candidates, options) {
|
|
|
106
113
|
const indent = detectIndent(content, comp.bodyStart);
|
|
107
114
|
const defaultNS = options.config.extract?.defaultNS ?? 'translation';
|
|
108
115
|
const nsArg = (options.namespace && options.namespace !== defaultNS) ? `'${options.namespace}'` : '';
|
|
109
|
-
// Build destructuring: include `t` if the component has string candidates
|
|
116
|
+
// Build destructuring: include `t` if the component has string candidates
|
|
117
|
+
// (but not jsx-mixed which use <Trans>),
|
|
110
118
|
// include `i18n` if the component has language-change sites.
|
|
111
|
-
const needsT = highConfidenceCandidates.some(c => c.insideComponent === comp.name);
|
|
119
|
+
const needsT = highConfidenceCandidates.some(c => c.insideComponent === comp.name && c.type !== 'jsx-mixed');
|
|
112
120
|
const needsI18n = componentsNeedingI18n.has(comp.name);
|
|
113
121
|
const parts = [];
|
|
114
122
|
if (needsT)
|
|
115
123
|
parts.push('t');
|
|
116
124
|
if (needsI18n)
|
|
117
125
|
parts.push('i18n');
|
|
118
|
-
if
|
|
119
|
-
|
|
126
|
+
// Skip if component needs neither t nor i18n
|
|
127
|
+
// (e.g. component only has jsx-mixed / <Trans> candidates)
|
|
128
|
+
if (!needsT && !needsI18n)
|
|
129
|
+
continue;
|
|
120
130
|
const destructured = `{ ${parts.join(', ')} }`;
|
|
121
131
|
s.appendRight(comp.bodyStart + 1, `\n${indent}const ${destructured} = useTranslation(${nsArg})`);
|
|
122
132
|
injections.hookInjected = true;
|
|
@@ -146,7 +156,8 @@ function transformFile(content, file, candidates, options) {
|
|
|
146
156
|
// Add import statements
|
|
147
157
|
addImportStatements(s, content, {
|
|
148
158
|
needsUseTranslation: hasComponentCandidates && options.hasReact,
|
|
149
|
-
needsI18next: hasNonComponentCandidates || !options.hasReact
|
|
159
|
+
needsI18next: hasNonComponentCandidates || !options.hasReact,
|
|
160
|
+
needsTrans: hasTransCandidates && options.hasReact
|
|
150
161
|
});
|
|
151
162
|
injections.importAdded = true;
|
|
152
163
|
}
|
|
@@ -230,7 +241,8 @@ function buildReplacement(candidate, key, useHookStyle, namespace) {
|
|
|
230
241
|
return `{${tCall}}`;
|
|
231
242
|
case 'jsx-mixed':
|
|
232
243
|
if (useHookStyle) {
|
|
233
|
-
|
|
244
|
+
const nsAttr = namespace ? ` ns="${namespace}"` : '';
|
|
245
|
+
return `<Trans i18nKey="${key}"${nsAttr}>${candidate.content}</Trans>`;
|
|
234
246
|
}
|
|
235
247
|
return candidate.content;
|
|
236
248
|
case 'template-literal':
|
|
@@ -284,12 +296,24 @@ function detectIndent(content, braceOffset) {
|
|
|
284
296
|
return ' ';
|
|
285
297
|
}
|
|
286
298
|
/**
|
|
287
|
-
* Adds necessary import statements (useTranslation and/or i18next).
|
|
299
|
+
* Adds necessary import statements (useTranslation, Trans, and/or i18next).
|
|
288
300
|
*/
|
|
289
301
|
function addImportStatements(s, content, needs) {
|
|
290
302
|
let importStatement = '';
|
|
291
|
-
|
|
292
|
-
|
|
303
|
+
// Build a combined react-i18next import
|
|
304
|
+
const reactI18nextImports = [];
|
|
305
|
+
if (needs.needsUseTranslation)
|
|
306
|
+
reactI18nextImports.push('useTranslation');
|
|
307
|
+
if (needs.needsTrans)
|
|
308
|
+
reactI18nextImports.push('Trans');
|
|
309
|
+
if (reactI18nextImports.length > 0) {
|
|
310
|
+
if (!hasImport(content, 'react-i18next')) {
|
|
311
|
+
importStatement += `import { ${reactI18nextImports.join(', ')} } from 'react-i18next'\n`;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
// react-i18next is already imported — augment with any missing named exports
|
|
315
|
+
augmentReactI18nextImport(s, content, reactI18nextImports);
|
|
316
|
+
}
|
|
293
317
|
}
|
|
294
318
|
if (needs.needsI18next && !hasImport(content, 'i18next')) {
|
|
295
319
|
importStatement += "import i18next from 'i18next'\n";
|
|
@@ -314,6 +338,24 @@ function addImportStatements(s, content, needs) {
|
|
|
314
338
|
}
|
|
315
339
|
s.appendRight(insertPos, importStatement);
|
|
316
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* Augments an existing `import { ... } from 'react-i18next'` with any missing
|
|
343
|
+
* named exports (e.g. adds `Trans` when only `useTranslation` is imported).
|
|
344
|
+
*/
|
|
345
|
+
function augmentReactI18nextImport(s, content, needed) {
|
|
346
|
+
const importMatch = /import\s*\{([^}]*)\}\s*from\s*['"]react-i18next['"]/.exec(content);
|
|
347
|
+
if (!importMatch)
|
|
348
|
+
return;
|
|
349
|
+
const existingImports = importMatch[1].split(',').map(x => x.trim()).filter(Boolean);
|
|
350
|
+
const toAdd = needed.filter(n => !existingImports.includes(n));
|
|
351
|
+
if (toAdd.length === 0)
|
|
352
|
+
return;
|
|
353
|
+
const newImports = [...existingImports, ...toAdd].join(', ');
|
|
354
|
+
const newImportStatement = `import { ${newImports} } from 'react-i18next'`;
|
|
355
|
+
const matchStart = importMatch.index;
|
|
356
|
+
const matchEnd = matchStart + importMatch[0].length;
|
|
357
|
+
s.overwrite(matchStart, matchEnd, newImportStatement);
|
|
358
|
+
}
|
|
317
359
|
/**
|
|
318
360
|
* Generates a unified diff showing what changed.
|
|
319
361
|
*/
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/instrumenter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAA6B,sBAAsB,EAAiE,MAAM,aAAa,CAAA;AAUvN;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CA8MjC;
|
|
1
|
+
{"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/instrumenter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAA6B,sBAAsB,EAAiE,MAAM,aAAa,CAAA;AAUvN;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CA8MjC;AAinDD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,eAAe,EAAE,EAC7B,MAAM,EAAE,oBAAoB,EAC5B,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,GAAE,MAA4B,GACnC,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/transformer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGhI,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;IAC7C,6EAA6E;IAC7E,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,eAAe,EAAE,EAC7B,OAAO,EAAE,kBAAkB,GAC1B,eAAe,
|
|
1
|
+
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/core/transformer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGhI,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;IAC7C,6EAA6E;IAC7E,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,eAAe,EAAE,EAC7B,OAAO,EAAE,kBAAkB,GAC1B,eAAe,CAyLjB;AAmND;;GAEG;AACH,wBAAgB,YAAY,CAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwB1F"}
|
package/types/types.d.ts
CHANGED
|
@@ -807,6 +807,12 @@ export interface CandidateString {
|
|
|
807
807
|
/** Source-code expression (e.g. `count`, `profile.name`) */
|
|
808
808
|
expression: string;
|
|
809
809
|
}>;
|
|
810
|
+
/**
|
|
811
|
+
* For `jsx-mixed` candidates: the translation value with indexed tags
|
|
812
|
+
* (e.g. `Click <1>here</1> to accept`). Used by `writeExtractedKeys` for
|
|
813
|
+
* the JSON output instead of `content`.
|
|
814
|
+
*/
|
|
815
|
+
transValue?: string;
|
|
810
816
|
/**
|
|
811
817
|
* Plural forms detected from a conditional (ternary) pattern.
|
|
812
818
|
* When present the transformer emits `t(key, { count: expr })` and the
|
package/types/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|