next-auto-i18n 0.8.0 → 1.0.1
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/CHANGELOG.md +134 -0
- package/DOCUMENTATION.md +246 -1034
- package/LICENSE +21 -21
- package/README.md +138 -243
- package/dist/adapters/fs/index.d.ts +20 -0
- package/dist/adapters/fs/index.d.ts.map +1 -0
- package/dist/{scanner → adapters/fs}/index.js +44 -52
- package/dist/adapters/fs/index.js.map +1 -0
- package/dist/adapters/project/index.d.ts +22 -0
- package/dist/adapters/project/index.d.ts.map +1 -0
- package/dist/adapters/project/index.js +56 -0
- package/dist/adapters/project/index.js.map +1 -0
- package/dist/adapters/scaffold/index.d.ts +24 -0
- package/dist/adapters/scaffold/index.d.ts.map +1 -0
- package/dist/adapters/scaffold/index.js +111 -0
- package/dist/adapters/scaffold/index.js.map +1 -0
- package/dist/adapters/scaffold/templates.d.ts +12 -0
- package/dist/adapters/scaffold/templates.d.ts.map +1 -0
- package/dist/adapters/scaffold/templates.js +189 -0
- package/dist/adapters/scaffold/templates.js.map +1 -0
- package/dist/adapters/translation/deepl.d.ts +15 -0
- package/dist/adapters/translation/deepl.d.ts.map +1 -0
- package/dist/adapters/translation/deepl.js +95 -0
- package/dist/adapters/translation/deepl.js.map +1 -0
- package/dist/adapters/translation/index.d.ts +9 -0
- package/dist/adapters/translation/index.d.ts.map +1 -0
- package/dist/adapters/translation/index.js +17 -0
- package/dist/adapters/translation/index.js.map +1 -0
- package/dist/adapters/translation/types.d.ts +25 -0
- package/dist/adapters/translation/types.d.ts.map +1 -0
- package/dist/adapters/translation/types.js +18 -0
- package/dist/adapters/translation/types.js.map +1 -0
- package/dist/cli/index.js +50 -449
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/prompts.d.ts +2 -17
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +18 -60
- package/dist/cli/prompts.js.map +1 -1
- package/dist/commands/check.d.ts +17 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +40 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/init.d.ts +26 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +69 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/sync.d.ts +14 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +30 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/config/index.d.ts +29 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +58 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/catalog/index.d.ts +34 -0
- package/dist/core/catalog/index.d.ts.map +1 -0
- package/dist/core/catalog/index.js +79 -0
- package/dist/core/catalog/index.js.map +1 -0
- package/dist/core/check/index.d.ts +35 -0
- package/dist/core/check/index.d.ts.map +1 -0
- package/dist/core/check/index.js +43 -0
- package/dist/core/check/index.js.map +1 -0
- package/dist/core/extraction/index.d.ts +17 -0
- package/dist/core/extraction/index.d.ts.map +1 -0
- package/dist/core/extraction/index.js +242 -0
- package/dist/core/extraction/index.js.map +1 -0
- package/dist/core/extraction/parse.d.ts +8 -0
- package/dist/core/extraction/parse.d.ts.map +1 -0
- package/dist/core/extraction/parse.js +21 -0
- package/dist/core/extraction/parse.js.map +1 -0
- package/dist/core/filters/index.d.ts +14 -0
- package/dist/core/filters/index.d.ts.map +1 -0
- package/dist/{scanner/filters.js → core/filters/index.js} +24 -39
- package/dist/core/filters/index.js.map +1 -0
- package/dist/core/guide/index.d.ts +47 -0
- package/dist/core/guide/index.d.ts.map +1 -0
- package/dist/core/guide/index.js +138 -0
- package/dist/core/guide/index.js.map +1 -0
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +15 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keys/index.d.ts +23 -0
- package/dist/core/keys/index.d.ts.map +1 -0
- package/dist/core/keys/index.js +58 -0
- package/dist/core/keys/index.js.map +1 -0
- package/dist/core/scan/index.d.ts +29 -0
- package/dist/core/scan/index.d.ts.map +1 -0
- package/dist/core/scan/index.js +35 -0
- package/dist/core/scan/index.js.map +1 -0
- package/dist/core/types.d.ts +46 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +11 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline/scan.d.ts +22 -0
- package/dist/pipeline/scan.d.ts.map +1 -0
- package/dist/pipeline/scan.js +35 -0
- package/dist/pipeline/scan.js.map +1 -0
- package/dist/pipeline/sync.d.ts +37 -0
- package/dist/pipeline/sync.d.ts.map +1 -0
- package/dist/pipeline/sync.js +63 -0
- package/dist/pipeline/sync.js.map +1 -0
- package/dist/pipeline/translate.d.ts +34 -0
- package/dist/pipeline/translate.d.ts.map +1 -0
- package/dist/pipeline/translate.js +82 -0
- package/dist/pipeline/translate.js.map +1 -0
- package/dist/reporting/check.d.ts +7 -0
- package/dist/reporting/check.d.ts.map +1 -0
- package/dist/reporting/check.js +51 -0
- package/dist/reporting/check.js.map +1 -0
- package/dist/reporting/init.d.ts +6 -0
- package/dist/reporting/init.d.ts.map +1 -0
- package/dist/reporting/init.js +29 -0
- package/dist/reporting/init.js.map +1 -0
- package/dist/reporting/sync.d.ts +6 -0
- package/dist/reporting/sync.d.ts.map +1 -0
- package/dist/reporting/sync.js +49 -0
- package/dist/reporting/sync.js.map +1 -0
- package/package.json +85 -72
- package/schema/auto-i18n.config.schema.json +54 -0
- package/dist/cli/doc-generator.d.ts +0 -22
- package/dist/cli/doc-generator.d.ts.map +0 -1
- package/dist/cli/doc-generator.js +0 -176
- package/dist/cli/doc-generator.js.map +0 -1
- package/dist/engine/analysis.d.ts +0 -10
- package/dist/engine/analysis.d.ts.map +0 -1
- package/dist/engine/analysis.js +0 -139
- package/dist/engine/analysis.js.map +0 -1
- package/dist/engine/apply.d.ts +0 -11
- package/dist/engine/apply.d.ts.map +0 -1
- package/dist/engine/apply.js +0 -265
- package/dist/engine/apply.js.map +0 -1
- package/dist/engine/index.d.ts +0 -6
- package/dist/engine/index.d.ts.map +0 -1
- package/dist/engine/index.js +0 -6
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/planning.d.ts +0 -24
- package/dist/engine/planning.d.ts.map +0 -1
- package/dist/engine/planning.js +0 -192
- package/dist/engine/planning.js.map +0 -1
- package/dist/engine/report.d.ts +0 -6
- package/dist/engine/report.d.ts.map +0 -1
- package/dist/engine/report.js +0 -132
- package/dist/engine/report.js.map +0 -1
- package/dist/engine/types.d.ts +0 -104
- package/dist/engine/types.d.ts.map +0 -1
- package/dist/engine/types.js +0 -2
- package/dist/engine/types.js.map +0 -1
- package/dist/generator/index.d.ts +0 -23
- package/dist/generator/index.d.ts.map +0 -1
- package/dist/generator/index.js +0 -57
- package/dist/generator/index.js.map +0 -1
- package/dist/generator/key-builder.d.ts +0 -8
- package/dist/generator/key-builder.d.ts.map +0 -1
- package/dist/generator/key-builder.js +0 -37
- package/dist/generator/key-builder.js.map +0 -1
- package/dist/injector/config-injector.d.ts +0 -11
- package/dist/injector/config-injector.d.ts.map +0 -1
- package/dist/injector/config-injector.js +0 -56
- package/dist/injector/config-injector.js.map +0 -1
- package/dist/injector/index.d.ts +0 -58
- package/dist/injector/index.d.ts.map +0 -1
- package/dist/injector/index.js +0 -92
- package/dist/injector/index.js.map +0 -1
- package/dist/injector/layout-injector.d.ts +0 -10
- package/dist/injector/layout-injector.d.ts.map +0 -1
- package/dist/injector/layout-injector.js +0 -108
- package/dist/injector/layout-injector.js.map +0 -1
- package/dist/injector/locale-structure-injector.d.ts +0 -9
- package/dist/injector/locale-structure-injector.d.ts.map +0 -1
- package/dist/injector/locale-structure-injector.js +0 -160
- package/dist/injector/locale-structure-injector.js.map +0 -1
- package/dist/injector/middleware-injector.d.ts +0 -10
- package/dist/injector/middleware-injector.d.ts.map +0 -1
- package/dist/injector/middleware-injector.js +0 -59
- package/dist/injector/middleware-injector.js.map +0 -1
- package/dist/injector/request-injector.d.ts +0 -9
- package/dist/injector/request-injector.d.ts.map +0 -1
- package/dist/injector/request-injector.js +0 -44
- package/dist/injector/request-injector.js.map +0 -1
- package/dist/injector/routing-injector.d.ts +0 -13
- package/dist/injector/routing-injector.d.ts.map +0 -1
- package/dist/injector/routing-injector.js +0 -39
- package/dist/injector/routing-injector.js.map +0 -1
- package/dist/injector/switcher-injector.d.ts +0 -9
- package/dist/injector/switcher-injector.d.ts.map +0 -1
- package/dist/injector/switcher-injector.js +0 -298
- package/dist/injector/switcher-injector.js.map +0 -1
- package/dist/rewriter/attr-rewriter.d.ts +0 -3
- package/dist/rewriter/attr-rewriter.d.ts.map +0 -1
- package/dist/rewriter/attr-rewriter.js +0 -38
- package/dist/rewriter/attr-rewriter.js.map +0 -1
- package/dist/rewriter/const-rewriter.d.ts +0 -10
- package/dist/rewriter/const-rewriter.d.ts.map +0 -1
- package/dist/rewriter/const-rewriter.js +0 -154
- package/dist/rewriter/const-rewriter.js.map +0 -1
- package/dist/rewriter/index.d.ts +0 -31
- package/dist/rewriter/index.d.ts.map +0 -1
- package/dist/rewriter/index.js +0 -144
- package/dist/rewriter/index.js.map +0 -1
- package/dist/rewriter/jsx-rewriter.d.ts +0 -13
- package/dist/rewriter/jsx-rewriter.d.ts.map +0 -1
- package/dist/rewriter/jsx-rewriter.js +0 -158
- package/dist/rewriter/jsx-rewriter.js.map +0 -1
- package/dist/scanner/ast-parser.d.ts +0 -10
- package/dist/scanner/ast-parser.d.ts.map +0 -1
- package/dist/scanner/ast-parser.js +0 -50
- package/dist/scanner/ast-parser.js.map +0 -1
- package/dist/scanner/filters.d.ts +0 -10
- package/dist/scanner/filters.d.ts.map +0 -1
- package/dist/scanner/filters.js.map +0 -1
- package/dist/scanner/index.d.ts +0 -31
- package/dist/scanner/index.d.ts.map +0 -1
- package/dist/scanner/index.js.map +0 -1
- package/dist/scanner/string-extractor.d.ts +0 -21
- package/dist/scanner/string-extractor.d.ts.map +0 -1
- package/dist/scanner/string-extractor.js +0 -198
- package/dist/scanner/string-extractor.js.map +0 -1
- package/dist/translator/deepl.d.ts +0 -18
- package/dist/translator/deepl.d.ts.map +0 -1
- package/dist/translator/deepl.js +0 -110
- package/dist/translator/deepl.js.map +0 -1
- package/dist/translator/index.d.ts +0 -16
- package/dist/translator/index.d.ts.map +0 -1
- package/dist/translator/index.js +0 -88
- package/dist/translator/index.js.map +0 -1
- package/dist/translator/provider.d.ts +0 -5
- package/dist/translator/provider.d.ts.map +0 -1
- package/dist/translator/provider.js +0 -25
- package/dist/translator/provider.js.map +0 -1
- package/dist/utils/config.d.ts +0 -15
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -46
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/deps.d.ts +0 -9
- package/dist/utils/deps.d.ts.map +0 -1
- package/dist/utils/deps.js +0 -50
- package/dist/utils/deps.js.map +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [1.0.1] - 2026-06-03
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **JSON Schema** (`schema/auto-i18n.config.schema.json`) pour `auto-i18n.config.json` : autocomplétion, validation et infobulles dans VSCode. `init` écrit désormais `"$schema"` dans la config générée.
|
|
8
|
+
- **Entrée bibliothèque** (`main`/`types`/`exports`) : `import { runCheck, runSync } from 'next-auto-i18n'` sans exécuter le CLI. Le binaire reste exposé via `bin`.
|
|
9
|
+
- Section « Usage programmatique » dans le README et exemples dans `--help`.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- `package.json` : `exports` map, `sideEffects: false`, `files` inclut `schema/` et `CHANGELOG.md`, scripts `typecheck` et `test:run`, description à jour.
|
|
14
|
+
|
|
15
|
+
## [1.0.0] - 2026-06-03 - Refonte majeure (zéro-mutation)
|
|
16
|
+
|
|
17
|
+
Réécriture complète vers une architecture `core` pur + `adapters`. **Breaking change** : le CLI ne réécrit plus le code source.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- **Modèle zéro-mutation** : l'outil ne modifie plus le JSX / les composants. Il détecte, catalogue, traduit et génère un **guide d'intégration** (`i18n-guide.md`) décrivant le câblage `t()` fichier par fichier. C'était la principale source d'erreurs en projet réel.
|
|
22
|
+
- **Infra `next-intl` additive** : `i18n/routing.ts`, `i18n/request.ts`, middleware/proxy, plugin `next.config` (avec backup) et `LanguageSwitcher` ne sont créés que s'ils sont absents. Plus de restructuration automatique de `app/[locale]` (instructions dans le guide).
|
|
23
|
+
- **Surface réduite à 3 commandes** : `init`, `sync`, `check`.
|
|
24
|
+
- **`check`** : nouvelle commande read-only pour la CI (`--json`, code de sortie ≠ 0 si travail en attente).
|
|
25
|
+
- **Provider de traduction abstrait** : interface `TranslationProvider` (DeepL implémenté), extensible.
|
|
26
|
+
- `auto-i18n.config.json` : seuls `sourceLocale` et `targetLocales` sont requis, le reste reçoit des défauts.
|
|
27
|
+
|
|
28
|
+
### Removed
|
|
29
|
+
|
|
30
|
+
- Commandes `add-locale`, `missing`, `extract`, `extract sync` (remplacées par `init`/`sync`/`check`).
|
|
31
|
+
- Réécriture AST du code source (`src/rewriter`) et restructuration `app/[locale]` automatique.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- La version affichée par le CLI est désormais lue depuis `package.json` (était figée à `0.7.3`).
|
|
36
|
+
|
|
37
|
+
### Architecture
|
|
38
|
+
|
|
39
|
+
- `src/core` (pur, sans I/O, 100 % testable) ← `src/pipeline` (orchestration) ← `src/commands` ← `src/cli`. `src/adapters` (fs, project, scaffold, translation) pour l'I/O. Suite de tests : 66 cas.
|
|
40
|
+
|
|
41
|
+
## [0.7.3] - 2026-04-07
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- **Commande `extract`** : scanne le projet, génère les fichiers de traduction et produit un guide d'intégration Markdown (`i18n-guide.md`) — **sans modifier aucun fichier source**.
|
|
46
|
+
- `--out <path>` : chemin personnalisé du guide (défaut : `i18n-guide.md`)
|
|
47
|
+
- `--locale <locales>` : langues cibles si aucune config n'existe
|
|
48
|
+
- `--inject` : configure next.config, middleware.ts, i18n/routing.ts, i18n/request.ts et app/[locale]/ après extraction
|
|
49
|
+
- `--switcher` : injecte uniquement le Language Switcher flottant (sans `--inject`)
|
|
50
|
+
- `--no-module-scope` : exclut les strings dans les `const` module-scope de la détection et de la traduction
|
|
51
|
+
- Fonctionne sans `auto-i18n.config.json` (prompts interactifs en fallback)
|
|
52
|
+
- Le guide inclut : résumé, fichiers générés, exemples client/serveur, section module-scope, tableaux par fichier, référence des clés
|
|
53
|
+
|
|
54
|
+
- **Commande `extract sync`** : sous-commande de `extract` — rescanne le projet, intègre les nouvelles strings et synchronise les traductions **sans réécrire les fichiers source**. Même merge stable que `sync`.
|
|
55
|
+
- `--inject` : configure Next.js après la synchronisation
|
|
56
|
+
- `--switcher` : injecte uniquement le Language Switcher
|
|
57
|
+
- `--no-module-scope` : exclut les strings module-scope du scan et de la traduction
|
|
58
|
+
|
|
59
|
+
- **Détection des strings module-scope** : les strings dans des `const` à niveau module sont détectées, traduites dans le JSON, et signalées en CLI (fichier + ligne + clé). Le code source n'est pas réécrit (la fonction `t()` n'est accessible qu'à l'intérieur d'un composant).
|
|
60
|
+
|
|
61
|
+
- **Sortie CLI détaillée** : toutes les commandes affichent des informations enrichies (fichiers scannés, remplacements par fichier, clés nouvelles vs existantes, strings module-scope).
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
|
|
65
|
+
- **Entités HTML DeepL** : `'`, `'`, `'`, `"`, `"` sont maintenant correctement restaurés — corrige l'affichage `d'exception` au lieu de `d'exception`.
|
|
66
|
+
- **`sync` — stabilité des clés** : les clés existantes sont désormais préservées via `existingMessages` (merge stable). Plus de régénération depuis zéro.
|
|
67
|
+
- **`sync` — traduction toujours exécutée** : la synchronisation des traductions s'exécute même si le scan ne trouve aucune nouvelle string.
|
|
68
|
+
- **`extract` — clé API perdue** : lors du premier lancement sans config, la clé saisie interactivement était ignorée lors du check suivant — corrigé en la transmettant directement.
|
|
69
|
+
- **Tests `key-builder`** : limite de troncature corrigée de 40 à 60 dans les tests (correspondant à l'implémentation réelle).
|
|
70
|
+
|
|
71
|
+
### Changed
|
|
72
|
+
|
|
73
|
+
- `generateMessages` accepte `existingMessages?: Record<string, string>` pour le merge incrémental stable.
|
|
74
|
+
- `GenerateResult` expose `newCount: number`.
|
|
75
|
+
- `RewriteResult` expose `moduleScopeStrings: UnrewrittenString[]` et `details: FileRewriteDetail[]`.
|
|
76
|
+
- `src/cli/doc-generator.ts` : nouveau module dédié à la génération du guide Markdown.
|
|
77
|
+
|
|
78
|
+
## [0.3.0] - 2026-03-26
|
|
79
|
+
|
|
80
|
+
### Added
|
|
81
|
+
|
|
82
|
+
- **`i18n/request.ts`** : fichier de configuration requis par next-intl pour les Server Components — genere automatiquement avec `getRequestConfig` et fallback sur la locale par defaut.
|
|
83
|
+
- **Structure `app/[locale]/`** : creation automatique du dossier dynamique requis par le App Router next-intl. Les pages existantes sont deplacees, un `[locale]/layout.tsx` est genere avec `NextIntlClientProvider` + `LanguageSwitcher`, et le root layout est simplifie en HTML shell pur.
|
|
84
|
+
- **`<html lang={locale}>`** : l'attribut `lang` du document HTML est desormais dynamique, refletant la locale active (accessibilite + SEO).
|
|
85
|
+
- **Detection Next.js 16** : si la version de Next.js installee est >= 16, l'injecteur genere `proxy.ts` au lieu de `middleware.ts` (convention Next.js 16+).
|
|
86
|
+
|
|
87
|
+
### Fixed
|
|
88
|
+
|
|
89
|
+
- **Rewriter ne detruit plus `LanguageSwitcher.tsx`** : les fichiers generes par le package (`LanguageSwitcher.tsx`) sont exclus du scan et de la reecriture AST.
|
|
90
|
+
- **`LanguageSwitcher` dans le provider** : le composant est maintenant dans `<NextIntlClientProvider>` (via `[locale]/layout.tsx`), ce qui evite tout crash lie au contexte.
|
|
91
|
+
- **TypeScript readonly cast** : `routing.locales as string[]` corrige en `[...routing.locales] as string[]` pour eviter l'erreur de conversion de tuple readonly.
|
|
92
|
+
- **Config `ignore` transmis au scanner** : les patterns du champ `ignore` de `auto-i18n.config.json` (ex: `**/*.test.*`) sont maintenant passes a `scanProject` via `ignorePatterns`.
|
|
93
|
+
- **Scope de scan limite aux dossiers Next.js** : les fichiers `.mjs` ou `.ts` a la racine du projet ne sont plus scannes. Le scanner ne descend que dans `app/`, `src/`, `pages/`, `components/`, `lib/`, `hooks/`, `utils/`.
|
|
94
|
+
- **Dossiers `i18n/` et `messages/` exclus** : ces dossiers generes par le package sont ajoutes aux `DEFAULT_IGNORE_DIRS` internes du scanner.
|
|
95
|
+
- **Support glob patterns** dans `ignorePatterns` : les patterns `**/*.test.*` sont desormais correctement interpretes (conversion glob → RegExp).
|
|
96
|
+
|
|
97
|
+
### Changed
|
|
98
|
+
|
|
99
|
+
- L'orchestrateur `injectAll()` ne modifie plus le root `layout.tsx` directement — la configuration next-intl passe exclusivement par `app/[locale]/layout.tsx`.
|
|
100
|
+
- `InjectAllResult` : remplacement de `layout` par `localeStructure` + ajout de `request`.
|
|
101
|
+
|
|
102
|
+
## [0.2.0] - 2026-03-26
|
|
103
|
+
|
|
104
|
+
### Added
|
|
105
|
+
|
|
106
|
+
- **Language Switcher** : composant flottant genere automatiquement et injecte dans le layout, permettant aux utilisateurs de changer de langue depuis le navigateur. Personnalisable (position, theme, couleur d'accent, taille).
|
|
107
|
+
- **Auto-install next-intl** : detection automatique du package manager (npm/yarn/pnpm) et installation de `next-intl` si absent.
|
|
108
|
+
- **Attribution** : tag "Made by Steven Koulo" integre au widget (requis par la licence).
|
|
109
|
+
|
|
110
|
+
### Fixed
|
|
111
|
+
|
|
112
|
+
- **Scanner** : les template literals dans `className`, `style`, `id`, `href`, `src` et autres attributs non traduisibles ne sont plus extraits.
|
|
113
|
+
- **Rewriter** : les crashes AST sur les structures complexes (ternaires, expressions imbriquees) sont desormais absorbes gracieusement (try/catch).
|
|
114
|
+
- **Pipeline** : la reecriture de chaque fichier est isolee — un fichier en erreur n'arrete plus le reste du pipeline.
|
|
115
|
+
- **CLI** : l'etape d'injection (middleware, routing, layout) s'execute meme si la reecriture echoue partiellement.
|
|
116
|
+
|
|
117
|
+
### Changed
|
|
118
|
+
|
|
119
|
+
- Mise a jour de vitest 1.6.x vers 4.1.x pour compatibilite Node.js 25.
|
|
120
|
+
|
|
121
|
+
## [0.1.0] - 2026-03-26
|
|
122
|
+
|
|
123
|
+
### Initial release
|
|
124
|
+
|
|
125
|
+
- **Scanner** : extraction AST des strings JSX, attributs et template literals
|
|
126
|
+
- **Generator** : generation des cles i18n et du fichier `messages/<locale>.json`
|
|
127
|
+
- **Translator** : traduction automatique via DeepL API (batch, incrementiel)
|
|
128
|
+
- **Rewriter** : reecriture des composants React (`t("cle")`, `useTranslations`, `getTranslations`)
|
|
129
|
+
- **Injector** : configuration automatique de Next.js (`layout.tsx`, `next.config`, `middleware.ts`, `i18n/routing.ts`)
|
|
130
|
+
- **CLI** : commandes `init`, `sync`, `add-locale`, `missing`
|
|
131
|
+
- Mode `--dry-run` pour preview sans modification
|
|
132
|
+
- Backups automatiques (`*.backup`)
|
|
133
|
+
- Support Server Components et Client Components
|
|
134
|
+
- Protection des placeholders lors de la traduction
|