@intlayer/docs 8.6.1 → 8.6.10

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 (197) hide show
  1. package/dist/cjs/doc.cjs.map +1 -1
  2. package/dist/cjs/generated/docs.entry.cjs +60 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/doc.mjs.map +1 -1
  5. package/dist/esm/generated/docs.entry.mjs +60 -0
  6. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  7. package/dist/types/doc.d.ts.map +1 -1
  8. package/dist/types/generated/docs.entry.d.ts +3 -0
  9. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  10. package/docs/ar/cli/index.md +54 -42
  11. package/docs/ar/cli/init.md +32 -20
  12. package/docs/ar/cli/standalone.md +91 -0
  13. package/docs/ar/configuration.md +39 -7
  14. package/docs/ar/custom_domains.md +250 -0
  15. package/docs/ar/intlayer_with_tanstack+solid.md +14 -33
  16. package/docs/ar/intlayer_with_tanstack.md +25 -16
  17. package/docs/ar/intlayer_with_vanilla.md +506 -0
  18. package/docs/bn/cli/index.md +195 -0
  19. package/docs/bn/cli/init.md +96 -0
  20. package/docs/bn/cli/standalone.md +91 -0
  21. package/docs/bn/configuration.md +46 -14
  22. package/docs/bn/custom_domains.md +250 -0
  23. package/docs/bn/intlayer_with_vanilla.md +506 -0
  24. package/docs/cs/cli/index.md +195 -0
  25. package/docs/cs/cli/init.md +96 -0
  26. package/docs/cs/cli/standalone.md +91 -0
  27. package/docs/cs/configuration.md +46 -7
  28. package/docs/cs/custom_domains.md +250 -0
  29. package/docs/cs/intlayer_with_vanilla.md +506 -0
  30. package/docs/de/cli/index.md +53 -41
  31. package/docs/de/cli/standalone.md +91 -0
  32. package/docs/de/configuration.md +46 -7
  33. package/docs/de/custom_domains.md +250 -0
  34. package/docs/de/intlayer_with_tanstack+solid.md +14 -33
  35. package/docs/de/intlayer_with_tanstack.md +25 -16
  36. package/docs/de/intlayer_with_vanilla.md +506 -0
  37. package/docs/en/bundle_optimization.md +288 -23
  38. package/docs/en/cli/index.md +6 -1
  39. package/docs/en/cli/init.md +13 -1
  40. package/docs/en/cli/standalone.md +91 -0
  41. package/docs/en/configuration.md +46 -7
  42. package/docs/en/custom_domains.md +245 -0
  43. package/docs/en/intlayer_with_tanstack+solid.md +14 -33
  44. package/docs/en/intlayer_with_tanstack.md +25 -16
  45. package/docs/en/intlayer_with_vanilla.md +506 -0
  46. package/docs/en-GB/cli/index.md +56 -44
  47. package/docs/en-GB/cli/init.md +28 -21
  48. package/docs/en-GB/cli/standalone.md +91 -0
  49. package/docs/en-GB/configuration.md +53 -14
  50. package/docs/en-GB/custom_domains.md +250 -0
  51. package/docs/en-GB/intlayer_with_tanstack+solid.md +14 -33
  52. package/docs/en-GB/intlayer_with_tanstack.md +25 -16
  53. package/docs/en-GB/intlayer_with_vanilla.md +506 -0
  54. package/docs/es/cli/index.md +65 -53
  55. package/docs/es/cli/init.md +33 -21
  56. package/docs/es/cli/standalone.md +91 -0
  57. package/docs/es/configuration.md +39 -1
  58. package/docs/es/custom_domains.md +250 -0
  59. package/docs/es/intlayer_with_tanstack+solid.md +14 -33
  60. package/docs/es/intlayer_with_tanstack.md +25 -16
  61. package/docs/es/intlayer_with_vanilla.md +506 -0
  62. package/docs/fr/cli/index.md +43 -31
  63. package/docs/fr/cli/init.md +37 -25
  64. package/docs/fr/cli/standalone.md +91 -0
  65. package/docs/fr/configuration.md +46 -7
  66. package/docs/fr/custom_domains.md +250 -0
  67. package/docs/fr/intlayer_with_tanstack+solid.md +14 -33
  68. package/docs/fr/intlayer_with_tanstack.md +25 -16
  69. package/docs/fr/intlayer_with_vanilla.md +506 -0
  70. package/docs/hi/cli/index.md +71 -59
  71. package/docs/hi/cli/init.md +37 -33
  72. package/docs/hi/cli/standalone.md +91 -0
  73. package/docs/hi/configuration.md +39 -7
  74. package/docs/hi/custom_domains.md +250 -0
  75. package/docs/hi/intlayer_with_tanstack+solid.md +14 -33
  76. package/docs/hi/intlayer_with_tanstack.md +25 -16
  77. package/docs/hi/intlayer_with_vanilla.md +506 -0
  78. package/docs/id/cli/index.md +59 -47
  79. package/docs/id/cli/init.md +32 -25
  80. package/docs/id/cli/standalone.md +91 -0
  81. package/docs/id/configuration.md +46 -7
  82. package/docs/id/custom_domains.md +250 -0
  83. package/docs/id/intlayer_with_tanstack+solid.md +14 -33
  84. package/docs/id/intlayer_with_tanstack.md +25 -16
  85. package/docs/id/intlayer_with_vanilla.md +506 -0
  86. package/docs/it/cli/index.md +58 -41
  87. package/docs/it/cli/init.md +37 -38
  88. package/docs/it/cli/standalone.md +91 -0
  89. package/docs/it/configuration.md +46 -7
  90. package/docs/it/custom_domains.md +250 -0
  91. package/docs/it/intlayer_with_tanstack+solid.md +14 -33
  92. package/docs/it/intlayer_with_tanstack.md +25 -16
  93. package/docs/it/intlayer_with_vanilla.md +506 -0
  94. package/docs/ja/cli/index.md +59 -47
  95. package/docs/ja/cli/init.md +36 -24
  96. package/docs/ja/cli/standalone.md +91 -0
  97. package/docs/ja/configuration.md +46 -7
  98. package/docs/ja/custom_domains.md +250 -0
  99. package/docs/ja/intlayer_with_tanstack+solid.md +14 -33
  100. package/docs/ja/intlayer_with_tanstack.md +25 -16
  101. package/docs/ja/intlayer_with_vanilla.md +506 -0
  102. package/docs/ko/cli/index.md +58 -46
  103. package/docs/ko/cli/init.md +39 -35
  104. package/docs/ko/cli/standalone.md +91 -0
  105. package/docs/ko/configuration.md +47 -8
  106. package/docs/ko/custom_domains.md +250 -0
  107. package/docs/ko/intlayer_with_tanstack+solid.md +14 -33
  108. package/docs/ko/intlayer_with_tanstack.md +25 -16
  109. package/docs/ko/intlayer_with_vanilla.md +506 -0
  110. package/docs/nl/cli/index.md +195 -0
  111. package/docs/nl/cli/init.md +96 -0
  112. package/docs/nl/cli/standalone.md +91 -0
  113. package/docs/nl/configuration.md +46 -7
  114. package/docs/nl/custom_domains.md +250 -0
  115. package/docs/nl/intlayer_with_vanilla.md +506 -0
  116. package/docs/pl/cli/index.md +56 -44
  117. package/docs/pl/cli/init.md +36 -32
  118. package/docs/pl/cli/standalone.md +91 -0
  119. package/docs/pl/configuration.md +46 -7
  120. package/docs/pl/custom_domains.md +250 -0
  121. package/docs/pl/intlayer_with_tanstack+solid.md +14 -33
  122. package/docs/pl/intlayer_with_tanstack.md +25 -16
  123. package/docs/pl/intlayer_with_vanilla.md +506 -0
  124. package/docs/pt/cli/index.md +64 -52
  125. package/docs/pt/cli/init.md +35 -31
  126. package/docs/pt/cli/standalone.md +91 -0
  127. package/docs/pt/configuration.md +46 -7
  128. package/docs/pt/custom_domains.md +250 -0
  129. package/docs/pt/intlayer_with_tanstack+solid.md +14 -33
  130. package/docs/pt/intlayer_with_tanstack.md +25 -16
  131. package/docs/pt/intlayer_with_vanilla.md +506 -0
  132. package/docs/ru/cli/index.md +54 -42
  133. package/docs/ru/cli/init.md +31 -27
  134. package/docs/ru/cli/standalone.md +91 -0
  135. package/docs/ru/configuration.md +46 -7
  136. package/docs/ru/custom_domains.md +250 -0
  137. package/docs/ru/intlayer_with_tanstack+solid.md +14 -33
  138. package/docs/ru/intlayer_with_tanstack.md +25 -16
  139. package/docs/ru/intlayer_with_vanilla.md +506 -0
  140. package/docs/tr/cli/index.md +64 -52
  141. package/docs/tr/cli/init.md +37 -30
  142. package/docs/tr/cli/standalone.md +91 -0
  143. package/docs/tr/configuration.md +46 -7
  144. package/docs/tr/custom_domains.md +250 -0
  145. package/docs/tr/intlayer_with_tanstack+solid.md +14 -33
  146. package/docs/tr/intlayer_with_tanstack.md +25 -16
  147. package/docs/tr/intlayer_with_vanilla.md +506 -0
  148. package/docs/uk/cli/index.md +60 -55
  149. package/docs/uk/cli/init.md +32 -20
  150. package/docs/uk/cli/standalone.md +91 -0
  151. package/docs/uk/configuration.md +46 -7
  152. package/docs/uk/custom_domains.md +250 -0
  153. package/docs/uk/intlayer_with_tanstack+solid.md +14 -33
  154. package/docs/uk/intlayer_with_tanstack.md +25 -16
  155. package/docs/uk/intlayer_with_vanilla.md +506 -0
  156. package/docs/ur/cli/index.md +195 -0
  157. package/docs/ur/cli/init.md +96 -0
  158. package/docs/ur/cli/standalone.md +91 -0
  159. package/docs/ur/configuration.md +46 -7
  160. package/docs/ur/custom_domains.md +250 -0
  161. package/docs/ur/intlayer_with_vanilla.md +506 -0
  162. package/docs/vi/cli/index.md +72 -61
  163. package/docs/vi/cli/init.md +33 -21
  164. package/docs/vi/cli/standalone.md +91 -0
  165. package/docs/vi/configuration.md +46 -7
  166. package/docs/vi/custom_domains.md +250 -0
  167. package/docs/vi/intlayer_with_tanstack+solid.md +14 -33
  168. package/docs/vi/intlayer_with_tanstack.md +25 -16
  169. package/docs/vi/intlayer_with_vanilla.md +506 -0
  170. package/docs/zh/cli/index.md +56 -49
  171. package/docs/zh/cli/init.md +30 -18
  172. package/docs/zh/cli/standalone.md +91 -0
  173. package/docs/zh/configuration.md +46 -7
  174. package/docs/zh/custom_domains.md +250 -0
  175. package/docs/zh/intlayer_with_tanstack+solid.md +14 -33
  176. package/docs/zh/intlayer_with_tanstack.md +25 -16
  177. package/docs/zh/intlayer_with_vanilla.md +506 -0
  178. package/package.json +8 -8
  179. package/src/doc.ts +4 -1
  180. package/src/generated/docs.entry.ts +60 -0
  181. package/docs/ar/bundle_optimization.md +0 -185
  182. package/docs/de/bundle_optimization.md +0 -195
  183. package/docs/en-GB/bundle_optimization.md +0 -184
  184. package/docs/es/bundle_optimization.md +0 -194
  185. package/docs/fr/bundle_optimization.md +0 -184
  186. package/docs/hi/bundle_optimization.md +0 -185
  187. package/docs/id/bundle_optimization.md +0 -185
  188. package/docs/it/bundle_optimization.md +0 -185
  189. package/docs/ja/bundle_optimization.md +0 -185
  190. package/docs/ko/bundle_optimization.md +0 -185
  191. package/docs/pl/bundle_optimization.md +0 -185
  192. package/docs/pt/bundle_optimization.md +0 -184
  193. package/docs/ru/bundle_optimization.md +0 -185
  194. package/docs/tr/bundle_optimization.md +0 -184
  195. package/docs/uk/bundle_optimization.md +0 -186
  196. package/docs/vi/bundle_optimization.md +0 -185
  197. package/docs/zh/bundle_optimization.md +0 -185
@@ -2,7 +2,7 @@
2
2
  createdAt: 2025-12-30
3
3
  updatedAt: 2025-12-30
4
4
  title: Initialiser Intlayer
5
- description: Apprenez comment initialiser Intlayer dans votre projet.
5
+ description: Apprenez à initialiser Intlayer dans votre projet.
6
6
  keywords:
7
7
  - Initialiser
8
8
  - CLI
@@ -14,6 +14,9 @@ slugs:
14
14
  - cli
15
15
  - init
16
16
  history:
17
+ - version: 8.6.4
18
+ date: 2026-03-31
19
+ changes: "Ajout de l'option --no-gitignore"
17
20
  - version: 7.5.9
18
21
  date: 2025-12-30
19
22
  changes: "Ajout de la commande init"
@@ -25,38 +28,39 @@ history:
25
28
  npx intlayer init
26
29
  ```
27
30
 
28
- La commande `init` configure automatiquement Intlayer dans votre projet en créant et en paramétrant les fichiers et réglages nécessaires. C'est la méthode recommandée pour commencer avec Intlayer.
31
+ La commande `init` configure automatiquement Intlayer dans votre projet en paramétrant les fichiers et réglages nécessaires. C'est le moyen recommandé pour commencer avec Intlayer.
29
32
 
30
- ## Alias:
33
+ ## Alias :
31
34
 
32
35
  - `npx intlayer init`
33
36
 
34
- ## Arguments:
37
+ ## Arguments :
35
38
 
36
- - `--project-root [projectRoot]` - Optionnel. Spécifie le répertoire racine du projet. S'il n'est pas fourni, la commande recherchera le répertoire racine du projet en partant du répertoire de travail courant.
39
+ - `--project-root [projectRoot]` - Optionnel. Spécifiez le répertoire racine du projet. Si non fourni, la commande recherchera la racine du projet à partir du répertoire de travail actuel.
40
+ - `--no-gitignore` - Optionnel. Ignore la mise à jour automatique du fichier `.gitignore`. Si ce drapeau est défini, `.intlayer` ne sera pas ajouté au `.gitignore`.
37
41
 
38
- ## Ce que cela fait:
42
+ ## Ce qu'il fait :
39
43
 
40
- The `init` command performs the following setup tasks:
44
+ La commande `init` effectue les tâches de configuration suivantes :
41
45
 
42
- 1. **Valide la structure du projet** - Vérifie que vous êtes dans un répertoire de projet valide contenant un fichier `package.json`
43
- 2. **Met à jour `.gitignore`** - Ajoute `.intlayer` à votre fichier `.gitignore` pour exclure les fichiers générés du contrôle de version
44
- 3. **Configure TypeScript** - Met à jour tous les fichiers `tsconfig.json` pour inclure les définitions de types Intlayer (`.intlayer/**/*.ts`)
45
- 4. **Crée le fichier de configuration** - Génère un `intlayer.config.ts` (pour les projets TypeScript) ou `intlayer.config.mjs` (pour les projets JavaScript) avec les réglages par défaut
46
- 5. **Met à jour la config Vite** - Si un fichier de configuration Vite est détecté, ajoute l'import du plugin `vite-intlayer`
47
- 6. **Met à jour la configuration Next.js** - Si un fichier de configuration Next.js est détecté, ajoute l'import du plugin `next-intlayer`
46
+ 1. **Valide la structure du projet** - S'assure que vous êtes dans un répertoire de projet valide avec un fichier `package.json`.
47
+ 2. **Met à jour le `.gitignore`** - Ajoute `.intlayer` à votre fichier `.gitignore` pour exclure les fichiers générés du contrôle de version (peut être ignoré avec `--no-gitignore`).
48
+ 3. **Configure TypeScript** - Met à jour tous les fichiers `tsconfig.json` pour inclure les définitions de types Intlayer (`.intlayer/**/*.ts`).
49
+ 4. **Crée le fichier de configuration** - Génère un `intlayer.config.ts` (pour les projets TypeScript) ou `intlayer.config.mjs` (pour les projets JavaScript) avec les paramètres par défaut.
50
+ 5. **Met à jour la config Vite** - Si un fichier de configuration Vite est détecté, ajoute l'importation du plugin `vite-intlayer`.
51
+ 6. **Met à jour la config Next.js** - Si un fichier de configuration Next.js est détecté, ajoute l'importation du plugin `next-intlayer`.
48
52
 
49
53
  ## Exemples :
50
54
 
51
- ### Initialisation basique :
55
+ ### Initialisation de base :
52
56
 
53
57
  ```bash
54
58
  npx intlayer init
55
59
  ```
56
60
 
57
- Cela initialisera Intlayer dans le répertoire courant, en détectant automatiquement la racine du projet.
61
+ Cela initialisera Intlayer dans le répertoire actuel, en détectant automatiquement la racine du projet.
58
62
 
59
- ### Initialiser avec une racine de projet personnalisée :
63
+ ### Initialisation avec une racine de projet personnalisée :
60
64
 
61
65
  ```bash
62
66
  npx intlayer init --project-root ./my-project
@@ -64,21 +68,29 @@ npx intlayer init --project-root ./my-project
64
68
 
65
69
  Cela initialisera Intlayer dans le répertoire spécifié.
66
70
 
71
+ ### Initialisation sans mettre à jour le .gitignore :
72
+
73
+ ```bash
74
+ npx intlayer init --no-gitignore
75
+ ```
76
+
77
+ Cela configurera tous les fichiers de configuration mais ne modifiera pas votre `.gitignore`.
78
+
67
79
  ## Exemple de sortie :
68
80
 
69
81
  ```bash
70
82
  npx intlayer init
71
- Vérification de la configuration d'Intlayer...
72
- Ajout de .intlayer à .gitignore
73
- Mise à jour de tsconfig.json pour inclure les types intlayer
74
- Créé intlayer.config.ts
75
- Import injecté dans vite.config.ts
76
- Initialisation d'Intlayer terminée.
83
+ Checking Intlayer configuration...
84
+ Added .intlayer to .gitignore
85
+ Updated tsconfig.json to include intlayer types
86
+ Created intlayer.config.ts
87
+ Injected import into vite.config.ts
88
+ ✓ Intlayer init setup complete.
77
89
  ```
78
90
 
79
91
  ## Remarques :
80
92
 
81
- - La commande est idempotente - vous pouvez l'exécuter plusieurs fois en toute sécurité. Elle sautera les étapes déjà configurées.
93
+ - La commande est idempotente - vous pouvez l'exécuter plusieurs fois en toute sécurité. Elle ignorera les étapes déjà configurées.
82
94
  - Si un fichier de configuration existe déjà, il ne sera pas écrasé.
83
- - Les fichiers de configuration TypeScript sans tableau `include` (par ex., les configurations de type solution avec des références) sont ignorés.
84
- - La commande se terminera avec une erreur si aucun `package.json` n'est trouvé à la racine du projet.
95
+ - Les fichiers de config TypeScript sans tableau `include` (par exemple, les configs de type solution avec des références) sont ignorés.
96
+ - La commande s'arrêtera avec une erreur si aucun `package.json` n'est trouvé à la racine du projet.
@@ -0,0 +1,91 @@
1
+ ---
2
+ createdAt: 2024-08-11
3
+ updatedAt: 2026-03-31
4
+ title: Bundle Standalone
5
+ description: Apprenez à créer un bundle JavaScript autonome pour le contenu de votre application.
6
+ keywords:
7
+ - Standalone
8
+ - Bundle
9
+ - CLI
10
+ - Intlayer
11
+ - Editor
12
+ - CMS
13
+ slugs:
14
+ - doc
15
+ - concept
16
+ - cli
17
+ - standalone
18
+ history:
19
+ - version: 8.6.4
20
+ date: 2026-03-31
21
+ changes: "Initialisation de la documentation de la commande standalone"
22
+ ---
23
+
24
+ # Bundle Standalone
25
+
26
+ La commande `standalone` vous permet de créer un bundle JavaScript autonome contenant Intlayer et tout autre paquet spécifié. Cela est particulièrement utile pour utiliser Intlayer dans des environnements sans gestionnaire de paquets ou bundler, comme une application HTML/JS pure.
27
+
28
+ Le bundle utilise [esbuild](https://esbuild.github.io/) pour combiner les paquets demandés et leurs dépendances en un seul fichier qui peut être facilement importé dans n'importe quel projet web.
29
+
30
+ ## Utilisation
31
+
32
+ ```bash
33
+ npx intlayer standalone --packages [paquets...] [options]
34
+ ```
35
+
36
+ ## Options
37
+
38
+ - `-o, --outfile [outfile]` - Optionnel. Le nom du fichier de sortie. Par défaut : `intlayer-bundle.js`.
39
+ - `--packages [paquets...]` - Requis. Une liste de paquets à inclure dans le bundle (par exemple, `intlayer`, `vanilla-intlayer`).
40
+ - `--version [version]` - Optionnel. La version des paquets à regrouper. Si non spécifiée, elle correspond par défaut à la version du CLI Intlayer.
41
+ - `--minify` - Optionnel. Indique s'il faut minifier la sortie. Par défaut : `true`.
42
+ - `--platform [platform]` - Optionnel. La plateforme cible pour le bundle (par exemple, `browser`, `node`). Par défaut : `browser`.
43
+ - `--format [format]` - Optionnel. Le format de sortie du bundle (par exemple, `esm`, `cjs`, `iife`). Par défaut : `esm`.
44
+
45
+ ## Options Communes
46
+
47
+ - `--env-file [envFile]` - Fichier d'environnement.
48
+ - `-e, --env [env]` - Environnement.
49
+ - `--base-dir [baseDir]` - Répertoire de base.
50
+ - `--no-cache` - Désactiver le cache.
51
+ - `--verbose` - Sortie verbeuse.
52
+
53
+ ## Exemples :
54
+
55
+ ### Créer un bundle pour Vanilla JS :
56
+
57
+ ```bash
58
+ npx intlayer standalone --packages intlayer vanilla-intlayer --outfile intlayer.js
59
+ ```
60
+
61
+ Cela créera un fichier `intlayer.js` contenant à la fois les paquets `intlayer` et `vanilla-intlayer`, minifié et au format ESM, prêt à être utilisé dans un navigateur via une balise `<script>`.
62
+
63
+ ### Regrouper une version spécifique :
64
+
65
+ ```bash
66
+ npx intlayer standalone --packages intlayer --version 8.6.4
67
+ ```
68
+
69
+ ### Regrouper avec un format différent :
70
+
71
+ ```bash
72
+ npx intlayer standalone --packages intlayer --format iife
73
+ ```
74
+
75
+ ## Ce qu'il fait :
76
+
77
+ 1. **Crée un environnement temporaire** - Configure un répertoire temporaire pour gérer les dépendances.
78
+ 2. **Installe les paquets** - Utilise `npm` ou `bun` (si disponible) pour installer les paquets demandés et leurs dépendances.
79
+ 3. **Génère un point d'entrée** - Crée un fichier d'entrée temporaire qui exporte tous les paquets demandés et les expose en tant que variables globales lors de l'exécution dans un navigateur.
80
+ 4. **Regroupe avec esbuild** - Utilise esbuild pour tout regrouper en un seul fichier, en appliquant la minification et le formatage demandés.
81
+ 5. **Sort le fichier** - Écrit le bundle résultant dans le chemin de sortie spécifié.
82
+
83
+ ## Variables Globales
84
+
85
+ Lorsque le bundle est chargé dans un navigateur, il expose les paquets demandés en tant que variables globales sur l'objet `window`. Les noms des variables sont dérivés des noms des paquets (par exemple, `intlayer` devient `Intlayer`, `vanilla-intlayer` devient `VanillaIntlayer`).
86
+
87
+ ```javascript
88
+ // Accéder à Intlayer depuis le bundle
89
+ const { getLocaleName } = window.Intlayer;
90
+ const { installIntlayer, useIntlayer } = window.VanillaIntlayer;
91
+ ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-03-20
3
+ updatedAt: 2026-04-08
4
4
  title: Configuration
5
5
  description: Apprenez à configurer Intlayer pour votre application. Comprenez les différents paramètres et options disponibles pour personnaliser Intlayer selon vos besoins.
6
6
  keywords:
@@ -14,6 +14,12 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 8.7.0
18
+ date: 2026-04-08
19
+ changes: "Ajout des options `prune` et `minify` à la configuration de build"
20
+ - version: 8.7.0
21
+ date: 2026-04-03
22
+ changes: "Ajout de l'option `currentDomain`"
17
23
  - version: 8.4.0
18
24
  date: 2026-03-20
19
25
  changes: "Ajout de la notation d'objet par locale pour 'compiler.output' et 'dictionary.fill'"
@@ -237,6 +243,17 @@ const config: IntlayerConfig = {
237
243
  fr: "/[locale]/a-propos",
238
244
  },
239
245
  }),
246
+
247
+ /**
248
+ * Mappe les locales aux noms d'hôte de domaine pour le routage basé sur le domaine.
249
+ * Les URL pour ces locales seront absolues (ex: https://intlayer.cn/).
250
+ * Le domaine implique la locale, donc aucun préfixe de locale n'est ajouté au chemin.
251
+ * Par défaut : undefined
252
+ */
253
+ domains: {
254
+ en: "intlayer.org",
255
+ zh: "intlayer.cn",
256
+ },
240
257
  },
241
258
 
242
259
  /**
@@ -388,6 +405,25 @@ const config: IntlayerConfig = {
388
405
  */
389
406
  optimize: true,
390
407
 
408
+ /**
409
+ * Minifier les dictionnaires pour réduire la taille du bundle.
410
+ * Par défaut : true
411
+ *
412
+ * Note :
413
+ * - Cette option sera ignorée si `optimize` est désactivé.
414
+ * - Cette option sera ignorée si `editor.enabled` est vrai.
415
+ */
416
+ minify: true,
417
+
418
+ /**
419
+ * Purger les clés inutilisées dans les dictionnaires.
420
+ * Par défaut : true
421
+ *
422
+ * Note :
423
+ * - Cette option sera ignorée si `optimize` est désactivé.
424
+ */
425
+ purge: true,
426
+
391
427
  /**
392
428
  * Format de sortie pour les fichiers de dictionnaire générés.
393
429
  * Par défaut : ['cjs', 'esm']
@@ -600,12 +636,13 @@ Définit les paramètres liés à l'éditeur intégré, y compris le port du ser
600
636
 
601
637
  Paramètres contrôlant le comportement du routage, y compris la structure des URL, le stockage des locales et la gestion du middleware.
602
638
 
603
- | Champ | Description | Type | Par défaut | Exemple | Note |
604
- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
605
- | `mode` | Mode de routage d'URL pour la gestion des locales. | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) ou `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: locale gérée par d'autres moyens. `'search-params'`: `/dashboard?locale=fr` | N'impacte pas la gestion des cookies ou du stockage des locales. |
606
- | `storage` | Configuration pour stocker la locale sur le client. | `false` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Voir le tableau des Options de Stockage ci-dessous. |
607
- | `basePath` | Le chemin de base pour les URL de l'application. | `string` | `''` | `'/my-app'` | Si l'application est sur `https://example.com/my-app`, basePath est `'/my-app'` et les URL deviennent `https://example.com/my-app/en`. |
608
- | `rewrite` | Règles de réécriture d'URL personnalisées qui surchargent le mode de routage par défaut pour des chemins spécifiques. Supporte les paramètres dynamiques `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | Voir l'exemple ci-dessous | • Les règles de réécriture ont la priorité sur le `mode`.<br/>• Fonctionne avec Next.js et Vite.<br/>• `getLocalizedUrl()` applique automatiquement les règles correspondantes.<br/>• Voir [Réécritures d'URL Personnalisées](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/custom_url_rewrites.md). |
639
+ | Champ | Description | Type | Par défaut | Exemple | Note |
640
+ | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
641
+ | `mode` | Mode de routage d'URL pour la gestion des locales. | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) ou `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: locale gérée par d'autres moyens. `'search-params'`: `/dashboard?locale=fr` | N'impacte pas la gestion des cookies ou du stockage des locales. |
642
+ | `storage` | Configuration pour stocker la locale sur le client. | `false` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Voir le tableau des Options de Stockage ci-dessous. |
643
+ | `basePath` | Le chemin de base pour les URL de l'application. | `string` | `''` | `'/my-app'` | Si l'application est sur `https://example.com/my-app`, basePath est `'/my-app'` et les URL deviennent `https://example.com/my-app/en`. |
644
+ | `rewrite` | Règles de réécriture d'URL personnalisées qui surchargent le mode de routage par défaut pour des chemins spécifiques. Supporte les paramètres dynamiques `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | Voir l'exemple ci-dessous | • Les règles de réécriture ont la priorité sur le `mode`.<br/>• Fonctionne avec Next.js et Vite.<br/>• `getLocalizedUrl()` applique automatiquement les règles correspondantes.<br/>• Voir [Réécritures d'URL Personnalisées](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/custom_url_rewrites.md). |
645
+ | `domains` | Mappe les locales aux noms d'hôte de domaine pour le routage basé sur le domaine. Lorsqu'il est défini, les URL pour une locale utilisent ce domaine comme base (URL absolue) et aucun préfixe de locale n'est ajouté au chemin. | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • Le protocole est défini par défaut sur `https://` lorsqu'il n'est pas inclus dans le nom d'hôte.<br/>• Le domaine lui-même identifie la locale, donc aucun préfixe `/zh/` n'est ajouté.<br/>• `getLocalizedUrl('/', 'zh')` renvoie `https://intlayer.zh/`. |
609
646
 
610
647
  **Exemple de `rewrite`** :
611
648
 
@@ -909,6 +946,8 @@ Les options de build s'appliquent aux plugins `@intlayer/babel` et `@intlayer/sw
909
946
  | ----------------- | ----------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
910
947
  | `mode` | Contrôle le mode du build. | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: build activé automatiquement lors du build de l'application.<br/>• `'manual'`: ne s'exécute que lorsque la commande de build est exécutée.<br/>• Peut être utilisé pour désactiver les builds de dictionnaires (ex: pour éviter l'exécution dans des environnements Node.js). |
911
948
  | `optimize` | Contrôle si le build doit être optimisé. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • Si non défini, l'optimisation est déclenchée lors du build du framework (Vite/Next.js).<br/>• `true` force l'optimisation y compris en mode dev.<br/>• `false` la désactive.<br/>• Une fois activé, remplace les appels de dictionnaire pour optimiser le chunking.<br/>• Repose sur les plugins `@intlayer/babel` et `@intlayer/swc`. |
949
+ | `minify` | Minifier les dictionnaires pour réduire la taille du bundle. | `boolean` | `false` | | • Indique si le bundle doit être minifié.<br/>• Par défaut : `true` en production.<br/>• Cette option sera ignorée si `optimize` est désactivé.<br/>• Cette option sera ignorée si `editor.enabled` est vrai. |
950
+ | `purge` | Purger les clés inutilisées dans les dictionnaires. | `boolean` | `false` | | • Indique si le bundle doit être purgé.<br/>• Par défaut : `true` en production.<br/>• Cette option sera ignorée si `optimize` est désactivé. |
912
951
  | `checkTypes` | Indique si le build doit vérifier les types TypeScript et loguer les erreurs. | `boolean` | `false` | | Peut ralentir le build. |
913
952
  | `outputFormat` | Contrôle le format de sortie des dictionnaires. | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
914
953
  | `traversePattern` | Motifs définissant quels fichiers parcourir lors de l'optimisation. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • Limitez l'optimisation aux fichiers pertinents pour améliorer les performances de build.<br/>• Ignoré si `optimize` est désactivé.<br/>• Utilise des motifs glob. |
@@ -0,0 +1,250 @@
1
+ ---
2
+ createdAt: 2026-04-02
3
+ updatedAt: 2026-04-02
4
+ title: Domaines personnalisés
5
+ description: Apprenez à configurer le routage par domaine dans Intlayer pour servir différentes locales à partir de noms d'hôte dédiés.
6
+ keywords:
7
+ - Domaines personnalisés
8
+ - Routage par domaine
9
+ - Routage
10
+ - Internationalisation
11
+ - i18n
12
+ slugs:
13
+ - doc
14
+ - concept
15
+ - custom_domains
16
+ history:
17
+ - version: 8.5.0
18
+ date: 2026-04-02
19
+ changes: "Ajout du routage par domaine via la configuration routing.domains."
20
+ ---
21
+
22
+ # Domaines personnalisés
23
+
24
+ Intlayer prend en charge le routage par domaine, vous permettant de servir des locales spécifiques à partir de noms d'hôte dédiés. Par exemple, les visiteurs chinois peuvent être dirigés vers `intlayer.zh` au lieu de `intlayer.org/zh`.
25
+
26
+ ## Fonctionnement
27
+
28
+ La carte `domains` dans `routing` associe chaque locale à un nom d'hôte. Intlayer utilise cette carte à deux endroits :
29
+
30
+ 1. **Génération d'URL** (`getLocalizedUrl`) : lorsque la locale cible se trouve sur un domaine _différent_ de la page actuelle, une URL absolue est retournée (ex: `https://intlayer.zh/about`). Lorsque les deux domaines correspondent, une URL relative est retournée (ex: `/fr/about`).
31
+ 2. **Proxy serveur** (Next.js & Vite) : les requêtes entrantes sont redirigées ou réécrites en fonction du domaine sur lequel elles arrivent.
32
+
33
+ ### Domaines exclusifs vs partagés
34
+
35
+ La distinction clé est l'**exclusivité** :
36
+
37
+ - **Domaine exclusif** — une seule locale correspond à ce nom d'hôte (ex: `zh → intlayer.zh`). Le domaine lui-même identifie la locale, donc aucun préfixe de locale n'est ajouté au chemin. `https://intlayer.zh/about` sert le contenu chinois.
38
+ - **Domaine partagé** — plusieurs locales correspondent au même nom d'hôte (ex: `en` et `fr` correspondent tous deux à `intlayer.org`). Le routage standard basé sur les préfixes s'applique. `intlayer.org/fr/about` sert le contenu français.
39
+
40
+ ## Configuration
41
+
42
+ ```typescript fileName="intlayer.config.ts"
43
+ import { Locales, type IntlayerConfig } from "intlayer";
44
+
45
+ const config: IntlayerConfig = {
46
+ internationalization: {
47
+ locales: [
48
+ Locales.ENGLISH,
49
+ Locales.FRENCH,
50
+ Locales.SPANISH,
51
+ Locales.CHINESE,
52
+ ],
53
+ defaultLocale: Locales.ENGLISH,
54
+ },
55
+ routing: {
56
+ mode: "prefix-no-default",
57
+ domains: {
58
+ // Domaine partagé — en et fr utilisent le routage par préfixe sur intlayer.org
59
+ en: "intlayer.org",
60
+ // Domaine exclusif — zh a son propre nom d'hôte, aucun préfixe /zh/ n'est nécessaire
61
+ zh: "intlayer.zh",
62
+ },
63
+ },
64
+ };
65
+
66
+ export default config;
67
+ ```
68
+
69
+ Les locales qui ne sont pas listées dans `domains` continuent d'utiliser le routage par préfixe standard sans aucune substitution de domaine.
70
+
71
+ ## Génération d'URL
72
+
73
+ `getLocalizedUrl` produit automatiquement le bon type d'URL en fonction du contexte d'appel.
74
+
75
+ ### Locale sur le même domaine (URL relative)
76
+
77
+ ```ts
78
+ // Page actuelle : intlayer.org/about
79
+ getLocalizedUrl("/about", "fr", { currentDomain: "intlayer.org" });
80
+ // → "/fr/about"
81
+
82
+ getLocalizedUrl("/about", "en", { currentDomain: "intlayer.org" });
83
+ // → "/about" (locale par défaut, pas de préfixe)
84
+ ```
85
+
86
+ ### Locale sur un domaine différent (URL absolue)
87
+
88
+ ```ts
89
+ // Page actuelle : intlayer.org/about
90
+ getLocalizedUrl("/about", "zh", { currentDomain: "intlayer.org" });
91
+ // → "https://intlayer.zh/about" (domaine exclusif, pas de préfixe /zh/)
92
+ ```
93
+
94
+ ### Service depuis le propre domaine de la locale
95
+
96
+ ```ts
97
+ // Page actuelle : intlayer.zh/about
98
+ getLocalizedUrl("/about", "zh", { currentDomain: "intlayer.zh" });
99
+ // → "/about" (déjà sur le bon domaine — URL relative)
100
+
101
+ getLocalizedUrl("/about", "fr", { currentDomain: "intlayer.zh" });
102
+ // → "https://intlayer.org/fr/about" (lien inter-domaines vers intlayer.org)
103
+ ```
104
+
105
+ ### Auto-détection du domaine actuel
106
+
107
+ `currentDomain` est facultatif. S'il est omis, `getLocalizedUrl` le résout dans cet ordre :
108
+
109
+ 1. Le nom d'hôte d'une URL d'entrée absolue (ex: `https://intlayer.org/about` → `intlayer.org`).
110
+ 2. `window.location.hostname` dans les environnements de navigation.
111
+ 3. Si aucun n'est disponible (SSR sans option explicite), une URL relative est retournée pour les locales du même domaine et aucune URL absolue n'est produite — c'est le repli sécurisé.
112
+
113
+ ```ts
114
+ // Navigateur — window.location.hostname === 'intlayer.org'
115
+ getLocalizedUrl("/about", "zh");
116
+ // → "https://intlayer.zh/about" (détecté automatiquement à partir de window)
117
+
118
+ // À partir d'une URL absolue — domaine détecté automatiquement
119
+ getLocalizedUrl("https://intlayer.org/about", "zh");
120
+ // → "https://intlayer.zh/about"
121
+ ```
122
+
123
+ ### `getMultilingualUrls` avec domaines
124
+
125
+ `getMultilingualUrls` appelle `getLocalizedUrl` pour chaque locale, il produit donc un mélange d'URLs relatives et absolues selon le domaine de l'appelant :
126
+
127
+ ```ts
128
+ // currentDomain: 'intlayer.org'
129
+ getMultilingualUrls("/about", { currentDomain: "intlayer.org" });
130
+ // {
131
+ // en: "/about",
132
+ // fr: "/fr/about",
133
+ // es: "/es/about",
134
+ // zh: "https://intlayer.zh/about",
135
+ // }
136
+ ```
137
+
138
+ Ces URLs absolues sont prêtes à être utilisées dans les balises `<link rel="alternate" hreflang="...">` pour le SEO.
139
+
140
+ ## Comportement du Proxy
141
+
142
+ ### Next.js
143
+
144
+ Le middleware `intlayerProxy` gère automatiquement le routage par domaine. Ajoutez-le à votre `middleware.ts` :
145
+
146
+ ```typescript fileName="middleware.ts"
147
+ export { intlayerProxy as default } from "next-intlayer/proxy";
148
+
149
+ export const config = {
150
+ matcher: "/((?!api|static|assets|robots|sitemap|.*\\..*|_next).*)",
151
+ };
152
+ ```
153
+
154
+ **Redirection** — la requête arrive sur le mauvais domaine pour un préfixe de locale donné :
155
+
156
+ ```
157
+ GET intlayer.org/zh/about
158
+ → 301 https://intlayer.zh/about
159
+ ```
160
+
161
+ **Réécriture** — la requête arrive sur le domaine exclusif de la locale sans préfixe :
162
+
163
+ ```
164
+ GET intlayer.zh/about
165
+ → réécriture vers /zh/about (routage interne Next.js uniquement, l'URL reste propre)
166
+ ```
167
+
168
+ ### Vite
169
+
170
+ Le plugin Vite `intlayerProxy` applique la même logique pendant le développement :
171
+
172
+ ```typescript fileName="vite.config.ts"
173
+ import { defineConfig } from "vite";
174
+ import { intlayerProxy } from "vite-intlayer";
175
+
176
+ export default defineConfig({
177
+ plugins: [intlayerProxy()],
178
+ });
179
+ ```
180
+
181
+ > **Note** : en développement local, vous êtes généralement sur `localhost`, donc les redirections inter-domaines pointeront vers les domaines en direct plutôt que vers un autre port local. Utilisez une substitution dans le fichier hosts (ex: `127.0.0.1 intlayer.zh`) ou un proxy inverse si vous avez besoin de tester le routage multi-domaines localement.
182
+
183
+ ## Sélecteur de locale
184
+
185
+ Le hook `useLocale` de `next-intlayer` gère automatiquement la navigation tenant compte du domaine. Lorsqu'un utilisateur passe à une locale sur un domaine différent, le hook effectue une navigation de page complète (`window.location.href`) au lieu d'un push du routeur côté client, car le routeur Next.js ne peut pas traverser les origines.
186
+
187
+ ```tsx fileName="components/LocaleSwitcher.tsx"
188
+ "use client";
189
+
190
+ import { useLocale } from "next-intlayer";
191
+
192
+ export const LocaleSwitcher = () => {
193
+ const { availableLocales, locale, setLocale } = useLocale();
194
+
195
+ return (
196
+ <ul>
197
+ {availableLocales.map((localeEl) => (
198
+ <li key={localeEl}>
199
+ <button
200
+ onClick={() => setLocale(localeEl)}
201
+ aria-current={localeEl === locale ? "true" : undefined}
202
+ >
203
+ {l.toUpperCase()}
204
+ </button>
205
+ </li>
206
+ ))}
207
+ </ul>
208
+ );
209
+ };
210
+ ```
211
+
212
+ Aucune configuration supplémentaire n'est requise — `useLocale` détecte `window.location.hostname` en interne et décide entre `router.replace` (même domaine) et `window.location.href` (domaine différent).
213
+
214
+ ## SEO : Liens alternatifs `hreflang`
215
+
216
+ Le routage par domaine est couramment utilisé avec `hreflang` pour indiquer aux moteurs de recherche quelle URL indexer pour chaque langue. Utilisez `getMultilingualUrls` pour générer l'ensemble complet des URLs alternatives :
217
+
218
+ ```tsx fileName="app/[locale]/layout.tsx"
219
+ import { getMultilingualUrls } from "intlayer";
220
+ import type { Metadata } from "next";
221
+
222
+ export const generateMetadata = (): Metadata => {
223
+ const alternates = getMultilingualUrls("/", {
224
+ currentDomain: process.env.NEXT_PUBLIC_DOMAIN, // ex: "intlayer.org"
225
+ });
226
+
227
+ return {
228
+ alternates: {
229
+ languages: alternates,
230
+ },
231
+ };
232
+ };
233
+ ```
234
+
235
+ Cela produit :
236
+
237
+ ```html
238
+ <link rel="alternate" hreflang="en" href="https://intlayer.org/" />
239
+ <link rel="alternate" hreflang="fr" href="https://intlayer.org/fr/" />
240
+ <link rel="alternate" hreflang="es" href="https://intlayer.org/es/" />
241
+ <link rel="alternate" hreflang="zh" href="https://intlayer.zh/" />
242
+ ```
243
+
244
+ ## Utilitaires de base
245
+
246
+ | Utilitaire | Description |
247
+ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
248
+ | `getLocalizedUrl(url, locale, { currentDomain })` | Retourne une URL relative ou absolue selon que la locale cible est sur le domaine actuel ou non. |
249
+ | `getMultilingualUrls(url, { currentDomain })` | Retourne une carte des URLs localisées par locale, mélangeant relatives et absolues selon les besoins. |
250
+ | `getPrefix(locale, { domains })` | Retourne un préfixe vide pour les locales à domaine exclusif, sinon le préfixe normal. |