i18next-cli 1.67.8 → 1.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/cjs/cli.js +6 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/status.js +84 -3
- package/dist/cjs/types-generator.js +35 -1
- package/dist/esm/cli.js +7 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/status.js +84 -4
- package/dist/esm/types-generator.js +35 -1
- package/package.json +1 -1
- package/types/cli.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/status.d.ts +24 -0
- package/types/status.d.ts.map +1 -1
- package/types/types-generator.d.ts.map +1 -1
- package/types/types.d.ts +1 -0
- package/types/types.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -240,6 +240,7 @@ The primary language is checked too: any key used in your code but absent from t
|
|
|
240
240
|
**Options:**
|
|
241
241
|
- `--namespace <ns>, -n <ns>`: Filter the report by a specific namespace.
|
|
242
242
|
- `--hide-translated`: Hide already translated keys in the detailed view, showing only missing translations.
|
|
243
|
+
- `--unused`: Report only unused translation keys — keys present in your translation files that are no longer used in your source code (i.e. what `extract` with `removeUnusedKeys` would delete). Never modifies any files and exits with a non-zero status code when unused keys are found, so it can serve as a dedicated CI check alongside the regular missing-translations check. Note that static analysis cannot detect dynamically constructed keys (e.g. ``t(`error.${code}`)``); to find keys that are truly unused at runtime, see [find unused translations with locize](https://www.locize.com/docs/guides/find-unused-translations).
|
|
243
244
|
|
|
244
245
|
**Usage Examples:**
|
|
245
246
|
|
|
@@ -261,6 +262,12 @@ npx i18next-cli status de --hide-translated
|
|
|
261
262
|
|
|
262
263
|
# Combine options to see only missing translations in a specific namespace
|
|
263
264
|
npx i18next-cli status de --namespace common --hide-translated
|
|
265
|
+
|
|
266
|
+
# Report only unused keys across all locales (read-only, exits 1 when any are found)
|
|
267
|
+
npx i18next-cli status --unused
|
|
268
|
+
|
|
269
|
+
# Report only unused keys in the 'en' files — e.g. as a separate CI check
|
|
270
|
+
npx i18next-cli status en --unused
|
|
264
271
|
```
|
|
265
272
|
|
|
266
273
|
The detailed view provides a rich, at-a-glance summary for each namespace, followed by a list of every key and its translation status.
|
|
@@ -290,6 +297,8 @@ Namespace Progress: [■■■■■■■■■■■■■■■■□□□
|
|
|
290
297
|
### `types`
|
|
291
298
|
Generates TypeScript definitions from your translation files for full type-safety and autocompletion.
|
|
292
299
|
|
|
300
|
+
> **Note:** When `extract.defaultNS` is set to `false`, the generated `defaultNS` is derived from your resource files (i18next's type system cannot express `defaultNS: false`). Adjust the generated `i18next.d.ts` if your runtime i18next config uses a different default namespace.
|
|
301
|
+
|
|
293
302
|
```bash
|
|
294
303
|
npx i18next-cli types [options]
|
|
295
304
|
```
|
package/dist/cjs/cli.js
CHANGED
|
@@ -37,7 +37,7 @@ const program = new commander.Command();
|
|
|
37
37
|
program
|
|
38
38
|
.name('i18next-cli')
|
|
39
39
|
.description('A unified, high-performance i18next CLI.')
|
|
40
|
-
.version('1.
|
|
40
|
+
.version('1.68.0'); // This string is replaced with the actual version at build time by rollup
|
|
41
41
|
// new: global config override option
|
|
42
42
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
43
43
|
program
|
|
@@ -118,6 +118,7 @@ program
|
|
|
118
118
|
.description('Display translation status. Provide a locale for a detailed key-by-key view.')
|
|
119
119
|
.option('-n, --namespace <ns>', 'Filter the status report by a specific namespace')
|
|
120
120
|
.option('--hide-translated', 'Hide already translated keys in the detailed view')
|
|
121
|
+
.option('--unused', 'Report only unused translation keys (read-only; exits 1 when any are found)')
|
|
121
122
|
.action(async (locale, options) => {
|
|
122
123
|
const cfgPath = program.opts().config;
|
|
123
124
|
let config$1 = await config.loadConfig(cfgPath);
|
|
@@ -132,6 +133,10 @@ program
|
|
|
132
133
|
console.log(node_util.styleText('green', 'Project structure detected successfully!'));
|
|
133
134
|
config$1 = detected;
|
|
134
135
|
}
|
|
136
|
+
if (options.unused) {
|
|
137
|
+
await status.runUnusedReport(config$1, { locale, namespace: options.namespace });
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
135
140
|
await status.runStatus(config$1, { detail: locale, namespace: options.namespace, hideTranslated: !!options.hideTranslated });
|
|
136
141
|
});
|
|
137
142
|
program
|
package/dist/cjs/index.js
CHANGED
|
@@ -30,6 +30,7 @@ exports.recommendedAcceptedTags = linter.recommendedAcceptedTags;
|
|
|
30
30
|
exports.runLinter = linter.runLinter;
|
|
31
31
|
exports.runSyncer = syncer.runSyncer;
|
|
32
32
|
exports.runStatus = status.runStatus;
|
|
33
|
+
exports.runUnusedReport = status.runUnusedReport;
|
|
33
34
|
exports.runTypesGenerator = typesGenerator.runTypesGenerator;
|
|
34
35
|
exports.runRenameKey = renameKey.runRenameKey;
|
|
35
36
|
exports.runInstrumenter = instrumenter.runInstrumenter;
|
package/dist/cjs/status.js
CHANGED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
var node_util = require('node:util');
|
|
4
4
|
var ora = require('ora');
|
|
5
5
|
var node_path = require('node:path');
|
|
6
|
-
require('
|
|
7
|
-
require('node:fs/promises');
|
|
6
|
+
var extractor = require('./extractor/core/extractor.js');
|
|
8
7
|
var keyFinder = require('./extractor/core/key-finder.js');
|
|
9
8
|
require('glob');
|
|
10
9
|
var nestedObject = require('./utils/nested-object.js');
|
|
@@ -12,8 +11,8 @@ var fileUtils = require('./utils/file-utils.js');
|
|
|
12
11
|
var pluralRules = require('./utils/plural-rules.js');
|
|
13
12
|
var nesting = require('./utils/nesting.js');
|
|
14
13
|
var contextVariants = require('./utils/context-variants.js');
|
|
15
|
-
var funnelMsgTracker = require('./utils/funnel-msg-tracker.js');
|
|
16
14
|
require('node:module');
|
|
15
|
+
var funnelMsgTracker = require('./utils/funnel-msg-tracker.js');
|
|
17
16
|
|
|
18
17
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
18
|
|
|
@@ -738,6 +737,87 @@ function generateProgressBarText(percentage) {
|
|
|
738
737
|
const emptyBars = totalBars - filledBars;
|
|
739
738
|
return `[${node_util.styleText('green', ''.padStart(filledBars, '■'))}${''.padStart(emptyBars, '□')}]`;
|
|
740
739
|
}
|
|
740
|
+
/**
|
|
741
|
+
* Reports translation keys that exist in the translation files but are no
|
|
742
|
+
* longer used in the source code (see issue #281).
|
|
743
|
+
*
|
|
744
|
+
* "Unused" is defined as "what `extract` with `removeUnusedKeys` would delete":
|
|
745
|
+
* the report runs the extractor in dry-run mode and diffs the existing key set
|
|
746
|
+
* against the pruned result. This inherits all of extract's edge-case handling
|
|
747
|
+
* (plural variants, context variants, `preservePatterns`, `ignoreNamespaces`)
|
|
748
|
+
* instead of re-implementing usedness detection that could drift from it.
|
|
749
|
+
*
|
|
750
|
+
* The command never writes any files and exits with a non-zero status code
|
|
751
|
+
* when unused keys are found, so it can serve as a dedicated CI check
|
|
752
|
+
* alongside `status <locale>` (missing translations).
|
|
753
|
+
*/
|
|
754
|
+
async function runUnusedReport(config, options = {}) {
|
|
755
|
+
if (options.locale && !config.locales.includes(options.locale)) {
|
|
756
|
+
console.error(node_util.styleText('red', `Error: Locale "${options.locale}" is not defined in your configuration.`));
|
|
757
|
+
process.exit(1);
|
|
758
|
+
return;
|
|
759
|
+
}
|
|
760
|
+
// Work on a copy with `removeUnusedKeys` forced on: the dry-run diff below
|
|
761
|
+
// derives "unused" from what extract would prune, which requires pruning to
|
|
762
|
+
// be active regardless of the user's config. The caller's config object
|
|
763
|
+
// stays untouched.
|
|
764
|
+
const cfg = { ...config, extract: { ...config.extract, removeUnusedKeys: true } };
|
|
765
|
+
const spinner = ora__default.default('Analyzing project for unused translation keys...\n').start();
|
|
766
|
+
let extraction;
|
|
767
|
+
try {
|
|
768
|
+
extraction = await extractor.runExtractor(cfg, { isDryRun: true, quiet: true });
|
|
769
|
+
spinner.succeed('Analysis complete.');
|
|
770
|
+
}
|
|
771
|
+
catch (error) {
|
|
772
|
+
spinner.fail('Failed to analyze unused translation keys.');
|
|
773
|
+
console.error(error);
|
|
774
|
+
process.exit(1);
|
|
775
|
+
return;
|
|
776
|
+
}
|
|
777
|
+
const { results, hasErrors } = extraction;
|
|
778
|
+
const rawSep = cfg.extract.keySeparator;
|
|
779
|
+
const keySeparator = rawSep === false ? false : (rawSep ?? '.');
|
|
780
|
+
let totalUnused = 0;
|
|
781
|
+
for (const result of results) {
|
|
782
|
+
if (options.locale && result.locale !== options.locale)
|
|
783
|
+
continue;
|
|
784
|
+
if (options.namespace && result.namespace && result.namespace !== options.namespace)
|
|
785
|
+
continue;
|
|
786
|
+
const keptKeys = new Set(nestedObject.getNestedKeys(result.newTranslations || {}, keySeparator));
|
|
787
|
+
const unusedKeys = nestedObject.getNestedKeys(result.existingTranslations || {}, keySeparator)
|
|
788
|
+
.filter(key => !keptKeys.has(key))
|
|
789
|
+
.sort();
|
|
790
|
+
if (unusedKeys.length === 0)
|
|
791
|
+
continue;
|
|
792
|
+
totalUnused += unusedKeys.length;
|
|
793
|
+
const label = result.namespace ? `${result.locale}/${result.namespace}` : result.locale;
|
|
794
|
+
console.log(node_util.styleText(['cyan', 'bold'], `\n[${label}] ${result.path}`));
|
|
795
|
+
for (const key of unusedKeys) {
|
|
796
|
+
console.log(` ${node_util.styleText('red', '✗')} ${key}`);
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
if (hasErrors) {
|
|
800
|
+
console.log(node_util.styleText(['yellow', 'bold'], '\n⚠ Some source files could not be parsed — keys used only in those files may be falsely reported as unused.'));
|
|
801
|
+
}
|
|
802
|
+
if (totalUnused > 0) {
|
|
803
|
+
console.log(node_util.styleText(['yellow', 'bold'], `\nSummary: Found ${totalUnused} unused key(s)${options.locale ? ` for "${options.locale}"` : ''}. No files were modified.`));
|
|
804
|
+
console.log(`Run ${node_util.styleText('cyan', 'npx i18next-cli extract')} to remove them.`);
|
|
805
|
+
}
|
|
806
|
+
else {
|
|
807
|
+
console.log(node_util.styleText(['green', 'bold'], '\nSummary: 🎉 No unused keys found.'));
|
|
808
|
+
}
|
|
809
|
+
// Static analysis has an inherent blind spot for dynamically constructed
|
|
810
|
+
// keys, so this link doubles as an accuracy disclaimer. Gated like the other
|
|
811
|
+
// funnel messages (never in CI/non-TTY, 24h cooldown).
|
|
812
|
+
if (await funnelMsgTracker.shouldShowFunnel('status-unused')) {
|
|
813
|
+
console.log(node_util.styleText('gray', "\nℹ Static analysis cannot detect dynamically constructed keys (e.g. t('error.' + code))."));
|
|
814
|
+
console.log(node_util.styleText('gray', ' To find keys that are truly unused at runtime, see https://www.locize.com/docs/guides/find-unused-translations'));
|
|
815
|
+
await funnelMsgTracker.recordFunnelShown('status-unused');
|
|
816
|
+
}
|
|
817
|
+
if (totalUnused > 0 || hasErrors) {
|
|
818
|
+
process.exit(1);
|
|
819
|
+
}
|
|
820
|
+
}
|
|
741
821
|
async function printLocizeFunnel() {
|
|
742
822
|
if (!(await funnelMsgTracker.shouldShowFunnel('status')))
|
|
743
823
|
return;
|
|
@@ -748,3 +828,4 @@ async function printLocizeFunnel() {
|
|
|
748
828
|
}
|
|
749
829
|
|
|
750
830
|
exports.runStatus = runStatus;
|
|
831
|
+
exports.runUnusedReport = runUnusedReport;
|
|
@@ -190,7 +190,41 @@ ${i18nextResourcesForTs.mergeResourcesAsInterface(resources, { optimize: !!enabl
|
|
|
190
190
|
// The main output file will now import from the resources file
|
|
191
191
|
const importPath = node_path.relative(node_path.dirname(outputPath), resourcesOutputPath)
|
|
192
192
|
.replace(/\\/g, '/').replace(/\.d\.ts$/, ''); // Make it a valid module path
|
|
193
|
-
|
|
193
|
+
// i18next's type system cannot resolve keys for `defaultNS: false` —
|
|
194
|
+
// `t()` would silently accept any string. When `extract.defaultNS` is
|
|
195
|
+
// disabled, derive the default namespace from the generated resources
|
|
196
|
+
// instead, so the generated types stay self-consistent.
|
|
197
|
+
let defaultNS = `'${config.extract.defaultNS || 'translation'}'`;
|
|
198
|
+
if (config.extract.defaultNS === false) {
|
|
199
|
+
const sortedNamespaces = [...new Set(resources.map(r => r.name))].sort();
|
|
200
|
+
// Namespaces resolved outside types.basePath already warn above; rank
|
|
201
|
+
// them last so a valid sibling wins the pick, but keep them derivable —
|
|
202
|
+
// they are real keys of the generated Resources interface.
|
|
203
|
+
const resourceNamespaces = [
|
|
204
|
+
...sortedNamespaces.filter(ns => !ns.startsWith('..')),
|
|
205
|
+
...sortedNamespaces.filter(ns => ns.startsWith('..')),
|
|
206
|
+
];
|
|
207
|
+
// Files named after locales (e.g. locales/en.json) carry no namespace
|
|
208
|
+
// information. A single one is still a usable default, but multiple
|
|
209
|
+
// would turn sibling languages into namespaces — keep `false` then.
|
|
210
|
+
// A single locale-named sibling is enough to tell the layout apart:
|
|
211
|
+
// types.input may well match more languages than `locales` lists.
|
|
212
|
+
const onlyLocaleNames = resourceNamespaces.length > 1 && resourceNamespaces.some(ns => config.locales.includes(ns));
|
|
213
|
+
if (resourceNamespaces.length === 0) {
|
|
214
|
+
defaultNS = 'false';
|
|
215
|
+
}
|
|
216
|
+
else if (onlyLocaleNames) {
|
|
217
|
+
internalLogger.warn(node_util.styleText('yellow', 'Warning: extract.defaultNS is disabled and your resource files are named after locales, so no namespace could be derived for the generated definitions — defaultNS stays false and t() will not be type-checked. Consider adjusting types.input or types.basePath.'));
|
|
218
|
+
defaultNS = 'false';
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// Unprefixed keys resolve against a single default namespace, so a
|
|
222
|
+
// single name is emitted; prefer the conventional 'translation'.
|
|
223
|
+
const effectiveDefault = resourceNamespaces.includes('translation') ? 'translation' : resourceNamespaces[0];
|
|
224
|
+
internalLogger.warn(node_util.styleText('yellow', `Warning: extract.defaultNS is disabled, so defaultNS was derived from your resource files ('${effectiveDefault}'). Adjust the generated definitions if your runtime i18next config uses a different default namespace.`));
|
|
225
|
+
defaultNS = `'${effectiveDefault}'`;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
194
228
|
const fallbackNS = config.extract.fallbackNS === false
|
|
195
229
|
? 'false'
|
|
196
230
|
: Array.isArray(config.extract.fallbackNS)
|
package/dist/esm/cli.js
CHANGED
|
@@ -19,7 +19,7 @@ import { runSyncer } from './syncer.js';
|
|
|
19
19
|
import { runMigrator } from './migrator.js';
|
|
20
20
|
import { runInit } from './init.js';
|
|
21
21
|
import { runLinterCli } from './linter.js';
|
|
22
|
-
import { runStatus } from './status.js';
|
|
22
|
+
import { runUnusedReport, runStatus } from './status.js';
|
|
23
23
|
import { runLocizeSync, runLocizeDownload, runLocizeMigrate } from './locize.js';
|
|
24
24
|
import { runRenameKey } from './rename-key.js';
|
|
25
25
|
import { runInstrumenter } from './instrumenter/core/instrumenter.js';
|
|
@@ -31,7 +31,7 @@ const program = new Command();
|
|
|
31
31
|
program
|
|
32
32
|
.name('i18next-cli')
|
|
33
33
|
.description('A unified, high-performance i18next CLI.')
|
|
34
|
-
.version('1.
|
|
34
|
+
.version('1.68.0'); // 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
|
|
@@ -112,6 +112,7 @@ program
|
|
|
112
112
|
.description('Display translation status. Provide a locale for a detailed key-by-key view.')
|
|
113
113
|
.option('-n, --namespace <ns>', 'Filter the status report by a specific namespace')
|
|
114
114
|
.option('--hide-translated', 'Hide already translated keys in the detailed view')
|
|
115
|
+
.option('--unused', 'Report only unused translation keys (read-only; exits 1 when any are found)')
|
|
115
116
|
.action(async (locale, options) => {
|
|
116
117
|
const cfgPath = program.opts().config;
|
|
117
118
|
let config = await loadConfig(cfgPath);
|
|
@@ -126,6 +127,10 @@ program
|
|
|
126
127
|
console.log(styleText('green', 'Project structure detected successfully!'));
|
|
127
128
|
config = detected;
|
|
128
129
|
}
|
|
130
|
+
if (options.unused) {
|
|
131
|
+
await runUnusedReport(config, { locale, namespace: options.namespace });
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
129
134
|
await runStatus(config, { detail: locale, namespace: options.namespace, hideTranslated: !!options.hideTranslated });
|
|
130
135
|
});
|
|
131
136
|
program
|
package/dist/esm/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export { getTranslations } from './extractor/core/translation-manager.js';
|
|
|
5
5
|
import 'node:module';
|
|
6
6
|
export { recommendedAcceptedAttributes, recommendedAcceptedTags, runLinter } from './linter.js';
|
|
7
7
|
export { runSyncer } from './syncer.js';
|
|
8
|
-
export { runStatus } from './status.js';
|
|
8
|
+
export { runStatus, runUnusedReport } from './status.js';
|
|
9
9
|
export { runTypesGenerator } from './types-generator.js';
|
|
10
10
|
export { runRenameKey } from './rename-key.js';
|
|
11
11
|
export { runInstrumenter, writeExtractedKeys } from './instrumenter/core/instrumenter.js';
|
package/dist/esm/status.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { styleText } from 'node:util';
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import '
|
|
5
|
-
import 'node:fs/promises';
|
|
4
|
+
import { runExtractor } from './extractor/core/extractor.js';
|
|
6
5
|
import { findKeys } from './extractor/core/key-finder.js';
|
|
7
6
|
import 'glob';
|
|
8
7
|
import { getNestedKeys, getNestedValue } from './utils/nested-object.js';
|
|
@@ -10,8 +9,8 @@ import { loadTranslationFile, getOutputPath } from './utils/file-utils.js';
|
|
|
10
9
|
import { safePluralRules } from './utils/plural-rules.js';
|
|
11
10
|
import { parseNestedReferences } from './utils/nesting.js';
|
|
12
11
|
import { isContextVariantOfAcceptingKey } from './utils/context-variants.js';
|
|
13
|
-
import { shouldShowFunnel, recordFunnelShown } from './utils/funnel-msg-tracker.js';
|
|
14
12
|
import 'node:module';
|
|
13
|
+
import { shouldShowFunnel, recordFunnelShown } from './utils/funnel-msg-tracker.js';
|
|
15
14
|
|
|
16
15
|
function classifyValue(value) {
|
|
17
16
|
if (value === undefined || value === null)
|
|
@@ -732,6 +731,87 @@ function generateProgressBarText(percentage) {
|
|
|
732
731
|
const emptyBars = totalBars - filledBars;
|
|
733
732
|
return `[${styleText('green', ''.padStart(filledBars, '■'))}${''.padStart(emptyBars, '□')}]`;
|
|
734
733
|
}
|
|
734
|
+
/**
|
|
735
|
+
* Reports translation keys that exist in the translation files but are no
|
|
736
|
+
* longer used in the source code (see issue #281).
|
|
737
|
+
*
|
|
738
|
+
* "Unused" is defined as "what `extract` with `removeUnusedKeys` would delete":
|
|
739
|
+
* the report runs the extractor in dry-run mode and diffs the existing key set
|
|
740
|
+
* against the pruned result. This inherits all of extract's edge-case handling
|
|
741
|
+
* (plural variants, context variants, `preservePatterns`, `ignoreNamespaces`)
|
|
742
|
+
* instead of re-implementing usedness detection that could drift from it.
|
|
743
|
+
*
|
|
744
|
+
* The command never writes any files and exits with a non-zero status code
|
|
745
|
+
* when unused keys are found, so it can serve as a dedicated CI check
|
|
746
|
+
* alongside `status <locale>` (missing translations).
|
|
747
|
+
*/
|
|
748
|
+
async function runUnusedReport(config, options = {}) {
|
|
749
|
+
if (options.locale && !config.locales.includes(options.locale)) {
|
|
750
|
+
console.error(styleText('red', `Error: Locale "${options.locale}" is not defined in your configuration.`));
|
|
751
|
+
process.exit(1);
|
|
752
|
+
return;
|
|
753
|
+
}
|
|
754
|
+
// Work on a copy with `removeUnusedKeys` forced on: the dry-run diff below
|
|
755
|
+
// derives "unused" from what extract would prune, which requires pruning to
|
|
756
|
+
// be active regardless of the user's config. The caller's config object
|
|
757
|
+
// stays untouched.
|
|
758
|
+
const cfg = { ...config, extract: { ...config.extract, removeUnusedKeys: true } };
|
|
759
|
+
const spinner = ora('Analyzing project for unused translation keys...\n').start();
|
|
760
|
+
let extraction;
|
|
761
|
+
try {
|
|
762
|
+
extraction = await runExtractor(cfg, { isDryRun: true, quiet: true });
|
|
763
|
+
spinner.succeed('Analysis complete.');
|
|
764
|
+
}
|
|
765
|
+
catch (error) {
|
|
766
|
+
spinner.fail('Failed to analyze unused translation keys.');
|
|
767
|
+
console.error(error);
|
|
768
|
+
process.exit(1);
|
|
769
|
+
return;
|
|
770
|
+
}
|
|
771
|
+
const { results, hasErrors } = extraction;
|
|
772
|
+
const rawSep = cfg.extract.keySeparator;
|
|
773
|
+
const keySeparator = rawSep === false ? false : (rawSep ?? '.');
|
|
774
|
+
let totalUnused = 0;
|
|
775
|
+
for (const result of results) {
|
|
776
|
+
if (options.locale && result.locale !== options.locale)
|
|
777
|
+
continue;
|
|
778
|
+
if (options.namespace && result.namespace && result.namespace !== options.namespace)
|
|
779
|
+
continue;
|
|
780
|
+
const keptKeys = new Set(getNestedKeys(result.newTranslations || {}, keySeparator));
|
|
781
|
+
const unusedKeys = getNestedKeys(result.existingTranslations || {}, keySeparator)
|
|
782
|
+
.filter(key => !keptKeys.has(key))
|
|
783
|
+
.sort();
|
|
784
|
+
if (unusedKeys.length === 0)
|
|
785
|
+
continue;
|
|
786
|
+
totalUnused += unusedKeys.length;
|
|
787
|
+
const label = result.namespace ? `${result.locale}/${result.namespace}` : result.locale;
|
|
788
|
+
console.log(styleText(['cyan', 'bold'], `\n[${label}] ${result.path}`));
|
|
789
|
+
for (const key of unusedKeys) {
|
|
790
|
+
console.log(` ${styleText('red', '✗')} ${key}`);
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
if (hasErrors) {
|
|
794
|
+
console.log(styleText(['yellow', 'bold'], '\n⚠ Some source files could not be parsed — keys used only in those files may be falsely reported as unused.'));
|
|
795
|
+
}
|
|
796
|
+
if (totalUnused > 0) {
|
|
797
|
+
console.log(styleText(['yellow', 'bold'], `\nSummary: Found ${totalUnused} unused key(s)${options.locale ? ` for "${options.locale}"` : ''}. No files were modified.`));
|
|
798
|
+
console.log(`Run ${styleText('cyan', 'npx i18next-cli extract')} to remove them.`);
|
|
799
|
+
}
|
|
800
|
+
else {
|
|
801
|
+
console.log(styleText(['green', 'bold'], '\nSummary: 🎉 No unused keys found.'));
|
|
802
|
+
}
|
|
803
|
+
// Static analysis has an inherent blind spot for dynamically constructed
|
|
804
|
+
// keys, so this link doubles as an accuracy disclaimer. Gated like the other
|
|
805
|
+
// funnel messages (never in CI/non-TTY, 24h cooldown).
|
|
806
|
+
if (await shouldShowFunnel('status-unused')) {
|
|
807
|
+
console.log(styleText('gray', "\nℹ Static analysis cannot detect dynamically constructed keys (e.g. t('error.' + code))."));
|
|
808
|
+
console.log(styleText('gray', ' To find keys that are truly unused at runtime, see https://www.locize.com/docs/guides/find-unused-translations'));
|
|
809
|
+
await recordFunnelShown('status-unused');
|
|
810
|
+
}
|
|
811
|
+
if (totalUnused > 0 || hasErrors) {
|
|
812
|
+
process.exit(1);
|
|
813
|
+
}
|
|
814
|
+
}
|
|
735
815
|
async function printLocizeFunnel() {
|
|
736
816
|
if (!(await shouldShowFunnel('status')))
|
|
737
817
|
return;
|
|
@@ -741,4 +821,4 @@ async function printLocizeFunnel() {
|
|
|
741
821
|
return recordFunnelShown('status');
|
|
742
822
|
}
|
|
743
823
|
|
|
744
|
-
export { runStatus };
|
|
824
|
+
export { runStatus, runUnusedReport };
|
|
@@ -183,7 +183,41 @@ ${mergeResourcesAsInterface(resources, { optimize: !!enableSelector, indentation
|
|
|
183
183
|
// The main output file will now import from the resources file
|
|
184
184
|
const importPath = relative(dirname(outputPath), resourcesOutputPath)
|
|
185
185
|
.replace(/\\/g, '/').replace(/\.d\.ts$/, ''); // Make it a valid module path
|
|
186
|
-
|
|
186
|
+
// i18next's type system cannot resolve keys for `defaultNS: false` —
|
|
187
|
+
// `t()` would silently accept any string. When `extract.defaultNS` is
|
|
188
|
+
// disabled, derive the default namespace from the generated resources
|
|
189
|
+
// instead, so the generated types stay self-consistent.
|
|
190
|
+
let defaultNS = `'${config.extract.defaultNS || 'translation'}'`;
|
|
191
|
+
if (config.extract.defaultNS === false) {
|
|
192
|
+
const sortedNamespaces = [...new Set(resources.map(r => r.name))].sort();
|
|
193
|
+
// Namespaces resolved outside types.basePath already warn above; rank
|
|
194
|
+
// them last so a valid sibling wins the pick, but keep them derivable —
|
|
195
|
+
// they are real keys of the generated Resources interface.
|
|
196
|
+
const resourceNamespaces = [
|
|
197
|
+
...sortedNamespaces.filter(ns => !ns.startsWith('..')),
|
|
198
|
+
...sortedNamespaces.filter(ns => ns.startsWith('..')),
|
|
199
|
+
];
|
|
200
|
+
// Files named after locales (e.g. locales/en.json) carry no namespace
|
|
201
|
+
// information. A single one is still a usable default, but multiple
|
|
202
|
+
// would turn sibling languages into namespaces — keep `false` then.
|
|
203
|
+
// A single locale-named sibling is enough to tell the layout apart:
|
|
204
|
+
// types.input may well match more languages than `locales` lists.
|
|
205
|
+
const onlyLocaleNames = resourceNamespaces.length > 1 && resourceNamespaces.some(ns => config.locales.includes(ns));
|
|
206
|
+
if (resourceNamespaces.length === 0) {
|
|
207
|
+
defaultNS = 'false';
|
|
208
|
+
}
|
|
209
|
+
else if (onlyLocaleNames) {
|
|
210
|
+
internalLogger.warn(styleText('yellow', 'Warning: extract.defaultNS is disabled and your resource files are named after locales, so no namespace could be derived for the generated definitions — defaultNS stays false and t() will not be type-checked. Consider adjusting types.input or types.basePath.'));
|
|
211
|
+
defaultNS = 'false';
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
// Unprefixed keys resolve against a single default namespace, so a
|
|
215
|
+
// single name is emitted; prefer the conventional 'translation'.
|
|
216
|
+
const effectiveDefault = resourceNamespaces.includes('translation') ? 'translation' : resourceNamespaces[0];
|
|
217
|
+
internalLogger.warn(styleText('yellow', `Warning: extract.defaultNS is disabled, so defaultNS was derived from your resource files ('${effectiveDefault}'). Adjust the generated definitions if your runtime i18next config uses a different default namespace.`));
|
|
218
|
+
defaultNS = `'${effectiveDefault}'`;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
187
221
|
const fallbackNS = config.extract.fallbackNS === false
|
|
188
222
|
? 'false'
|
|
189
223
|
: Array.isArray(config.extract.fallbackNS)
|
package/package.json
CHANGED
package/types/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqBnC,QAAA,MAAM,OAAO,SAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqBnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AAid7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
package/types/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { defineConfig } from './config.js';
|
|
|
3
3
|
export { extract, findKeys, getTranslations, runExtractor } from './extractor.js';
|
|
4
4
|
export { runLinter, recommendedAcceptedTags, recommendedAcceptedAttributes } from './linter.js';
|
|
5
5
|
export { runSyncer } from './syncer.js';
|
|
6
|
-
export { runStatus } from './status.js';
|
|
6
|
+
export { runStatus, runUnusedReport } from './status.js';
|
|
7
7
|
export { runTypesGenerator } from './types-generator.js';
|
|
8
8
|
export { runRenameKey } from './rename-key.js';
|
|
9
9
|
export { runInstrumenter, writeExtractedKeys } from './instrumenter/index.js';
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EACL,OAAO,EACP,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EACL,OAAO,EACP,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA"}
|
package/types/status.d.ts
CHANGED
|
@@ -30,5 +30,29 @@ interface StatusOptions {
|
|
|
30
30
|
* @throws {Error} When unable to extract keys or read translation files
|
|
31
31
|
*/
|
|
32
32
|
export declare function runStatus(config: I18nextToolkitConfig, options?: StatusOptions): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Options for the unused-keys report.
|
|
35
|
+
*/
|
|
36
|
+
interface UnusedOptions {
|
|
37
|
+
/** Restrict the report to a single locale */
|
|
38
|
+
locale?: string;
|
|
39
|
+
/** Restrict the report to a single namespace */
|
|
40
|
+
namespace?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Reports translation keys that exist in the translation files but are no
|
|
44
|
+
* longer used in the source code (see issue #281).
|
|
45
|
+
*
|
|
46
|
+
* "Unused" is defined as "what `extract` with `removeUnusedKeys` would delete":
|
|
47
|
+
* the report runs the extractor in dry-run mode and diffs the existing key set
|
|
48
|
+
* against the pruned result. This inherits all of extract's edge-case handling
|
|
49
|
+
* (plural variants, context variants, `preservePatterns`, `ignoreNamespaces`)
|
|
50
|
+
* instead of re-implementing usedness detection that could drift from it.
|
|
51
|
+
*
|
|
52
|
+
* The command never writes any files and exits with a non-zero status code
|
|
53
|
+
* when unused keys are found, so it can serve as a dedicated CI check
|
|
54
|
+
* alongside `status <locale>` (missing translations).
|
|
55
|
+
*/
|
|
56
|
+
export declare function runUnusedReport(config: I18nextToolkitConfig, options?: UnusedOptions): Promise<void>;
|
|
33
57
|
export {};
|
|
34
58
|
//# sourceMappingURL=status.d.ts.map
|
package/types/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAmC,MAAM,YAAY,CAAA;AAOvF;;GAEG;AACH,UAAU,aAAa;IACrB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAyHD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,SAAS,CAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,GAAE,aAAkB,iBAoDzF;AAsnBD;;GAEG;AACH,UAAU,aAAa;IACrB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,GAAE,aAAkB,iBAuE/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-generator.d.ts","sourceRoot":"","sources":["../src/types-generator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AA6E9D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACtE,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"types-generator.d.ts","sourceRoot":"","sources":["../src/types-generator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AA6E9D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACtE,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA2KvD"}
|
package/types/types.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export interface I18nextToolkitConfig {
|
|
|
34
34
|
/**
|
|
35
35
|
* Default namespace when none is specified (default: 'translation').
|
|
36
36
|
* Set to false will not generate any namespace, useful if i.e. the output is a single language json with 1 namespace (and no nesting).
|
|
37
|
+
* When false, the `types` command derives `defaultNS` from the generated resource namespaces, since i18next's type system cannot express `defaultNS: false`.
|
|
37
38
|
*/
|
|
38
39
|
defaultNS?: string | false;
|
|
39
40
|
/**
|
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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"}
|