i18next-cli 1.64.2 → 1.65.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 +1 -1
- package/dist/cjs/cli.js +1 -1
- package/dist/cjs/extractor/core/translation-manager.js +116 -0
- package/dist/cjs/status.js +20 -9
- package/dist/cjs/types-generator.js +5 -1
- package/dist/esm/cli.js +1 -1
- package/dist/esm/extractor/core/translation-manager.js +116 -0
- package/dist/esm/status.js +20 -9
- package/dist/esm/types-generator.js +5 -1
- package/package.json +1 -1
- package/types/extractor/core/translation-manager.d.ts.map +1 -1
- package/types/types-generator.d.ts.map +1 -1
- package/types/types.d.ts +7 -2
- package/types/types.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -800,7 +800,7 @@ export default defineConfig({
|
|
|
800
800
|
|
|
801
801
|
// Namespace and key configuration
|
|
802
802
|
defaultNS: 'translation', // If set to false it will not generate any namespace, useful if i.e. the output is a single language json with 1 namespace (and no nesting).
|
|
803
|
-
fallbackNS: 'fallback', // Namespace to use as fallback when a key is missing in the current namespace for a locale. (default undefined)
|
|
803
|
+
fallbackNS: 'fallback', // Namespace(s) (string or array, like the i18next option) to use as fallback when a key is missing in the current namespace for a locale. Keys already translated in a fallback namespace are not duplicated into other namespace files by `extract`. (default undefined)
|
|
804
804
|
nsSeparator: ':',
|
|
805
805
|
keySeparator: '.', // Or `false` to disable nesting and use flat keys
|
|
806
806
|
contextSeparator: '_',
|
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.65.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
|
|
@@ -940,6 +940,115 @@ function buildNewTranslationsForNs(nsKeys, existingTranslations, config, locale,
|
|
|
940
940
|
}
|
|
941
941
|
return newTranslations;
|
|
942
942
|
}
|
|
943
|
+
/**
|
|
944
|
+
* Moves extracted keys that are already translated in a fallback namespace out
|
|
945
|
+
* of their extracted namespace bucket and into the fallback namespace bucket.
|
|
946
|
+
*
|
|
947
|
+
* Mirrors the i18next runtime lookup order: the requested namespace wins when
|
|
948
|
+
* it has a value for the key, otherwise the fallback namespaces are consulted
|
|
949
|
+
* in order (`fallbackNS` may be a string or an array of strings).
|
|
950
|
+
*
|
|
951
|
+
* Existence is decided against the primary language files on disk:
|
|
952
|
+
* - A key that already has a non-empty value in its own namespace file is an
|
|
953
|
+
* intentional per-namespace override and stays where it was extracted.
|
|
954
|
+
* - Otherwise, the first fallback namespace containing a non-empty value for
|
|
955
|
+
* the key claims it. The key is re-bucketed there so `removeUnusedKeys`
|
|
956
|
+
* treats it as used and preserves it.
|
|
957
|
+
* - Keys found in no fallback namespace are new and stay in their extracted
|
|
958
|
+
* namespace, matching the i18next `saveMissing` behavior.
|
|
959
|
+
*/
|
|
960
|
+
async function reattributeFallbackNsKeys(keysByNS, noNsToken, config, primaryLanguage) {
|
|
961
|
+
const rawFallbackNS = config.extract.fallbackNS;
|
|
962
|
+
const fallbackNamespaces = !rawFallbackNS
|
|
963
|
+
? []
|
|
964
|
+
: (Array.isArray(rawFallbackNS) ? rawFallbackNS : [rawFallbackNS]).filter((ns) => typeof ns === 'string' && ns.length > 0);
|
|
965
|
+
if (fallbackNamespaces.length === 0)
|
|
966
|
+
return;
|
|
967
|
+
const keySeparator = config.extract.keySeparator ?? '.';
|
|
968
|
+
const pluralSeparator = config.extract.pluralSeparator ?? '_';
|
|
969
|
+
// Same merged-output detection as the per-locale loop in getTranslations.
|
|
970
|
+
const shouldMerge = config.extract.mergeNamespaces || (typeof config.extract.output === 'string' ? !config.extract.output.includes('{{namespace}}') : false);
|
|
971
|
+
const mergedPrimaryFile = shouldMerge
|
|
972
|
+
? (await fileUtils.loadTranslationFile(node_path.resolve(process.cwd(), fileUtils.getOutputPath(config.extract.output, primaryLanguage))) || {})
|
|
973
|
+
: null;
|
|
974
|
+
const catalogCache = new Map();
|
|
975
|
+
const loadPrimaryCatalog = async (ns, isFallback) => {
|
|
976
|
+
const cacheKey = `${isFallback ? 'fb' : 'own'}:${ns}`;
|
|
977
|
+
let catalog = catalogCache.get(cacheKey);
|
|
978
|
+
if (!catalog) {
|
|
979
|
+
if (mergedPrimaryFile) {
|
|
980
|
+
// In merged mode the fallback keys may live at the top level when the
|
|
981
|
+
// file is not namespaced (same resolution as the status command).
|
|
982
|
+
catalog = mergedPrimaryFile[ns] ?? (isFallback ? mergedPrimaryFile : {});
|
|
983
|
+
}
|
|
984
|
+
else {
|
|
985
|
+
catalog = await fileUtils.loadTranslationFile(node_path.resolve(process.cwd(), fileUtils.getOutputPath(config.extract.output, primaryLanguage, ns))) || {};
|
|
986
|
+
}
|
|
987
|
+
catalogCache.set(cacheKey, catalog);
|
|
988
|
+
}
|
|
989
|
+
return catalog;
|
|
990
|
+
};
|
|
991
|
+
// Plural categories of the primary language, used to recognise a base
|
|
992
|
+
// count-key (e.g. "item") through its expanded variants ("item_one", …).
|
|
993
|
+
const primaryCardinalCategories = pluralRules.safePluralRules(primaryLanguage, { type: 'cardinal' }).resolvedOptions().pluralCategories;
|
|
994
|
+
const primaryOrdinalCategories = pluralRules.safePluralRules(primaryLanguage, { type: 'ordinal' }).resolvedOptions().pluralCategories;
|
|
995
|
+
const hasTranslation = (catalog, extractedKey) => {
|
|
996
|
+
const isTranslated = (value) => value !== undefined && value !== null && value !== '';
|
|
997
|
+
if (isTranslated(nestedObject.getNestedValue(catalog, extractedKey.key, keySeparator)))
|
|
998
|
+
return true;
|
|
999
|
+
if (extractedKey.hasCount && !config.extract.disablePlurals && !extractedKey.isExpandedPlural) {
|
|
1000
|
+
const categories = extractedKey.isOrdinal ? primaryOrdinalCategories : primaryCardinalCategories;
|
|
1001
|
+
return categories.some(category => {
|
|
1002
|
+
const variant = extractedKey.isOrdinal
|
|
1003
|
+
? `${extractedKey.key}${pluralSeparator}ordinal${pluralSeparator}${category}`
|
|
1004
|
+
: `${extractedKey.key}${pluralSeparator}${category}`;
|
|
1005
|
+
return isTranslated(nestedObject.getNestedValue(catalog, variant, keySeparator));
|
|
1006
|
+
});
|
|
1007
|
+
}
|
|
1008
|
+
return false;
|
|
1009
|
+
};
|
|
1010
|
+
for (const [nsKey, nsKeys] of [...keysByNS.entries()]) {
|
|
1011
|
+
if (nsKey === noNsToken || fallbackNamespaces.includes(nsKey))
|
|
1012
|
+
continue;
|
|
1013
|
+
const ownCatalog = await loadPrimaryCatalog(nsKey, false);
|
|
1014
|
+
const keptKeys = [];
|
|
1015
|
+
for (const extractedKey of nsKeys) {
|
|
1016
|
+
// A key with a real value in its own namespace file is an intentional
|
|
1017
|
+
// per-namespace override — keep extracting it into that namespace.
|
|
1018
|
+
if (hasTranslation(ownCatalog, extractedKey)) {
|
|
1019
|
+
keptKeys.push(extractedKey);
|
|
1020
|
+
continue;
|
|
1021
|
+
}
|
|
1022
|
+
let claimedBy;
|
|
1023
|
+
for (const fallbackNs of fallbackNamespaces) {
|
|
1024
|
+
if (hasTranslation(await loadPrimaryCatalog(fallbackNs, true), extractedKey)) {
|
|
1025
|
+
claimedBy = fallbackNs;
|
|
1026
|
+
break;
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
if (claimedBy) {
|
|
1030
|
+
if (!keysByNS.has(claimedBy))
|
|
1031
|
+
keysByNS.set(claimedBy, []);
|
|
1032
|
+
keysByNS.get(claimedBy).push({ ...extractedKey, ns: claimedBy, nsIsImplicit: false });
|
|
1033
|
+
}
|
|
1034
|
+
else {
|
|
1035
|
+
keptKeys.push(extractedKey);
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
if (keptKeys.length !== nsKeys.length) {
|
|
1039
|
+
if (keptKeys.length > 0) {
|
|
1040
|
+
keysByNS.set(nsKey, keptKeys);
|
|
1041
|
+
}
|
|
1042
|
+
else {
|
|
1043
|
+
// Every key moved to a fallback namespace: drop the bucket so a brand
|
|
1044
|
+
// new (empty) namespace file is not created. If the file already
|
|
1045
|
+
// exists on disk it is still processed via the on-disk namespace scan
|
|
1046
|
+
// and cleaned up by `removeUnusedKeys`.
|
|
1047
|
+
keysByNS.delete(nsKey);
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
943
1052
|
/**
|
|
944
1053
|
* Processes extracted translation keys and generates translation files for all configured locales.
|
|
945
1054
|
*
|
|
@@ -1000,6 +1109,13 @@ async function getTranslations(keys, objectKeys, config, { syncPrimaryWithDefaul
|
|
|
1000
1109
|
for (const ns of ignoreNamespaces) {
|
|
1001
1110
|
keysByNS.delete(ns);
|
|
1002
1111
|
}
|
|
1112
|
+
// Respect fallbackNS (#272): a key extracted for another namespace that is
|
|
1113
|
+
// already translated in a fallback namespace resolves at runtime through the
|
|
1114
|
+
// fallback chain, so it must not be duplicated into that namespace's file.
|
|
1115
|
+
// Re-attribute such keys to the fallback namespace bucket instead — this both
|
|
1116
|
+
// suppresses the duplicate and marks the key as "used" in the fallback
|
|
1117
|
+
// namespace so `removeUnusedKeys` does not prune it there.
|
|
1118
|
+
await reattributeFallbackNsKeys(keysByNS, NO_NS_TOKEN, config, primaryLanguage);
|
|
1003
1119
|
const results = [];
|
|
1004
1120
|
const userIgnore = Array.isArray(config.extract.ignore)
|
|
1005
1121
|
? config.extract.ignore
|
package/dist/cjs/status.js
CHANGED
|
@@ -166,6 +166,10 @@ async function generateStatusReport(config) {
|
|
|
166
166
|
const { allKeys: allExtractedKeys } = await keyFinder.findKeys(config);
|
|
167
167
|
const { secondaryLanguages, keySeparator = '.', defaultNS = 'translation', mergeNamespaces = false, pluralSeparator = '_', contextSeparator = '_', fallbackNS } = config.extract;
|
|
168
168
|
const primaryLanguage = config.extract.primaryLanguage || config.locales[0] || 'en';
|
|
169
|
+
// Normalize fallbackNS like the i18next runtime: string | string[] -> string[]
|
|
170
|
+
const fallbackNamespaces = !fallbackNS
|
|
171
|
+
? []
|
|
172
|
+
: (Array.isArray(fallbackNS) ? fallbackNS : [fallbackNS]).filter((ns) => typeof ns === 'string' && ns.length > 0);
|
|
169
173
|
const keysByNs = new Map();
|
|
170
174
|
for (const key of allExtractedKeys.values()) {
|
|
171
175
|
const ns = key.ns || defaultNS || 'translation';
|
|
@@ -308,15 +312,17 @@ async function generateStatusReport(config) {
|
|
|
308
312
|
// when mergedTranslations[ns] is missing.
|
|
309
313
|
? (mergedTranslations?.[ns] ?? mergedTranslations ?? {})
|
|
310
314
|
: await fileUtils.loadTranslationFile(node_path.resolve(process.cwd(), fileUtils.getOutputPath(config.extract.output, locale, ns))) || {};
|
|
311
|
-
// Load fallbackNS translations if configured
|
|
312
|
-
|
|
313
|
-
|
|
315
|
+
// Load fallbackNS translations if configured (looked up in order, like the i18next runtime)
|
|
316
|
+
const fallbackTranslationsList = [];
|
|
317
|
+
for (const fallbackNs of fallbackNamespaces) {
|
|
318
|
+
if (ns === fallbackNs)
|
|
319
|
+
continue;
|
|
314
320
|
if (mergeNamespaces) {
|
|
315
|
-
// In merged mode, fallbackNS keys are in mergedTranslations under
|
|
316
|
-
|
|
321
|
+
// In merged mode, fallbackNS keys are in mergedTranslations under the fallback namespace
|
|
322
|
+
fallbackTranslationsList.push(mergedTranslations?.[fallbackNs] ?? mergedTranslations ?? {});
|
|
317
323
|
}
|
|
318
324
|
else {
|
|
319
|
-
|
|
325
|
+
fallbackTranslationsList.push(await fileUtils.loadTranslationFile(node_path.resolve(process.cwd(), fileUtils.getOutputPath(config.extract.output, locale, fallbackNs))) || {});
|
|
320
326
|
}
|
|
321
327
|
}
|
|
322
328
|
let translatedInNs = 0;
|
|
@@ -353,9 +359,14 @@ async function generateStatusReport(config) {
|
|
|
353
359
|
// Only fall back when the key is genuinely absent from the primary file.
|
|
354
360
|
// An empty string is intentional (placeholder from extract) — don't hide it.
|
|
355
361
|
let state = primaryState;
|
|
356
|
-
if (primaryState === 'absent'
|
|
357
|
-
const
|
|
358
|
-
|
|
362
|
+
if (primaryState === 'absent') {
|
|
363
|
+
for (const fallbackTranslations of fallbackTranslationsList) {
|
|
364
|
+
const fallbackState = classifyValue(nestedObject.getNestedValue(fallbackTranslations, key, sep));
|
|
365
|
+
if (fallbackState !== 'absent') {
|
|
366
|
+
state = fallbackState;
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
359
370
|
}
|
|
360
371
|
// For the primary language the file itself is the source of values, so an
|
|
361
372
|
// empty placeholder still means the key is present. Only a truly absent
|
|
@@ -191,7 +191,11 @@ ${i18nextResourcesForTs.mergeResourcesAsInterface(resources, { optimize: !!enabl
|
|
|
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
|
const defaultNS = config.extract.defaultNS === false ? 'false' : `'${config.extract.defaultNS || 'translation'}'`;
|
|
194
|
-
const fallbackNS = config.extract.fallbackNS === false
|
|
194
|
+
const fallbackNS = config.extract.fallbackNS === false
|
|
195
|
+
? 'false'
|
|
196
|
+
: Array.isArray(config.extract.fallbackNS)
|
|
197
|
+
? `[${config.extract.fallbackNS.map(ns => `'${ns}'`).join(', ')}]`
|
|
198
|
+
: `'${config.extract.fallbackNS}'`;
|
|
195
199
|
const fileContent = `// This file is automatically generated by i18next-cli, because it was not existing. You can edit it based on your needs: https://www.i18next.com/overview/typescript#custom-type-options
|
|
196
200
|
import type Resources from './${importPath}';
|
|
197
201
|
|
package/dist/esm/cli.js
CHANGED
|
@@ -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.65.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
|
|
@@ -938,6 +938,115 @@ function buildNewTranslationsForNs(nsKeys, existingTranslations, config, locale,
|
|
|
938
938
|
}
|
|
939
939
|
return newTranslations;
|
|
940
940
|
}
|
|
941
|
+
/**
|
|
942
|
+
* Moves extracted keys that are already translated in a fallback namespace out
|
|
943
|
+
* of their extracted namespace bucket and into the fallback namespace bucket.
|
|
944
|
+
*
|
|
945
|
+
* Mirrors the i18next runtime lookup order: the requested namespace wins when
|
|
946
|
+
* it has a value for the key, otherwise the fallback namespaces are consulted
|
|
947
|
+
* in order (`fallbackNS` may be a string or an array of strings).
|
|
948
|
+
*
|
|
949
|
+
* Existence is decided against the primary language files on disk:
|
|
950
|
+
* - A key that already has a non-empty value in its own namespace file is an
|
|
951
|
+
* intentional per-namespace override and stays where it was extracted.
|
|
952
|
+
* - Otherwise, the first fallback namespace containing a non-empty value for
|
|
953
|
+
* the key claims it. The key is re-bucketed there so `removeUnusedKeys`
|
|
954
|
+
* treats it as used and preserves it.
|
|
955
|
+
* - Keys found in no fallback namespace are new and stay in their extracted
|
|
956
|
+
* namespace, matching the i18next `saveMissing` behavior.
|
|
957
|
+
*/
|
|
958
|
+
async function reattributeFallbackNsKeys(keysByNS, noNsToken, config, primaryLanguage) {
|
|
959
|
+
const rawFallbackNS = config.extract.fallbackNS;
|
|
960
|
+
const fallbackNamespaces = !rawFallbackNS
|
|
961
|
+
? []
|
|
962
|
+
: (Array.isArray(rawFallbackNS) ? rawFallbackNS : [rawFallbackNS]).filter((ns) => typeof ns === 'string' && ns.length > 0);
|
|
963
|
+
if (fallbackNamespaces.length === 0)
|
|
964
|
+
return;
|
|
965
|
+
const keySeparator = config.extract.keySeparator ?? '.';
|
|
966
|
+
const pluralSeparator = config.extract.pluralSeparator ?? '_';
|
|
967
|
+
// Same merged-output detection as the per-locale loop in getTranslations.
|
|
968
|
+
const shouldMerge = config.extract.mergeNamespaces || (typeof config.extract.output === 'string' ? !config.extract.output.includes('{{namespace}}') : false);
|
|
969
|
+
const mergedPrimaryFile = shouldMerge
|
|
970
|
+
? (await loadTranslationFile(resolve(process.cwd(), getOutputPath(config.extract.output, primaryLanguage))) || {})
|
|
971
|
+
: null;
|
|
972
|
+
const catalogCache = new Map();
|
|
973
|
+
const loadPrimaryCatalog = async (ns, isFallback) => {
|
|
974
|
+
const cacheKey = `${isFallback ? 'fb' : 'own'}:${ns}`;
|
|
975
|
+
let catalog = catalogCache.get(cacheKey);
|
|
976
|
+
if (!catalog) {
|
|
977
|
+
if (mergedPrimaryFile) {
|
|
978
|
+
// In merged mode the fallback keys may live at the top level when the
|
|
979
|
+
// file is not namespaced (same resolution as the status command).
|
|
980
|
+
catalog = mergedPrimaryFile[ns] ?? (isFallback ? mergedPrimaryFile : {});
|
|
981
|
+
}
|
|
982
|
+
else {
|
|
983
|
+
catalog = await loadTranslationFile(resolve(process.cwd(), getOutputPath(config.extract.output, primaryLanguage, ns))) || {};
|
|
984
|
+
}
|
|
985
|
+
catalogCache.set(cacheKey, catalog);
|
|
986
|
+
}
|
|
987
|
+
return catalog;
|
|
988
|
+
};
|
|
989
|
+
// Plural categories of the primary language, used to recognise a base
|
|
990
|
+
// count-key (e.g. "item") through its expanded variants ("item_one", …).
|
|
991
|
+
const primaryCardinalCategories = safePluralRules(primaryLanguage, { type: 'cardinal' }).resolvedOptions().pluralCategories;
|
|
992
|
+
const primaryOrdinalCategories = safePluralRules(primaryLanguage, { type: 'ordinal' }).resolvedOptions().pluralCategories;
|
|
993
|
+
const hasTranslation = (catalog, extractedKey) => {
|
|
994
|
+
const isTranslated = (value) => value !== undefined && value !== null && value !== '';
|
|
995
|
+
if (isTranslated(getNestedValue(catalog, extractedKey.key, keySeparator)))
|
|
996
|
+
return true;
|
|
997
|
+
if (extractedKey.hasCount && !config.extract.disablePlurals && !extractedKey.isExpandedPlural) {
|
|
998
|
+
const categories = extractedKey.isOrdinal ? primaryOrdinalCategories : primaryCardinalCategories;
|
|
999
|
+
return categories.some(category => {
|
|
1000
|
+
const variant = extractedKey.isOrdinal
|
|
1001
|
+
? `${extractedKey.key}${pluralSeparator}ordinal${pluralSeparator}${category}`
|
|
1002
|
+
: `${extractedKey.key}${pluralSeparator}${category}`;
|
|
1003
|
+
return isTranslated(getNestedValue(catalog, variant, keySeparator));
|
|
1004
|
+
});
|
|
1005
|
+
}
|
|
1006
|
+
return false;
|
|
1007
|
+
};
|
|
1008
|
+
for (const [nsKey, nsKeys] of [...keysByNS.entries()]) {
|
|
1009
|
+
if (nsKey === noNsToken || fallbackNamespaces.includes(nsKey))
|
|
1010
|
+
continue;
|
|
1011
|
+
const ownCatalog = await loadPrimaryCatalog(nsKey, false);
|
|
1012
|
+
const keptKeys = [];
|
|
1013
|
+
for (const extractedKey of nsKeys) {
|
|
1014
|
+
// A key with a real value in its own namespace file is an intentional
|
|
1015
|
+
// per-namespace override — keep extracting it into that namespace.
|
|
1016
|
+
if (hasTranslation(ownCatalog, extractedKey)) {
|
|
1017
|
+
keptKeys.push(extractedKey);
|
|
1018
|
+
continue;
|
|
1019
|
+
}
|
|
1020
|
+
let claimedBy;
|
|
1021
|
+
for (const fallbackNs of fallbackNamespaces) {
|
|
1022
|
+
if (hasTranslation(await loadPrimaryCatalog(fallbackNs, true), extractedKey)) {
|
|
1023
|
+
claimedBy = fallbackNs;
|
|
1024
|
+
break;
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
if (claimedBy) {
|
|
1028
|
+
if (!keysByNS.has(claimedBy))
|
|
1029
|
+
keysByNS.set(claimedBy, []);
|
|
1030
|
+
keysByNS.get(claimedBy).push({ ...extractedKey, ns: claimedBy, nsIsImplicit: false });
|
|
1031
|
+
}
|
|
1032
|
+
else {
|
|
1033
|
+
keptKeys.push(extractedKey);
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
if (keptKeys.length !== nsKeys.length) {
|
|
1037
|
+
if (keptKeys.length > 0) {
|
|
1038
|
+
keysByNS.set(nsKey, keptKeys);
|
|
1039
|
+
}
|
|
1040
|
+
else {
|
|
1041
|
+
// Every key moved to a fallback namespace: drop the bucket so a brand
|
|
1042
|
+
// new (empty) namespace file is not created. If the file already
|
|
1043
|
+
// exists on disk it is still processed via the on-disk namespace scan
|
|
1044
|
+
// and cleaned up by `removeUnusedKeys`.
|
|
1045
|
+
keysByNS.delete(nsKey);
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
941
1050
|
/**
|
|
942
1051
|
* Processes extracted translation keys and generates translation files for all configured locales.
|
|
943
1052
|
*
|
|
@@ -998,6 +1107,13 @@ async function getTranslations(keys, objectKeys, config, { syncPrimaryWithDefaul
|
|
|
998
1107
|
for (const ns of ignoreNamespaces) {
|
|
999
1108
|
keysByNS.delete(ns);
|
|
1000
1109
|
}
|
|
1110
|
+
// Respect fallbackNS (#272): a key extracted for another namespace that is
|
|
1111
|
+
// already translated in a fallback namespace resolves at runtime through the
|
|
1112
|
+
// fallback chain, so it must not be duplicated into that namespace's file.
|
|
1113
|
+
// Re-attribute such keys to the fallback namespace bucket instead — this both
|
|
1114
|
+
// suppresses the duplicate and marks the key as "used" in the fallback
|
|
1115
|
+
// namespace so `removeUnusedKeys` does not prune it there.
|
|
1116
|
+
await reattributeFallbackNsKeys(keysByNS, NO_NS_TOKEN, config, primaryLanguage);
|
|
1001
1117
|
const results = [];
|
|
1002
1118
|
const userIgnore = Array.isArray(config.extract.ignore)
|
|
1003
1119
|
? config.extract.ignore
|
package/dist/esm/status.js
CHANGED
|
@@ -160,6 +160,10 @@ async function generateStatusReport(config) {
|
|
|
160
160
|
const { allKeys: allExtractedKeys } = await findKeys(config);
|
|
161
161
|
const { secondaryLanguages, keySeparator = '.', defaultNS = 'translation', mergeNamespaces = false, pluralSeparator = '_', contextSeparator = '_', fallbackNS } = config.extract;
|
|
162
162
|
const primaryLanguage = config.extract.primaryLanguage || config.locales[0] || 'en';
|
|
163
|
+
// Normalize fallbackNS like the i18next runtime: string | string[] -> string[]
|
|
164
|
+
const fallbackNamespaces = !fallbackNS
|
|
165
|
+
? []
|
|
166
|
+
: (Array.isArray(fallbackNS) ? fallbackNS : [fallbackNS]).filter((ns) => typeof ns === 'string' && ns.length > 0);
|
|
163
167
|
const keysByNs = new Map();
|
|
164
168
|
for (const key of allExtractedKeys.values()) {
|
|
165
169
|
const ns = key.ns || defaultNS || 'translation';
|
|
@@ -302,15 +306,17 @@ async function generateStatusReport(config) {
|
|
|
302
306
|
// when mergedTranslations[ns] is missing.
|
|
303
307
|
? (mergedTranslations?.[ns] ?? mergedTranslations ?? {})
|
|
304
308
|
: await loadTranslationFile(resolve(process.cwd(), getOutputPath(config.extract.output, locale, ns))) || {};
|
|
305
|
-
// Load fallbackNS translations if configured
|
|
306
|
-
|
|
307
|
-
|
|
309
|
+
// Load fallbackNS translations if configured (looked up in order, like the i18next runtime)
|
|
310
|
+
const fallbackTranslationsList = [];
|
|
311
|
+
for (const fallbackNs of fallbackNamespaces) {
|
|
312
|
+
if (ns === fallbackNs)
|
|
313
|
+
continue;
|
|
308
314
|
if (mergeNamespaces) {
|
|
309
|
-
// In merged mode, fallbackNS keys are in mergedTranslations under
|
|
310
|
-
|
|
315
|
+
// In merged mode, fallbackNS keys are in mergedTranslations under the fallback namespace
|
|
316
|
+
fallbackTranslationsList.push(mergedTranslations?.[fallbackNs] ?? mergedTranslations ?? {});
|
|
311
317
|
}
|
|
312
318
|
else {
|
|
313
|
-
|
|
319
|
+
fallbackTranslationsList.push(await loadTranslationFile(resolve(process.cwd(), getOutputPath(config.extract.output, locale, fallbackNs))) || {});
|
|
314
320
|
}
|
|
315
321
|
}
|
|
316
322
|
let translatedInNs = 0;
|
|
@@ -347,9 +353,14 @@ async function generateStatusReport(config) {
|
|
|
347
353
|
// Only fall back when the key is genuinely absent from the primary file.
|
|
348
354
|
// An empty string is intentional (placeholder from extract) — don't hide it.
|
|
349
355
|
let state = primaryState;
|
|
350
|
-
if (primaryState === 'absent'
|
|
351
|
-
const
|
|
352
|
-
|
|
356
|
+
if (primaryState === 'absent') {
|
|
357
|
+
for (const fallbackTranslations of fallbackTranslationsList) {
|
|
358
|
+
const fallbackState = classifyValue(getNestedValue(fallbackTranslations, key, sep));
|
|
359
|
+
if (fallbackState !== 'absent') {
|
|
360
|
+
state = fallbackState;
|
|
361
|
+
break;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
353
364
|
}
|
|
354
365
|
// For the primary language the file itself is the source of values, so an
|
|
355
366
|
// empty placeholder still means the key is present. Only a truly absent
|
|
@@ -184,7 +184,11 @@ ${mergeResourcesAsInterface(resources, { optimize: !!enableSelector, indentation
|
|
|
184
184
|
const importPath = relative(dirname(outputPath), resourcesOutputPath)
|
|
185
185
|
.replace(/\\/g, '/').replace(/\.d\.ts$/, ''); // Make it a valid module path
|
|
186
186
|
const defaultNS = config.extract.defaultNS === false ? 'false' : `'${config.extract.defaultNS || 'translation'}'`;
|
|
187
|
-
const fallbackNS = config.extract.fallbackNS === false
|
|
187
|
+
const fallbackNS = config.extract.fallbackNS === false
|
|
188
|
+
? 'false'
|
|
189
|
+
: Array.isArray(config.extract.fallbackNS)
|
|
190
|
+
? `[${config.extract.fallbackNS.map(ns => `'${ns}'`).join(', ')}]`
|
|
191
|
+
: `'${config.extract.fallbackNS}'`;
|
|
188
192
|
const fileContent = `// This file is automatically generated by i18next-cli, because it was not existing. You can edit it based on your needs: https://www.i18next.com/overview/typescript#custom-type-options
|
|
189
193
|
import type Resources from './${importPath}';
|
|
190
194
|
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation-manager.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/translation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"translation-manager.d.ts","sourceRoot":"","sources":["../../../src/extractor/core/translation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAkrC9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,oBAAoB,EAC5B,EACE,uBAA+B,EAC/B,OAAe,EACf,oBAA4B,EAC5B,MAA4B,EAC7B,GAAE;IACD,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAyK9B"}
|
|
@@ -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,CA2IvD"}
|
package/types/types.d.ts
CHANGED
|
@@ -36,8 +36,13 @@ export interface I18nextToolkitConfig {
|
|
|
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
37
|
*/
|
|
38
38
|
defaultNS?: string | false;
|
|
39
|
-
/**
|
|
40
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Namespace(s) to use as fallback when a key is missing in the current namespace for a locale
|
|
41
|
+
* (like the i18next runtime option, a string or an array of namespaces looked up in order).
|
|
42
|
+
* When set, `extract` will not add a key to another namespace's file if it is already
|
|
43
|
+
* translated in a fallback namespace, and `status` counts such keys as translated.
|
|
44
|
+
*/
|
|
45
|
+
fallbackNS?: string | string[] | false;
|
|
41
46
|
/** Separator for nested keys, or false for flat keys (default: '.') */
|
|
42
47
|
keySeparator?: string | false | null;
|
|
43
48
|
/** Separator between namespace and key, or false to disable (default: ':') */
|
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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"}
|