@intlayer/docs 8.3.0-canary.4 → 8.3.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.
Files changed (240) hide show
  1. package/docs/ar/compiler.md +84 -49
  2. package/docs/ar/configuration.md +80 -37
  3. package/docs/ar/intlayer_with_nextjs_16.md +174 -1
  4. package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
  5. package/docs/ar/intlayer_with_react_router_v7.md +224 -1
  6. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
  7. package/docs/ar/intlayer_with_svelte_kit.md +175 -2
  8. package/docs/ar/intlayer_with_tanstack.md +176 -1
  9. package/docs/ar/intlayer_with_vite+preact.md +174 -1
  10. package/docs/ar/intlayer_with_vite+react.md +174 -1
  11. package/docs/ar/intlayer_with_vite+solid.md +174 -1
  12. package/docs/ar/intlayer_with_vite+svelte.md +174 -1
  13. package/docs/ar/intlayer_with_vite+vue.md +174 -1
  14. package/docs/de/compiler.md +83 -48
  15. package/docs/de/configuration.md +434 -212
  16. package/docs/de/intlayer_with_nextjs_16.md +176 -1
  17. package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
  18. package/docs/de/intlayer_with_react_router_v7.md +225 -2
  19. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
  20. package/docs/de/intlayer_with_svelte_kit.md +158 -2
  21. package/docs/de/intlayer_with_tanstack.md +159 -1
  22. package/docs/de/intlayer_with_vite+preact.md +157 -1
  23. package/docs/de/intlayer_with_vite+react.md +157 -1
  24. package/docs/de/intlayer_with_vite+solid.md +159 -3
  25. package/docs/de/intlayer_with_vite+svelte.md +157 -1
  26. package/docs/de/intlayer_with_vite+vue.md +157 -1
  27. package/docs/en/compiler.md +60 -33
  28. package/docs/en/configuration.md +80 -57
  29. package/docs/en/intlayer_with_nextjs_16.md +176 -0
  30. package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
  31. package/docs/en/intlayer_with_react_router_v7.md +159 -0
  32. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
  33. package/docs/en/intlayer_with_svelte_kit.md +159 -0
  34. package/docs/en/intlayer_with_tanstack.md +160 -1
  35. package/docs/en/intlayer_with_vite+preact.md +159 -0
  36. package/docs/en/intlayer_with_vite+react.md +159 -0
  37. package/docs/en/intlayer_with_vite+solid.md +148 -27
  38. package/docs/en/intlayer_with_vite+svelte.md +159 -0
  39. package/docs/en/intlayer_with_vite+vue.md +142 -41
  40. package/docs/en-GB/compiler.md +66 -34
  41. package/docs/en-GB/configuration.md +78 -36
  42. package/docs/es/compiler.md +83 -48
  43. package/docs/es/configuration.md +429 -206
  44. package/docs/es/intlayer_with_adonisjs.md +1 -1
  45. package/docs/es/intlayer_with_express.md +1 -1
  46. package/docs/es/intlayer_with_fastify.md +1 -1
  47. package/docs/es/intlayer_with_hono.md +1 -1
  48. package/docs/es/intlayer_with_nestjs.md +1 -1
  49. package/docs/es/intlayer_with_nextjs_16.md +176 -3
  50. package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
  51. package/docs/es/intlayer_with_nuxt.md +1 -1
  52. package/docs/es/intlayer_with_react_router_v7.md +227 -4
  53. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
  54. package/docs/es/intlayer_with_svelte_kit.md +158 -2
  55. package/docs/es/intlayer_with_tanstack.md +160 -2
  56. package/docs/es/intlayer_with_vite+preact.md +162 -6
  57. package/docs/es/intlayer_with_vite+react.md +160 -4
  58. package/docs/es/intlayer_with_vite+solid.md +163 -7
  59. package/docs/es/intlayer_with_vite+svelte.md +157 -1
  60. package/docs/es/intlayer_with_vite+vue.md +165 -9
  61. package/docs/fr/compiler.md +81 -46
  62. package/docs/fr/configuration.md +355 -134
  63. package/docs/fr/intlayer_with_adonisjs.md +1 -1
  64. package/docs/fr/intlayer_with_express.md +1 -1
  65. package/docs/fr/intlayer_with_fastify.md +1 -1
  66. package/docs/fr/intlayer_with_hono.md +1 -1
  67. package/docs/fr/intlayer_with_nestjs.md +1 -1
  68. package/docs/fr/intlayer_with_nextjs_16.md +183 -7
  69. package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
  70. package/docs/fr/intlayer_with_react_router_v7.md +229 -3
  71. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
  72. package/docs/fr/intlayer_with_svelte_kit.md +158 -2
  73. package/docs/fr/intlayer_with_tanstack.md +159 -1
  74. package/docs/fr/intlayer_with_vite+preact.md +164 -8
  75. package/docs/fr/intlayer_with_vite+react.md +162 -6
  76. package/docs/fr/intlayer_with_vite+solid.md +163 -7
  77. package/docs/fr/intlayer_with_vite+svelte.md +157 -1
  78. package/docs/fr/intlayer_with_vite+vue.md +164 -8
  79. package/docs/hi/compiler.md +81 -46
  80. package/docs/hi/configuration.md +87 -44
  81. package/docs/hi/intlayer_with_nextjs_16.md +174 -1
  82. package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
  83. package/docs/hi/intlayer_with_react_router_v7.md +224 -1
  84. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  85. package/docs/hi/intlayer_with_svelte_kit.md +158 -2
  86. package/docs/hi/intlayer_with_tanstack.md +159 -1
  87. package/docs/hi/intlayer_with_vite+preact.md +157 -1
  88. package/docs/hi/intlayer_with_vite+react.md +157 -1
  89. package/docs/hi/intlayer_with_vite+solid.md +157 -1
  90. package/docs/hi/intlayer_with_vite+svelte.md +157 -1
  91. package/docs/hi/intlayer_with_vite+vue.md +157 -1
  92. package/docs/id/compiler.md +84 -51
  93. package/docs/id/configuration.md +83 -45
  94. package/docs/id/intlayer_with_nextjs_16.md +174 -1
  95. package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
  96. package/docs/id/intlayer_with_react_router_v7.md +224 -1
  97. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
  98. package/docs/id/intlayer_with_svelte_kit.md +158 -2
  99. package/docs/id/intlayer_with_tanstack.md +159 -1
  100. package/docs/id/intlayer_with_vite+preact.md +157 -1
  101. package/docs/id/intlayer_with_vite+react.md +157 -1
  102. package/docs/id/intlayer_with_vite+solid.md +157 -1
  103. package/docs/id/intlayer_with_vite+svelte.md +157 -1
  104. package/docs/id/intlayer_with_vite+vue.md +157 -1
  105. package/docs/it/compiler.md +81 -46
  106. package/docs/it/configuration.md +426 -204
  107. package/docs/it/intlayer_with_nextjs_16.md +174 -1
  108. package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
  109. package/docs/it/intlayer_with_react_router_v7.md +225 -2
  110. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
  111. package/docs/it/intlayer_with_svelte_kit.md +158 -2
  112. package/docs/it/intlayer_with_tanstack.md +159 -1
  113. package/docs/it/intlayer_with_vite+preact.md +157 -1
  114. package/docs/it/intlayer_with_vite+react.md +157 -1
  115. package/docs/it/intlayer_with_vite+solid.md +159 -3
  116. package/docs/it/intlayer_with_vite+svelte.md +157 -1
  117. package/docs/it/intlayer_with_vite+vue.md +157 -1
  118. package/docs/ja/compiler.md +94 -58
  119. package/docs/ja/configuration.md +88 -45
  120. package/docs/ja/intlayer_with_nextjs_16.md +174 -1
  121. package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
  122. package/docs/ja/intlayer_with_react_router_v7.md +184 -394
  123. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
  124. package/docs/ja/intlayer_with_svelte_kit.md +119 -595
  125. package/docs/ja/intlayer_with_tanstack.md +131 -642
  126. package/docs/ja/intlayer_with_vite+preact.md +111 -1231
  127. package/docs/ja/intlayer_with_vite+react.md +129 -1304
  128. package/docs/ja/intlayer_with_vite+solid.md +159 -3
  129. package/docs/ja/intlayer_with_vite+svelte.md +157 -1
  130. package/docs/ja/intlayer_with_vite+vue.md +157 -1
  131. package/docs/ko/compiler.md +88 -52
  132. package/docs/ko/configuration.md +87 -44
  133. package/docs/ko/intlayer_with_nextjs_16.md +174 -1
  134. package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
  135. package/docs/ko/intlayer_with_react_router_v7.md +225 -2
  136. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
  137. package/docs/ko/intlayer_with_svelte_kit.md +158 -2
  138. package/docs/ko/intlayer_with_tanstack.md +159 -1
  139. package/docs/ko/intlayer_with_vite+preact.md +157 -1
  140. package/docs/ko/intlayer_with_vite+react.md +157 -1
  141. package/docs/ko/intlayer_with_vite+solid.md +159 -3
  142. package/docs/ko/intlayer_with_vite+svelte.md +157 -1
  143. package/docs/ko/intlayer_with_vite+vue.md +157 -1
  144. package/docs/pl/compiler.md +84 -51
  145. package/docs/pl/configuration.md +83 -37
  146. package/docs/pl/intlayer_with_nextjs_16.md +174 -1
  147. package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
  148. package/docs/pl/intlayer_with_react_router_v7.md +224 -1
  149. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
  150. package/docs/pl/intlayer_with_svelte_kit.md +158 -2
  151. package/docs/pl/intlayer_with_tanstack.md +159 -1
  152. package/docs/pl/intlayer_with_vite+preact.md +157 -1
  153. package/docs/pl/intlayer_with_vite+react.md +157 -1
  154. package/docs/pl/intlayer_with_vite+solid.md +157 -1
  155. package/docs/pl/intlayer_with_vite+svelte.md +157 -1
  156. package/docs/pl/intlayer_with_vite+vue.md +157 -1
  157. package/docs/pt/compiler.md +81 -46
  158. package/docs/pt/configuration.md +404 -194
  159. package/docs/pt/intlayer_with_nextjs_16.md +174 -1
  160. package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
  161. package/docs/pt/intlayer_with_react_router_v7.md +224 -1
  162. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
  163. package/docs/pt/intlayer_with_svelte_kit.md +158 -2
  164. package/docs/pt/intlayer_with_tanstack.md +159 -1
  165. package/docs/pt/intlayer_with_vite+preact.md +157 -1
  166. package/docs/pt/intlayer_with_vite+react.md +157 -1
  167. package/docs/pt/intlayer_with_vite+solid.md +157 -1
  168. package/docs/pt/intlayer_with_vite+svelte.md +157 -1
  169. package/docs/pt/intlayer_with_vite+vue.md +157 -1
  170. package/docs/ru/compiler.md +90 -57
  171. package/docs/ru/configuration.md +76 -46
  172. package/docs/ru/intlayer_with_nextjs_16.md +174 -1
  173. package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
  174. package/docs/ru/intlayer_with_react_router_v7.md +224 -1
  175. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
  176. package/docs/ru/intlayer_with_svelte_kit.md +158 -2
  177. package/docs/ru/intlayer_with_tanstack.md +159 -1
  178. package/docs/ru/intlayer_with_vite+preact.md +157 -1
  179. package/docs/ru/intlayer_with_vite+react.md +157 -1
  180. package/docs/ru/intlayer_with_vite+solid.md +157 -1
  181. package/docs/ru/intlayer_with_vite+svelte.md +157 -1
  182. package/docs/ru/intlayer_with_vite+vue.md +157 -1
  183. package/docs/tr/compiler.md +85 -52
  184. package/docs/tr/configuration.md +83 -40
  185. package/docs/tr/intlayer_with_nextjs_16.md +174 -1
  186. package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
  187. package/docs/tr/intlayer_with_react_router_v7.md +224 -1
  188. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
  189. package/docs/tr/intlayer_with_svelte_kit.md +158 -2
  190. package/docs/tr/intlayer_with_tanstack.md +159 -1
  191. package/docs/tr/intlayer_with_vite+preact.md +157 -1
  192. package/docs/tr/intlayer_with_vite+react.md +157 -1
  193. package/docs/tr/intlayer_with_vite+solid.md +157 -1
  194. package/docs/tr/intlayer_with_vite+svelte.md +157 -1
  195. package/docs/tr/intlayer_with_vite+vue.md +157 -1
  196. package/docs/uk/compiler.md +96 -61
  197. package/docs/uk/configuration.md +83 -37
  198. package/docs/uk/intlayer_with_nextjs_16.md +174 -1
  199. package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
  200. package/docs/uk/intlayer_with_react_router_v7.md +224 -1
  201. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
  202. package/docs/uk/intlayer_with_svelte_kit.md +157 -1
  203. package/docs/uk/intlayer_with_tanstack.md +159 -1
  204. package/docs/uk/intlayer_with_vite+preact.md +157 -1
  205. package/docs/uk/intlayer_with_vite+react.md +157 -1
  206. package/docs/uk/intlayer_with_vite+solid.md +157 -1
  207. package/docs/uk/intlayer_with_vite+svelte.md +157 -1
  208. package/docs/uk/intlayer_with_vite+vue.md +157 -1
  209. package/docs/vi/compiler.md +85 -50
  210. package/docs/vi/configuration.md +85 -39
  211. package/docs/vi/intlayer_with_nextjs_16.md +174 -1
  212. package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
  213. package/docs/vi/intlayer_with_react_router_v7.md +224 -1
  214. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  215. package/docs/vi/intlayer_with_svelte_kit.md +158 -2
  216. package/docs/vi/intlayer_with_tanstack.md +159 -1
  217. package/docs/vi/intlayer_with_vite+preact.md +157 -1
  218. package/docs/vi/intlayer_with_vite+react.md +157 -1
  219. package/docs/vi/intlayer_with_vite+solid.md +157 -1
  220. package/docs/vi/intlayer_with_vite+svelte.md +157 -1
  221. package/docs/vi/intlayer_with_vite+vue.md +157 -1
  222. package/docs/zh/compiler.md +84 -49
  223. package/docs/zh/configuration.md +80 -37
  224. package/docs/zh/intlayer_with_adonisjs.md +1 -1
  225. package/docs/zh/intlayer_with_express.md +1 -1
  226. package/docs/zh/intlayer_with_fastify.md +1 -1
  227. package/docs/zh/intlayer_with_hono.md +1 -1
  228. package/docs/zh/intlayer_with_nestjs.md +1 -1
  229. package/docs/zh/intlayer_with_nextjs_16.md +174 -1
  230. package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
  231. package/docs/zh/intlayer_with_react_router_v7.md +227 -4
  232. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
  233. package/docs/zh/intlayer_with_svelte_kit.md +158 -2
  234. package/docs/zh/intlayer_with_tanstack.md +159 -1
  235. package/docs/zh/intlayer_with_vite+preact.md +159 -3
  236. package/docs/zh/intlayer_with_vite+react.md +157 -1
  237. package/docs/zh/intlayer_with_vite+solid.md +161 -5
  238. package/docs/zh/intlayer_with_vite+svelte.md +157 -1
  239. package/docs/zh/intlayer_with_vite+vue.md +158 -2
  240. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-03-11
3
+ updatedAt: 2026-03-12
4
4
  title: Configuración
5
5
  description: Aprende cómo configurar Intlayer para tu aplicación. Entiende las diversas configuraciones y opciones disponibles para personalizar Intlayer según tus necesidades.
6
6
  keywords:
@@ -15,23 +15,32 @@ slugs:
15
15
  - configuration
16
16
  history:
17
17
  - version: 8.3.0
18
- data: 2026-03-11
18
+ date: 2026-03-11
19
19
  changes: Mover 'baseDir' de la configuración 'content' a la de 'system'
20
20
  - version: 8.2.0
21
- date: 2026-03-10
21
+ date: 2026-03-09
22
22
  changes: Actualizar opciones del compilador, añadir soporte para 'output' y 'noMetadata'
23
23
  - version: 8.1.7
24
24
  date: 2026-02-25
25
25
  changes: Actualizar opciones del compilador
26
+ - version: 8.1.5
27
+ date: 2026-02-23
28
+ changes: Añadir opción de compilador 'build-only' y prefijo de diccionario
26
29
  - version: 8.0.6
27
30
  date: 2026-02-12
28
31
  changes: Añadir soporte para los proveedores Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face y Together.ai
29
32
  - version: 8.0.5
30
33
  date: 2026-02-06
31
34
  changes: Añadir `dataSerialization` a la configuración de IA
35
+ - version: 8.0.0
36
+ date: 2026-01-24
37
+ changes: Renombrar el modo de importación `live` a `fetch` para describir mejor el mecanismo subyacente.
38
+ - version: 8.0.0
39
+ date: 2026-01-22
40
+ changes: Mover la configuración de construcción para `importMode` a la configuración del diccionario.
32
41
  - version: 8.0.0
33
42
  date: 2026-01-22
34
- changes: Mover la configuración de construcción para importMode a la configuración del diccionario.
43
+ changes: Añadir la opción `rewrite` a la configuración de enrutamiento
35
44
  - version: 8.0.0
36
45
  date: 2026-01-18
37
46
  changes: Separar la configuración del sistema de la configuración del contenido. Mover las rutas internas a la propiedad `system`. Añadir `codeDir` para separar los archivos de contenido de la transformación del código.
@@ -44,6 +53,24 @@ history:
44
53
  - version: 7.5.0
45
54
  date: 2025-12-17
46
55
  changes: Añadir opción `buildMode`
56
+ - version: 7.0.0
57
+ date: 2025-10-25
58
+ changes: Añadir configuración de `dictionary`
59
+ - version: 7.0.0
60
+ date: 2025-10-21
61
+ changes: Reemplazar el `middleware` por la configuración de `routing`
62
+ - version: 7.0.0
63
+ date: 2025-10-12
64
+ changes: Añadir opción `formatCommand`
65
+ - version: 6.2.0
66
+ date: 2025-10-12
67
+ changes: Actualizar opción `excludedPath`
68
+ - version: 6.0.2
69
+ date: 2025-09-23
70
+ changes: Añadir opción `outputFormat`
71
+ - version: 6.0.0
72
+ date: 2025-09-21
73
+ changes: Eliminar el campo `dictionaryOutput` y el campo `i18nextResourcesDir`
47
74
  - version: 6.0.0
48
75
  date: 2025-09-16
49
76
  changes: Añadido modo de importación `live`
@@ -92,7 +119,7 @@ Intlayer acepta formatos de archivo de configuración JSON, JS, MJS y TS:
92
119
 
93
120
  ## Archivo de configuración de ejemplo
94
121
 
95
- ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
122
+ ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
96
123
  import { Locales, type IntlayerConfig } from "intlayer";
97
124
  import { nextjsRewrite } from "intlayer/routing";
98
125
  import { z } from "zod";
@@ -190,7 +217,7 @@ const config: IntlayerConfig = {
190
217
  * Options: 'cookie', 'localStorage', 'sessionStorage', 'header', or an array of these.
191
218
  * Default: ['cookie', 'header']
192
219
  */
193
- storage: "cookie",
220
+ storage: ["cookie", "header"],
194
221
 
195
222
  /**
196
223
  * Base path for the application URLs.
@@ -321,12 +348,23 @@ const config: IntlayerConfig = {
321
348
  /**
322
349
  * Global context to guide the AI in generating translations.
323
350
  */
324
- applicationContext: "This is a travel booking application.",
351
+ applicationContext: "Esta es una aplicación de reserva de viajes.",
325
352
 
326
353
  /**
327
354
  * Base URL for the AI API.
328
355
  */
329
356
  baseURL: "http://localhost:3000",
357
+
358
+ /**
359
+ * Serialización de datos
360
+ *
361
+ * Opciones:
362
+ * - "json": Estándar, confiable; consume más tokens.
363
+ * - "toon": Menos tokens, menos consistente que JSON.
364
+ *
365
+ * Por defecto: "json"
366
+ */
367
+ dataSerialization: "json",
330
368
  },
331
369
 
332
370
  /**
@@ -349,9 +387,9 @@ const config: IntlayerConfig = {
349
387
 
350
388
  /**
351
389
  * Output format for generated dictionary files.
352
- * Default: ['esm', 'cjs']
390
+ * Default: ['cjs', 'esm']
353
391
  */
354
- outputFormat: ["esm"],
392
+ outputFormat: ["cjs", "esm"],
355
393
 
356
394
  /**
357
395
  * Indicates if the build should check TypeScript types.
@@ -425,43 +463,71 @@ const config: IntlayerConfig = {
425
463
  */
426
464
  compiler: {
427
465
  /**
428
- * Establécelo en 'build-only' para omitir el compilador durante el desarrollo y acelerar los tiempos de inicio.
466
+ * Indica si el compilador debe estar habilitado.
467
+ *
468
+ * - false : Deshabilita el compilador.
469
+ * - true : Habilita el compilador.
470
+ * - "build-only" : Omite el compilador durante el desarrollo para acelerar los tiempos de inicio.
471
+ *
472
+ * Por defecto : false
429
473
  */
430
474
  enabled: true,
431
475
 
432
476
  /**
433
- * Patrón para recorrer el código a optimizar.
434
- */
435
- transformPattern: [
436
- "**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}",
437
- "!**/node_modules/**",
438
- ],
439
-
440
- /**
441
- * Patrón a excluir de la optimización.
477
+ * Define la ruta de los archivos de salida. Reemplaza `outputDir`.
478
+ *
479
+ * - Las rutas `./` se resuelven de forma relativa al directorio del componente.
480
+ * - Las rutas `/` se resuelven de forma relativa a la raíz del proyecto (`baseDir`).
481
+ *
482
+ * - Incluir la variable `{{locale}}` en la ruta activará la generación de diccionarios separados por locale.
483
+ *
484
+ * Ejemplo:
485
+ * ```ts
486
+ * {
487
+ * // Crear archivos .content.ts multilingües cerca del componente
488
+ * output: ({ fileName, extension }) => `./${fileName}${extension}`,
489
+ *
490
+ * // output: './{{fileName}}{{extension}}', // Equivalente usando una cadena de plantilla
491
+ * }
492
+ * ```
493
+ *
494
+ * ```ts
495
+ * {
496
+ * // Crear JSON centralizados por locale en la raíz del proyecto
497
+ * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
498
+ *
499
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // Equivalente usando una cadena de plantilla
500
+ * }
501
+ * ```
502
+ *
503
+ * Lista de variables:
504
+ * - `fileName`: El nombre del archivo.
505
+ * - `key`: La clave del contenido.
506
+ * - `locale`: El locale del contenido.
507
+ * - `extension`: La extensión del archivo.
508
+ * - `componentFileName`: El nombre del archivo del componente.
509
+ * - `componentExtension`: La extensión del archivo del componente.
510
+ * - `format`: El formato del diccionario.
511
+ * - `componentFormat`: El formato del diccionario del componente.
512
+ * - `componentDirPath`: La ruta del directorio del componente.
442
513
  */
443
- excludePattern: ["**/node_modules/**"],
514
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
444
515
 
445
516
  /**
446
- * Directorio de salida para los diccionarios optimizados.
517
+ * Indica si los componentes deben guardarse después de ser transformados.
518
+ * De esta manera, el compilador puede ejecutarse una sola vez para transformar la aplicación y luego puede eliminarse.
447
519
  */
448
- output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
520
+ saveComponents: false,
449
521
 
450
522
  /**
451
- * Inserta solo el contenido en el archivo generado, sin clave.
523
+ * Inserta solo el contenido en el archivo generado. Útil para salidas JSON de i18next o ICU MessageFormat por locale.
452
524
  */
453
525
  noMetadata: false,
454
526
 
455
527
  /**
456
528
  * Prefijo de clave de diccionario
457
529
  */
458
- dictionaryKeyPrefix: "", // Eliminar el prefijo base
459
-
460
- /**
461
- * Indica si los componentes deben guardarse después de ser transformados.
462
- * De esta manera, el compilador puede ejecutarse una sola vez para transformar la aplicación y luego puede eliminarse.
463
- */
464
- saveComponents: false,
530
+ dictionaryKeyPrefix: "", // Añadir un prefijo opcional para las claves de diccionario extraídas
465
531
  },
466
532
 
467
533
  /**
@@ -480,7 +546,7 @@ const config: IntlayerConfig = {
480
546
  };
481
547
 
482
548
  export default config;
483
- ```
549
+ ````
484
550
 
485
551
  ## Referencia de Configuración
486
552
 
@@ -616,95 +682,243 @@ Define configuraciones relacionadas con el editor integrado, incluyendo el puert
616
682
  - _Ejemplo_: `'https://example.com'`
617
683
  - _Nota_: Apunta a localhost por defecto, pero puede cambiarse a cualquier URL en el caso de un servidor de sincronización en vivo remoto.
618
684
 
619
- ### Configuración del Middleware
685
+ ### Configuración de Enrutamiento
620
686
 
621
- Configuraciones que controlan el comportamiento del middleware, incluyendo cómo la aplicación maneja cookies, encabezados y prefijos de URL para la gestión de locales.
687
+ Configuraciones que controlan el comportamiento del enrutamiento, incluyendo la estructura de la URL, el almacenamiento de locales y el manejo del middleware.
622
688
 
623
689
  #### Propiedades
624
690
 
625
- - **headerName**:
626
- - _Tipo_: `string`
627
- - _Por defecto_: `'x-intlayer-locale'`
628
- - _Descripción_: El nombre del encabezado HTTP usado para determinar el locale.
629
- - _Ejemplo_: `'x-custom-locale'`
630
- - _Nota_: Esto es útil para la determinación del locale basada en API.
631
-
632
- - **cookieName**:
633
- - _Tipo_: `string`
634
- - _Por defecto_: `'intlayer-locale'`
635
- - _Descripción_: El nombre de la cookie usada para almacenar el locale.
636
- - _Ejemplo_: `'custom-locale'`
637
- - _Nota_: Se utiliza para mantener la localización a través de las sesiones.
638
-
639
- - **prefixDefault**:
640
- - _Tipo_: `boolean`
641
- - _Por defecto_: `false`
642
- - _Descripción_: Indica si se debe incluir la localización por defecto en la URL.
643
- - _Ejemplo_: `true`
644
- - _Nota_:
645
- - Si es `true` y `defaultLocale = 'en'`: ruta = `/en/dashboard` o `/fr/dashboard`
646
- - Si es `false` y `defaultLocale = 'en'`: ruta = `/dashboard` o `/fr/dashboard`
691
+ - **mode**:
692
+ - _Tipo_: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
693
+ - _Par defecto_: `'prefix-no-default'`
694
+ - _Descripción_: Modo de enrutamiento de URL para el manejo de locales.
695
+ - _Ejemplos_:
696
+ - `'prefix-no-default'`: `/dashboard` (en) o `/fr/dashboard` (fr)
697
+ - `'prefix-all'`: `/en/dashboard` (en) o `/fr/dashboard` (fr)
698
+ - `'no-prefix'`: `/dashboard` (locale gestionado por otros medios)
699
+ - `'search-params'`: `/dashboard?locale=fr`
700
+ - _Nota_: Esta configuración no afecta la gestión de cookies o el almacenamiento de locales.
701
+
702
+ - **storage**:
703
+ - _Tipo_: `false | 'cookie' | 'localStorage' | 'sessionStorage' | 'header' | CookiesAttributes | StorageAttributes | Array`
704
+ - _Par defecto_: `['cookie', 'header']`
705
+ - _Descripción_: Configuración para almacenar el locale en el cliente.
706
+
707
+ - **cookie**:
708
+ - _Descripción_: Almacena datos en cookies, pequeños fragmentos de datos almacenados en el navegador del cliente, accesibles tanto en el lado del cliente como del servidor.
709
+ - _Note_: Para el almacenamiento conforme al RGPD, asegúrese del consentimiento del usuario antes del uso.
710
+ - _Note_: Los parámetros de las cookies son personalizables si se configuran como CookiesAttributes (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`).
711
+
712
+ - **localStorage**:
713
+ - _Descripción_: Almacena datos en el navegador sin fechas de expiración, permitiendo la persistencia de datos entre sesiones, accesible solo en el lado del cliente.
714
+ - _Note_: Ideal para almacenar datos a largo plazo, pero tenga en cuenta las implicaciones de privacidad y seguridad.
715
+ - _Note_: El almacenamiento local solo es accesible en el lado del cliente, el proxy de intlayer no podrá acceder a él.
716
+ - _Note_: Los parámetros de almacenamiento local son personalizables si se configuran como StorageAttributes (`{ type: 'localStorage', name: 'custom-locale' }`).
717
+
718
+ - **sessionStorage**:
719
+ - _Descripción_: Almacena datos durante la sesión de la página, lo que significa que se borran una vez que se cierra la pestaña o ventana, accesible solo en el lado del cliente.
720
+ - _Note_: Adecuado para el almacenamiento temporal de datos para cada sesión.
721
+ - _Note_: El almacenamiento de locales solo es accesible en el lado del cliente, el proxy de intlayer no podrá acceder a él.
722
+ - _Note_: Los parámetros de almacenamiento local son personalizables si se configuran como StorageAttributes (`{ type: 'sessionStorage', name: 'custom-locale' }`).
723
+
724
+ - **header**:
725
+ - _Descripción_: Utiliza encabezados HTTP para almacenar o transmitir datos de locales, adecuado para la determinación del idioma en el lado del servidor.
726
+ - _Note_: Útil en llamadas API para mantener configuraciones de idioma consistentes entre solicitudes.
727
+ - _Note_: El encabezado solo es accesible en el lado del servidor, el lado del cliente no podrá acceder a él.
728
+ - _Note_: El nombre del encabezado es personalizable si se configura como StorageAttributes (`{ type: 'header', name: 'custom-locale' }`).
647
729
 
648
730
  - **basePath**:
649
- - _Tipo_: `string`
650
- - _Por defecto_: `''`
731
+ - _Type_: `string`
732
+ - _Par defecto_: `''`
651
733
  - _Descripción_: La ruta base para las URLs de la aplicación.
652
- - _Ejemplo_: `'/my-app'`
653
- - _Nota_:
734
+ - _Exemple_: `'/my-app'`
735
+ - _Note_:
654
736
  - Si la aplicación está alojada en `https://example.com/my-app`
655
737
  - La ruta base es `'/my-app'`
656
738
  - La URL será `https://example.com/my-app/en`
657
739
  - Si no se establece la ruta base, la URL será `https://example.com/en`
658
740
 
659
741
  - **rewrite**:
660
- - _Tipo_: `Record<string, StrictModeLocaleMap<string>>`
661
- - _Por defecto_: `undefined`
662
- - _Descripción_: Reglas personalizadas de reescritura de URL que sobrescriben el modo de enrutamiento predeterminado para rutas específicas. Permite definir rutas específicas por idioma que difieren del comportamiento de enrutamiento estándar. Admite parámetros de ruta dinámicos usando la sintaxis `[param]`.
742
+ - _Type_: `Record<string, StrictModeLocaleMap<string>>`
743
+ - _Par defecto_: `undefined`
744
+ - _Descripción_: Reglas personalizadas de reescritura de URL que sobrescriben el modo de enrutamiento predeterminado para rutas específicas. Permite definir rutas específicas por locale que difieren del comportamiento de enrutamiento estándar. Admite parámetros de ruta dinámicos usando la sintaxis `[param]`.
663
745
  - _Ejemplo_:
664
746
  ```typescript
665
747
  routing: {
666
748
  mode: "prefix-no-default", // Estrategia de respaldo
667
749
  rewrite: nextjsRewrite({
668
- "/[locale]/about": {
669
- en: "/[locale]/about",
670
- fr: "/[locale]/a-propos",
750
+ "/about": {
751
+ en: "/about",
752
+ fr: "/a-propos",
671
753
  },
672
- "/[locale]/product/[slug]": {
673
- en: "/[locale]/product/[slug]",
674
- fr: "/[locale]/produit/[slug]",
754
+ "/product/[slug]": {
755
+ en: "/product/[slug]",
756
+ fr: "/produit/[slug]",
675
757
  },
676
- "/[locale]/blog/[category]/[id]": {
677
- en: "/[locale]/blog/[category]/[id]",
678
- fr: "/[locale]/journal/[category]/[id]",
758
+ "/blog/[category]/[id]": {
759
+ en: "/blog/[category]/[id]",
760
+ fr: "/journal/[category]/[id]",
679
761
  },
680
762
  }),
681
763
  }
682
764
  ```
683
- - _Nota_: Las reglas de reescritura tienen prioridad sobre el comportamiento del `mode` predeterminado. Si una ruta coincide con una regla de reescritura, se usará la ruta localizada de la configuración de reescritura en lugar del prefijo de idioma estándar.
684
- - _Nota_: Se admiten parámetros de ruta dinámicos usando la notación de corchetes (por ejemplo, `[slug]`, `[id]`). Los valores de los parámetros se extraen automáticamente de la URL y se interpolan en la ruta reescrita.
685
- - _Nota_: Funciona con aplicaciones Next.js y Vite. El middleware/proxy reescribirá automáticamente las solicitudes entrantes para que coincidan con la estructura de ruta interna.
686
- - _Nota_: Al generar URLs con `getLocalizedUrl()`, las reglas de reescritura se aplican automáticamente si coinciden con la ruta proporcionada.
687
- - _Referencia_: Para más información, consulte [Reescrituras de URL personalizadas](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/custom_url_rewrites.md).
765
+ - _Note_: Las reglas de reescritura tienen prioridad sobre el comportamiento predeterminado de `mode`. Si una ruta coincide con una regla de reescritura, se usará la ruta localizada de la configuración de reescritura en lugar del prefijo de locale estándar.
766
+ - _Note_: Los parámetros de ruta dinámicos se admiten mediante la notación de corchetes (por ejemplo, `[slug]`, `[id]`). Los valores de los parámetros se extraen automáticamente de la URL y se interpolan en la ruta reescrita.
767
+ - _Note_: Funciona con aplicaciones Next.js y Vite. El middleware/proxy reescribirá automáticamente las solicitudes entrantes para que coincidan con la estructura interna de las rutas.
768
+ - _Note_: Al generar URLs con `getLocalizedUrl()`, las reglas de reescritura se aplican automáticamente si coinciden con la ruta proporcionada.
769
+ - _Reference_: Para obtener más información, consulte [Reescrituras de URL Personalizadas](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/custom_url_rewrites.md).
688
770
 
689
- - **serverSetCookie**:
690
- - _Tipo_: `string`
691
- - _Por defecto_: `'always'`
692
- - _Descripción_: Regla para establecer la cookie de localización en el servidor.
693
- - _Opciones_: `'always'`, `'never'`
694
- - _Ejemplo_: `'never'`
695
- - _Nota_: Controla si la cookie de localización se establece en cada solicitud o nunca.
771
+ #### Atributos de Cookie
696
772
 
697
- - **noPrefix**:
698
- - _Tipo_: `boolean`
699
- - _Por defecto_: `false`
700
- - _Descripción_: Indica si se omite el prefijo de localización en las URLs.
701
- - _Ejemplo_: `true`
702
- - _Nota_:
703
- - Si es `true`: No hay prefijo en la URL
704
- - Si es `false`: Hay prefijo en la URL
705
- - Ejemplo con `basePath = '/my-app'`:
706
- - Si `noPrefix = false`: La URL será `https://example.com/my-app/en`
707
- - Si `noPrefix = true`: La URL será `https://example.com`
773
+ Cuando use el almacenamiento de cookies, puede configurar atributos de cookies adicionales:
774
+
775
+ - **name**: Nombre de la cookie (por defecto: `'INTLAYER_LOCALE'`)
776
+ - **domain**: Dominio de la cookie (por defecto: undefined)
777
+ - **path**: Ruta de la cookie (por defecto: undefined)
778
+ - **secure**: Requiere HTTPS (por defecto: undefined)
779
+ - **httpOnly**: Bandera HTTP-only (por defecto: undefined)
780
+ - **sameSite**: Política SameSite (`'strict' | 'lax' | 'none'`)
781
+ - **expires**: Fecha de expiración o días (por defecto: undefined)
782
+
783
+ #### Atributos de Almacenamiento Local de Locales
784
+
785
+ Cuando use localStorage o sessionStorage:
786
+
787
+ - **type**: Tipo de almacenamiento (`'localStorage' | 'sessionStorage'`)
788
+ - **name**: Nombre de la clave de almacenamiento (por defecto: `'INTLAYER_LOCALE'`)
789
+
790
+ #### Ejemplos de Configuración
791
+
792
+ Aquí hay algunos ejemplos comunes de configuración para la nueva estructura de enrutamiento v8:
793
+
794
+ **Configuración Básica (Predeterminada)**:
795
+
796
+ ```typescript
797
+ import { Locales, type IntlayerConfig } from "intlayer";
798
+ // intlayer.config.ts
799
+ const config: IntlayerConfig = {
800
+ internationalization: {
801
+ locales: ["en", "fr", "es"],
802
+ defaultLocale: "en",
803
+ },
804
+ routing: {
805
+ mode: "prefix-no-default",
806
+ storage: "localStorage",
807
+ basePath: "",
808
+ },
809
+ };
810
+
811
+ export default config;
812
+ ```
813
+
814
+ **Configuración Conforme al RGPD**:
815
+
816
+ ```typescript
817
+ import { Locales, type IntlayerConfig } from "intlayer";
818
+ // intlayer.config.ts
819
+ const config: IntlayerConfig = {
820
+ internationalization: {
821
+ locales: ["en", "fr", "es"],
822
+ defaultLocale: "en",
823
+ },
824
+ routing: {
825
+ mode: "prefix-no-default",
826
+ storage: [
827
+ {
828
+ type: "localStorage",
829
+ name: "user-locale",
830
+ },
831
+ {
832
+ type: "cookie",
833
+ name: "user-locale",
834
+ secure: true,
835
+ sameSite: "strict",
836
+ httpOnly: false,
837
+ },
838
+ ],
839
+ basePath: "",
840
+ },
841
+ };
842
+
843
+ export default config;
844
+ ```
845
+
846
+ **Modo de Parámetros de Búsqueda**:
847
+
848
+ ```typescript
849
+ import { Locales, type IntlayerConfig } from "intlayer";
850
+ // intlayer.config.ts
851
+ const config: IntlayerConfig = {
852
+ internationalization: {
853
+ locales: ["en", "fr", "es"],
854
+ defaultLocale: "en",
855
+ },
856
+ routing: {
857
+ mode: "search-params",
858
+ storage: "localStorage",
859
+ basePath: "",
860
+ },
861
+ };
862
+
863
+ export default config;
864
+ ```
865
+
866
+ **Modo Sin Prefijo con Almacenamiento Personalizado**:
867
+
868
+ ```typescript
869
+ import { Locales, type IntlayerConfig } from "intlayer";
870
+ // intlayer.config.ts
871
+ const config: IntlayerConfig = {
872
+ internationalization: {
873
+ locales: ["en", "fr", "es"],
874
+ defaultLocale: "en",
875
+ },
876
+ routing: {
877
+ mode: "no-prefix",
878
+ storage: {
879
+ type: "sessionStorage",
880
+ name: "app-locale",
881
+ },
882
+ basePath: "/my-app",
883
+ },
884
+ };
885
+
886
+ export default config;
887
+ ```
888
+
889
+ **Reescritura de URL Personalizada con Rutas Dinámicas**:
890
+
891
+ ```typescript
892
+ // intlayer.config.ts
893
+ import { nextjsRewrite } from "intlayer/routing";
894
+
895
+ const config: IntlayerConfig = {
896
+ internationalization: {
897
+ locales: ["en", "fr"],
898
+ defaultLocale: "en",
899
+ },
900
+ routing: {
901
+ mode: "prefix-no-default", // Estrategia de respaldo para rutas no reescritas
902
+ storage: "cookie",
903
+ rewrite: nextjsRewrite({
904
+ "/about": {
905
+ en: "/about",
906
+ fr: "/a-propos",
907
+ },
908
+ "/product/[slug]": {
909
+ en: "/product/[slug]",
910
+ fr: "/produit/[slug]",
911
+ },
912
+ "/blog/[category]/[id]": {
913
+ en: "/blog/[category]/[id]",
914
+ fr: "/journal/[category]/[id]",
915
+ },
916
+ }),
917
+ },
918
+ };
919
+
920
+ export default config;
921
+ ```
708
922
 
709
923
  ---
710
924
 
@@ -903,74 +1117,78 @@ Intlayer admite múltiples proveedores de IA para una mayor flexibilidad y elecc
903
1117
 
904
1118
  #### Propiedades
905
1119
 
906
- - **provider**:
907
- - _Tipo_: `string`
908
- - _Predeterminado_: `'openai'`
909
- - _Descripción_: El proveedor a utilizar para las funciones de IA de Intlayer.
910
- - _Opciones_: `'openai'`, `'anthropic'`, `'mistral'`, `'deepseek'`, `'gemini'`, `'ollama'`, `'openrouter'`, `'alibaba'`, `'fireworks'`, `'groq'`, `'huggingface'`, `'bedrock'`, `'googleaistudio'`, `'googlevertex'`, `'togetherai'`
911
- - _Ejemplo_: `'anthropic'`
912
- - _Nota_: Diferentes proveedores pueden requerir diferentes claves API y tener distintos modelos de precios.
913
-
914
- - **model**:
915
- - _Tipo_: `string`
916
- - _Por defecto_: Ninguno
917
- - _Descripción_: El modelo a utilizar para las funciones de IA de Intlayer.
918
- - _Ejemplo_: `'gpt-4o-2024-11-20'`
919
- - _Nota_: El modelo específico a utilizar varía según el proveedor.
920
-
921
- - **temperature**:
922
- - _Tipo_: `number`
923
- - _Por defecto_: Ninguno
924
- - _Descripción_: La temperatura controla la aleatoriedad de las respuestas de la IA.
925
- - _Ejemplo_: `0.1`
926
- - _Nota_: Una temperatura más alta hará que la IA sea más creativa y menos predecible.
927
-
928
- - **apiKey**:
929
- - _Tipo_: `string`
930
- - _Por defecto_: Ninguno
931
- - _Descripción_: Su clave API para el proveedor seleccionado.
932
- - _Ejemplo_: `process.env.OPENAI_API_KEY`
933
- - _Nota_: Importante: Las claves API deben mantenerse en secreto y no compartirse públicamente. Por favor, asegúrese de guardarlas en un lugar seguro, como variables de entorno.
934
-
935
- - **applicationContext**:
936
- - _Tipo_: `string`
937
- - _Por defecto_: Ninguno
938
- - _Descripción_: Proporciona contexto adicional sobre su aplicación al modelo de IA, ayudándole a generar traducciones más precisas y contextualmente apropiadas. Esto puede incluir información sobre el dominio de su aplicación, público objetivo, tono o terminología específica.
939
-
940
- - **baseURL**:
941
- - _Tipo_: `string`
942
- - _Por defecto_: Ninguno
943
- - _Descripción_: La URL base para la API de IA.
944
- - _Ejemplo_: `'https://api.openai.com/v1'`
945
- - _Nota_: Puede usarse para apuntar a un endpoint de API de IA local o personalizado.
1120
+ - **provider** :
1121
+ - _Tipo_ : `string`
1122
+ - _Par defecto_ : `'openai'`
1123
+ - _Descripción_ : El proveedor que se utilizará para las funciones de IA de Intlayer.
1124
+ - _Opciones_ : `'openai'`, `'anthropic'`, `'mistral'`, `'deepseek'`, `'gemini'`, `'ollama'`, `'openrouter'`, `'alibaba'`, `'fireworks'`, `'groq'`, `'huggingface'`, `'bedrock'`, `'googleaistudio'`, `'googlevertex'`, `'togetherai'`
1125
+ - _Ejemplo_ : `'anthropic'`
1126
+ - _Nota_: Diferentes proveedores pueden requerir diferentes claves de API y tener diferentes modelos de precios.
1127
+
1128
+ - **model** :
1129
+ - _Tipo_ : `string`
1130
+ - _Par defecto_ : Ninguno
1131
+ - _Descripción_ : El modelo que se utilizará para las funciones de IA de Intlayer.
1132
+ - _Ejemplo_ : `'gpt-4o-2024-11-20'`
1133
+ - _Nota_ : El modelo específico que se utilizará varía según el proveedor.
1134
+
1135
+ - **temperature** :
1136
+ - _Tipo_ : `number`
1137
+ - _Par defecto_ : Ninguna
1138
+ - _Descripción_ : La temperatura controla la aleatoriedad de las respuestas de la IA.
1139
+ - _Ejemplo_ : `0.1`
1140
+ - _Nota_ : Una temperatura más alta hará que la IA sea más creativa y menos predecible.
1141
+
1142
+ - **apiKey** :
1143
+ - _Tipo_ : `string`
1144
+ - _Par defecto_ : Ninguna
1145
+ - _Descripción_ : Tu clave de API para el proveedor seleccionado.
1146
+ - _Ejemplo_ : `process.env.OPENAI_API_KEY`
1147
+ - _Nota_ : Importante: Las claves de API deben mantenerse en secreto y no compartirse públicamente. Asegúrate de guardarlas en un lugar seguro, como variables de entorno.
1148
+
1149
+ - **applicationContext** :
1150
+ - _Tipo_ : `string`
1151
+ - _Par defecto_ : Ninguno
1152
+ - _Descripción_ : Proporciona contexto adicional sobre tu aplicación al modelo de IA, ayudándole a generar traducciones más precisas y contextualmente adecuadas. Esto puede incluir información sobre el dominio de tu aplicación, el público objetivo, el tono o terminología específica.
1153
+ - _Note_: Puedes usarlo para añadir más reglas al modelo de IA (por ejemplo, "No debes transformar las URLs").
1154
+ - _Ejemplo_ : `'Mi contexto de aplicación'`
1155
+
1156
+ - **baseURL** :
1157
+ - _Tipo_ : `string`
1158
+ - _Par defecto_ : Ninguna
1159
+ - _Descripción_ : La URL base para la API de IA.
1160
+ - _Ejemplo_ : `'https://api.openai.com/v1'`
1161
+ - _Exemple_ : `'http://localhost:5000'`
1162
+ - _Nota_ : Puede usarse para apuntar a un punto final de API de IA local o personalizado.
946
1163
 
947
1164
  - **dataSerialization**:
948
- - _Tipo_: `'json' | 'toon'`
949
- - _Por defecto_: `'json'`
950
- - _Descripción_: El formato de serialización de datos a utilizar para las funciones de IA de Intlayer.
1165
+ - _Type_: `'json' | 'toon'`
1166
+ - _Par defecto_: `'json'`
1167
+ - _Descripción_: El formato de serialización de datos que se utilizará para las funciones de IA de Intlayer.
951
1168
  - _Ejemplo_: `'toon'`
952
- - _Nota_: `json`: Estándar, confiable; utiliza más tokens. `toon`: Menos tokens, menos consistente que JSON.
1169
+ - _Note_: `json`: Estándar, confiable; utiliza más tokens. `toon`: Menos tokens, menos consistente que el JSON.
1170
+ > Si proporcionas parámetros adicionales, Intlayer los pasará al modelo de IA como contexto. Esto se puede usar para personalizar el esfuerzo de razonamiento, la verbosidad del texto, etc.
953
1171
 
954
- ### Configuración de compilación
1172
+ ### Configuración de Build
955
1173
 
956
- Configuraciones que controlan cómo Intlayer optimiza y construye la internacionalización de su aplicación.
1174
+ Configuraciones que controlan cómo Intlayer optimiza y construye la internacionalización de tu aplicación.
957
1175
 
958
1176
  Las opciones de compilación se aplican a los plugins `@intlayer/babel` y `@intlayer/swc`.
959
1177
 
960
1178
  > En modo de desarrollo, Intlayer utiliza importaciones estáticas para los diccionarios para simplificar la experiencia de desarrollo.
961
1179
 
962
- > Cuando está optimizado, Intlayer reemplazará las llamadas a diccionarios para optimizar el particionado, de modo que el paquete final solo importe los diccionarios que realmente se usan.
1180
+ > Cuando se optimiza, Intlayer reemplazará las llamadas a los diccionarios para optimizar la división, de modo que el paquete final solo importe los diccionarios que realmente se utilizan.
963
1181
 
964
1182
  #### Propiedades
965
1183
 
966
- - **mode**:
967
- - _Tipo_: `'auto' | 'manual'`
968
- - _Por defecto_: `'auto'`
969
- - _Descripción_: Controla el modo de la compilación.
970
- - _Ejemplo_: `'manual'`
971
- - _Nota_: Si 'auto', la compilación se habilitará automáticamente cuando se construya la aplicación.
972
- - _Nota_: Si 'manual', la compilación se establecerá solo cuando se ejecute el comando de compilación.
973
- - _Nota_: Puede usarse para deshabilitar la compilación de diccionarios, por ejemplo cuando se debe evitar la ejecución en un entorno Node.js.
1184
+ - **mode** :
1185
+ - _Tipo_ : `'auto' | 'manual'`
1186
+ - _Par defecto_ : `'auto'`
1187
+ - _Descripción_ : Controla el modo del build.
1188
+ - _Ejemplo_ : `'manual'`
1189
+ - _Nota_ : Si es 'auto', el build se activará automáticamente durante la construcción de la aplicación.
1190
+ - _Nota_ : Si es 'manual', el build solo se activará cuando se ejecute la orden de construcción.
1191
+ - _Nota_ : Se puede usar para desactivar la construcción de diccionarios, por ejemplo, cuando se debe evitar la ejecución en un entorno Node.js.
974
1192
 
975
1193
  - **checkTypes**:
976
1194
  - _Tipo_: `boolean`
@@ -978,50 +1196,51 @@ Las opciones de compilación se aplican a los plugins `@intlayer/babel` y `@intl
978
1196
  - _Descripción_: Indica si la compilación debe comprobar los tipos de TypeScript y registrar errores.
979
1197
  - _Nota_: Esto puede ralentizar la compilación.
980
1198
 
981
- - **optimize**:
982
- - _Tipo_: `boolean`
983
- - _Por defecto_: `process.env.NODE_ENV === 'production'`
984
- - _Descripción_: Controla si la compilación debe ser optimizada.
985
- - _Ejemplo_: `true`
986
- - _Nota_: Cuando está habilitado, Intlayer reemplazará todas las llamadas a diccionarios para optimizar el particionado. De esta forma, el paquete final solo importará los diccionarios que se usan. Todas las importaciones permanecerán como importaciones estáticas para evitar el procesamiento asíncrono al cargar los diccionarios.
987
- - _Nota_: Intlayer reemplazará todas las llamadas a `useIntlayer` con el modo definido por la opción `importMode` y `getIntlayer` con `getDictionary`.
988
- - _Nota_: Esta opción depende de los plugins `@intlayer/babel` y `@intlayer/swc`.
989
- - _Nota_: Asegúrese de que todas las claves estén declaradas estáticamente en las llamadas a `useIntlayer`. Por ejemplo, `useIntlayer('navbar')`.
990
-
991
- - **importMode**:
992
- - _Nota_: **Deprecated**: Use `dictionary.importMode` instead.
993
- - _Tipo_: `'static' | 'dynamic' | 'fetch'`
994
- - _Por defecto_: `'static'`
995
- - _Descripción_: Controla cómo se importan los diccionarios.
996
- - _Ejemplo_: `'dynamic'`
997
- - _Nota_: Modos disponibles:
998
- - "static": Los diccionarios se importan de forma estática. Reemplaza `useIntlayer` con `useDictionary`.
999
- - "dynamic": Los diccionarios se importan dinámicamente usando Suspense. Reemplaza `useIntlayer` con `useDictionaryDynamic`.
1000
- - "fetch": Los diccionarios se obtienen dinámicamente usando la API de sincronización en vivo. Reemplaza `useIntlayer` con `useDictionaryFetch`.
1001
- - _Nota_: Las importaciones dinámicas dependen de Suspense y pueden afectar ligeramente el rendimiento del renderizado.
1002
- - _Nota_: Si está deshabilitado, todos los locales se cargarán a la vez, incluso si no se usan.
1003
- - _Nota_: Esta opción depende de los plugins `@intlayer/babel` y `@intlayer/swc`.
1004
- - _Nota_: Asegúrese de que todas las claves estén declaradas estáticamente en las llamadas a `useIntlayer`. Por ejemplo, `useIntlayer('navbar')`.
1005
- - _Nota_: Esta opción será ignorada si `optimize` está deshabilitado.
1006
- - _Nota_: Si se establece en "fetch", solo los diccionarios que incluyen contenido remoto y están marcados con la bandera "live" serán transformados en modo en vivo. Los demás se importarán dinámicamente en modo "dynamic" para optimizar el número de consultas fetch y el rendimiento de carga.
1007
- - _Nota_: El modo en vivo utilizará la API de sincronización en vivo para obtener los diccionarios. Si la llamada a la API falla, los diccionarios se importarán dinámicamente en modo "dynamic".
1008
- - _Nota_: Esta opción no afectará a las funciones `getIntlayer`, `getDictionary`, `useDictionary`, `useDictionaryAsync` y `useDictionaryDynamic`.
1009
-
1010
- - **outputFormat**:
1011
- - _Tipo_: `'esm' | 'cjs'`
1012
- - _Por defecto_: `'esm'`
1013
- - _Descripción_: Controla el formato de salida de los diccionarios.
1014
- - _Ejemplo_: `'cjs'`
1015
- - _Nota_: El formato de salida de los diccionarios.
1016
-
1017
- - **traversePattern**:
1018
- - _Tipo_: `string[]`
1019
- - _Por defecto_: `['**\/*.{js,ts,mjs,cjs,jsx,tsx}', '!**\/node_modules/**']`
1020
- - _Descripción_: Patrones que definen qué archivos deben ser recorridos durante la optimización.
1021
- - _Ejemplo_: `['src/**\/*.{ts,tsx}', '../ui-library/**\/*.{ts,tsx}', '!**/node_modules/**']`
1022
- - _Nota_: Utilice esto para limitar la optimización a archivos de código relevantes y mejorar el rendimiento de la compilación.
1023
- - _Nota_: Esta opción será ignorada si `optimize` está deshabilitado.
1024
- - _Nota_: Use patrón glob.
1199
+ - **optimize** :
1200
+ - _Tipo_ : `boolean`
1201
+ - _Par defecto_ : `undefined`
1202
+ - _Descripción_ : Controla si el build debe optimizarse.
1203
+ - _Ejemplo_ : `process.env.NODE_ENV === 'production'`
1204
+ - _Note_ : Por defecto, la optimización del build no está fijada. Si no se define, Intlayer activará la optimización del build durante la construcción de tu aplicación (vite / nextjs / etc). Establecerlo en `true` forzará la optimización del build, incluso en modo de desarrollo. Establecerlo en `false` desactivará la optimización del build.
1205
+ - _Nota_ : Cuando se habilita, Intlayer reemplazará todas las llamadas a los diccionarios para optimizar la división. Por lo tanto, el paquete final solo importará los diccionarios utilizados. Todas las importaciones seguirán siendo importaciones estáticas para evitar el procesamiento asíncrono al cargar los diccionarios.
1206
+ - _Nota_ : Intlayer reemplazará todas las llamadas de `useIntlayer` por el modo definido a través de la opción `importMode` y `getIntlayer` por `getDictionary`.
1207
+ - _Nota_ : Esta opción depende de los plugins `@intlayer/babel` y `@intlayer/swc`.
1208
+ - _Nota_ : Asegúrate de que todas las claves se declaren estáticamente en las llamadas a `useIntlayer`. Por ejemplo, `useIntlayer('navbar')`.
1209
+
1210
+ - **importMode** :
1211
+ - _Tipo_ : `'static' | 'dynamic' | 'fetch'`
1212
+ - _Par defecto_ : `'static'`
1213
+ - _Descripción_ : Controla cómo se importan los diccionarios.
1214
+ - _Ejemplo_ : `'dynamic'`
1215
+ - _Nota_ : Modos disponibles:
1216
+ - "static": Los diccionarios se importan estáticamente. Reemplaza `useIntlayer` por `useDictionary`.
1217
+ - "dynamic": Los diccionarios se importan dinámicamente usando Suspense. Reemplaza `useIntlayer` por `useDictionaryDynamic`.
1218
+ - "fetch": Los diccionarios se recuperan dinámicamente a través de la API de sincronización en vivo. Reemplaza `useIntlayer` por `useDictionaryDynamic`.
1219
+ - _Nota_ : Las importaciones dinámicas dependen de Suspense y pueden afectar ligeramente el rendimiento del renderizado.
1220
+ - _Nota_ : Si se desactiva, todos los locales se cargarán a la vez, incluso si no se utilizan.
1221
+ - _Nota_ : Esta opción depende de los plugins `@intlayer/babel` y `@intlayer/swc`.
1222
+ - _Nota_ : Asegúrate de que todas las claves se declaren estáticamente en las llamadas a `useIntlayer`. Por ejemplo, `useIntlayer('navbar')`.
1223
+ - _Nota_ : Esta opción se ignorará si `optimize` está desactivado.
1224
+ - _Note_ : Si se establece en "fetch", solo los diccionarios que incluyan contenido remoto y estén marcados como "fetch" se transformarán en modo fetch. Los demás se importarán dinámicamente en modo "dynamic" para optimizar la cantidad de solicitudes fetch y el rendimiento de la carga.
1225
+ - _Note_ : El modo fetch utilizará la API de sincronización en vivo para recuperar los diccionarios. Si falla la llamada a la API, los diccionarios se importarán dinámicamente en modo "dynamic".
1226
+ - _Nota_ : Esta opción no afectará a las funciones `getIntlayer`, `getDictionary`, `useDictionary`, `useDictionaryAsync` y `useDictionaryDynamic`.
1227
+ - _Note_: **Obsoleto**: Usa `dictionary.importMode` en su lugar.
1228
+
1229
+ - **outputFormat** :
1230
+ - _Type_ : `('esm' | 'cjs')[]`
1231
+ - _Par defecto_ : `['cjs', 'esm']`
1232
+ - _Descripción_ : Controla el formato de salida de los diccionarios.
1233
+ - _Ejemplo_ : `'cjs'`
1234
+ - _Nota_ : El formato de salida de los diccionarios.
1235
+
1236
+ - **traversePattern** :
1237
+ - _Tipo_ : `string[]`
1238
+ - _Par defecto_ : `['**\/*.{js,ts,mjs,cjs,jsx,tsx}', '!**\/node_modules/**']`
1239
+ - _Descripción_ : Patrones que definen qué archivos deben recorrerse durante la optimización.
1240
+ - _Ejemplo_ : `['src/**\/*.{ts,tsx}', '../ui-library/**\/*.{ts,tsx}', '!**/node_modules/**']`
1241
+ - _Nota_ : Usa esto para limitar la optimización a los archivos de código relevantes y mejorar el rendimiento de la construcción.
1242
+ - _Nota_ : Esta opción se ignorará si `optimize` está desactivado.
1243
+ - _Nota_ : Usa un patrón glob.
1025
1244
 
1026
1245
  ---
1027
1246
 
@@ -1040,7 +1259,7 @@ Ajustes que controlan el compilador Intlayer, que extrae diccionarios directamen
1040
1259
 
1041
1260
  - **dictionaryKeyPrefix**:
1042
1261
  - _Tipo_: `string`
1043
- - _Por defecto_: `'comp-'`
1262
+ - _Por defecto_: `''`
1044
1263
  - _Descripción_: Prefijo para las claves de diccionario extraídas.
1045
1264
  - _Ejemplo_: `'my-key-'`
1046
1265
  - _Nota_: Cuando se extraen diccionarios, la clave se genera a partir del nombre del archivo. Este prefijo se añade a la clave generada para evitar conflictos.
@@ -1064,24 +1283,28 @@ Ajustes que controlan el compilador Intlayer, que extrae diccionarios directamen
1064
1283
  - _Descripción_: Patrones que definen qué archivos deben excluirse durante la optimización.
1065
1284
  - _Ejemplo_: `['**/node_modules/**', '!**/node_modules/react/**']`
1066
1285
 
1067
- - **outputDir**:
1068
- - _Tipo_: `string`
1069
- - _Por defecto_: `'compiler'`
1070
- - _Descripción_: El directorio donde se almacenarán los diccionarios extraídos, relativo a la ruta base de su proyecto.
1071
-
1072
1286
  - **output**:
1073
1287
  - _Type_: `FilePathPattern`
1074
- - _Por defecto_: `({ key }) => 'compiler/${key}.content.json'`
1075
- - _Descripción_: Define la ruta de los archivos de salida. Reemplaza `outputDir`. Maneja variables dinámicas como `{{locale}}`, `{{key}}`, `{{fileName}}`, `{{extension}}`, `{{format}}`, `{{dirPath}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{componentFormat}}`. Se puede configurar como una cadena usando el formato `'my/{{var}}/path'` o como una función.
1076
- - _Nota_: `./**/*` Los caminos se resuelven de forma relativa al componente. `/**/*` los caminos se resuelven de forma relativa al `baseDir` de Intlayer.
1077
- - _Ejemplo_: `output: ({ locale, key }) => 'compiler/${locale}/${key}.json'`
1288
+ - _Par defecto_: `undefined`
1289
+ - _Descripción_: Define la ruta de los archivos de salida. Reemplaza `outputDir`. Maneja variables dinámicas a través de cadenas de plantillas o una función. Variables compatibles: `{{fileName}}`, `{{key}}`, `{{locale}}`, `{{extension}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{format}}`, `{{componentFormat}}` y `{{componentDirPath}}`.
1290
+ - _Nota_: Las rutas `./` se resuelven de forma relativa al directorio del componente. Las rutas `/` se resuelven de forma relativa a la raíz del proyecto (`baseDir`).
1291
+ - _Nota_: Incluir la variable `{{locale}}` en la ruta activará la generación de diccionarios separados por locale.
1292
+ - _Ejemplo_:
1293
+ - **Archivos multilingües cerca del componente** :
1294
+ - Cadena : `'./{{fileName}}{{extension}}'`
1295
+ - Función : `({ fileName, extension }) => \`./${fileName}${extension}\``
1296
+
1297
+ - **JSON centralizado por locale** :
1298
+ - Cadena : `'/locales/{{locale}}/{{key}}.content.json'`
1299
+ - Función : `({ key, locale }) => \`/locales/${locale}/${key}.content.json\``
1078
1300
 
1079
1301
  - **noMetadata**:
1080
1302
  - _Tipo_: `boolean`
1081
- - _Por defecto_: `false`
1082
- - _Descripción_: Indica si los metadatos deben guardarse en el archivo. Si es verdadero, el compilador no guardará los metadatos de los diccionarios (clave, contenedor de contenido).
1303
+ - _Par defecto_: `false`
1304
+ - _Descripción_: Indica si los metadatos deben guardarse en el archivo. Si es verdadero, el compilador no guardará los metadatos de los diccionarios (clave, contenedor de contenido). Útil para las salidas JSON de i18next o ICU MessageFormat por locale.
1083
1305
  - _Nota_: Útil si se usa con el plugin `loadJSON`.
1084
- - _Ejemplo_: Si es `true`:
1306
+ - _Ejemplo_:
1307
+ Si es `true` :
1085
1308
  ```json
1086
1309
  {
1087
1310
  "key": "value"