next-auto-i18n 0.1.2 → 0.2.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/DOCUMENTATION.md +65 -8
- package/README.md +7 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/injector/index.d.ts +7 -0
- package/dist/injector/index.d.ts.map +1 -1
- package/dist/injector/index.js +14 -0
- package/dist/injector/index.js.map +1 -1
- package/dist/injector/switcher-injector.d.ts +9 -0
- package/dist/injector/switcher-injector.d.ts.map +1 -0
- package/dist/injector/switcher-injector.js +339 -0
- package/dist/injector/switcher-injector.js.map +1 -0
- package/package.json +1 -1
package/DOCUMENTATION.md
CHANGED
|
@@ -111,6 +111,9 @@ npx next-auto-i18n init
|
|
|
111
111
|
✓ Translation ES (42 strings)
|
|
112
112
|
✓ 84 strings translated
|
|
113
113
|
|
|
114
|
+
▸ Checking dependencies
|
|
115
|
+
✓ next-intl installed
|
|
116
|
+
|
|
114
117
|
▸ Rewriting components
|
|
115
118
|
✓ 47 replacements in 12 files
|
|
116
119
|
|
|
@@ -119,6 +122,7 @@ npx next-auto-i18n init
|
|
|
119
122
|
✓ next.config configured
|
|
120
123
|
✓ middleware.ts created
|
|
121
124
|
✓ i18n/routing.ts created
|
|
125
|
+
✓ LanguageSwitcher injected
|
|
122
126
|
|
|
123
127
|
✓ Internationalization configured successfully!
|
|
124
128
|
Languages: fr → en, es
|
|
@@ -131,7 +135,7 @@ npx next-auto-i18n init
|
|
|
131
135
|
npm run dev
|
|
132
136
|
```
|
|
133
137
|
|
|
134
|
-
Your site now supports `fr`, `en`, and `es`. Visit `/en` or `/es` to see the translations.
|
|
138
|
+
Your site now supports `fr`, `en`, and `es`. A **floating language switcher** appears at the bottom-right corner, allowing users to switch languages instantly. Visit `/en` or `/es` to see the translations.
|
|
135
139
|
|
|
136
140
|
---
|
|
137
141
|
|
|
@@ -324,7 +328,14 @@ npx next-auto-i18n init
|
|
|
324
328
|
│
|
|
325
329
|
▼
|
|
326
330
|
┌──────────────────────────────────────┐
|
|
327
|
-
│ 5.
|
|
331
|
+
│ 5. Dependency Check │
|
|
332
|
+
│ Auto-installs next-intl if │
|
|
333
|
+
│ missing (npm / yarn / pnpm) │
|
|
334
|
+
└──────────────────────────────────────┘
|
|
335
|
+
│
|
|
336
|
+
▼
|
|
337
|
+
┌──────────────────────────────────────┐
|
|
338
|
+
│ 6. Component Rewriting │
|
|
328
339
|
│ <p>Bonjour</p> │
|
|
329
340
|
│ → <p>{t("hello")}</p> │
|
|
330
341
|
│ │
|
|
@@ -334,15 +345,16 @@ npx next-auto-i18n init
|
|
|
334
345
|
│
|
|
335
346
|
▼
|
|
336
347
|
┌──────────────────────────────────────┐
|
|
337
|
-
│
|
|
348
|
+
│ 7. Next.js Config Injection │
|
|
338
349
|
│ • layout.tsx → NextIntlClientProvider │
|
|
339
350
|
│ • next.config → createNextIntlPlugin │
|
|
340
351
|
│ • middleware.ts → routing │
|
|
341
352
|
│ • i18n/routing.ts → locale definitions │
|
|
353
|
+
│ • LanguageSwitcher → floating widget │
|
|
342
354
|
└──────────────────────────────────────┘
|
|
343
355
|
│
|
|
344
356
|
▼
|
|
345
|
-
✓ i18n-ready site
|
|
357
|
+
✓ i18n-ready site with language switcher
|
|
346
358
|
```
|
|
347
359
|
|
|
348
360
|
### AST Scanning
|
|
@@ -434,6 +446,49 @@ The corresponding JSON entry uses ICU-style placeholders:
|
|
|
434
446
|
}
|
|
435
447
|
```
|
|
436
448
|
|
|
449
|
+
### Language Switcher
|
|
450
|
+
|
|
451
|
+
next-auto-i18n automatically generates a floating language switcher widget and injects it into your layout. Users can change the language directly from the browser — no extra setup needed.
|
|
452
|
+
|
|
453
|
+
**Features:**
|
|
454
|
+
- Floating pill button at the bottom-right corner with the current locale flag and name
|
|
455
|
+
- Animated dropdown listing all configured locales with flags and native names
|
|
456
|
+
- Active language highlighted with a checkmark
|
|
457
|
+
- Click outside to close
|
|
458
|
+
- Hover effects and smooth animations
|
|
459
|
+
- Works with both `app/` and `src/app/` project structures
|
|
460
|
+
|
|
461
|
+
**Customization:**
|
|
462
|
+
|
|
463
|
+
The generated `components/LanguageSwitcher.tsx` file contains a `SWITCHER_CONFIG` block at the top that you can modify:
|
|
464
|
+
|
|
465
|
+
```tsx
|
|
466
|
+
const SWITCHER_CONFIG = {
|
|
467
|
+
/** Position: 'bottom-right' | 'bottom-left' */
|
|
468
|
+
position: 'bottom-right',
|
|
469
|
+
/** Theme: 'light' | 'dark' */
|
|
470
|
+
theme: 'light',
|
|
471
|
+
/** Accent color for the active locale highlight */
|
|
472
|
+
accentColor: '#2563eb',
|
|
473
|
+
/** Offset from screen edges in pixels */
|
|
474
|
+
offset: 24,
|
|
475
|
+
/** Border radius of the dropdown in pixels */
|
|
476
|
+
borderRadius: 12,
|
|
477
|
+
};
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
| Option | Type | Default | Description |
|
|
481
|
+
|--------|------|---------|-------------|
|
|
482
|
+
| `position` | `'bottom-right' \| 'bottom-left'` | `'bottom-right'` | Corner of the screen where the widget appears |
|
|
483
|
+
| `theme` | `'light' \| 'dark'` | `'light'` | Color scheme of the widget |
|
|
484
|
+
| `accentColor` | `string` | `'#2563eb'` | Color used for the active locale highlight |
|
|
485
|
+
| `offset` | `number` | `24` | Distance from screen edges in pixels |
|
|
486
|
+
| `borderRadius` | `number` | `12` | Border radius of the dropdown popup |
|
|
487
|
+
|
|
488
|
+
> **Note:** The "Made by Steven Koulo" attribution is required by the license and must not be removed.
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
437
492
|
### Server Components vs Client Components
|
|
438
493
|
|
|
439
494
|
next-auto-i18n automatically detects whether a file is a Server Component or a Client Component:
|
|
@@ -681,8 +736,8 @@ next-auto-i18n/
|
|
|
681
736
|
│ ├── generator/ # Key generation + JSON file creation
|
|
682
737
|
│ ├── translator/ # DeepL API client + translation orchestration
|
|
683
738
|
│ ├── rewriter/ # JSX/attribute rewriting via AST
|
|
684
|
-
│ ├── injector/ # Next.js config injection (layout, config, middleware, routing)
|
|
685
|
-
│ └── utils/ # Config, env, logger utilities
|
|
739
|
+
│ ├── injector/ # Next.js config injection (layout, config, middleware, routing, switcher)
|
|
740
|
+
│ └── utils/ # Config, env, logger, dependency utilities
|
|
686
741
|
├── tests/ # Vitest test suites (298 tests)
|
|
687
742
|
├── auto-i18n-specs.md # Project specifications
|
|
688
743
|
└── DOCUMENTATION.md # This file
|
|
@@ -724,8 +779,10 @@ The test suite covers all modules:
|
|
|
724
779
|
|
|
725
780
|
### v1.x — Enhancements
|
|
726
781
|
|
|
727
|
-
- [
|
|
728
|
-
- [
|
|
782
|
+
- [x] `next-auto-i18n sync` — rescan and incremental update
|
|
783
|
+
- [x] `next-auto-i18n missing` — report untranslated keys
|
|
784
|
+
- [x] Floating language switcher widget (auto-injected, customizable)
|
|
785
|
+
- [x] Automatic `next-intl` dependency installation
|
|
729
786
|
- [ ] `--watch` mode — auto-sync on file changes
|
|
730
787
|
- [ ] Support for Vite + React (without Next.js)
|
|
731
788
|
- [ ] Custom key naming strategies
|
package/README.md
CHANGED
|
@@ -45,8 +45,10 @@ Et en quelques secondes :
|
|
|
45
45
|
- Scanne tous vos composants via AST
|
|
46
46
|
- Genere `messages/fr.json` avec les cles i18n
|
|
47
47
|
- Traduit automatiquement vers chaque langue cible
|
|
48
|
+
- Installe `next-intl` automatiquement si absent
|
|
48
49
|
- Remplace les strings en dur par `t("cle")`
|
|
49
50
|
- Configure `layout.tsx`, `next.config`, `middleware.ts`, `i18n/routing.ts`
|
|
51
|
+
- Injecte un **Language Switcher flottant** (personnalisable) pour changer de langue
|
|
50
52
|
|
|
51
53
|
## Commandes
|
|
52
54
|
|
|
@@ -150,6 +152,11 @@ Chaque string devient une cle i18n normalisee :
|
|
|
150
152
|
- `next.config` : wrappe avec `createNextIntlPlugin`
|
|
151
153
|
- `middleware.ts` : cree avec le routing i18n
|
|
152
154
|
- `i18n/routing.ts` : definit les locales
|
|
155
|
+
- `LanguageSwitcher.tsx` : widget flottant pour changer de langue
|
|
156
|
+
|
|
157
|
+
### 6. Language Switcher
|
|
158
|
+
|
|
159
|
+
Un composant flottant est automatiquement genere et injecte dans votre layout. Personnalisable via `SWITCHER_CONFIG` dans `components/LanguageSwitcher.tsx` : position, theme (light/dark), couleur d'accent, offset.
|
|
153
160
|
|
|
154
161
|
## Securite
|
|
155
162
|
|
package/dist/cli/index.js
CHANGED
|
@@ -149,6 +149,10 @@ program
|
|
|
149
149
|
}
|
|
150
150
|
if (injResult.routing.ok)
|
|
151
151
|
logger.success('i18n/routing.ts créé');
|
|
152
|
+
if (injResult.switcher.ok)
|
|
153
|
+
logger.success('LanguageSwitcher injecté');
|
|
154
|
+
else if (injResult.switcher.error)
|
|
155
|
+
logger.warn(`LanguageSwitcher — ${injResult.switcher.error}`);
|
|
152
156
|
// Terminé
|
|
153
157
|
logger.blank();
|
|
154
158
|
logger.success('Internationalisation configurée avec succès !');
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,WAAW,EAAE,yDAAyD,CAAC;KAC9E,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,OAA8C,EAAE,EAAE;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE7B,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;YAClC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC;YAC5F,CAAC,CAAC,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEzC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU;QACV,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,IAAI,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YAC3B,MAAM,eAAe,CAAC,WAAW,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACxD,CAAC;QAED,aAAa;QACb,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;QAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,0BAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACxD,MAAM,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,GAAG,eAAe,OAAO,CAAC,CAAC;QAE1C,UAAU;QACV,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAErD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;YAChD,YAAY;YACZ,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,oBAAoB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAEpG,uDAAuD;QACvD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC;gBACrC,YAAY,EAAE,OAAO,CAAC,MAAM;gBAC5B,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM;gBACrD,cAAc,EAAE,WAAW,CAAC,IAAI;gBAChC,aAAa;aACd,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY;YACZ,aAAa;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,oBAAoB,CAAC,CAAC;QACnE,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,iBAAiB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,yCAAyC;QACzC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC;gBACH,MAAM,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC/C,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CACT,qDAAqD,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAC9H,CAAC;gBACF,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC5C,CAAC;QAED,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE;gBAC7C,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CACZ,GAAG,QAAQ,CAAC,aAAa,uBAAuB,QAAQ,CAAC,aAAa,WAAW,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CACnF,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACtF,CAAC;QAED,8BAA8B;QAC9B,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC;YAChC,WAAW;YACX,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,aAAa,CAAC;YACzC,aAAa,EAAE,YAAY;YAC3B,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;aAC3D,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvF,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;aAC5D,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAExF,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;gBACvE,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAEjE,UAAU;QACV,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,aAAa,YAAY,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,SAAS,qCAAqC,CAAC,CAAC;YAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU;QACV,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAErD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,+CAA+C;QAC/C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;YAChD,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,WAAW,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAE3F,0BAA0B;QAC1B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,wBAAwB,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,SAAS,qCAAqC,CAAC,CAAC;YAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErD,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,mCAAmC,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,oBAAoB;QACpB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,GAAG,gBAAgB,aAAa,eAAe,EAAE,CAAC,CAAC;QAElE,WAAW;QACX,MAAM,CAAC,IAAI,CAAC,mBAAmB,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,CAAC,gBAAgB,CAAC;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,oBAAoB,CAAC,CAAC;QAEnE,sCAAsC;QACtC,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,SAAS,CAAC;YACd,WAAW;YACX,OAAO,EAAE,UAAU;YACnB,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,YAAY,OAAO,CAAC,CAAC;QAEpE,IAAI,MAA8B,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;YACvD,IAAI,MAAM,GAA2B,EAAE,CAAC;YAExC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,8CAA8C,CAAC,CAAC;gBACrE,YAAY,IAAI,UAAU,CAAC,MAAM,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3H,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;gBACzB,CAAC;gBACD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAClH,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/injector/index.d.ts
CHANGED
|
@@ -2,10 +2,12 @@ export { injectLayout } from './layout-injector.js';
|
|
|
2
2
|
export { injectNextConfig } from './config-injector.js';
|
|
3
3
|
export { injectMiddleware } from './middleware-injector.js';
|
|
4
4
|
export { injectRouting } from './routing-injector.js';
|
|
5
|
+
export { injectLanguageSwitcher } from './switcher-injector.js';
|
|
5
6
|
export type { LayoutInjectorResult } from './layout-injector.js';
|
|
6
7
|
export type { ConfigInjectorResult } from './config-injector.js';
|
|
7
8
|
export type { MiddlewareInjectorResult } from './middleware-injector.js';
|
|
8
9
|
export type { RoutingInjectorResult, RoutingConfig } from './routing-injector.js';
|
|
10
|
+
export type { SwitcherInjectorResult } from './switcher-injector.js';
|
|
9
11
|
export interface InjectOptions {
|
|
10
12
|
/** Racine du projet Next.js cible. */
|
|
11
13
|
projectRoot: string;
|
|
@@ -38,6 +40,11 @@ export interface InjectAllResult {
|
|
|
38
40
|
skipped: boolean;
|
|
39
41
|
error?: string;
|
|
40
42
|
};
|
|
43
|
+
switcher: {
|
|
44
|
+
ok: boolean;
|
|
45
|
+
skipped: boolean;
|
|
46
|
+
error?: string;
|
|
47
|
+
};
|
|
41
48
|
}
|
|
42
49
|
export declare function injectAll(options: InjectOptions): Promise<InjectAllResult>;
|
|
43
50
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/injector/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/injector/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAClF,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,MAAM,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,UAAU,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,QAAQ,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CA6DhF"}
|
package/dist/injector/index.js
CHANGED
|
@@ -2,10 +2,12 @@ import { injectLayout } from './layout-injector.js';
|
|
|
2
2
|
import { injectNextConfig } from './config-injector.js';
|
|
3
3
|
import { injectMiddleware } from './middleware-injector.js';
|
|
4
4
|
import { injectRouting } from './routing-injector.js';
|
|
5
|
+
import { injectLanguageSwitcher } from './switcher-injector.js';
|
|
5
6
|
export { injectLayout } from './layout-injector.js';
|
|
6
7
|
export { injectNextConfig } from './config-injector.js';
|
|
7
8
|
export { injectMiddleware } from './middleware-injector.js';
|
|
8
9
|
export { injectRouting } from './routing-injector.js';
|
|
10
|
+
export { injectLanguageSwitcher } from './switcher-injector.js';
|
|
9
11
|
export async function injectAll(options) {
|
|
10
12
|
const { projectRoot, locales, defaultLocale, silent = false } = options;
|
|
11
13
|
const result = {
|
|
@@ -13,6 +15,7 @@ export async function injectAll(options) {
|
|
|
13
15
|
config: { ok: false, skipped: false },
|
|
14
16
|
middleware: { ok: false, skipped: false },
|
|
15
17
|
routing: { ok: false, skipped: false },
|
|
18
|
+
switcher: { ok: false, skipped: false },
|
|
16
19
|
};
|
|
17
20
|
// 1. Layout
|
|
18
21
|
try {
|
|
@@ -58,6 +61,17 @@ export async function injectAll(options) {
|
|
|
58
61
|
console.error(` ✗ i18n/routing.ts — ${error}`);
|
|
59
62
|
result.routing = { ok: false, skipped: false, error };
|
|
60
63
|
}
|
|
64
|
+
// 5. Language Switcher
|
|
65
|
+
try {
|
|
66
|
+
const r = await injectLanguageSwitcher(projectRoot, { silent });
|
|
67
|
+
result.switcher = { ok: true, skipped: r.skipped };
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
71
|
+
if (!silent)
|
|
72
|
+
console.error(` ✗ LanguageSwitcher — ${error}`);
|
|
73
|
+
result.switcher = { ok: false, skipped: false, error };
|
|
74
|
+
}
|
|
61
75
|
return result;
|
|
62
76
|
}
|
|
63
77
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/injector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/injector/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface SwitcherInjectorResult {
|
|
2
|
+
modified: boolean;
|
|
3
|
+
skipped: boolean;
|
|
4
|
+
filePath: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function injectLanguageSwitcher(projectRoot: string, options?: {
|
|
7
|
+
silent?: boolean;
|
|
8
|
+
}): Promise<SwitcherInjectorResult>;
|
|
9
|
+
//# sourceMappingURL=switcher-injector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switcher-injector.d.ts","sourceRoot":"","sources":["../../src/injector/switcher-injector.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA8TD,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAoCjC"}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { writeFile, readFile, mkdir, access } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { findLayoutFile } from './layout-injector.js';
|
|
4
|
+
/* ------------------------------------------------------------------ */
|
|
5
|
+
/* Component template */
|
|
6
|
+
/* ------------------------------------------------------------------ */
|
|
7
|
+
function buildSwitcherComponent(routingImportPath) {
|
|
8
|
+
return `'use client';
|
|
9
|
+
|
|
10
|
+
import { usePathname, useRouter } from 'next/navigation';
|
|
11
|
+
import { routing } from '${routingImportPath}';
|
|
12
|
+
import { useState, useRef, useEffect } from 'react';
|
|
13
|
+
|
|
14
|
+
/* ══════════════════════════════════════════════════════════════════════
|
|
15
|
+
* CUSTOMIZATION — Modify these values to match your brand.
|
|
16
|
+
* ⚠ Do NOT remove the attribution section — it is required by the license.
|
|
17
|
+
* ══════════════════════════════════════════════════════════════════════ */
|
|
18
|
+
const SWITCHER_CONFIG = {
|
|
19
|
+
/** Position of the floating widget: 'bottom-right' | 'bottom-left' */
|
|
20
|
+
position: 'bottom-right' as 'bottom-right' | 'bottom-left',
|
|
21
|
+
/** Color theme: 'light' | 'dark' */
|
|
22
|
+
theme: 'light' as 'light' | 'dark',
|
|
23
|
+
/** Accent color used for the active locale highlight */
|
|
24
|
+
accentColor: '#2563eb',
|
|
25
|
+
/** Offset from screen edges in pixels */
|
|
26
|
+
offset: 24,
|
|
27
|
+
/** Border radius of the dropdown in pixels */
|
|
28
|
+
borderRadius: 12,
|
|
29
|
+
};
|
|
30
|
+
/* ══════════════════════════════════════════════════════════════════════ */
|
|
31
|
+
|
|
32
|
+
const LOCALE_DISPLAY: Record<string, { name: string; flag: string }> = {
|
|
33
|
+
en: { name: 'English', flag: '🇬🇧' },
|
|
34
|
+
fr: { name: 'Français', flag: '🇫🇷' },
|
|
35
|
+
es: { name: 'Español', flag: '🇪🇸' },
|
|
36
|
+
de: { name: 'Deutsch', flag: '🇩🇪' },
|
|
37
|
+
it: { name: 'Italiano', flag: '🇮🇹' },
|
|
38
|
+
pt: { name: 'Português', flag: '🇵🇹' },
|
|
39
|
+
nl: { name: 'Nederlands', flag: '🇳🇱' },
|
|
40
|
+
pl: { name: 'Polski', flag: '🇵🇱' },
|
|
41
|
+
ru: { name: 'Русский', flag: '🇷🇺' },
|
|
42
|
+
ja: { name: '日本語', flag: '🇯🇵' },
|
|
43
|
+
ko: { name: '한국어', flag: '🇰🇷' },
|
|
44
|
+
zh: { name: '中文', flag: '🇨🇳' },
|
|
45
|
+
ar: { name: 'العربية', flag: '🇸🇦' },
|
|
46
|
+
tr: { name: 'Türkçe', flag: '🇹🇷' },
|
|
47
|
+
sv: { name: 'Svenska', flag: '🇸🇪' },
|
|
48
|
+
da: { name: 'Dansk', flag: '🇩🇰' },
|
|
49
|
+
fi: { name: 'Suomi', flag: '🇫🇮' },
|
|
50
|
+
nb: { name: 'Norsk', flag: '🇳🇴' },
|
|
51
|
+
uk: { name: 'Українська', flag: '🇺🇦' },
|
|
52
|
+
cs: { name: 'Čeština', flag: '🇨🇿' },
|
|
53
|
+
ro: { name: 'Română', flag: '🇷🇴' },
|
|
54
|
+
hu: { name: 'Magyar', flag: '🇭🇺' },
|
|
55
|
+
el: { name: 'Ελληνικά', flag: '🇬🇷' },
|
|
56
|
+
bg: { name: 'Български', flag: '🇧🇬' },
|
|
57
|
+
sk: { name: 'Slovenčina', flag: '🇸🇰' },
|
|
58
|
+
sl: { name: 'Slovenščina', flag: '🇸🇮' },
|
|
59
|
+
et: { name: 'Eesti', flag: '🇪🇪' },
|
|
60
|
+
lv: { name: 'Latviešu', flag: '🇱🇻' },
|
|
61
|
+
lt: { name: 'Lietuvių', flag: '🇱🇹' },
|
|
62
|
+
id: { name: 'Bahasa Indonesia', flag: '🇮🇩' },
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export function LanguageSwitcher() {
|
|
66
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
67
|
+
const containerRef = useRef<HTMLDivElement>(null);
|
|
68
|
+
const pathname = usePathname();
|
|
69
|
+
const router = useRouter();
|
|
70
|
+
|
|
71
|
+
const locales = routing.locales as string[];
|
|
72
|
+
const segments = pathname.split('/');
|
|
73
|
+
const currentLocale = locales.includes(segments[1])
|
|
74
|
+
? segments[1]
|
|
75
|
+
: routing.defaultLocale;
|
|
76
|
+
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
function onClickOutside(e: MouseEvent) {
|
|
79
|
+
if (containerRef.current && !containerRef.current.contains(e.target as Node)) {
|
|
80
|
+
setIsOpen(false);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
document.addEventListener('mousedown', onClickOutside);
|
|
84
|
+
return () => document.removeEventListener('mousedown', onClickOutside);
|
|
85
|
+
}, []);
|
|
86
|
+
|
|
87
|
+
function switchTo(locale: string) {
|
|
88
|
+
if (locale === currentLocale) {
|
|
89
|
+
setIsOpen(false);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const rest = segments.slice(2).join('/');
|
|
93
|
+
router.push(\`/\${locale}\${rest ? \`/\${rest}\` : ''}\`);
|
|
94
|
+
setIsOpen(false);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const { theme, accentColor, offset, borderRadius, position } = SWITCHER_CONFIG;
|
|
98
|
+
const isDark = theme === 'dark';
|
|
99
|
+
const isRight = position === 'bottom-right';
|
|
100
|
+
|
|
101
|
+
const current = LOCALE_DISPLAY[currentLocale] ?? {
|
|
102
|
+
name: currentLocale.toUpperCase(),
|
|
103
|
+
flag: '🌐',
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
return (
|
|
107
|
+
<div
|
|
108
|
+
ref={containerRef}
|
|
109
|
+
style={{
|
|
110
|
+
position: 'fixed',
|
|
111
|
+
bottom: offset,
|
|
112
|
+
...(isRight ? { right: offset } : { left: offset }),
|
|
113
|
+
zIndex: 9999,
|
|
114
|
+
fontFamily:
|
|
115
|
+
'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif',
|
|
116
|
+
}}
|
|
117
|
+
>
|
|
118
|
+
{/* ── Dropdown ── */}
|
|
119
|
+
{isOpen && (
|
|
120
|
+
<div
|
|
121
|
+
style={{
|
|
122
|
+
position: 'absolute',
|
|
123
|
+
bottom: 58,
|
|
124
|
+
...(isRight ? { right: 0 } : { left: 0 }),
|
|
125
|
+
minWidth: 210,
|
|
126
|
+
background: isDark ? '#1f2937' : '#ffffff',
|
|
127
|
+
borderRadius,
|
|
128
|
+
boxShadow:
|
|
129
|
+
'0 12px 40px rgba(0,0,0,0.16), 0 2px 8px rgba(0,0,0,0.08)',
|
|
130
|
+
border: \`1px solid \${isDark ? '#374151' : '#e5e7eb'}\`,
|
|
131
|
+
overflow: 'hidden',
|
|
132
|
+
animation: 'nai18n-fade-in 150ms ease-out',
|
|
133
|
+
}}
|
|
134
|
+
>
|
|
135
|
+
<div style={{ padding: '6px 0', maxHeight: 260, overflowY: 'auto' }}>
|
|
136
|
+
{locales.map((locale) => {
|
|
137
|
+
const meta = LOCALE_DISPLAY[locale] ?? {
|
|
138
|
+
name: locale.toUpperCase(),
|
|
139
|
+
flag: '🌐',
|
|
140
|
+
};
|
|
141
|
+
const isActive = locale === currentLocale;
|
|
142
|
+
return (
|
|
143
|
+
<button
|
|
144
|
+
key={locale}
|
|
145
|
+
onClick={() => switchTo(locale)}
|
|
146
|
+
style={{
|
|
147
|
+
display: 'flex',
|
|
148
|
+
alignItems: 'center',
|
|
149
|
+
gap: 10,
|
|
150
|
+
width: '100%',
|
|
151
|
+
padding: '10px 16px',
|
|
152
|
+
border: 'none',
|
|
153
|
+
background: isActive ? accentColor : 'transparent',
|
|
154
|
+
color: isActive
|
|
155
|
+
? '#ffffff'
|
|
156
|
+
: isDark
|
|
157
|
+
? '#f3f4f6'
|
|
158
|
+
: '#1f2937',
|
|
159
|
+
cursor: 'pointer',
|
|
160
|
+
fontSize: 14,
|
|
161
|
+
fontFamily: 'inherit',
|
|
162
|
+
textAlign: 'left',
|
|
163
|
+
transition: 'background 120ms ease',
|
|
164
|
+
}}
|
|
165
|
+
onMouseEnter={(e) => {
|
|
166
|
+
if (!isActive)
|
|
167
|
+
e.currentTarget.style.background = isDark
|
|
168
|
+
? '#374151'
|
|
169
|
+
: '#f3f4f6';
|
|
170
|
+
}}
|
|
171
|
+
onMouseLeave={(e) => {
|
|
172
|
+
if (!isActive)
|
|
173
|
+
e.currentTarget.style.background = 'transparent';
|
|
174
|
+
}}
|
|
175
|
+
>
|
|
176
|
+
<span style={{ fontSize: 20, lineHeight: 1 }}>{meta.flag}</span>
|
|
177
|
+
<span style={{ flex: 1 }}>{meta.name}</span>
|
|
178
|
+
{isActive && (
|
|
179
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
180
|
+
<path
|
|
181
|
+
d="M3.5 8.5L6.5 11.5L12.5 4.5"
|
|
182
|
+
stroke="currentColor"
|
|
183
|
+
strokeWidth="2"
|
|
184
|
+
strokeLinecap="round"
|
|
185
|
+
strokeLinejoin="round"
|
|
186
|
+
/>
|
|
187
|
+
</svg>
|
|
188
|
+
)}
|
|
189
|
+
</button>
|
|
190
|
+
);
|
|
191
|
+
})}
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
{/* ── Attribution — required by license, do not remove ── */}
|
|
195
|
+
<div
|
|
196
|
+
style={{
|
|
197
|
+
borderTop: \`1px solid \${isDark ? '#374151' : '#f0f0f0'}\`,
|
|
198
|
+
padding: '6px 16px',
|
|
199
|
+
textAlign: 'center',
|
|
200
|
+
}}
|
|
201
|
+
>
|
|
202
|
+
<span
|
|
203
|
+
style={{
|
|
204
|
+
fontSize: 10,
|
|
205
|
+
color: isDark ? '#6b7280' : '#a1a1aa',
|
|
206
|
+
letterSpacing: '0.03em',
|
|
207
|
+
userSelect: 'none',
|
|
208
|
+
pointerEvents: 'none',
|
|
209
|
+
}}
|
|
210
|
+
>
|
|
211
|
+
Made by Steven Koulo
|
|
212
|
+
</span>
|
|
213
|
+
</div>
|
|
214
|
+
</div>
|
|
215
|
+
)}
|
|
216
|
+
|
|
217
|
+
{/* ── Floating trigger button ── */}
|
|
218
|
+
<button
|
|
219
|
+
onClick={() => setIsOpen((v) => !v)}
|
|
220
|
+
aria-label="Change language"
|
|
221
|
+
style={{
|
|
222
|
+
display: 'inline-flex',
|
|
223
|
+
alignItems: 'center',
|
|
224
|
+
gap: 8,
|
|
225
|
+
height: 48,
|
|
226
|
+
padding: '0 18px 0 14px',
|
|
227
|
+
borderRadius: 24,
|
|
228
|
+
border: \`1px solid \${isDark ? '#374151' : '#e5e7eb'}\`,
|
|
229
|
+
background: isDark ? '#1f2937' : '#ffffff',
|
|
230
|
+
color: isDark ? '#f3f4f6' : '#1f2937',
|
|
231
|
+
boxShadow:
|
|
232
|
+
'0 4px 20px rgba(0,0,0,0.1), 0 1px 4px rgba(0,0,0,0.06)',
|
|
233
|
+
cursor: 'pointer',
|
|
234
|
+
fontSize: 14,
|
|
235
|
+
fontWeight: 500,
|
|
236
|
+
fontFamily: 'inherit',
|
|
237
|
+
transition: 'box-shadow 200ms ease, transform 200ms ease',
|
|
238
|
+
}}
|
|
239
|
+
onMouseEnter={(e) => {
|
|
240
|
+
e.currentTarget.style.boxShadow =
|
|
241
|
+
'0 8px 28px rgba(0,0,0,0.16), 0 2px 6px rgba(0,0,0,0.1)';
|
|
242
|
+
e.currentTarget.style.transform = 'translateY(-2px)';
|
|
243
|
+
}}
|
|
244
|
+
onMouseLeave={(e) => {
|
|
245
|
+
e.currentTarget.style.boxShadow =
|
|
246
|
+
'0 4px 20px rgba(0,0,0,0.1), 0 1px 4px rgba(0,0,0,0.06)';
|
|
247
|
+
e.currentTarget.style.transform = 'translateY(0)';
|
|
248
|
+
}}
|
|
249
|
+
>
|
|
250
|
+
<span style={{ fontSize: 20, lineHeight: 1 }}>{current.flag}</span>
|
|
251
|
+
<span>{current.name}</span>
|
|
252
|
+
<svg
|
|
253
|
+
width="12"
|
|
254
|
+
height="12"
|
|
255
|
+
viewBox="0 0 12 12"
|
|
256
|
+
fill="none"
|
|
257
|
+
stroke="currentColor"
|
|
258
|
+
strokeWidth="2"
|
|
259
|
+
strokeLinecap="round"
|
|
260
|
+
style={{
|
|
261
|
+
transition: 'transform 200ms ease',
|
|
262
|
+
transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',
|
|
263
|
+
}}
|
|
264
|
+
>
|
|
265
|
+
<path d="M3 5l3 3 3-3" />
|
|
266
|
+
</svg>
|
|
267
|
+
</button>
|
|
268
|
+
|
|
269
|
+
{/* Animation keyframes */}
|
|
270
|
+
<style>{\`
|
|
271
|
+
@keyframes nai18n-fade-in {
|
|
272
|
+
from { opacity: 0; transform: translateY(8px) scale(0.96); }
|
|
273
|
+
to { opacity: 1; transform: translateY(0) scale(1); }
|
|
274
|
+
}
|
|
275
|
+
\`}</style>
|
|
276
|
+
</div>
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
`;
|
|
280
|
+
}
|
|
281
|
+
/* ------------------------------------------------------------------ */
|
|
282
|
+
/* Layout injection (add <LanguageSwitcher /> + import) */
|
|
283
|
+
/* ------------------------------------------------------------------ */
|
|
284
|
+
async function injectSwitcherIntoLayout(layoutPath, useSrc) {
|
|
285
|
+
let content = await readFile(layoutPath, 'utf-8');
|
|
286
|
+
// Already present?
|
|
287
|
+
if (content.includes('LanguageSwitcher'))
|
|
288
|
+
return false;
|
|
289
|
+
// 1. Add import after the last existing import statement
|
|
290
|
+
const importLine = `import { LanguageSwitcher } from '../components/LanguageSwitcher';\n`;
|
|
291
|
+
const lastImportIdx = content.lastIndexOf('\nimport ');
|
|
292
|
+
if (lastImportIdx !== -1) {
|
|
293
|
+
const endOfLine = content.indexOf('\n', lastImportIdx + 1);
|
|
294
|
+
content = content.slice(0, endOfLine + 1) + importLine + content.slice(endOfLine + 1);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
content = importLine + content;
|
|
298
|
+
}
|
|
299
|
+
// 2. Insert <LanguageSwitcher /> before </body>
|
|
300
|
+
content = content.replace('</body>', ' <LanguageSwitcher />\n </body>');
|
|
301
|
+
await writeFile(layoutPath, content, 'utf-8');
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
304
|
+
/* ------------------------------------------------------------------ */
|
|
305
|
+
/* Public API */
|
|
306
|
+
/* ------------------------------------------------------------------ */
|
|
307
|
+
export async function injectLanguageSwitcher(projectRoot, options = {}) {
|
|
308
|
+
// Detect project structure via layout location
|
|
309
|
+
const layoutPath = await findLayoutFile(projectRoot);
|
|
310
|
+
if (!layoutPath) {
|
|
311
|
+
throw new Error('layout.tsx introuvable — impossible d\'injecter le LanguageSwitcher');
|
|
312
|
+
}
|
|
313
|
+
const useSrc = layoutPath.includes(`${join('src', 'app')}`);
|
|
314
|
+
const baseDir = useSrc ? join(projectRoot, 'src') : projectRoot;
|
|
315
|
+
const componentsDir = join(baseDir, 'components');
|
|
316
|
+
const switcherPath = join(componentsDir, 'LanguageSwitcher.tsx');
|
|
317
|
+
// Skip if already exists
|
|
318
|
+
try {
|
|
319
|
+
await access(switcherPath);
|
|
320
|
+
if (!options.silent)
|
|
321
|
+
console.log(` — ${switcherPath} — déjà présent`);
|
|
322
|
+
return { modified: false, skipped: true, filePath: switcherPath };
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
/* file absent → create it */
|
|
326
|
+
}
|
|
327
|
+
// Create components/ directory if needed
|
|
328
|
+
await mkdir(componentsDir, { recursive: true });
|
|
329
|
+
// Compute the relative import path for routing
|
|
330
|
+
const routingImportPath = useSrc ? '../../i18n/routing' : '../i18n/routing';
|
|
331
|
+
// Write the component file
|
|
332
|
+
await writeFile(switcherPath, buildSwitcherComponent(routingImportPath), 'utf-8');
|
|
333
|
+
// Inject into layout
|
|
334
|
+
await injectSwitcherIntoLayout(layoutPath, useSrc);
|
|
335
|
+
if (!options.silent)
|
|
336
|
+
console.log(` ✓ ${switcherPath} — créé et injecté dans layout`);
|
|
337
|
+
return { modified: true, skipped: false, filePath: switcherPath };
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=switcher-injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switcher-injector.js","sourceRoot":"","sources":["../../src/injector/switcher-injector.ts"],"names":[],"mappings":"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"}
|