i18next-cli 1.56.11 → 1.57.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 +52 -0
- package/dist/cjs/cli.js +3 -2
- package/dist/cjs/extractor/parsers/call-expression-handler.js +30 -15
- package/dist/cjs/init.js +117 -1
- package/dist/esm/cli.js +3 -2
- package/dist/esm/extractor/parsers/call-expression-handler.js +30 -15
- package/dist/esm/init.js +117 -1
- package/package.json +1 -1
- package/types/cli.d.ts.map +1 -1
- package/types/extractor/parsers/call-expression-handler.d.ts +18 -11
- package/types/extractor/parsers/call-expression-handler.d.ts.map +1 -1
- package/types/init.d.ts +3 -1
- package/types/init.d.ts.map +1 -1
- package/types/types.d.ts +13 -2
- package/types/types.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -25,6 +25,10 @@ A unified, high-performance i18next CLI toolchain, powered by SWC.
|
|
|
25
25
|
> npx i18next-cli lint
|
|
26
26
|
> ```
|
|
27
27
|
|
|
28
|
+
## Advice:
|
|
29
|
+
|
|
30
|
+
If you're looking for a managed backend to pair with `i18next-cli`, take a look at [Locize](https://www.locize.com?utm_source=i18next_cli_readme&utm_medium=github&utm_campaign=readme) — `i18next-cli` already ships with `locize-download`, `locize-sync`, and `locize-migrate` commands. Built by the same team behind i18next, with CDN delivery, AI translation, review workflow, and no redeploys for copy changes.
|
|
31
|
+
|
|
28
32
|
## Why i18next-cli?
|
|
29
33
|
|
|
30
34
|
`i18next-cli` is built from the ground up to meet the demands of modern web development.
|
|
@@ -106,6 +110,25 @@ Interactive setup wizard to create your configuration file.
|
|
|
106
110
|
npx i18next-cli init
|
|
107
111
|
```
|
|
108
112
|
|
|
113
|
+
**Options:**
|
|
114
|
+
- `--ci`: Skip the browser launch when a backend (e.g. Locize) is selected;
|
|
115
|
+
the signup URL is printed instead. Useful for scripted runs. The wizard
|
|
116
|
+
also auto-detects `CI=true` and falls back to printing the URL on headless
|
|
117
|
+
Linux (no `DISPLAY`/`WAYLAND_DISPLAY`), so this flag is rarely needed
|
|
118
|
+
explicitly.
|
|
119
|
+
|
|
120
|
+
The wizard asks for the config file type, locales, source-file glob, output
|
|
121
|
+
path, and finally **"Translation backend?"** with three options:
|
|
122
|
+
|
|
123
|
+
- **Local files only** (default) — keeps the current local-JSON workflow.
|
|
124
|
+
- **Locize** (recommended for team / production workflows) — opens the
|
|
125
|
+
[Locize](https://www.locize.app) signup page in your browser and then
|
|
126
|
+
prompts for your Project ID and API key. The wizard writes a `locize`
|
|
127
|
+
block into the generated config so [`locize-sync`](#locize-integration)
|
|
128
|
+
works out of the box. The API key prompt can be left empty (read-only
|
|
129
|
+
mode); add it later via a `LOCIZE_API_KEY` environment variable.
|
|
130
|
+
- **Other / skip** — same as "Local files only" for the wizard's purposes.
|
|
131
|
+
|
|
109
132
|
### `extract`
|
|
110
133
|
Parses source files, extracts keys, and updates your JSON translation files.
|
|
111
134
|
|
|
@@ -447,6 +470,12 @@ npx i18next-cli rename-key "Invalid username or password" "login.form.invalid-cr
|
|
|
447
470
|
|
|
448
471
|
### Locize Integration
|
|
449
472
|
|
|
473
|
+
**First-time setup:** the easiest way to wire up Locize is to run
|
|
474
|
+
`npx i18next-cli init` and pick **Locize** at the "Translation backend?"
|
|
475
|
+
prompt — the wizard will open the signup page, ask for your Project ID
|
|
476
|
+
and API key, and write the `locize` block into your config for you. See
|
|
477
|
+
[the `init` command](#init) for details.
|
|
478
|
+
|
|
450
479
|
**Prerequisites:** The locize commands require `locize-cli` to be installed:
|
|
451
480
|
|
|
452
481
|
```bash
|
|
@@ -1420,6 +1449,29 @@ routed to the primary. Secondary-prefixed paths are joined as
|
|
|
1420
1449
|
`<ns><nsSeparator><rest>` so the standard `ns:key` routing places them in
|
|
1421
1450
|
the correct file.
|
|
1422
1451
|
|
|
1452
|
+
#### Strict mode
|
|
1453
|
+
|
|
1454
|
+
Set `types.enableSelector: 'strict'` (requires `i18next` ≥ 26.1.0 with
|
|
1455
|
+
the matching runtime option) to drop the flattened-primary form entirely.
|
|
1456
|
+
Every selector path must lead with an explicit namespace segment, and the
|
|
1457
|
+
extractor rewrites leading segments uniformly — primary, secondary,
|
|
1458
|
+
single- or multi-ns hooks all behave the same:
|
|
1459
|
+
|
|
1460
|
+
```ts
|
|
1461
|
+
// useTranslation('common');
|
|
1462
|
+
t($ => $.common.button.save); // → common.json: button.save
|
|
1463
|
+
|
|
1464
|
+
// useTranslation(['auth', 'validation']);
|
|
1465
|
+
t($ => $.auth.login['Welcome Back!']); // → auth.json: login.Welcome Back!
|
|
1466
|
+
t($ => $.validation.email['Required']); // → validation.json: email.Required
|
|
1467
|
+
```
|
|
1468
|
+
|
|
1469
|
+
Strict mode is opt-in and incompatible with the [#2405](https://github.com/i18next/i18next/issues/2405)
|
|
1470
|
+
pattern (a key inside a namespace whose name matches a sibling namespace).
|
|
1471
|
+
If you have keys like `Resources['config'].common.name` while `common` is
|
|
1472
|
+
also a sibling namespace, leave strict mode off — the rewrite would route
|
|
1473
|
+
that key into the wrong file.
|
|
1474
|
+
|
|
1423
1475
|
## Programmatic Usage
|
|
1424
1476
|
|
|
1425
1477
|
In addition to the CLI commands, `i18next-cli` can be used programmatically in your build scripts, Gulp tasks, or any Node.js application:
|
package/dist/cjs/cli.js
CHANGED
|
@@ -32,7 +32,7 @@ const program = new commander.Command();
|
|
|
32
32
|
program
|
|
33
33
|
.name('i18next-cli')
|
|
34
34
|
.description('A unified, high-performance i18next CLI.')
|
|
35
|
-
.version('1.
|
|
35
|
+
.version('1.57.0'); // This string is replaced with the actual version at build time by rollup
|
|
36
36
|
// new: global config override option
|
|
37
37
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
38
38
|
program
|
|
@@ -163,7 +163,8 @@ program
|
|
|
163
163
|
program
|
|
164
164
|
.command('init')
|
|
165
165
|
.description('Create a new i18next.config.ts/js file with an interactive setup wizard.')
|
|
166
|
-
.
|
|
166
|
+
.option('--ci', 'Skip the browser launch when a backend (e.g. Locize) is selected. The signup URL is printed instead.')
|
|
167
|
+
.action((options) => init.runInit({ ci: !!options.ci }));
|
|
167
168
|
program
|
|
168
169
|
.command('lint')
|
|
169
170
|
.description('Find potential issues like hardcoded strings in your codebase.')
|
|
@@ -608,25 +608,39 @@ class CallExpressionHandler {
|
|
|
608
608
|
};
|
|
609
609
|
}
|
|
610
610
|
/**
|
|
611
|
-
* Mirror i18next
|
|
612
|
-
*
|
|
613
|
-
* and a selector path's first segment matches a *secondary* namespace,
|
|
614
|
-
* rewrite the joined key to `ns<nsSeparator>rest` so the downstream
|
|
615
|
-
* extractor's standard `ns:key` split routes the key to the right file.
|
|
611
|
+
* Mirror i18next's runtime selector rule (v25.8.19 default, or
|
|
612
|
+
* `enableSelector: 'strict'` when `types.enableSelector === 'strict'`).
|
|
616
613
|
*
|
|
617
|
-
*
|
|
618
|
-
*
|
|
619
|
-
*
|
|
620
|
-
*
|
|
614
|
+
* **Default mode** — rewrite only when the hook was called with a multi-element
|
|
615
|
+
* namespace array and the path's first segment matches a *secondary* namespace.
|
|
616
|
+
* The primary is intentionally not rewritten (preserves #2405): its keys are
|
|
617
|
+
* exposed flat on `$`, so `$.primary.foo` means a literal sub-key.
|
|
618
|
+
*
|
|
619
|
+
* **Strict mode** — every namespace (primary included) is exposed only under
|
|
620
|
+
* its own key on `$`. So a leading segment matching *any* namespace in the
|
|
621
|
+
* scope's list — primary or secondary, single-ns or multi-ns — is rewritten.
|
|
622
|
+
* Mirrors `i18next/src/selector.js` strict branch.
|
|
623
|
+
*
|
|
624
|
+
* In strict mode we also accept a single-ns scope, falling back to
|
|
625
|
+
* `[scopeInfo.defaultNs]` when the scope didn't capture an explicit array
|
|
626
|
+
* (e.g. `useTranslation('only')`).
|
|
621
627
|
*
|
|
622
628
|
* Falls through to the input string when:
|
|
623
629
|
* - the call had no selector (string keys go through this path unchanged),
|
|
624
|
-
* - scope has
|
|
625
|
-
* - first segment
|
|
630
|
+
* - scope has no namespaces info,
|
|
631
|
+
* - first segment isn't in the scope's namespaces list, or
|
|
632
|
+
* - separators are configured off.
|
|
626
633
|
*/
|
|
627
634
|
applySelectorNsRewrite(key, scopeInfo) {
|
|
628
|
-
const
|
|
629
|
-
|
|
635
|
+
const strict = this.config.types?.enableSelector === 'strict';
|
|
636
|
+
// Resolve the effective namespace list for the rule:
|
|
637
|
+
// - default mode: only the explicitly-captured `namespaces` array, length ≥ 2
|
|
638
|
+
// - strict mode: same array if present; otherwise synthesize from `defaultNs`
|
|
639
|
+
const nsCaptured = scopeInfo?.namespaces;
|
|
640
|
+
const nsList = strict
|
|
641
|
+
? (nsCaptured ?? (scopeInfo?.defaultNs ? [scopeInfo.defaultNs] : undefined))
|
|
642
|
+
: nsCaptured;
|
|
643
|
+
if (!nsList || nsList.length < (strict ? 1 : 2))
|
|
630
644
|
return key;
|
|
631
645
|
const keySeparator = this.config.extract.keySeparator;
|
|
632
646
|
const joiner = typeof keySeparator === 'string' ? keySeparator : '.';
|
|
@@ -637,9 +651,10 @@ class CallExpressionHandler {
|
|
|
637
651
|
if (firstSepAt < 0)
|
|
638
652
|
return key;
|
|
639
653
|
const head = key.slice(0, firstSepAt);
|
|
640
|
-
|
|
654
|
+
// Default mode excludes the primary; strict mode includes it.
|
|
655
|
+
if (!strict && head === nsList[0])
|
|
641
656
|
return key;
|
|
642
|
-
if (!
|
|
657
|
+
if (!nsList.includes(head))
|
|
643
658
|
return key;
|
|
644
659
|
return `${head}${nsSeparator}${key.slice(firstSepAt + joiner.length)}`;
|
|
645
660
|
}
|
package/dist/cjs/init.js
CHANGED
|
@@ -3,8 +3,58 @@
|
|
|
3
3
|
var inquirer = require('inquirer');
|
|
4
4
|
var promises = require('node:fs/promises');
|
|
5
5
|
var node_path = require('node:path');
|
|
6
|
+
var execa = require('execa');
|
|
6
7
|
var heuristicConfig = require('./heuristic-config.js');
|
|
7
8
|
|
|
9
|
+
const LOCIZE_SIGNUP_URL = 'https://www.locize.app/register?from=i18next-cli+init+wizard';
|
|
10
|
+
/** Rough 8-4-4-4-12 hex UUID shape — not strict (locize project IDs may evolve). */
|
|
11
|
+
const UUID_SHAPE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
12
|
+
/**
|
|
13
|
+
* Opens the given URL in the user's default browser using the platform-native command.
|
|
14
|
+
* Returns true on success, false if there's nowhere to open one (CI, headless Linux)
|
|
15
|
+
* or if spawning the command failed.
|
|
16
|
+
*/
|
|
17
|
+
async function openBrowser(url, opts = {}) {
|
|
18
|
+
// Short-circuit: no point spawning a browser-opener in CI or headless Linux.
|
|
19
|
+
if (opts.ci || process.env.CI === 'true')
|
|
20
|
+
return false;
|
|
21
|
+
const isWSL = !!process.env.WSL_DISTRO_NAME;
|
|
22
|
+
if (process.platform === 'linux' && !isWSL &&
|
|
23
|
+
!process.env.DISPLAY && !process.env.WAYLAND_DISPLAY) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
if (process.platform === 'darwin') {
|
|
28
|
+
await execa.execa('open', [url], { stdio: 'ignore' });
|
|
29
|
+
}
|
|
30
|
+
else if (process.platform === 'win32') {
|
|
31
|
+
// `start` is a cmd.exe builtin; the empty "" is the window-title slot
|
|
32
|
+
await execa.execa('cmd', ['/c', 'start', '""', url], { stdio: 'ignore' });
|
|
33
|
+
}
|
|
34
|
+
else if (isWSL) {
|
|
35
|
+
// WSL: try the wslu / wsl-open shims that bridge to the Windows side
|
|
36
|
+
// before falling back to xdg-open (which usually isn't installed there).
|
|
37
|
+
try {
|
|
38
|
+
await execa.execa('wslview', [url], { stdio: 'ignore' });
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
try {
|
|
42
|
+
await execa.execa('wsl-open', [url], { stdio: 'ignore' });
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
await execa.execa('xdg-open', [url], { stdio: 'ignore' });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
await execa.execa('xdg-open', [url], { stdio: 'ignore' });
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
8
58
|
/**
|
|
9
59
|
* Determines if the current project is configured as an ESM project.
|
|
10
60
|
* Checks the package.json file for `"type": "module"`.
|
|
@@ -92,7 +142,7 @@ async function isTypeScriptProject() {
|
|
|
92
142
|
* // - i18next.config.js (JavaScript ESM/CommonJS)
|
|
93
143
|
* ```
|
|
94
144
|
*/
|
|
95
|
-
async function runInit() {
|
|
145
|
+
async function runInit(options = {}) {
|
|
96
146
|
console.log('Welcome to the i18next-cli setup wizard!');
|
|
97
147
|
console.log('Scanning your project for a recommended configuration...');
|
|
98
148
|
const detectedConfig = await heuristicConfig.detectConfig();
|
|
@@ -143,7 +193,49 @@ async function runInit() {
|
|
|
143
193
|
? detectedConfig.extract.output
|
|
144
194
|
: 'public/locales/{{language}}/{{namespace}}.json',
|
|
145
195
|
},
|
|
196
|
+
{
|
|
197
|
+
type: 'select',
|
|
198
|
+
name: 'backend',
|
|
199
|
+
message: 'Translation backend?',
|
|
200
|
+
choices: [
|
|
201
|
+
{ name: 'Local files only', value: 'local' },
|
|
202
|
+
{ name: 'Locize (recommended) — managed backend, CDN delivery, optional AI auto-translate', value: 'locize' },
|
|
203
|
+
{ name: 'Other / skip', value: 'other' },
|
|
204
|
+
],
|
|
205
|
+
default: 'local',
|
|
206
|
+
},
|
|
146
207
|
]);
|
|
208
|
+
let locizeConfig;
|
|
209
|
+
if (answers.backend === 'locize') {
|
|
210
|
+
console.log('\nOpening the Locize signup page in your browser. After you create your account and project, come back here and paste your Project ID and API key.');
|
|
211
|
+
const opened = await openBrowser(LOCIZE_SIGNUP_URL, { ci: options.ci });
|
|
212
|
+
if (!opened) {
|
|
213
|
+
console.log(`\n👉 Open this URL manually: ${LOCIZE_SIGNUP_URL}\n`);
|
|
214
|
+
}
|
|
215
|
+
const credentials = await inquirer.prompt([
|
|
216
|
+
{
|
|
217
|
+
type: 'input',
|
|
218
|
+
name: 'projectId',
|
|
219
|
+
message: 'Locize Project ID (e.g. 4eeb5ce0-a7a7-453f-8eb3-078f6eeb56fe):',
|
|
220
|
+
validate: (input) => input.trim().length > 0 || 'Project ID cannot be empty.',
|
|
221
|
+
filter: (input) => input.trim(),
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
type: 'password',
|
|
225
|
+
name: 'apiKey',
|
|
226
|
+
message: 'Locize API key (needed for saveMissing / auto-publish / sync during development; leave empty to skip and add later via env var):',
|
|
227
|
+
filter: (input) => input.trim(),
|
|
228
|
+
},
|
|
229
|
+
]);
|
|
230
|
+
if (!UUID_SHAPE.test(credentials.projectId)) {
|
|
231
|
+
console.log("⚠️ The Project ID doesn't look like a UUID (8-4-4-4-12 hex). It will still be written — double-check it in your Locize project settings.");
|
|
232
|
+
}
|
|
233
|
+
// API keys come in multiple shapes (UUID, `lz_pat_…`, `lz_api_…`, etc.) —
|
|
234
|
+
// treat them as opaque; no client-side format check.
|
|
235
|
+
locizeConfig = { projectId: credentials.projectId };
|
|
236
|
+
if (credentials.apiKey)
|
|
237
|
+
locizeConfig.apiKey = credentials.apiKey;
|
|
238
|
+
}
|
|
147
239
|
const isTypeScript = answers.fileType.includes('TypeScript');
|
|
148
240
|
const isEsm = await isEsmProject();
|
|
149
241
|
const fileName = isTypeScript ? 'i18next.config.ts' : 'i18next.config.js';
|
|
@@ -154,6 +246,8 @@ async function runInit() {
|
|
|
154
246
|
output: answers.output,
|
|
155
247
|
},
|
|
156
248
|
};
|
|
249
|
+
if (locizeConfig)
|
|
250
|
+
configObject.locize = locizeConfig;
|
|
157
251
|
// Helper to serialize a JS value as a JS literal:
|
|
158
252
|
function toJs(value, indent = 2, level = 0) {
|
|
159
253
|
const pad = (n) => ' '.repeat(n * indent);
|
|
@@ -225,6 +319,28 @@ module.exports = ${toJs(configObject)}`;
|
|
|
225
319
|
const outputPath = node_path.resolve(process.cwd(), fileName);
|
|
226
320
|
await promises.writeFile(outputPath, fileContent.trim());
|
|
227
321
|
console.log(`✅ Configuration file created at: ${outputPath}`);
|
|
322
|
+
if (locizeConfig) {
|
|
323
|
+
console.log('\nNext steps for Locize:');
|
|
324
|
+
console.log(' 1. Push your local translations to Locize:');
|
|
325
|
+
console.log(' npx i18next-cli locize-sync');
|
|
326
|
+
console.log(' 2. Find your Project ID and API keys in the Locize UI under:');
|
|
327
|
+
console.log(' Project Settings → "API, CDN, NOTIFICATIONS" tab (www.locize.app)');
|
|
328
|
+
if (locizeConfig.apiKey) {
|
|
329
|
+
console.log(' 3. Before committing, move the API key out of the config file into an environment variable:');
|
|
330
|
+
console.log(' # .env (add to .gitignore)');
|
|
331
|
+
console.log(' LOCIZE_API_KEY=<paste the key currently in your config>');
|
|
332
|
+
console.log(' # then in your config:');
|
|
333
|
+
console.log(' apiKey: process.env.LOCIZE_API_KEY');
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
console.log(' 3. Add your API key later via environment variable:');
|
|
337
|
+
console.log(' # .env (add to .gitignore)');
|
|
338
|
+
console.log(' LOCIZE_API_KEY=...');
|
|
339
|
+
console.log(' # then in your config:');
|
|
340
|
+
console.log(' apiKey: process.env.LOCIZE_API_KEY');
|
|
341
|
+
}
|
|
342
|
+
console.log(' 4. To enable automatic translation, turn it on in your Locize project settings → "EDITOR, TM/MT/AI, ORDERING" tab (web UI).');
|
|
343
|
+
}
|
|
228
344
|
}
|
|
229
345
|
|
|
230
346
|
exports.runInit = runInit;
|
package/dist/esm/cli.js
CHANGED
|
@@ -30,7 +30,7 @@ const program = new Command();
|
|
|
30
30
|
program
|
|
31
31
|
.name('i18next-cli')
|
|
32
32
|
.description('A unified, high-performance i18next CLI.')
|
|
33
|
-
.version('1.
|
|
33
|
+
.version('1.57.0'); // This string is replaced with the actual version at build time by rollup
|
|
34
34
|
// new: global config override option
|
|
35
35
|
program.option('-c, --config <path>', 'Path to i18next-cli config file (overrides detection)');
|
|
36
36
|
program
|
|
@@ -161,7 +161,8 @@ program
|
|
|
161
161
|
program
|
|
162
162
|
.command('init')
|
|
163
163
|
.description('Create a new i18next.config.ts/js file with an interactive setup wizard.')
|
|
164
|
-
.
|
|
164
|
+
.option('--ci', 'Skip the browser launch when a backend (e.g. Locize) is selected. The signup URL is printed instead.')
|
|
165
|
+
.action((options) => runInit({ ci: !!options.ci }));
|
|
165
166
|
program
|
|
166
167
|
.command('lint')
|
|
167
168
|
.description('Find potential issues like hardcoded strings in your codebase.')
|
|
@@ -606,25 +606,39 @@ class CallExpressionHandler {
|
|
|
606
606
|
};
|
|
607
607
|
}
|
|
608
608
|
/**
|
|
609
|
-
* Mirror i18next
|
|
610
|
-
*
|
|
611
|
-
* and a selector path's first segment matches a *secondary* namespace,
|
|
612
|
-
* rewrite the joined key to `ns<nsSeparator>rest` so the downstream
|
|
613
|
-
* extractor's standard `ns:key` split routes the key to the right file.
|
|
609
|
+
* Mirror i18next's runtime selector rule (v25.8.19 default, or
|
|
610
|
+
* `enableSelector: 'strict'` when `types.enableSelector === 'strict'`).
|
|
614
611
|
*
|
|
615
|
-
*
|
|
616
|
-
*
|
|
617
|
-
*
|
|
618
|
-
*
|
|
612
|
+
* **Default mode** — rewrite only when the hook was called with a multi-element
|
|
613
|
+
* namespace array and the path's first segment matches a *secondary* namespace.
|
|
614
|
+
* The primary is intentionally not rewritten (preserves #2405): its keys are
|
|
615
|
+
* exposed flat on `$`, so `$.primary.foo` means a literal sub-key.
|
|
616
|
+
*
|
|
617
|
+
* **Strict mode** — every namespace (primary included) is exposed only under
|
|
618
|
+
* its own key on `$`. So a leading segment matching *any* namespace in the
|
|
619
|
+
* scope's list — primary or secondary, single-ns or multi-ns — is rewritten.
|
|
620
|
+
* Mirrors `i18next/src/selector.js` strict branch.
|
|
621
|
+
*
|
|
622
|
+
* In strict mode we also accept a single-ns scope, falling back to
|
|
623
|
+
* `[scopeInfo.defaultNs]` when the scope didn't capture an explicit array
|
|
624
|
+
* (e.g. `useTranslation('only')`).
|
|
619
625
|
*
|
|
620
626
|
* Falls through to the input string when:
|
|
621
627
|
* - the call had no selector (string keys go through this path unchanged),
|
|
622
|
-
* - scope has
|
|
623
|
-
* - first segment
|
|
628
|
+
* - scope has no namespaces info,
|
|
629
|
+
* - first segment isn't in the scope's namespaces list, or
|
|
630
|
+
* - separators are configured off.
|
|
624
631
|
*/
|
|
625
632
|
applySelectorNsRewrite(key, scopeInfo) {
|
|
626
|
-
const
|
|
627
|
-
|
|
633
|
+
const strict = this.config.types?.enableSelector === 'strict';
|
|
634
|
+
// Resolve the effective namespace list for the rule:
|
|
635
|
+
// - default mode: only the explicitly-captured `namespaces` array, length ≥ 2
|
|
636
|
+
// - strict mode: same array if present; otherwise synthesize from `defaultNs`
|
|
637
|
+
const nsCaptured = scopeInfo?.namespaces;
|
|
638
|
+
const nsList = strict
|
|
639
|
+
? (nsCaptured ?? (scopeInfo?.defaultNs ? [scopeInfo.defaultNs] : undefined))
|
|
640
|
+
: nsCaptured;
|
|
641
|
+
if (!nsList || nsList.length < (strict ? 1 : 2))
|
|
628
642
|
return key;
|
|
629
643
|
const keySeparator = this.config.extract.keySeparator;
|
|
630
644
|
const joiner = typeof keySeparator === 'string' ? keySeparator : '.';
|
|
@@ -635,9 +649,10 @@ class CallExpressionHandler {
|
|
|
635
649
|
if (firstSepAt < 0)
|
|
636
650
|
return key;
|
|
637
651
|
const head = key.slice(0, firstSepAt);
|
|
638
|
-
|
|
652
|
+
// Default mode excludes the primary; strict mode includes it.
|
|
653
|
+
if (!strict && head === nsList[0])
|
|
639
654
|
return key;
|
|
640
|
-
if (!
|
|
655
|
+
if (!nsList.includes(head))
|
|
641
656
|
return key;
|
|
642
657
|
return `${head}${nsSeparator}${key.slice(firstSepAt + joiner.length)}`;
|
|
643
658
|
}
|
package/dist/esm/init.js
CHANGED
|
@@ -1,8 +1,58 @@
|
|
|
1
1
|
import inquirer from 'inquirer';
|
|
2
2
|
import { writeFile, readFile } from 'node:fs/promises';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
+
import { execa } from 'execa';
|
|
4
5
|
import { detectConfig } from './heuristic-config.js';
|
|
5
6
|
|
|
7
|
+
const LOCIZE_SIGNUP_URL = 'https://www.locize.app/register?from=i18next-cli+init+wizard';
|
|
8
|
+
/** Rough 8-4-4-4-12 hex UUID shape — not strict (locize project IDs may evolve). */
|
|
9
|
+
const UUID_SHAPE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
10
|
+
/**
|
|
11
|
+
* Opens the given URL in the user's default browser using the platform-native command.
|
|
12
|
+
* Returns true on success, false if there's nowhere to open one (CI, headless Linux)
|
|
13
|
+
* or if spawning the command failed.
|
|
14
|
+
*/
|
|
15
|
+
async function openBrowser(url, opts = {}) {
|
|
16
|
+
// Short-circuit: no point spawning a browser-opener in CI or headless Linux.
|
|
17
|
+
if (opts.ci || process.env.CI === 'true')
|
|
18
|
+
return false;
|
|
19
|
+
const isWSL = !!process.env.WSL_DISTRO_NAME;
|
|
20
|
+
if (process.platform === 'linux' && !isWSL &&
|
|
21
|
+
!process.env.DISPLAY && !process.env.WAYLAND_DISPLAY) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
if (process.platform === 'darwin') {
|
|
26
|
+
await execa('open', [url], { stdio: 'ignore' });
|
|
27
|
+
}
|
|
28
|
+
else if (process.platform === 'win32') {
|
|
29
|
+
// `start` is a cmd.exe builtin; the empty "" is the window-title slot
|
|
30
|
+
await execa('cmd', ['/c', 'start', '""', url], { stdio: 'ignore' });
|
|
31
|
+
}
|
|
32
|
+
else if (isWSL) {
|
|
33
|
+
// WSL: try the wslu / wsl-open shims that bridge to the Windows side
|
|
34
|
+
// before falling back to xdg-open (which usually isn't installed there).
|
|
35
|
+
try {
|
|
36
|
+
await execa('wslview', [url], { stdio: 'ignore' });
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
try {
|
|
40
|
+
await execa('wsl-open', [url], { stdio: 'ignore' });
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
await execa('xdg-open', [url], { stdio: 'ignore' });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
await execa('xdg-open', [url], { stdio: 'ignore' });
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
6
56
|
/**
|
|
7
57
|
* Determines if the current project is configured as an ESM project.
|
|
8
58
|
* Checks the package.json file for `"type": "module"`.
|
|
@@ -90,7 +140,7 @@ async function isTypeScriptProject() {
|
|
|
90
140
|
* // - i18next.config.js (JavaScript ESM/CommonJS)
|
|
91
141
|
* ```
|
|
92
142
|
*/
|
|
93
|
-
async function runInit() {
|
|
143
|
+
async function runInit(options = {}) {
|
|
94
144
|
console.log('Welcome to the i18next-cli setup wizard!');
|
|
95
145
|
console.log('Scanning your project for a recommended configuration...');
|
|
96
146
|
const detectedConfig = await detectConfig();
|
|
@@ -141,7 +191,49 @@ async function runInit() {
|
|
|
141
191
|
? detectedConfig.extract.output
|
|
142
192
|
: 'public/locales/{{language}}/{{namespace}}.json',
|
|
143
193
|
},
|
|
194
|
+
{
|
|
195
|
+
type: 'select',
|
|
196
|
+
name: 'backend',
|
|
197
|
+
message: 'Translation backend?',
|
|
198
|
+
choices: [
|
|
199
|
+
{ name: 'Local files only', value: 'local' },
|
|
200
|
+
{ name: 'Locize (recommended) — managed backend, CDN delivery, optional AI auto-translate', value: 'locize' },
|
|
201
|
+
{ name: 'Other / skip', value: 'other' },
|
|
202
|
+
],
|
|
203
|
+
default: 'local',
|
|
204
|
+
},
|
|
144
205
|
]);
|
|
206
|
+
let locizeConfig;
|
|
207
|
+
if (answers.backend === 'locize') {
|
|
208
|
+
console.log('\nOpening the Locize signup page in your browser. After you create your account and project, come back here and paste your Project ID and API key.');
|
|
209
|
+
const opened = await openBrowser(LOCIZE_SIGNUP_URL, { ci: options.ci });
|
|
210
|
+
if (!opened) {
|
|
211
|
+
console.log(`\n👉 Open this URL manually: ${LOCIZE_SIGNUP_URL}\n`);
|
|
212
|
+
}
|
|
213
|
+
const credentials = await inquirer.prompt([
|
|
214
|
+
{
|
|
215
|
+
type: 'input',
|
|
216
|
+
name: 'projectId',
|
|
217
|
+
message: 'Locize Project ID (e.g. 4eeb5ce0-a7a7-453f-8eb3-078f6eeb56fe):',
|
|
218
|
+
validate: (input) => input.trim().length > 0 || 'Project ID cannot be empty.',
|
|
219
|
+
filter: (input) => input.trim(),
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
type: 'password',
|
|
223
|
+
name: 'apiKey',
|
|
224
|
+
message: 'Locize API key (needed for saveMissing / auto-publish / sync during development; leave empty to skip and add later via env var):',
|
|
225
|
+
filter: (input) => input.trim(),
|
|
226
|
+
},
|
|
227
|
+
]);
|
|
228
|
+
if (!UUID_SHAPE.test(credentials.projectId)) {
|
|
229
|
+
console.log("⚠️ The Project ID doesn't look like a UUID (8-4-4-4-12 hex). It will still be written — double-check it in your Locize project settings.");
|
|
230
|
+
}
|
|
231
|
+
// API keys come in multiple shapes (UUID, `lz_pat_…`, `lz_api_…`, etc.) —
|
|
232
|
+
// treat them as opaque; no client-side format check.
|
|
233
|
+
locizeConfig = { projectId: credentials.projectId };
|
|
234
|
+
if (credentials.apiKey)
|
|
235
|
+
locizeConfig.apiKey = credentials.apiKey;
|
|
236
|
+
}
|
|
145
237
|
const isTypeScript = answers.fileType.includes('TypeScript');
|
|
146
238
|
const isEsm = await isEsmProject();
|
|
147
239
|
const fileName = isTypeScript ? 'i18next.config.ts' : 'i18next.config.js';
|
|
@@ -152,6 +244,8 @@ async function runInit() {
|
|
|
152
244
|
output: answers.output,
|
|
153
245
|
},
|
|
154
246
|
};
|
|
247
|
+
if (locizeConfig)
|
|
248
|
+
configObject.locize = locizeConfig;
|
|
155
249
|
// Helper to serialize a JS value as a JS literal:
|
|
156
250
|
function toJs(value, indent = 2, level = 0) {
|
|
157
251
|
const pad = (n) => ' '.repeat(n * indent);
|
|
@@ -223,6 +317,28 @@ module.exports = ${toJs(configObject)}`;
|
|
|
223
317
|
const outputPath = resolve(process.cwd(), fileName);
|
|
224
318
|
await writeFile(outputPath, fileContent.trim());
|
|
225
319
|
console.log(`✅ Configuration file created at: ${outputPath}`);
|
|
320
|
+
if (locizeConfig) {
|
|
321
|
+
console.log('\nNext steps for Locize:');
|
|
322
|
+
console.log(' 1. Push your local translations to Locize:');
|
|
323
|
+
console.log(' npx i18next-cli locize-sync');
|
|
324
|
+
console.log(' 2. Find your Project ID and API keys in the Locize UI under:');
|
|
325
|
+
console.log(' Project Settings → "API, CDN, NOTIFICATIONS" tab (www.locize.app)');
|
|
326
|
+
if (locizeConfig.apiKey) {
|
|
327
|
+
console.log(' 3. Before committing, move the API key out of the config file into an environment variable:');
|
|
328
|
+
console.log(' # .env (add to .gitignore)');
|
|
329
|
+
console.log(' LOCIZE_API_KEY=<paste the key currently in your config>');
|
|
330
|
+
console.log(' # then in your config:');
|
|
331
|
+
console.log(' apiKey: process.env.LOCIZE_API_KEY');
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
console.log(' 3. Add your API key later via environment variable:');
|
|
335
|
+
console.log(' # .env (add to .gitignore)');
|
|
336
|
+
console.log(' LOCIZE_API_KEY=...');
|
|
337
|
+
console.log(' # then in your config:');
|
|
338
|
+
console.log(' apiKey: process.env.LOCIZE_API_KEY');
|
|
339
|
+
}
|
|
340
|
+
console.log(' 4. To enable automatic translation, turn it on in your Locize project settings → "EDITOR, TM/MT/AI, ORDERING" tab (web UI).');
|
|
341
|
+
}
|
|
226
342
|
}
|
|
227
343
|
|
|
228
344
|
export { runInit };
|
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;AAoBnC,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;AAoBnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AAkZ7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -50,21 +50,28 @@ export declare class CallExpressionHandler {
|
|
|
50
50
|
*/
|
|
51
51
|
private handleCallExpressionArgument;
|
|
52
52
|
/**
|
|
53
|
-
* Mirror i18next
|
|
54
|
-
*
|
|
55
|
-
* and a selector path's first segment matches a *secondary* namespace,
|
|
56
|
-
* rewrite the joined key to `ns<nsSeparator>rest` so the downstream
|
|
57
|
-
* extractor's standard `ns:key` split routes the key to the right file.
|
|
53
|
+
* Mirror i18next's runtime selector rule (v25.8.19 default, or
|
|
54
|
+
* `enableSelector: 'strict'` when `types.enableSelector === 'strict'`).
|
|
58
55
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
56
|
+
* **Default mode** — rewrite only when the hook was called with a multi-element
|
|
57
|
+
* namespace array and the path's first segment matches a *secondary* namespace.
|
|
58
|
+
* The primary is intentionally not rewritten (preserves #2405): its keys are
|
|
59
|
+
* exposed flat on `$`, so `$.primary.foo` means a literal sub-key.
|
|
60
|
+
*
|
|
61
|
+
* **Strict mode** — every namespace (primary included) is exposed only under
|
|
62
|
+
* its own key on `$`. So a leading segment matching *any* namespace in the
|
|
63
|
+
* scope's list — primary or secondary, single-ns or multi-ns — is rewritten.
|
|
64
|
+
* Mirrors `i18next/src/selector.js` strict branch.
|
|
65
|
+
*
|
|
66
|
+
* In strict mode we also accept a single-ns scope, falling back to
|
|
67
|
+
* `[scopeInfo.defaultNs]` when the scope didn't capture an explicit array
|
|
68
|
+
* (e.g. `useTranslation('only')`).
|
|
63
69
|
*
|
|
64
70
|
* Falls through to the input string when:
|
|
65
71
|
* - the call had no selector (string keys go through this path unchanged),
|
|
66
|
-
* - scope has
|
|
67
|
-
* - first segment
|
|
72
|
+
* - scope has no namespaces info,
|
|
73
|
+
* - first segment isn't in the scope's namespaces list, or
|
|
74
|
+
* - separators are configured off.
|
|
68
75
|
*/
|
|
69
76
|
private applySelectorNsRewrite;
|
|
70
77
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-expression-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/call-expression-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA6C,MAAM,WAAW,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAa7D,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,kBAAkB,CAAoB;IACvC,UAAU,cAAoB;IACrC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,iBAAiB,CAAsC;gBAG7D,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,MAAM,MAAM,EAC5B,cAAc,EAAE,MAAM,MAAM,EAC5B,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAA2B;IAW3E;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI;IAgaxG;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,wBAAwB;IAyEhC;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IAsDpC
|
|
1
|
+
{"version":3,"file":"call-expression-handler.d.ts","sourceRoot":"","sources":["../../../src/extractor/parsers/call-expression-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA6C,MAAM,WAAW,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAa7D,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,kBAAkB,CAAoB;IACvC,UAAU,cAAoB;IACrC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,iBAAiB,CAAsC;gBAG7D,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,MAAM,MAAM,EAC5B,cAAc,EAAE,MAAM,MAAM,EAC5B,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAA2B;IAW3E;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI;IAgaxG;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,wBAAwB;IAyEhC;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IAsDpC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;;;;;;;OAQG;IACH,OAAO,CAAC,iCAAiC;IAwFzC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,gBAAgB;IAyMxB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;CA2BxB"}
|
package/types/init.d.ts
CHANGED
package/types/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAkHA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,OAAO,CAAE,OAAO,GAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAA;CAAO,iBA6M5D"}
|
package/types/types.d.ts
CHANGED
|
@@ -239,8 +239,19 @@ export interface I18nextToolkitConfig {
|
|
|
239
239
|
basePath?: string;
|
|
240
240
|
/** Output path for the main TypeScript definition file */
|
|
241
241
|
output: string;
|
|
242
|
-
/**
|
|
243
|
-
|
|
242
|
+
/**
|
|
243
|
+
* Enable type-safe selector API.
|
|
244
|
+
*
|
|
245
|
+
* - `false` (default): disabled.
|
|
246
|
+
* - `true`: standard selector typing — primary namespace keys exposed flat on `$`.
|
|
247
|
+
* - `'optimize'`: skip deep type-level processing for very large/deep resources.
|
|
248
|
+
* - `'strict'`: every namespace (primary included) is exposed only under its
|
|
249
|
+
* own key on `$`. The extractor mirrors this at extraction time: a leading
|
|
250
|
+
* path segment matching a scope's namespace is always rewritten to
|
|
251
|
+
* `ns:rest`, including the primary and single-ns hooks. Pairs with i18next
|
|
252
|
+
* ≥ 26.1.0's runtime `enableSelector: 'strict'` option.
|
|
253
|
+
*/
|
|
254
|
+
enableSelector?: boolean | 'optimize' | 'strict';
|
|
244
255
|
/** Path for the separate resources interface file */
|
|
245
256
|
resourcesFile?: string;
|
|
246
257
|
/**
|
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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"}
|