i18next-cli 1.71.3 → 1.72.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 +8 -0
- package/dist/cjs/cli.js +12 -2
- package/dist/cjs/locize.js +8 -0
- package/dist/cjs/syncer.js +32 -2
- package/dist/cjs/utils/git-changed-keys.js +139 -0
- package/dist/esm/cli.js +12 -2
- package/dist/esm/locize.js +8 -0
- package/dist/esm/syncer.js +32 -2
- package/dist/esm/utils/git-changed-keys.js +130 -0
- package/package.json +1 -1
- package/types/cli.d.ts.map +1 -1
- package/types/locize.d.ts.map +1 -1
- package/types/syncer.d.ts +2 -0
- package/types/syncer.d.ts.map +1 -1
- package/types/types.d.ts +8 -0
- package/types/types.d.ts.map +1 -1
- package/types/utils/git-changed-keys.d.ts +45 -0
- package/types/utils/git-changed-keys.d.ts.map +1 -0
package/README.md
CHANGED
|
@@ -316,6 +316,10 @@ Synchronizes secondary language files against your primary language file, adding
|
|
|
316
316
|
npx i18next-cli sync
|
|
317
317
|
```
|
|
318
318
|
|
|
319
|
+
**Options:**
|
|
320
|
+
- `--changed-only`: Only sync the keys that changed on the current git branch. The primary-language files are diffed against the merge-base with the base branch, and only added/modified keys are propagated to the secondary languages; nothing is removed. Changed keys are scoped per source file (the same bare key name in another namespace does not match), and when any plural variant of a key changed, all its plural forms are included (target languages often need more CLDR plural forms than the source). Requires git and JSON/JSON5/YAML translation files
|
|
321
|
+
- `--base <ref>`: Base branch/ref for `--changed-only` (default: auto-detect `origin/HEAD`, then `main`, then `master`). In CI, make sure the base branch is fetched — e.g. `actions/checkout` with `fetch-depth: 0`
|
|
322
|
+
|
|
319
323
|
### `lint`
|
|
320
324
|
Analyzes your source code for internationalization issues. Can run without a config file.
|
|
321
325
|
|
|
@@ -741,6 +745,8 @@ npx i18next-cli locize-sync [options]
|
|
|
741
745
|
- `--auto-translate <true|false>`: Trigger AI/MT auto-translation of newly synced keys. Requires auto-translation in your Locize project (enabled by default for new projects; runs once the project is subscribed or an AI/MT provider is configured)
|
|
742
746
|
- `--auto-translate-review <true|false>`: Route auto-translated segments through the review workflow for languages that have review enabled
|
|
743
747
|
- `--auto-translate-languages <lng1,lng2>`: Restrict auto-translation to these target languages (defaults to all)
|
|
748
|
+
- `--changed-only`: Only sync and auto-translate the keys that changed on the current git branch compared to the base branch — ideal for translating just a pull request's diff instead of the whole project. The source-language files are diffed against the merge-base with the base branch; key creation, value updates and auto-translation are restricted to those keys, and deletions are skipped. Keys are scoped per namespace file, and when any plural variant of a key changed, all its plural forms are included. Requires git and locize-cli >= 12.7
|
|
749
|
+
- `--base <ref>`: Base branch/ref for `--changed-only` (default: auto-detect `origin/HEAD`, then `main`, then `master`). In CI, make sure the base branch is fetched — e.g. `actions/checkout` with `fetch-depth: 0`
|
|
744
750
|
|
|
745
751
|
The same options can be set persistently in the `locize` block of your config:
|
|
746
752
|
|
|
@@ -753,6 +759,8 @@ export default defineConfig({
|
|
|
753
759
|
autoTranslate: true,
|
|
754
760
|
autoTranslateReview: false,
|
|
755
761
|
autoTranslateLanguages: ['de', 'fr'],
|
|
762
|
+
changedOnly: true, // only sync keys changed vs. the base branch
|
|
763
|
+
changedOnlyBase: 'main', // optional; auto-detected when omitted
|
|
756
764
|
},
|
|
757
765
|
});
|
|
758
766
|
```
|
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.72.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
|
|
@@ -187,10 +187,18 @@ program
|
|
|
187
187
|
.command('sync')
|
|
188
188
|
.description('Synchronize secondary language files with the primary language file.')
|
|
189
189
|
.option('-q, --quiet', 'Suppress spinner and output')
|
|
190
|
+
.option('--changed-only', 'Only sync keys that changed on the current git branch compared to the base branch (requires git). Removals are skipped.')
|
|
191
|
+
.option('--base <ref>', 'Base git branch/ref for --changed-only (default: auto-detect origin/HEAD, then main, then master).')
|
|
190
192
|
.action(async (options) => {
|
|
191
193
|
const cfgPath = program.opts().config;
|
|
192
194
|
const config$1 = await config.ensureConfig(cfgPath);
|
|
193
|
-
|
|
195
|
+
try {
|
|
196
|
+
await syncer.runSyncer(config$1, { quiet: !!options.quiet, changedOnly: !!options.changedOnly, base: options.base });
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
console.error(node_util.styleText('red', error instanceof Error ? error.message : String(error)));
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
194
202
|
});
|
|
195
203
|
program
|
|
196
204
|
.command('migrate-config [configPath]')
|
|
@@ -331,6 +339,8 @@ program
|
|
|
331
339
|
.option('--auto-translate <true|false>', 'Trigger AI/MT auto-translation of newly synced keys (requires auto-translation enabled in your Locize project; on by default for new projects).')
|
|
332
340
|
.option('--auto-translate-review <true|false>', 'Route auto-translated segments through the review workflow for languages that have review enabled.')
|
|
333
341
|
.option('--auto-translate-languages <lng1,lng2>', 'Restrict auto-translation to these target languages (comma separated; defaults to all languages).')
|
|
342
|
+
.option('--changed-only', 'Only sync and auto-translate keys that changed on the current git branch compared to the base branch (requires git; deletions are skipped).')
|
|
343
|
+
.option('--base <ref>', 'Base git branch/ref for --changed-only (default: auto-detect origin/HEAD, then main, then master).')
|
|
334
344
|
.action(async (options) => {
|
|
335
345
|
const cfgPath = program.opts().config;
|
|
336
346
|
const config$1 = await config.ensureConfig(cfgPath);
|
package/dist/cjs/locize.js
CHANGED
|
@@ -236,6 +236,14 @@ function buildArgs(command, config, cliOptions) {
|
|
|
236
236
|
if (languages)
|
|
237
237
|
commandArgs.push('--auto-translate-languages', languages);
|
|
238
238
|
}
|
|
239
|
+
// Requires locize-cli >= 12.7 (older versions reject the unknown option).
|
|
240
|
+
const changedOnly = cliOptions.changedOnly ?? locizeConfig.changedOnly;
|
|
241
|
+
if (changedOnly === true || changedOnly === 'true') {
|
|
242
|
+
commandArgs.push('--changed-only', 'true');
|
|
243
|
+
const gitBase = cliOptions.base ?? locizeConfig.changedOnlyBase;
|
|
244
|
+
if (gitBase)
|
|
245
|
+
commandArgs.push('--base', gitBase);
|
|
246
|
+
}
|
|
239
247
|
}
|
|
240
248
|
// Derive a sensible base path for locize from the configured output.
|
|
241
249
|
// If output is a string template we can strip the language placeholder.
|
package/dist/cjs/syncer.js
CHANGED
|
@@ -11,6 +11,7 @@ var fileUtils = require('./utils/file-utils.js');
|
|
|
11
11
|
var funnelMsgTracker = require('./utils/funnel-msg-tracker.js');
|
|
12
12
|
var nestedObject = require('./utils/nested-object.js');
|
|
13
13
|
var pluralRules = require('./utils/plural-rules.js');
|
|
14
|
+
var gitChangedKeys = require('./utils/git-changed-keys.js');
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Synchronizes translation files across different locales by ensuring all secondary
|
|
@@ -44,6 +45,10 @@ var pluralRules = require('./utils/plural-rules.js');
|
|
|
44
45
|
*/
|
|
45
46
|
async function runSyncer(config, options = {}) {
|
|
46
47
|
const internalLogger = options.logger ?? new logger.ConsoleLogger();
|
|
48
|
+
// Resolved before the try/catch below on purpose: an unusable git setup
|
|
49
|
+
// must fail the command (clear message, non-zero exit) instead of being
|
|
50
|
+
// logged and swallowed like a regular sync error.
|
|
51
|
+
const gitCompare = options.changedOnly ? gitChangedKeys.resolveGitCompareRef(options.base) : null;
|
|
47
52
|
const spinner = wrapOra.createSpinnerLike('Running i18next locale synchronizer...\n', { quiet: !!options.quiet, logger: options.logger });
|
|
48
53
|
try {
|
|
49
54
|
const primaryLanguage = config.extract.primaryLanguage || config.locales[0] || 'en';
|
|
@@ -81,6 +86,23 @@ async function runSyncer(config, options = {}) {
|
|
|
81
86
|
}
|
|
82
87
|
const primaryKeys = nestedObject.getNestedKeys(primaryTranslations, keySeparator ?? '.');
|
|
83
88
|
const primaryKeySet = new Set(primaryKeys);
|
|
89
|
+
// --changed-only: diff this primary file against its state at the git
|
|
90
|
+
// compare ref. The changed set is scoped to THIS file so the same bare
|
|
91
|
+
// key name in another namespace does not cross-match.
|
|
92
|
+
let isChangedKey = null;
|
|
93
|
+
if (gitCompare) {
|
|
94
|
+
const oldContent = gitChangedKeys.readFileAtRef(gitCompare.compareRef, primaryPath);
|
|
95
|
+
const oldTranslations = oldContent === null ? {} : gitChangedKeys.parseTranslationContent(oldContent, primaryPath);
|
|
96
|
+
const changedKeys = new Set();
|
|
97
|
+
for (const key of primaryKeys) {
|
|
98
|
+
const newValue = nestedObject.getNestedValue(primaryTranslations, key, keySeparator ?? '.');
|
|
99
|
+
const oldValue = nestedObject.getNestedValue(oldTranslations, key, keySeparator ?? '.');
|
|
100
|
+
if (oldValue === undefined || JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
|
|
101
|
+
changedKeys.add(key);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
isChangedKey = gitChangedKeys.makeChangedKeyMatcher(changedKeys, config.extract.pluralSeparator ?? '_');
|
|
105
|
+
}
|
|
84
106
|
// 3. For each secondary language, sync the current namespace
|
|
85
107
|
for (const lang of secondaryLanguages) {
|
|
86
108
|
const secondaryPath = fileUtils.getOutputPath(output, lang, ns);
|
|
@@ -170,17 +192,25 @@ async function runSyncer(config, options = {}) {
|
|
|
170
192
|
const existingValue = nestedObject.getNestedValue(existingSecondaryTranslations, key, keySeparator ?? '.');
|
|
171
193
|
// Only preserve non-empty values; an empty string was likely a
|
|
172
194
|
// placeholder left by a previous (buggy) sync run and should not
|
|
173
|
-
// be perpetuated.
|
|
174
|
-
if (existingValue !== '' && existingValue != null) {
|
|
195
|
+
// be perpetuated. Under --changed-only nothing is ever dropped.
|
|
196
|
+
if ((existingValue !== '' && existingValue != null) || isChangedKey) {
|
|
175
197
|
nestedObject.setNestedValue(newSecondaryTranslations, key, existingValue, keySeparator ?? '.');
|
|
176
198
|
handledKeys.add(key);
|
|
177
199
|
}
|
|
178
200
|
}
|
|
201
|
+
else if (isChangedKey) {
|
|
202
|
+
// --changed-only: removals are out of scope, keep obsolete keys as-is
|
|
203
|
+
const existingValue = nestedObject.getNestedValue(existingSecondaryTranslations, key, keySeparator ?? '.');
|
|
204
|
+
nestedObject.setNestedValue(newSecondaryTranslations, key, existingValue, keySeparator ?? '.');
|
|
205
|
+
}
|
|
179
206
|
// else: obsolete key — omit it from the output
|
|
180
207
|
}
|
|
181
208
|
// Pass 2: new primary keys not yet in the secondary file
|
|
182
209
|
for (const key of primaryKeys) {
|
|
183
210
|
if (!handledKeys.has(key)) {
|
|
211
|
+
// --changed-only: only propagate keys that changed on this branch
|
|
212
|
+
if (isChangedKey && !isChangedKey(key))
|
|
213
|
+
continue;
|
|
184
214
|
const primaryValue = nestedObject.getNestedValue(primaryTranslations, key, keySeparator ?? '.');
|
|
185
215
|
const valueToSet = defaultValue.resolveDefaultValue(defaultValue$1, key, ns, lang, primaryValue);
|
|
186
216
|
nestedObject.setNestedValue(newSecondaryTranslations, key, valueToSet, keySeparator ?? '.');
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var node_child_process = require('node:child_process');
|
|
4
|
+
var node_util = require('node:util');
|
|
5
|
+
var node_path = require('node:path');
|
|
6
|
+
var json5Parser = require('@croct/json5-parser');
|
|
7
|
+
var yaml = require('yaml');
|
|
8
|
+
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var yaml__default = /*#__PURE__*/_interopDefault(yaml);
|
|
12
|
+
|
|
13
|
+
const runGit = (args) => node_child_process.execFileSync('git', args, {
|
|
14
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
15
|
+
encoding: 'utf8',
|
|
16
|
+
maxBuffer: 50 * 1024 * 1024,
|
|
17
|
+
});
|
|
18
|
+
const CI_FETCH_HINT = 'In CI, make sure the checkout is not shallow and includes the base branch — e.g. actions/checkout with "fetch-depth: 0".';
|
|
19
|
+
/**
|
|
20
|
+
* Resolves the git ref to compare against for --changed-only.
|
|
21
|
+
*
|
|
22
|
+
* Returns the resolved base branch (for messaging) and the merge-base of that
|
|
23
|
+
* ref and HEAD — the commit where the current branch diverged — so commits
|
|
24
|
+
* landing on the base branch after the branch point are not attributed to this
|
|
25
|
+
* branch (the semantics of `git diff base...HEAD`). Falls back to the base tip
|
|
26
|
+
* when merge-base cannot be computed (e.g. shallow clones).
|
|
27
|
+
*
|
|
28
|
+
* Throws with an actionable message when git is unavailable, the cwd is not
|
|
29
|
+
* inside a repository, or no base ref can be resolved.
|
|
30
|
+
*/
|
|
31
|
+
function resolveGitCompareRef(base) {
|
|
32
|
+
try {
|
|
33
|
+
runGit(['--version']);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
throw new Error('--changed-only requires git, but the "git" command was not found. Install git or remove --changed-only to sync the whole project.');
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
runGit(['rev-parse', '--git-dir']);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
throw new Error(`--changed-only requires a git repository, but "${process.cwd()}" is not inside one. Run the sync inside your repository or remove --changed-only to sync the whole project.`);
|
|
43
|
+
}
|
|
44
|
+
const candidates = base
|
|
45
|
+
? [base, `origin/${base}`]
|
|
46
|
+
: ['origin/HEAD', 'main', 'origin/main', 'master', 'origin/master'];
|
|
47
|
+
let resolvedBase;
|
|
48
|
+
for (const candidate of candidates) {
|
|
49
|
+
try {
|
|
50
|
+
runGit(['rev-parse', '--verify', '--quiet', `${candidate}^{commit}`]);
|
|
51
|
+
resolvedBase = candidate;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
catch { /* try the next candidate */ }
|
|
55
|
+
}
|
|
56
|
+
if (!resolvedBase) {
|
|
57
|
+
if (base) {
|
|
58
|
+
throw new Error(`--changed-only could not resolve the base ref "${base}" (also tried "origin/${base}"). Fetch it first (git fetch origin ${base}). ${CI_FETCH_HINT}`);
|
|
59
|
+
}
|
|
60
|
+
throw new Error(`--changed-only could not auto-detect a base branch (tried origin/HEAD, main and master). Pass one explicitly with --base <ref>. ${CI_FETCH_HINT}`);
|
|
61
|
+
}
|
|
62
|
+
let compareRef;
|
|
63
|
+
try {
|
|
64
|
+
compareRef = runGit(['merge-base', resolvedBase, 'HEAD']).trim();
|
|
65
|
+
}
|
|
66
|
+
catch { /* fall back to the base tip below */ }
|
|
67
|
+
if (!compareRef) {
|
|
68
|
+
console.warn(node_util.styleText('yellow', `could not find the merge-base of ${resolvedBase} and HEAD — comparing against ${resolvedBase} directly. On shallow CI clones (actions/checkout default fetch-depth: 1) deepen the fetch for exact results.`));
|
|
69
|
+
compareRef = resolvedBase;
|
|
70
|
+
}
|
|
71
|
+
return { base: resolvedBase, compareRef };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Returns the content of a file at the given ref, or `null` when the file did
|
|
75
|
+
* not exist there (a file new on this branch). Existence is checked via
|
|
76
|
+
* cat-file's exit code instead of matching `git show`'s stderr, which is
|
|
77
|
+
* localized.
|
|
78
|
+
*/
|
|
79
|
+
function readFileAtRef(compareRef, filePath) {
|
|
80
|
+
const rel = node_path.isAbsolute(filePath) ? node_path.relative(process.cwd(), filePath) : filePath;
|
|
81
|
+
// "./" makes the path relative to the cwd instead of the repo root
|
|
82
|
+
const gitPath = `${compareRef}:./${rel.split(node_path.sep).join('/')}`;
|
|
83
|
+
try {
|
|
84
|
+
runGit(['cat-file', '-e', gitPath]);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return runGit(['show', gitPath]);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Parses translation file content from a string (git blob) using the same
|
|
93
|
+
* parsers as loadTranslationFile. JS/TS resource modules cannot be evaluated
|
|
94
|
+
* from git history, so --changed-only does not support them.
|
|
95
|
+
*/
|
|
96
|
+
function parseTranslationContent(content, filePath) {
|
|
97
|
+
const ext = node_path.extname(filePath).toLowerCase();
|
|
98
|
+
if (ext === '.json')
|
|
99
|
+
return JSON.parse(content);
|
|
100
|
+
if (ext === '.json5')
|
|
101
|
+
return json5Parser.JsonParser.parse(content, json5Parser.JsonObjectNode).toJSON();
|
|
102
|
+
if (ext === '.yaml' || ext === '.yml')
|
|
103
|
+
return yaml__default.default.parse(content);
|
|
104
|
+
throw new Error(`--changed-only cannot diff "${filePath}": only JSON, JSON5 and YAML translation files are supported (JS/TS resource modules cannot be parsed from git history).`);
|
|
105
|
+
}
|
|
106
|
+
const escapeRegExp = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
107
|
+
/**
|
|
108
|
+
* Builds a matcher deciding whether a key belongs to the changed set.
|
|
109
|
+
*
|
|
110
|
+
* Plural grouping: when ANY variant of a base key changed, ALL variants of
|
|
111
|
+
* that base key match. Source and target languages have different CLDR plural
|
|
112
|
+
* category counts (en: one/other; ar: zero..other), so an exact-key match
|
|
113
|
+
* would drop the target-only forms. Covers cardinal and ordinal CLDR suffixes
|
|
114
|
+
* plus the legacy v3 forms (_plural, _0, _1, ...). Kept in sync with the
|
|
115
|
+
* sister copy in locize-cli (src/gitChangedKeys.js).
|
|
116
|
+
*
|
|
117
|
+
* The caller is expected to keep changed sets scoped per source FILE: the same
|
|
118
|
+
* bare key name in two files (e.g. each email template having its own
|
|
119
|
+
* `subject`) must not cross-match.
|
|
120
|
+
*/
|
|
121
|
+
function makeChangedKeyMatcher(changedKeys, pluralSeparator = '_') {
|
|
122
|
+
const s = escapeRegExp(pluralSeparator);
|
|
123
|
+
const pluralSuffixRegex = new RegExp(`(?:${s}ordinal)?${s}(?:zero|one|two|few|many|other|plural|\\d+)$`);
|
|
124
|
+
const baseChanged = new Set();
|
|
125
|
+
for (const key of changedKeys) {
|
|
126
|
+
baseChanged.add(key.replace(pluralSuffixRegex, ''));
|
|
127
|
+
}
|
|
128
|
+
return (key) => {
|
|
129
|
+
if (changedKeys.has(key))
|
|
130
|
+
return true;
|
|
131
|
+
const base = key.replace(pluralSuffixRegex, '');
|
|
132
|
+
return base !== key && baseChanged.has(base);
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
exports.makeChangedKeyMatcher = makeChangedKeyMatcher;
|
|
137
|
+
exports.parseTranslationContent = parseTranslationContent;
|
|
138
|
+
exports.readFileAtRef = readFileAtRef;
|
|
139
|
+
exports.resolveGitCompareRef = resolveGitCompareRef;
|
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.72.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
|
|
@@ -181,10 +181,18 @@ program
|
|
|
181
181
|
.command('sync')
|
|
182
182
|
.description('Synchronize secondary language files with the primary language file.')
|
|
183
183
|
.option('-q, --quiet', 'Suppress spinner and output')
|
|
184
|
+
.option('--changed-only', 'Only sync keys that changed on the current git branch compared to the base branch (requires git). Removals are skipped.')
|
|
185
|
+
.option('--base <ref>', 'Base git branch/ref for --changed-only (default: auto-detect origin/HEAD, then main, then master).')
|
|
184
186
|
.action(async (options) => {
|
|
185
187
|
const cfgPath = program.opts().config;
|
|
186
188
|
const config = await ensureConfig(cfgPath);
|
|
187
|
-
|
|
189
|
+
try {
|
|
190
|
+
await runSyncer(config, { quiet: !!options.quiet, changedOnly: !!options.changedOnly, base: options.base });
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
console.error(styleText('red', error instanceof Error ? error.message : String(error)));
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
188
196
|
});
|
|
189
197
|
program
|
|
190
198
|
.command('migrate-config [configPath]')
|
|
@@ -325,6 +333,8 @@ program
|
|
|
325
333
|
.option('--auto-translate <true|false>', 'Trigger AI/MT auto-translation of newly synced keys (requires auto-translation enabled in your Locize project; on by default for new projects).')
|
|
326
334
|
.option('--auto-translate-review <true|false>', 'Route auto-translated segments through the review workflow for languages that have review enabled.')
|
|
327
335
|
.option('--auto-translate-languages <lng1,lng2>', 'Restrict auto-translation to these target languages (comma separated; defaults to all languages).')
|
|
336
|
+
.option('--changed-only', 'Only sync and auto-translate keys that changed on the current git branch compared to the base branch (requires git; deletions are skipped).')
|
|
337
|
+
.option('--base <ref>', 'Base git branch/ref for --changed-only (default: auto-detect origin/HEAD, then main, then master).')
|
|
328
338
|
.action(async (options) => {
|
|
329
339
|
const cfgPath = program.opts().config;
|
|
330
340
|
const config = await ensureConfig(cfgPath);
|
package/dist/esm/locize.js
CHANGED
|
@@ -229,6 +229,14 @@ function buildArgs(command, config, cliOptions) {
|
|
|
229
229
|
if (languages)
|
|
230
230
|
commandArgs.push('--auto-translate-languages', languages);
|
|
231
231
|
}
|
|
232
|
+
// Requires locize-cli >= 12.7 (older versions reject the unknown option).
|
|
233
|
+
const changedOnly = cliOptions.changedOnly ?? locizeConfig.changedOnly;
|
|
234
|
+
if (changedOnly === true || changedOnly === 'true') {
|
|
235
|
+
commandArgs.push('--changed-only', 'true');
|
|
236
|
+
const gitBase = cliOptions.base ?? locizeConfig.changedOnlyBase;
|
|
237
|
+
if (gitBase)
|
|
238
|
+
commandArgs.push('--base', gitBase);
|
|
239
|
+
}
|
|
232
240
|
}
|
|
233
241
|
// Derive a sensible base path for locize from the configured output.
|
|
234
242
|
// If output is a string template we can strip the language placeholder.
|
package/dist/esm/syncer.js
CHANGED
|
@@ -9,6 +9,7 @@ import { getOutputPath, loadTranslationFile, inferFormatFromPath, loadRawJson5Co
|
|
|
9
9
|
import { shouldShowFunnel, recordFunnelShown } from './utils/funnel-msg-tracker.js';
|
|
10
10
|
import { getNestedKeys, getNestedValue, setNestedValue } from './utils/nested-object.js';
|
|
11
11
|
import { safePluralRules } from './utils/plural-rules.js';
|
|
12
|
+
import { resolveGitCompareRef, readFileAtRef, parseTranslationContent, makeChangedKeyMatcher } from './utils/git-changed-keys.js';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Synchronizes translation files across different locales by ensuring all secondary
|
|
@@ -42,6 +43,10 @@ import { safePluralRules } from './utils/plural-rules.js';
|
|
|
42
43
|
*/
|
|
43
44
|
async function runSyncer(config, options = {}) {
|
|
44
45
|
const internalLogger = options.logger ?? new ConsoleLogger();
|
|
46
|
+
// Resolved before the try/catch below on purpose: an unusable git setup
|
|
47
|
+
// must fail the command (clear message, non-zero exit) instead of being
|
|
48
|
+
// logged and swallowed like a regular sync error.
|
|
49
|
+
const gitCompare = options.changedOnly ? resolveGitCompareRef(options.base) : null;
|
|
45
50
|
const spinner = createSpinnerLike('Running i18next locale synchronizer...\n', { quiet: !!options.quiet, logger: options.logger });
|
|
46
51
|
try {
|
|
47
52
|
const primaryLanguage = config.extract.primaryLanguage || config.locales[0] || 'en';
|
|
@@ -79,6 +84,23 @@ async function runSyncer(config, options = {}) {
|
|
|
79
84
|
}
|
|
80
85
|
const primaryKeys = getNestedKeys(primaryTranslations, keySeparator ?? '.');
|
|
81
86
|
const primaryKeySet = new Set(primaryKeys);
|
|
87
|
+
// --changed-only: diff this primary file against its state at the git
|
|
88
|
+
// compare ref. The changed set is scoped to THIS file so the same bare
|
|
89
|
+
// key name in another namespace does not cross-match.
|
|
90
|
+
let isChangedKey = null;
|
|
91
|
+
if (gitCompare) {
|
|
92
|
+
const oldContent = readFileAtRef(gitCompare.compareRef, primaryPath);
|
|
93
|
+
const oldTranslations = oldContent === null ? {} : parseTranslationContent(oldContent, primaryPath);
|
|
94
|
+
const changedKeys = new Set();
|
|
95
|
+
for (const key of primaryKeys) {
|
|
96
|
+
const newValue = getNestedValue(primaryTranslations, key, keySeparator ?? '.');
|
|
97
|
+
const oldValue = getNestedValue(oldTranslations, key, keySeparator ?? '.');
|
|
98
|
+
if (oldValue === undefined || JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
|
|
99
|
+
changedKeys.add(key);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
isChangedKey = makeChangedKeyMatcher(changedKeys, config.extract.pluralSeparator ?? '_');
|
|
103
|
+
}
|
|
82
104
|
// 3. For each secondary language, sync the current namespace
|
|
83
105
|
for (const lang of secondaryLanguages) {
|
|
84
106
|
const secondaryPath = getOutputPath(output, lang, ns);
|
|
@@ -168,17 +190,25 @@ async function runSyncer(config, options = {}) {
|
|
|
168
190
|
const existingValue = getNestedValue(existingSecondaryTranslations, key, keySeparator ?? '.');
|
|
169
191
|
// Only preserve non-empty values; an empty string was likely a
|
|
170
192
|
// placeholder left by a previous (buggy) sync run and should not
|
|
171
|
-
// be perpetuated.
|
|
172
|
-
if (existingValue !== '' && existingValue != null) {
|
|
193
|
+
// be perpetuated. Under --changed-only nothing is ever dropped.
|
|
194
|
+
if ((existingValue !== '' && existingValue != null) || isChangedKey) {
|
|
173
195
|
setNestedValue(newSecondaryTranslations, key, existingValue, keySeparator ?? '.');
|
|
174
196
|
handledKeys.add(key);
|
|
175
197
|
}
|
|
176
198
|
}
|
|
199
|
+
else if (isChangedKey) {
|
|
200
|
+
// --changed-only: removals are out of scope, keep obsolete keys as-is
|
|
201
|
+
const existingValue = getNestedValue(existingSecondaryTranslations, key, keySeparator ?? '.');
|
|
202
|
+
setNestedValue(newSecondaryTranslations, key, existingValue, keySeparator ?? '.');
|
|
203
|
+
}
|
|
177
204
|
// else: obsolete key — omit it from the output
|
|
178
205
|
}
|
|
179
206
|
// Pass 2: new primary keys not yet in the secondary file
|
|
180
207
|
for (const key of primaryKeys) {
|
|
181
208
|
if (!handledKeys.has(key)) {
|
|
209
|
+
// --changed-only: only propagate keys that changed on this branch
|
|
210
|
+
if (isChangedKey && !isChangedKey(key))
|
|
211
|
+
continue;
|
|
182
212
|
const primaryValue = getNestedValue(primaryTranslations, key, keySeparator ?? '.');
|
|
183
213
|
const valueToSet = resolveDefaultValue(defaultValue, key, ns, lang, primaryValue);
|
|
184
214
|
setNestedValue(newSecondaryTranslations, key, valueToSet, keySeparator ?? '.');
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { styleText } from 'node:util';
|
|
3
|
+
import { isAbsolute, relative, sep, extname } from 'node:path';
|
|
4
|
+
import { JsonParser, JsonObjectNode } from '@croct/json5-parser';
|
|
5
|
+
import yaml from 'yaml';
|
|
6
|
+
|
|
7
|
+
const runGit = (args) => execFileSync('git', args, {
|
|
8
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
9
|
+
encoding: 'utf8',
|
|
10
|
+
maxBuffer: 50 * 1024 * 1024,
|
|
11
|
+
});
|
|
12
|
+
const CI_FETCH_HINT = 'In CI, make sure the checkout is not shallow and includes the base branch — e.g. actions/checkout with "fetch-depth: 0".';
|
|
13
|
+
/**
|
|
14
|
+
* Resolves the git ref to compare against for --changed-only.
|
|
15
|
+
*
|
|
16
|
+
* Returns the resolved base branch (for messaging) and the merge-base of that
|
|
17
|
+
* ref and HEAD — the commit where the current branch diverged — so commits
|
|
18
|
+
* landing on the base branch after the branch point are not attributed to this
|
|
19
|
+
* branch (the semantics of `git diff base...HEAD`). Falls back to the base tip
|
|
20
|
+
* when merge-base cannot be computed (e.g. shallow clones).
|
|
21
|
+
*
|
|
22
|
+
* Throws with an actionable message when git is unavailable, the cwd is not
|
|
23
|
+
* inside a repository, or no base ref can be resolved.
|
|
24
|
+
*/
|
|
25
|
+
function resolveGitCompareRef(base) {
|
|
26
|
+
try {
|
|
27
|
+
runGit(['--version']);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new Error('--changed-only requires git, but the "git" command was not found. Install git or remove --changed-only to sync the whole project.');
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
runGit(['rev-parse', '--git-dir']);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
throw new Error(`--changed-only requires a git repository, but "${process.cwd()}" is not inside one. Run the sync inside your repository or remove --changed-only to sync the whole project.`);
|
|
37
|
+
}
|
|
38
|
+
const candidates = base
|
|
39
|
+
? [base, `origin/${base}`]
|
|
40
|
+
: ['origin/HEAD', 'main', 'origin/main', 'master', 'origin/master'];
|
|
41
|
+
let resolvedBase;
|
|
42
|
+
for (const candidate of candidates) {
|
|
43
|
+
try {
|
|
44
|
+
runGit(['rev-parse', '--verify', '--quiet', `${candidate}^{commit}`]);
|
|
45
|
+
resolvedBase = candidate;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
catch { /* try the next candidate */ }
|
|
49
|
+
}
|
|
50
|
+
if (!resolvedBase) {
|
|
51
|
+
if (base) {
|
|
52
|
+
throw new Error(`--changed-only could not resolve the base ref "${base}" (also tried "origin/${base}"). Fetch it first (git fetch origin ${base}). ${CI_FETCH_HINT}`);
|
|
53
|
+
}
|
|
54
|
+
throw new Error(`--changed-only could not auto-detect a base branch (tried origin/HEAD, main and master). Pass one explicitly with --base <ref>. ${CI_FETCH_HINT}`);
|
|
55
|
+
}
|
|
56
|
+
let compareRef;
|
|
57
|
+
try {
|
|
58
|
+
compareRef = runGit(['merge-base', resolvedBase, 'HEAD']).trim();
|
|
59
|
+
}
|
|
60
|
+
catch { /* fall back to the base tip below */ }
|
|
61
|
+
if (!compareRef) {
|
|
62
|
+
console.warn(styleText('yellow', `could not find the merge-base of ${resolvedBase} and HEAD — comparing against ${resolvedBase} directly. On shallow CI clones (actions/checkout default fetch-depth: 1) deepen the fetch for exact results.`));
|
|
63
|
+
compareRef = resolvedBase;
|
|
64
|
+
}
|
|
65
|
+
return { base: resolvedBase, compareRef };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Returns the content of a file at the given ref, or `null` when the file did
|
|
69
|
+
* not exist there (a file new on this branch). Existence is checked via
|
|
70
|
+
* cat-file's exit code instead of matching `git show`'s stderr, which is
|
|
71
|
+
* localized.
|
|
72
|
+
*/
|
|
73
|
+
function readFileAtRef(compareRef, filePath) {
|
|
74
|
+
const rel = isAbsolute(filePath) ? relative(process.cwd(), filePath) : filePath;
|
|
75
|
+
// "./" makes the path relative to the cwd instead of the repo root
|
|
76
|
+
const gitPath = `${compareRef}:./${rel.split(sep).join('/')}`;
|
|
77
|
+
try {
|
|
78
|
+
runGit(['cat-file', '-e', gitPath]);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return runGit(['show', gitPath]);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parses translation file content from a string (git blob) using the same
|
|
87
|
+
* parsers as loadTranslationFile. JS/TS resource modules cannot be evaluated
|
|
88
|
+
* from git history, so --changed-only does not support them.
|
|
89
|
+
*/
|
|
90
|
+
function parseTranslationContent(content, filePath) {
|
|
91
|
+
const ext = extname(filePath).toLowerCase();
|
|
92
|
+
if (ext === '.json')
|
|
93
|
+
return JSON.parse(content);
|
|
94
|
+
if (ext === '.json5')
|
|
95
|
+
return JsonParser.parse(content, JsonObjectNode).toJSON();
|
|
96
|
+
if (ext === '.yaml' || ext === '.yml')
|
|
97
|
+
return yaml.parse(content);
|
|
98
|
+
throw new Error(`--changed-only cannot diff "${filePath}": only JSON, JSON5 and YAML translation files are supported (JS/TS resource modules cannot be parsed from git history).`);
|
|
99
|
+
}
|
|
100
|
+
const escapeRegExp = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
101
|
+
/**
|
|
102
|
+
* Builds a matcher deciding whether a key belongs to the changed set.
|
|
103
|
+
*
|
|
104
|
+
* Plural grouping: when ANY variant of a base key changed, ALL variants of
|
|
105
|
+
* that base key match. Source and target languages have different CLDR plural
|
|
106
|
+
* category counts (en: one/other; ar: zero..other), so an exact-key match
|
|
107
|
+
* would drop the target-only forms. Covers cardinal and ordinal CLDR suffixes
|
|
108
|
+
* plus the legacy v3 forms (_plural, _0, _1, ...). Kept in sync with the
|
|
109
|
+
* sister copy in locize-cli (src/gitChangedKeys.js).
|
|
110
|
+
*
|
|
111
|
+
* The caller is expected to keep changed sets scoped per source FILE: the same
|
|
112
|
+
* bare key name in two files (e.g. each email template having its own
|
|
113
|
+
* `subject`) must not cross-match.
|
|
114
|
+
*/
|
|
115
|
+
function makeChangedKeyMatcher(changedKeys, pluralSeparator = '_') {
|
|
116
|
+
const s = escapeRegExp(pluralSeparator);
|
|
117
|
+
const pluralSuffixRegex = new RegExp(`(?:${s}ordinal)?${s}(?:zero|one|two|few|many|other|plural|\\d+)$`);
|
|
118
|
+
const baseChanged = new Set();
|
|
119
|
+
for (const key of changedKeys) {
|
|
120
|
+
baseChanged.add(key.replace(pluralSuffixRegex, ''));
|
|
121
|
+
}
|
|
122
|
+
return (key) => {
|
|
123
|
+
if (changedKeys.has(key))
|
|
124
|
+
return true;
|
|
125
|
+
const base = key.replace(pluralSuffixRegex, '');
|
|
126
|
+
return base !== key && baseChanged.has(base);
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export { makeChangedKeyMatcher, parseTranslationContent, readFileAtRef, resolveGitCompareRef };
|
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;AA0d7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
package/types/locize.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locize.d.ts","sourceRoot":"","sources":["../src/locize.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AA0HtD;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;gBAED,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;CAMhF;AAOD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBlD;
|
|
1
|
+
{"version":3,"file":"locize.d.ts","sourceRoot":"","sources":["../src/locize.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AA0HtD;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;gBAED,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;CAMhF;AAOD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBlD;AA2ND,eAAO,MAAM,aAAa,GAAI,QAAQ,oBAAoB,EAAE,aAAa,GAAG,kBAAiD,CAAA;AAC7H,eAAO,MAAM,iBAAiB,GAAI,QAAQ,oBAAoB,EAAE,aAAa,GAAG,kBAAqD,CAAA;AACrI,eAAO,MAAM,gBAAgB,GAAI,QAAQ,oBAAoB,EAAE,aAAa,GAAG,kBAAoD,CAAA"}
|
package/types/syncer.d.ts
CHANGED
|
@@ -32,5 +32,7 @@ import type { I18nextToolkitConfig, Logger } from './types.js';
|
|
|
32
32
|
export declare function runSyncer(config: I18nextToolkitConfig, options?: {
|
|
33
33
|
quiet?: boolean;
|
|
34
34
|
logger?: Logger;
|
|
35
|
+
changedOnly?: boolean;
|
|
36
|
+
base?: string;
|
|
35
37
|
}): Promise<void>;
|
|
36
38
|
//# sourceMappingURL=syncer.d.ts.map
|
package/types/syncer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncer.d.ts","sourceRoot":"","sources":["../src/syncer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"syncer.d.ts","sourceRoot":"","sources":["../src/syncer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAQ9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,oBAAoB,EAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,iBA2NzF"}
|
package/types/types.d.ts
CHANGED
|
@@ -342,6 +342,14 @@ export interface I18nextToolkitConfig {
|
|
|
342
342
|
autoTranslateReview?: boolean;
|
|
343
343
|
/** Restrict auto-translation to these target languages (sync only; defaults to all languages) */
|
|
344
344
|
autoTranslateLanguages?: string[];
|
|
345
|
+
/**
|
|
346
|
+
* Only sync and auto-translate keys that changed on the current git branch
|
|
347
|
+
* compared to the base branch (sync only; requires git and locize-cli >= 12.7).
|
|
348
|
+
* Deletions are skipped.
|
|
349
|
+
*/
|
|
350
|
+
changedOnly?: boolean;
|
|
351
|
+
/** Base git branch/ref for changedOnly (default: auto-detect origin/HEAD, then main, then master) */
|
|
352
|
+
changedOnlyBase?: string;
|
|
345
353
|
};
|
|
346
354
|
}
|
|
347
355
|
type MaybePromise<T> = T | Promise<T>;
|
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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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the git ref to compare against for --changed-only.
|
|
3
|
+
*
|
|
4
|
+
* Returns the resolved base branch (for messaging) and the merge-base of that
|
|
5
|
+
* ref and HEAD — the commit where the current branch diverged — so commits
|
|
6
|
+
* landing on the base branch after the branch point are not attributed to this
|
|
7
|
+
* branch (the semantics of `git diff base...HEAD`). Falls back to the base tip
|
|
8
|
+
* when merge-base cannot be computed (e.g. shallow clones).
|
|
9
|
+
*
|
|
10
|
+
* Throws with an actionable message when git is unavailable, the cwd is not
|
|
11
|
+
* inside a repository, or no base ref can be resolved.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveGitCompareRef(base?: string): {
|
|
14
|
+
base: string;
|
|
15
|
+
compareRef: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Returns the content of a file at the given ref, or `null` when the file did
|
|
19
|
+
* not exist there (a file new on this branch). Existence is checked via
|
|
20
|
+
* cat-file's exit code instead of matching `git show`'s stderr, which is
|
|
21
|
+
* localized.
|
|
22
|
+
*/
|
|
23
|
+
export declare function readFileAtRef(compareRef: string, filePath: string): string | null;
|
|
24
|
+
/**
|
|
25
|
+
* Parses translation file content from a string (git blob) using the same
|
|
26
|
+
* parsers as loadTranslationFile. JS/TS resource modules cannot be evaluated
|
|
27
|
+
* from git history, so --changed-only does not support them.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseTranslationContent(content: string, filePath: string): Record<string, any>;
|
|
30
|
+
/**
|
|
31
|
+
* Builds a matcher deciding whether a key belongs to the changed set.
|
|
32
|
+
*
|
|
33
|
+
* Plural grouping: when ANY variant of a base key changed, ALL variants of
|
|
34
|
+
* that base key match. Source and target languages have different CLDR plural
|
|
35
|
+
* category counts (en: one/other; ar: zero..other), so an exact-key match
|
|
36
|
+
* would drop the target-only forms. Covers cardinal and ordinal CLDR suffixes
|
|
37
|
+
* plus the legacy v3 forms (_plural, _0, _1, ...). Kept in sync with the
|
|
38
|
+
* sister copy in locize-cli (src/gitChangedKeys.js).
|
|
39
|
+
*
|
|
40
|
+
* The caller is expected to keep changed sets scoped per source FILE: the same
|
|
41
|
+
* bare key name in two files (e.g. each email template having its own
|
|
42
|
+
* `subject`) must not cross-match.
|
|
43
|
+
*/
|
|
44
|
+
export declare function makeChangedKeyMatcher(changedKeys: Set<string>, pluralSeparator?: string): (key: string) => boolean;
|
|
45
|
+
//# sourceMappingURL=git-changed-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-changed-keys.d.ts","sourceRoot":"","sources":["../../src/utils/git-changed-keys.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA2CzF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUlF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAM/F;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,eAAe,SAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAYhH"}
|