next-auto-i18n 0.7.3 → 0.8.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.
Files changed (60) hide show
  1. package/DOCUMENTATION.md +48 -2
  2. package/README.md +136 -124
  3. package/dist/cli/index.js +128 -521
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/engine/analysis.d.ts +10 -0
  6. package/dist/engine/analysis.d.ts.map +1 -0
  7. package/dist/engine/analysis.js +139 -0
  8. package/dist/engine/analysis.js.map +1 -0
  9. package/dist/engine/apply.d.ts +11 -0
  10. package/dist/engine/apply.d.ts.map +1 -0
  11. package/dist/engine/apply.js +265 -0
  12. package/dist/engine/apply.js.map +1 -0
  13. package/dist/engine/index.d.ts +6 -0
  14. package/dist/engine/index.d.ts.map +1 -0
  15. package/dist/engine/index.js +6 -0
  16. package/dist/engine/index.js.map +1 -0
  17. package/dist/engine/planning.d.ts +24 -0
  18. package/dist/engine/planning.d.ts.map +1 -0
  19. package/dist/engine/planning.js +192 -0
  20. package/dist/engine/planning.js.map +1 -0
  21. package/dist/engine/report.d.ts +6 -0
  22. package/dist/engine/report.d.ts.map +1 -0
  23. package/dist/engine/report.js +132 -0
  24. package/dist/engine/report.js.map +1 -0
  25. package/dist/engine/types.d.ts +104 -0
  26. package/dist/engine/types.d.ts.map +1 -0
  27. package/dist/engine/types.js +2 -0
  28. package/dist/engine/types.js.map +1 -0
  29. package/dist/generator/index.d.ts +7 -0
  30. package/dist/generator/index.d.ts.map +1 -1
  31. package/dist/generator/index.js +13 -5
  32. package/dist/generator/index.js.map +1 -1
  33. package/dist/injector/locale-structure-injector.d.ts.map +1 -1
  34. package/dist/injector/locale-structure-injector.js +34 -53
  35. package/dist/injector/locale-structure-injector.js.map +1 -1
  36. package/dist/rewriter/jsx-rewriter.d.ts +7 -0
  37. package/dist/rewriter/jsx-rewriter.d.ts.map +1 -1
  38. package/dist/rewriter/jsx-rewriter.js +66 -2
  39. package/dist/rewriter/jsx-rewriter.js.map +1 -1
  40. package/dist/scanner/filters.d.ts +2 -0
  41. package/dist/scanner/filters.d.ts.map +1 -1
  42. package/dist/scanner/filters.js +23 -20
  43. package/dist/scanner/filters.js.map +1 -1
  44. package/dist/scanner/index.d.ts +17 -1
  45. package/dist/scanner/index.d.ts.map +1 -1
  46. package/dist/scanner/index.js +28 -7
  47. package/dist/scanner/index.js.map +1 -1
  48. package/dist/scanner/string-extractor.d.ts +7 -0
  49. package/dist/scanner/string-extractor.d.ts.map +1 -1
  50. package/dist/scanner/string-extractor.js +3 -0
  51. package/dist/scanner/string-extractor.js.map +1 -1
  52. package/dist/translator/index.d.ts +2 -0
  53. package/dist/translator/index.d.ts.map +1 -1
  54. package/dist/translator/index.js +37 -4
  55. package/dist/translator/index.js.map +1 -1
  56. package/dist/translator/provider.d.ts +5 -0
  57. package/dist/translator/provider.d.ts.map +1 -0
  58. package/dist/translator/provider.js +25 -0
  59. package/dist/translator/provider.js.map +1 -0
  60. package/package.json +1 -1
package/DOCUMENTATION.md CHANGED
@@ -8,15 +8,18 @@
8
8
  <a href="https://github.com/stvekoulo/next-auto-i18n/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/next-auto-i18n" alt="license"></a>
9
9
  </p>
10
10
 
11
- <p align="center"><strong>Translate your Next.js project automatically in under 5 minutes.</strong></p>
11
+ <p align="center"><strong>Conservative i18n automation for Next.js App Router projects.</strong></p>
12
12
 
13
- next-auto-i18n is a CLI tool that fully automates internationalization (i18n) in existing Next.js projects. It scans your codebase via AST, extracts translatable strings, translates them through DeepL, rewrites your components to use `t("key")` calls, and configures [next-intl](https://next-intl-docs.vercel.app/) all in a single command.
13
+ > This document complements the README. The README is the shortest source of truth for public guarantees. When behavior differs between examples and real project constraints, the engine always prefers safe refusal or manual guidance over risky mutation.
14
+
15
+ next-auto-i18n is a CLI tool for existing Next.js projects. It scans the codebase via AST, extracts translatable strings, translates them through DeepL, rewrites safe cases automatically, and applies conservative `next-intl` injection when the project structure is compatible.
14
16
 
15
17
  ---
16
18
 
17
19
  ## Table of Contents
18
20
 
19
21
  - [Why next-auto-i18n?](#why-next-auto-i18n)
22
+ - [Compatibility Matrix](#compatibility-matrix)
20
23
  - [Prerequisites](#prerequisites)
21
24
  - [Installation](#installation)
22
25
  - [Quick Start](#quick-start)
@@ -34,6 +37,49 @@ next-auto-i18n is a CLI tool that fully automates internationalization (i18n) in
34
37
 
35
38
  ---
36
39
 
40
+ ## Compatibility Matrix
41
+
42
+ ### Project structure
43
+
44
+ | Target | Status | Notes |
45
+ |---|---|---|
46
+ | `app/` | Supported | Primary target |
47
+ | `src/app/` | Supported | Scanner and injectors handle both roots |
48
+ | `components/`, `ui/`, `features/`, `shared/` | Supported for scan | Included in the default scan scope |
49
+ | custom monorepo layouts | Partial | Depends on actual source tree and ignore rules |
50
+
51
+ ### Rewriting behavior
52
+
53
+ | Case | Status | Behavior |
54
+ |---|---|---|
55
+ | simple JSX text | Supported | auto rewrite |
56
+ | supported JSX attributes | Supported | auto rewrite |
57
+ | template literals | Supported | generated key + rewrite when safe |
58
+ | module-scope strings | Partial | translated, but often manual integration |
59
+ | ambiguous JSX spacing | Conservative | skipped with diagnostics |
60
+ | unparseable source file | Blocked | file skipped, warning emitted |
61
+
62
+ ### Next.js injection
63
+
64
+ | Target | Status | Behavior |
65
+ |---|---|---|
66
+ | `next.config.*` | Supported | inject if compatible, otherwise block |
67
+ | `middleware.ts` / `proxy.ts` | Supported | created or skipped if already present |
68
+ | `i18n/routing.ts` | Supported | created or skipped |
69
+ | `i18n/request.ts` | Supported | created or skipped |
70
+ | `LanguageSwitcher` | Supported | can be injected independently |
71
+ | `app/[locale]/` restructuring | Conservative | refused on complex root layouts |
72
+
73
+ ### Runtime guarantees
74
+
75
+ | Situation | Outcome |
76
+ |---|---|
77
+ | safe project shape | full or near-full automation |
78
+ | mixed safe and unsafe operations | partial run with explicit manual actions |
79
+ | risky mutation candidate | skipped instead of forced |
80
+
81
+ ---
82
+
37
83
  ## Why next-auto-i18n?
38
84
 
39
85
  ### Manual setup vs next-auto-i18n
package/README.md CHANGED
@@ -4,70 +4,89 @@
4
4
  ![npm downloads](https://img.shields.io/npm/dm/next-auto-i18n)
5
5
  ![license](https://img.shields.io/npm/l/next-auto-i18n)
6
6
 
7
- > Automatise l'internationalisation d'un projet React / Next.js en une seule commande.
7
+ > CLI d’internationalisation pour projets Next.js App Router, avec scan AST, génération de messages, traduction DeepL, réécriture prudente et injection `next-intl`.
8
8
 
9
- **next-auto-i18n** scanne votre code, extrait les strings traduisibles, les traduit via DeepL, et reconfigure votre projet pour utiliser [next-intl](https://next-intl-docs.vercel.app/) sans intervention manuelle.
9
+ `next-auto-i18n` scanne votre code, extrait les strings traduisibles, génère les clés i18n, remplit les fichiers `messages/*.json`, traduit via DeepL et applique les mutations sûres du projet. Quand une réécriture ou une injection n’est pas jugée fiable, le CLI s’arrête proprement sur cette cible et renvoie une action manuelle recommandée au lieu de modifier silencieusement votre code.
10
10
 
11
- **[Documentation complete](./DOCUMENTATION.md)**
11
+ La version actuelle est pensée pour être **utile en automatique**, mais aussi **conservatrice** sur les cas ambigus.
12
+
13
+ Le complément de documentation se trouve dans [DOCUMENTATION.md](./DOCUMENTATION.md).
12
14
 
13
15
  ## Installation
14
16
 
15
17
  ```bash
16
- npm install -D next-auto-i18n
18
+ npm install -D next-auto-i18n next-intl
17
19
  ```
18
20
 
19
- Ou directement via npx :
21
+ Ou directement :
20
22
 
21
23
  ```bash
22
24
  npx next-auto-i18n init
23
25
  ```
24
26
 
25
- ## Pre-requis
27
+ ## Prérequis
28
+
29
+ - Node.js `>= 18`
30
+ - Un projet Next.js avec App Router
31
+ - `next-intl` installé dans le projet
32
+ - Une clé API DeepL
33
+
34
+ ## Ce que le package fait vraiment
26
35
 
27
- - Node.js >= 18
28
- - Un projet Next.js (App Router)
29
- - Une cle API DeepL ([inscription gratuite](https://www.deepl.com/pro-api))
36
+ - Scan AST des fichiers `.tsx`, `.jsx`, `.ts`, `.js`
37
+ - Extraction des strings JSX, attributs traduisibles et template literals
38
+ - Génération incrémentale des clés dans `messages/<locale>.json`
39
+ - Traduction DeepL avec validation des placeholders
40
+ - Réécriture automatique des cas sûrs
41
+ - Détection des cas risqués : module-scope, JSX ambigu, fichiers non parsables
42
+ - Injection Next.js conservatrice : applique ce qui est sûr, bloque ce qui doit rester manuel
43
+ - Reporting structuré : `success`, `partial`, `failed`, diagnostics et actions manuelles
30
44
 
31
- ## Utilisation rapide
45
+ ## Ce que le package ne promet pas
46
+
47
+ - Il ne réécrit pas tous les cas JSX complexes.
48
+ - Il ne force pas la restructuration `app/[locale]` si le layout racine paraît trop personnalisé.
49
+ - Il ne “corrige pas quand même” un projet ambigu.
50
+ - Il ne garantit pas un projet 100% migré sans validation humaine sur les cas avancés.
51
+
52
+ ## Démarrage rapide
32
53
 
33
54
  ```bash
34
55
  npx next-auto-i18n init
35
56
  ```
36
57
 
37
- Le CLI vous guide interactivement :
58
+ Le CLI vous guide sur :
38
59
 
39
- 1. Langue source (ex: `fr`)
40
- 2. Langues cibles (ex: `en, es, de`)
41
- 3. Cle API DeepL
60
+ 1. la locale source
61
+ 2. les locales cibles
62
+ 3. la clé DeepL
42
63
 
43
- Et en quelques secondes :
64
+ Puis il :
44
65
 
45
- - Scanne tous vos composants via AST
46
- - Genere `messages/fr.json` avec les cles i18n
47
- - Traduit automatiquement vers chaque langue cible
48
- - Installe `next-intl` automatiquement si absent
49
- - Remplace les strings en dur par `t("cle")`
50
- - Configure `next.config`, `middleware.ts` (ou `proxy.ts` sur Next.js 16+)
51
- - Genere `i18n/routing.ts` + `i18n/request.ts` (requis pour les Server Components)
52
- - Cree la structure `app/[locale]/` requise par le App Router next-intl
53
- - Injecte un **Language Switcher flottant** (personnalisable) pour changer de langue
54
- - Detecte les strings dans les `const` module-scope et vous guide pour les integrer manuellement
66
+ - crée `auto-i18n.config.json`
67
+ - alimente `messages/<sourceLocale>.json`
68
+ - traduit les locales cibles
69
+ - réécrit les fichiers sûrs
70
+ - tente les injections Next.js sûres
71
+ - signale clairement les parties à traiter manuellement
55
72
 
56
73
  ## Commandes
57
74
 
58
75
  ### `next-auto-i18n init`
59
76
 
60
- Initialisation complete du projet.
77
+ Initialise le projet : scan, messages, traduction, réécriture, injection.
61
78
 
62
79
  ```bash
63
- next-auto-i18n init # mode interactif
64
- next-auto-i18n init --dry-run # preview sans modification
65
- next-auto-i18n init --locale en,es,de # langues cibles en ligne de commande
80
+ next-auto-i18n init
81
+ next-auto-i18n init --dry-run
82
+ next-auto-i18n init --locale en,es,de
66
83
  ```
67
84
 
85
+ `--dry-run` montre d’abord un aperçu et demande confirmation avant d’appliquer.
86
+
68
87
  ### `next-auto-i18n sync`
69
88
 
70
- Rescanne le projet, integre les nouvelles strings et synchronise toutes les traductions (mode incrementiel les cles existantes sont preservees).
89
+ Rescanne le projet, fusionne les nouvelles strings et synchronise les traductions sans régénérer toute la base.
71
90
 
72
91
  ```bash
73
92
  next-auto-i18n sync
@@ -75,33 +94,30 @@ next-auto-i18n sync
75
94
 
76
95
  ### `next-auto-i18n extract`
77
96
 
78
- Traduit toutes les strings et genere un **guide d'integration Markdown** sans modifier aucun fichier source.
97
+ Génère ou met à jour les fichiers `messages/*.json`, traduit, puis produit un guide Markdown sans modifier les fichiers source applicatifs.
79
98
 
80
99
  ```bash
81
- next-auto-i18n extract # guide genere dans i18n-guide.md
82
- next-auto-i18n extract --out docs/i18n-guide.md # chemin personnalise
83
- next-auto-i18n extract --locale en,es # langues cibles (si pas de config)
84
- next-auto-i18n extract --inject # configure aussi Next.js (next.config, middleware, routing...)
85
- next-auto-i18n extract --switcher # injecte uniquement le Language Switcher
86
- next-auto-i18n extract --no-module-scope # ignore les strings dans les const module-scope
100
+ next-auto-i18n extract
101
+ next-auto-i18n extract --out docs/i18n-guide.md
102
+ next-auto-i18n extract --inject
103
+ next-auto-i18n extract --switcher
104
+ next-auto-i18n extract --no-module-scope
87
105
  ```
88
106
 
89
- Le guide genere inclut : exemples d'utilisation Client/Server Component, tableaux par fichier (ligne, type, cle, code a copier-coller), section dedicee aux strings module-scope.
90
-
91
107
  ### `next-auto-i18n extract sync`
92
108
 
93
- Rescanne le projet, integre les nouvelles strings et synchronise les traductions — **sans réécrire les fichiers source**. Meme merge stable que `sync`.
109
+ Version incrémentale de `extract`.
94
110
 
95
111
  ```bash
96
- next-auto-i18n extract sync # rescan + mise a jour JSON + traduction
97
- next-auto-i18n extract sync --inject # + configure Next.js apres synchronisation
98
- next-auto-i18n extract sync --switcher # + injecte le Language Switcher
99
- next-auto-i18n extract sync --no-module-scope # exclut les strings module-scope
112
+ next-auto-i18n extract sync
113
+ next-auto-i18n extract sync --inject
114
+ next-auto-i18n extract sync --switcher
115
+ next-auto-i18n extract sync --no-module-scope
100
116
  ```
101
117
 
102
118
  ### `next-auto-i18n add-locale <locale>`
103
119
 
104
- Ajoute une nouvelle langue et traduit toutes les cles existantes.
120
+ Ajoute une locale cible, traduit les clés existantes et met à jour l’infrastructure Next.js avec les mêmes garde-fous que le reste du moteur.
105
121
 
106
122
  ```bash
107
123
  next-auto-i18n add-locale ar
@@ -109,121 +125,117 @@ next-auto-i18n add-locale ar
109
125
 
110
126
  ### `next-auto-i18n missing`
111
127
 
112
- Affiche les cles non traduites par langue.
128
+ Affiche les clés manquantes par locale cible.
113
129
 
114
130
  ```bash
115
131
  next-auto-i18n missing
116
132
  ```
117
133
 
118
- ## Configuration
119
-
120
- Le fichier `auto-i18n.config.json` est genere automatiquement :
121
-
122
- ```json
123
- {
124
- "sourceLocale": "fr",
125
- "targetLocales": ["en", "es"],
126
- "provider": "deepl",
127
- "apiKeyEnv": "AUTO_I18N_DEEPL_KEY",
128
- "messagesDir": "./messages",
129
- "ignore": ["node_modules", ".next", "**/*.test.*", "**/*.spec.*"]
130
- }
131
- ```
134
+ ## Modèle de sécurité
132
135
 
133
- La cle API est stockee dans `.env.local` (jamais commitee) :
136
+ - `.env.local` et `*.backup` sont ajoutés au `.gitignore`
137
+ - les placeholders de traduction sont validés avant écriture
138
+ - les réécritures ambiguës sont exclues au lieu d’être appliquées de force
139
+ - les injecteurs Next.js retournent `applicable`, `already_present`, `manual_required` ou `blocked`
140
+ - le run global peut finir en `partial` avec actions manuelles listées
134
141
 
135
- ```bash
136
- AUTO_I18N_DEEPL_KEY=votre-cle-ici
137
- ```
142
+ ## Compatibilité
138
143
 
139
- ## Fonctionnement
144
+ ### Structures de projet
140
145
 
141
- ### 1. Scan AST
146
+ | Structure | Statut | Notes |
147
+ |---|---|---|
148
+ | `app/` | supporté | cas principal |
149
+ | `src/app/` | supporté | supporté par le scanner et les injecteurs |
150
+ | `components/`, `ui/`, `features/`, `shared/` | supporté au scan | scan AST étendu |
151
+ | monorepo avec conventions très custom | partiel | dépend de la structure réellement scannée |
142
152
 
143
- Analyse les fichiers `.tsx`, `.jsx`, `.ts`, `.js` via [ts-morph](https://ts-morph.com/) :
153
+ ### Réécriture AST
144
154
 
145
- - Texte JSX : `<p>Bonjour</p>`
146
- - Attributs : `placeholder="Rechercher..."`
147
- - Template literals : `` `Bienvenue ${name}` ``
155
+ | Cas | Statut | Comportement |
156
+ |---|---|---|
157
+ | texte JSX simple | supporté | réécriture automatique |
158
+ | attributs traduisibles | supporté | réécriture automatique |
159
+ | template literals simples | supporté | génération de clé + réécriture |
160
+ | strings module-scope | partiel | traduites, mais intégration souvent manuelle |
161
+ | JSX inline ambigu ou espaces sensibles | conservateur | exclu de la réécriture auto |
162
+ | fichier non parsable | bloqué | diagnostic remonté, aucune mutation |
148
163
 
149
- Ignore automatiquement les classNames, imports, strings techniques, fichiers de config.
164
+ ### Injection Next.js
150
165
 
151
- ### 2. Generation des cles
166
+ | Cible | Statut | Comportement |
167
+ |---|---|---|
168
+ | `next.config.*` | supporté | injection si sûre, sinon blocage explicite |
169
+ | `middleware.ts` / `proxy.ts` | supporté | création prudente selon contexte |
170
+ | `i18n/routing.ts` | supporté | création ou skip si déjà présent |
171
+ | `i18n/request.ts` | supporté | création ou skip si déjà présent |
172
+ | `LanguageSwitcher` | supporté | injecteur isolé possible |
173
+ | `app/[locale]/` | conservateur | refus explicite sur layout complexe |
152
174
 
153
- Chaque string devient une cle i18n normalisee :
175
+ ### Versions et dépendances
154
176
 
155
- | String | Cle |
156
- |--------|-----|
157
- | `Bonjour` | `bonjour` |
158
- | `Ajouter au panier` | `ajouter_au_panier` |
159
- | `` `Bienvenue ${name}` `` | `bienvenue_name` |
177
+ | Élément | Statut |
178
+ |---|---|
179
+ | Node.js 18+ | requis |
180
+ | Next.js App Router | requis |
181
+ | `next-intl` | requis |
182
+ | DeepL Free / Pro | supporté |
160
183
 
161
- ### 3. Traduction DeepL
184
+ ## Exemples de comportement
162
185
 
163
- - Appel batch avec protection des placeholders (`{name}` → `<x>name</x>`)
164
- - Mode incrementiel : seules les cles manquantes sont traduites
165
- - Compatible DeepL Free (500k chars/mois) et Pro
166
- - Restauration automatique des entites HTML (`&apos;`, `&#39;`, etc.)
186
+ ### Cas sûr
167
187
 
168
- ### 4. Reecriture des composants
169
-
170
- | Avant | Apres |
171
- |-------|-------|
172
- | `<p>Bonjour</p>` | `<p>{t("bonjour")}</p>` |
173
- | `placeholder="Chercher"` | `placeholder={t("chercher")}` |
174
- | `` `Salut ${name}` `` | `t("salut_name", { name })` |
188
+ ```tsx
189
+ <p>Bonjour</p>
190
+ ```
175
191
 
176
- - Server Components : `await getTranslations()` (next-intl/server)
177
- - Client Components : `useTranslations()` (next-intl)
178
- - Les strings dans des `const` module-scope (hors composant) sont **detectees et signalees** avec le fichier + numero de ligne — elles sont traduites dans les JSON mais pas reecrites automatiquement (voir section suivante)
192
+ devient :
179
193
 
180
- ### Strings module-scope
194
+ ```tsx
195
+ <p>{t("bonjour")}</p>
196
+ ```
181
197
 
182
- Les `const` declarees au niveau module (hors fonction/composant) ne peuvent pas utiliser `t()` directement. next-auto-i18n les detecte, les traduit, et vous indique quoi faire :
198
+ ### Cas module-scope
183
199
 
184
200
  ```tsx
185
- // avant — const module-scope, t() inaccessible ici
186
- const items = ['Accueil', 'A propos', 'Contact'];
187
-
188
- // ✅ apres — deplacez la const dans le composant
189
- export function Nav() {
190
- const t = useTranslations();
191
- const items = [t('accueil'), t('a_propos'), t('contact')];
192
- }
201
+ const items = ['Accueil', 'Contact'];
193
202
  ```
194
203
 
195
- Utilisez `next-auto-i18n extract` pour obtenir un guide complet avec tous les cas a corriger.
204
+ Le package peut générer les messages, mais laissera une action manuelle plutôt que d’injecter `t()` à un endroit où il n’est pas accessible.
196
205
 
197
- ### 5. Injection config Next.js
206
+ ### Cas layout complexe
198
207
 
199
- - `next.config` : wrappe avec `createNextIntlPlugin`
200
- - `middleware.ts` / `proxy.ts` : routing i18n (proxy.ts si Next.js >= 16)
201
- - `i18n/routing.ts` : definit les locales
202
- - `i18n/request.ts` : configuration `getRequestConfig` pour les Server Components
203
- - `app/[locale]/layout.tsx` : cree avec `NextIntlClientProvider` + `LanguageSwitcher`
204
- - `app/[locale]/page.tsx` : la page existante est deplacee ici
205
- - `app/layout.tsx` : simplifie en HTML shell (`<html><body>{children}</body></html>`)
208
+ Si le layout racine contient de la logique sensible ou certains patterns considérés à risque, l’injection de `app/[locale]` est marquée `manual required`. Les autres injections sûres peuvent continuer.
206
209
 
207
- ### 6. Language Switcher
210
+ ## Configuration
208
211
 
209
- Un composant flottant est automatiquement genere dans `components/LanguageSwitcher.tsx` et inclus dans `app/[locale]/layout.tsx` (dans le provider). Personnalisable via `SWITCHER_CONFIG` : position, theme (light/dark), couleur d'accent, offset.
212
+ Le fichier `auto-i18n.config.json` est généré automatiquement :
210
213
 
211
- ## Securite
214
+ ```json
215
+ {
216
+ "sourceLocale": "fr",
217
+ "targetLocales": ["en", "es"],
218
+ "provider": "deepl",
219
+ "apiKeyEnv": "AUTO_I18N_DEEPL_KEY",
220
+ "messagesDir": "./messages",
221
+ "ignore": ["node_modules", ".next", "**/*.test.*", "**/*.spec.*"]
222
+ }
223
+ ```
224
+
225
+ La clé API est stockée dans `.env.local` :
212
226
 
213
- - La cle API n'est **jamais** dans le code source
214
- - `.env.local` et `*.backup` sont ajoutes au `.gitignore`
215
- - Mode `--dry-run` pour verifier avant modification
216
- - Backups automatiques (`*.backup`) avant chaque reecriture
227
+ ```bash
228
+ AUTO_I18N_DEEPL_KEY=votre-cle
229
+ ```
217
230
 
218
- ## Developpement
231
+ ## Développement
219
232
 
220
233
  ```bash
221
- git clone https://github.com/stvekoulo/auto-i18n.git
234
+ git clone https://github.com/stvekoulo/next-auto-i18n.git
222
235
  cd next-auto-i18n
223
236
  npm install
224
- npm test # vitest
225
- npm run build # tsc
226
- npm run dev -- init # test local
237
+ npm run build
238
+ npm test
227
239
  ```
228
240
 
229
241
  ## Licence