@intlayer/docs 9.2.0 → 9.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 (233) hide show
  1. package/README.md +24 -24
  2. package/blog/ar/index.md +1 -1
  3. package/blog/ar/rag_powered_documentation_assistant.md +1 -1
  4. package/blog/de/index.md +1 -1
  5. package/blog/en/index.md +1 -1
  6. package/blog/en-GB/index.md +1 -1
  7. package/blog/es/index.md +1 -1
  8. package/blog/fr/index.md +1 -1
  9. package/blog/hi/index.md +1 -1
  10. package/blog/id/index.md +1 -1
  11. package/blog/it/index.md +1 -1
  12. package/blog/ja/index.md +1 -1
  13. package/blog/ko/index.md +1 -1
  14. package/blog/pl/index.md +1 -1
  15. package/blog/pl/rag_powered_documentation_assistant.md +1 -1
  16. package/blog/pt/index.md +1 -1
  17. package/blog/ru/index.md +1 -1
  18. package/blog/uk/index.md +1 -1
  19. package/blog/vi/index.md +1 -1
  20. package/blog/zh/index.md +1 -1
  21. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
  22. package/dist/cjs/authors2.cjs +0 -1
  23. package/dist/cjs/common.cjs +24 -1
  24. package/dist/cjs/common.cjs.map +1 -1
  25. package/dist/cjs/generated/blog.entry.cjs +35 -6
  26. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  27. package/dist/cjs/generated/docs.entry.cjs +35 -6
  28. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  29. package/dist/cjs/generated/frequentQuestions.entry.cjs +35 -6
  30. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  31. package/dist/cjs/generated/legal.entry.cjs +35 -6
  32. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  33. package/dist/esm/common.mjs +24 -1
  34. package/dist/esm/common.mjs.map +1 -1
  35. package/dist/esm/generated/blog.entry.mjs +35 -6
  36. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  37. package/dist/esm/generated/docs.entry.mjs +35 -6
  38. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  39. package/dist/esm/generated/frequentQuestions.entry.mjs +35 -6
  40. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  41. package/dist/esm/generated/legal.entry.mjs +35 -6
  42. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  43. package/dist/types/common.d.ts.map +1 -1
  44. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  45. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  46. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  47. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  48. package/docs/ar/bundle_optimization.md +58 -25
  49. package/docs/ar/configuration.md +10 -10
  50. package/docs/ar/interest_of_intlayer.md +24 -22
  51. package/docs/ar/intlayer_with_express.md +1 -1
  52. package/docs/ar/intlayer_with_svelte_kit.md +1 -1
  53. package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
  54. package/docs/ar/intlayer_with_tanstack.md +5 -3
  55. package/docs/ar/live-sync.md +4 -0
  56. package/docs/ar/lsp.md +114 -175
  57. package/docs/ar/readme.md +25 -25
  58. package/docs/bn/bundle_optimization.md +58 -25
  59. package/docs/bn/configuration.md +10 -10
  60. package/docs/bn/interest_of_intlayer.md +24 -22
  61. package/docs/cs/bundle_optimization.md +58 -25
  62. package/docs/cs/configuration.md +10 -10
  63. package/docs/cs/interest_of_intlayer.md +24 -22
  64. package/docs/de/bundle_optimization.md +58 -25
  65. package/docs/de/configuration.md +10 -10
  66. package/docs/de/interest_of_intlayer.md +24 -22
  67. package/docs/de/intlayer_with_svelte_kit.md +1 -1
  68. package/docs/de/intlayer_with_tanstack+solid.md +5 -3
  69. package/docs/de/intlayer_with_tanstack.md +5 -3
  70. package/docs/de/live-sync.md +4 -0
  71. package/docs/de/lsp.md +111 -172
  72. package/docs/de/readme.md +24 -24
  73. package/docs/en/bundle_optimization.md +51 -23
  74. package/docs/en/configuration.md +10 -10
  75. package/docs/en/interest_of_intlayer.md +24 -22
  76. package/docs/en/intlayer_with_svelte_kit.md +1 -1
  77. package/docs/en/intlayer_with_tanstack+solid.md +5 -3
  78. package/docs/en/intlayer_with_tanstack.md +5 -3
  79. package/docs/en/live-sync.md +4 -0
  80. package/docs/en/lsp.md +109 -170
  81. package/docs/en/readme.md +24 -24
  82. package/docs/en-GB/bundle_optimization.md +58 -25
  83. package/docs/en-GB/configuration.md +10 -10
  84. package/docs/en-GB/interest_of_intlayer.md +24 -22
  85. package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
  86. package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
  87. package/docs/en-GB/intlayer_with_tanstack.md +5 -3
  88. package/docs/en-GB/live-sync.md +4 -0
  89. package/docs/en-GB/lsp.md +109 -170
  90. package/docs/en-GB/readme.md +24 -24
  91. package/docs/es/bundle_optimization.md +58 -25
  92. package/docs/es/configuration.md +10 -10
  93. package/docs/es/interest_of_intlayer.md +24 -22
  94. package/docs/es/intlayer_with_svelte_kit.md +1 -1
  95. package/docs/es/intlayer_with_tanstack+solid.md +5 -3
  96. package/docs/es/intlayer_with_tanstack.md +5 -3
  97. package/docs/es/live-sync.md +4 -0
  98. package/docs/es/lsp.md +114 -175
  99. package/docs/es/readme.md +24 -24
  100. package/docs/fr/bundle_optimization.md +58 -25
  101. package/docs/fr/configuration.md +10 -10
  102. package/docs/fr/interest_of_intlayer.md +24 -22
  103. package/docs/fr/intlayer_with_svelte_kit.md +1 -1
  104. package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
  105. package/docs/fr/intlayer_with_tanstack.md +5 -3
  106. package/docs/fr/live-sync.md +4 -0
  107. package/docs/fr/lsp.md +110 -171
  108. package/docs/fr/readme.md +24 -24
  109. package/docs/hi/bundle_optimization.md +58 -25
  110. package/docs/hi/configuration.md +10 -10
  111. package/docs/hi/interest_of_intlayer.md +24 -22
  112. package/docs/hi/intlayer_with_express.md +1 -1
  113. package/docs/hi/intlayer_with_svelte_kit.md +1 -1
  114. package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
  115. package/docs/hi/intlayer_with_tanstack.md +5 -3
  116. package/docs/hi/live-sync.md +4 -0
  117. package/docs/hi/lsp.md +113 -174
  118. package/docs/hi/readme.md +24 -24
  119. package/docs/id/bundle_optimization.md +58 -25
  120. package/docs/id/configuration.md +10 -10
  121. package/docs/id/interest_of_intlayer.md +24 -22
  122. package/docs/id/intlayer_with_svelte_kit.md +1 -1
  123. package/docs/id/intlayer_with_tanstack+solid.md +5 -3
  124. package/docs/id/intlayer_with_tanstack.md +5 -3
  125. package/docs/id/live-sync.md +4 -0
  126. package/docs/id/lsp.md +113 -174
  127. package/docs/id/readme.md +24 -24
  128. package/docs/it/bundle_optimization.md +58 -25
  129. package/docs/it/configuration.md +10 -10
  130. package/docs/it/interest_of_intlayer.md +24 -22
  131. package/docs/it/intlayer_with_svelte_kit.md +1 -1
  132. package/docs/it/intlayer_with_tanstack+solid.md +5 -3
  133. package/docs/it/intlayer_with_tanstack.md +5 -3
  134. package/docs/it/live-sync.md +4 -0
  135. package/docs/it/lsp.md +115 -176
  136. package/docs/it/readme.md +24 -24
  137. package/docs/ja/bundle_optimization.md +58 -25
  138. package/docs/ja/configuration.md +10 -10
  139. package/docs/ja/interest_of_intlayer.md +24 -22
  140. package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
  141. package/docs/ja/intlayer_with_tanstack.md +5 -3
  142. package/docs/ja/live-sync.md +4 -0
  143. package/docs/ja/lsp.md +113 -174
  144. package/docs/ja/readme.md +24 -24
  145. package/docs/ko/bundle_optimization.md +58 -25
  146. package/docs/ko/configuration.md +10 -10
  147. package/docs/ko/interest_of_intlayer.md +24 -22
  148. package/docs/ko/intlayer_with_svelte_kit.md +1 -1
  149. package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
  150. package/docs/ko/intlayer_with_tanstack.md +5 -3
  151. package/docs/ko/live-sync.md +4 -0
  152. package/docs/ko/lsp.md +112 -173
  153. package/docs/ko/readme.md +24 -24
  154. package/docs/nl/bundle_optimization.md +58 -25
  155. package/docs/nl/configuration.md +10 -10
  156. package/docs/nl/interest_of_intlayer.md +24 -22
  157. package/docs/pl/bundle_optimization.md +58 -25
  158. package/docs/pl/configuration.md +10 -10
  159. package/docs/pl/interest_of_intlayer.md +4 -2
  160. package/docs/pl/intlayer_with_svelte_kit.md +1 -1
  161. package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
  162. package/docs/pl/intlayer_with_tanstack.md +5 -3
  163. package/docs/pl/live-sync.md +4 -0
  164. package/docs/pl/lsp.md +115 -176
  165. package/docs/pl/readme.md +24 -24
  166. package/docs/pt/bundle_optimization.md +58 -24
  167. package/docs/pt/configuration.md +10 -10
  168. package/docs/pt/interest_of_intlayer.md +24 -22
  169. package/docs/pt/intlayer_with_svelte_kit.md +1 -1
  170. package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
  171. package/docs/pt/intlayer_with_tanstack.md +5 -3
  172. package/docs/pt/live-sync.md +4 -0
  173. package/docs/pt/lsp.md +113 -174
  174. package/docs/pt/readme.md +24 -24
  175. package/docs/ru/bundle_optimization.md +58 -25
  176. package/docs/ru/configuration.md +10 -10
  177. package/docs/ru/interest_of_intlayer.md +24 -22
  178. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  179. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  180. package/docs/ru/intlayer_with_svelte_kit.md +1 -1
  181. package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
  182. package/docs/ru/intlayer_with_tanstack.md +5 -3
  183. package/docs/ru/live-sync.md +4 -0
  184. package/docs/ru/lsp.md +112 -173
  185. package/docs/ru/readme.md +24 -24
  186. package/docs/tr/bundle_optimization.md +58 -25
  187. package/docs/tr/configuration.md +10 -10
  188. package/docs/tr/interest_of_intlayer.md +24 -22
  189. package/docs/tr/intlayer_with_svelte_kit.md +1 -1
  190. package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
  191. package/docs/tr/intlayer_with_tanstack.md +5 -3
  192. package/docs/tr/live-sync.md +4 -0
  193. package/docs/tr/lsp.md +113 -174
  194. package/docs/tr/readme.md +24 -24
  195. package/docs/uk/bundle_optimization.md +58 -25
  196. package/docs/uk/configuration.md +10 -10
  197. package/docs/uk/interest_of_intlayer.md +4 -2
  198. package/docs/uk/intlayer_with_svelte_kit.md +1 -1
  199. package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
  200. package/docs/uk/intlayer_with_tanstack.md +5 -3
  201. package/docs/uk/live-sync.md +4 -0
  202. package/docs/uk/lsp.md +113 -174
  203. package/docs/uk/per_locale_file.md +1 -1
  204. package/docs/uk/readme.md +24 -24
  205. package/docs/ur/bundle_optimization.md +58 -25
  206. package/docs/ur/configuration.md +10 -10
  207. package/docs/ur/interest_of_intlayer.md +24 -22
  208. package/docs/vi/bundle_optimization.md +58 -25
  209. package/docs/vi/configuration.md +10 -10
  210. package/docs/vi/interest_of_intlayer.md +24 -22
  211. package/docs/vi/intlayer_with_svelte_kit.md +1 -1
  212. package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
  213. package/docs/vi/intlayer_with_tanstack.md +5 -3
  214. package/docs/vi/live-sync.md +4 -0
  215. package/docs/vi/lsp.md +115 -176
  216. package/docs/vi/readme.md +24 -24
  217. package/docs/zh/bundle_optimization.md +58 -25
  218. package/docs/zh/configuration.md +10 -10
  219. package/docs/zh/interest_of_intlayer.md +24 -22
  220. package/docs/zh/intlayer_with_svelte_kit.md +1 -1
  221. package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
  222. package/docs/zh/intlayer_with_tanstack.md +5 -3
  223. package/docs/zh/live-sync.md +4 -0
  224. package/docs/zh/lsp.md +113 -174
  225. package/docs/zh/readme.md +21 -21
  226. package/docs/zh-TW/bundle_optimization.md +58 -25
  227. package/docs/zh-TW/interest_of_intlayer.md +24 -22
  228. package/package.json +7 -7
  229. package/src/common.ts +39 -2
  230. package/src/generated/blog.entry.ts +39 -7
  231. package/src/generated/docs.entry.ts +39 -7
  232. package/src/generated/frequentQuestions.entry.ts +39 -7
  233. package/src/generated/legal.entry.ts +39 -7
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-11-25
3
- updatedAt: 2026-06-07
3
+ updatedAt: 2026-08-09
4
4
  title: Optimización del tamaño y rendimiento del paquete i18n
5
5
  description: Reduce el tamaño del paquete de tu aplicación optimizando el contenido de internacionalización (i18n). Aprende cómo aprovechar el tree shaking y el lazy loading para diccionarios con Intlayer.
6
6
  keywords:
@@ -16,6 +16,12 @@ slugs:
16
16
  - concept
17
17
  - bundle-optimization
18
18
  history:
19
+ - version: 9.2.1
20
+ date: 2026-08-09
21
+ changes: "`purge` y `minify` ahora funcionan en Next.js a través de `@intlayer/swc` — no se requiere `babel.config.js`"
22
+ - version: 8.12.0
23
+ date: 2026-06-24
24
+ changes: "Listar los plugins de Babel en el orden de pipeline requerido (extract → purge → minify → optimize) en las tablas de referencia"
19
25
  - version: 8.12.0
20
26
  date: 2026-06-07
21
27
  changes: "Añadidos `intlayerPurgeBabelPlugin` y `intlayerMinifyBabelPlugin` para Babel/Webpack; aclaración del flujo de plugins"
@@ -191,12 +197,14 @@ La optimización de compilación de Intlayer se divide en varios complementos di
191
197
 
192
198
  Se utilizan directamente en `babel.config.js` para configuraciones basadas en Webpack (Next.js con Babel, CRA, Webpack personalizado, etc.).
193
199
 
200
+ La siguiente tabla los enumera en su orden de pipeline requerido (el mismo orden en que deben aparecer en `babel.config.js`):
201
+
194
202
  | Plugin | Qué hace |
195
203
  | :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |
196
204
  | `intlayerExtractBabelPlugin` | Analiza archivos `.content.ts` y escribe los diccionarios compilados en `.intlayer/` |
197
- | `intlayerOptimizeBabelPlugin` | Reescribe `useIntlayer('key')` → `useDictionary(hash)` e inyecta la declaración `import` del diccionario correspondiente |
198
205
  | `intlayerPurgeBabelPlugin` | Analiza todos los archivos fuente y elimina **los campos de contenido no utilizados** de los archivos JSON `.intlayer/**/*.json` |
199
206
  | `intlayerMinifyBabelPlugin` | **Renombra las claves de campos de contenido** por alias alfabéticos cortos (`title` → `a`) tanto en archivos JSON como en el código fuente |
207
+ | `intlayerOptimizeBabelPlugin` | Reescribe `useIntlayer('key')` → `useDictionary(hash)` e inyecta la declaración `import` del diccionario correspondiente |
200
208
 
201
209
  > **El orden de los plugins es importante.** En tu `babel.config.js`, los complementos de purga (purge) y minificación (minify) deben aparecer **antes** del complemento de optimización. La fase de optimización reemplaza `useIntlayer('key')` con una llamada opaca `useDictionary(hash)`, lo que borra la información de clave del diccionario que las fases de purga y minificación necesitan para saber qué campos se usan.
202
210
 
@@ -205,9 +213,9 @@ Cada complemento de Babel cuenta con una función auxiliar de opciones que lee t
205
213
  | Helper de opciones | Utilizado con |
206
214
  | :--------------------------- | :---------------------------- |
207
215
  | `getExtractPluginOptions()` | `intlayerExtractBabelPlugin` |
208
- | `getOptimizePluginOptions()` | `intlayerOptimizeBabelPlugin` |
209
216
  | `getPurgePluginOptions()` | `intlayerPurgeBabelPlugin` |
210
217
  | `getMinifyPluginOptions()` | `intlayerMinifyBabelPlugin` |
218
+ | `getOptimizePluginOptions()` | `intlayerOptimizeBabelPlugin` |
211
219
 
212
220
  ### Plugins de Vite (`vite-intlayer`)
213
221
 
@@ -220,6 +228,20 @@ Los usuarios de Vite **nunca los configuran directamente**. Se vinculan de forma
220
228
  | Minificar diccionario | Igual que la fase de escritura JSON del `intlayerMinifyBabelPlugin` |
221
229
  | Transformación Babel | Igual que la fase de renombramiento en código de `intlayerMinifyBabelPlugin` + `intlayerOptimizeBabelPlugin` |
222
230
 
231
+ ### Plugin SWC (`@intlayer/swc`)
232
+
233
+ Los usuarios de Next.js **tampoco configuran esto directamente**. Desde la **v9.2.1**, `withIntlayer()` en `next.config.ts` ejecuta el pipeline completo — purga, minificación y reescritura de imports — únicamente a partir de las banderas `build.purge` y `build.minify`.
234
+
235
+ El trabajo se divide en dos, porque un plugin Wasm de SWC transforma un archivo a la vez y sin acceso al sistema de archivos:
236
+
237
+ | Pasada | Dónde se ejecuta | Qué hace |
238
+ | :----------------------------------------------------- | :------------------------------- | :-------------------------------------------------------------------------------------------------------- |
239
+ | Análisis de uso + purga/minificación de JSON | Node, dentro de `withIntlayer()` | Lee cada archivo fuente de componente, reescribe `.intlayer/**/*.json` y produce las tablas de renombrado |
240
+ | Reescritura del código fuente (`content.title` → `.a`) | `@intlayer/swc` (Wasm) | Aplica las tablas de renombrado a los accesos a propiedades correspondientes en tu código |
241
+ | Reescritura de imports (`useIntlayer` → dict) | `@intlayer/swc` (Wasm) | Igual que `intlayerOptimizeBabelPlugin` |
242
+
243
+ Decidir _qué_ campos no se usan y _qué_ alias recibe cada uno requiere estado entre archivos y E/S de archivos, por lo que esa mitad se ejecuta en Node; el plugin SWC solo recibe las tablas resultantes.
244
+
223
245
  ## Configuración por plataforma
224
246
 
225
247
  <Tabs>
@@ -227,10 +249,12 @@ Los usuarios de Vite **nunca los configuran directamente**. Se vinculan de forma
227
249
 
228
250
  ### Next.js
229
251
 
230
- Next.js requiere el complemento `@intlayer/swc` para la fase de optimización (reescritura de importaciones) ya que Next.js emplea SWC en las compilaciones.
252
+ Next.js requiere el plugin `@intlayer/swc`, porque Next.js usa SWC para las compilaciones. Desde la **v9.2.1**, este único paquete cubre todo el pipeline: optimización (reescritura de imports), purga y minificación.
231
253
 
232
254
  > Este complemento no se instala por defecto ya que los complementos SWC son experimentales en Next.js. Podría cambiar en el futuro.
233
255
 
256
+ > **Next.js 16.1.0 es la versión mínima.** Es la primera versión construida sobre la ABI de plugins Wasm compatible hacia adelante de SWC; las versiones anteriores rechazan el plugin. `withIntlayer` lee tu versión de Next.js y simplemente no registra el plugin por debajo de 16.1.0 — esas compilaciones siguen teniendo éxito, solo se ejecutan sin la optimización del bundle.
257
+
234
258
  <Tabs>
235
259
  <Tab value="npm">
236
260
 
@@ -265,33 +289,40 @@ intlayer-swc-plugin = "*"
265
289
 
266
290
  Una vez instalado, Intlayer detectará y utilizará automáticamente el complemento.
267
291
 
268
- Para las fases de **purga y minificación** (eliminación de campos y renombramiento), instala de manera adicional `@intlayer/babel` y añade los complementos de Babel. Debido a que Next.js usa SWC para la transformación pero aún evalúa `babel.config.js` para la configuración, estos complementos de Babel se ejecutan en un paso previo antes de SWC.
292
+ Las pasadas de **purga y minificación** (eliminación y renombrado de campos) no requieren ningún paquete adicional ni `babel.config.js`. Envuelve tu configuración con `withIntlayer` y activa las banderas en `intlayer.config.ts`:
269
293
 
270
- ```bash packageManager="npm"
271
- npm install -D @intlayer/babel
294
+ ```typescript fileName="next.config.ts"
295
+ import { withIntlayer } from "next-intlayer/server";
296
+ import type { NextConfig } from "next";
297
+
298
+ const nextConfig: NextConfig = {/* tu configuración */};
299
+
300
+ export default withIntlayer(nextConfig);
272
301
  ```
273
302
 
274
- ```javascript fileName="babel.config.js"
275
- const {
276
- intlayerPurgeBabelPlugin,
277
- intlayerMinifyBabelPlugin,
278
- getPurgePluginOptions,
279
- getMinifyPluginOptions,
280
- } = require("@intlayer/babel");
303
+ ```typescript fileName="intlayer.config.ts"
304
+ import type { IntlayerConfig } from "intlayer";
281
305
 
282
- module.exports = {
283
- presets: ["next/babel"],
284
- plugins: [
285
- // Purga: eliminar los campos de contenido no usados de .intlayer/**/*.json
286
- [intlayerPurgeBabelPlugin, getPurgePluginOptions()],
287
- // Minificar: renombrar claves de campos en el JSON y el código fuente
288
- [intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
289
- // Nota: intlayerOptimizeBabelPlugin NO es necesario aquí porque
290
- // @intlayer/swc se encarga de reescribir useIntlayer → useDictionary.
291
- ],
306
+ const config: IntlayerConfig = {
307
+ build: {
308
+ purge: true, // elimina los campos de contenido no usados del JSON empaquetado
309
+ minify: true, // renombra las claves de campos a alias cortos
310
+ },
292
311
  };
312
+
313
+ export default config;
293
314
  ```
294
315
 
316
+ Durante `next build`, `withIntlayer` analiza tus fuentes, reescribe los diccionarios compilados y pasa las tablas de renombrado resultantes a `@intlayer/swc`, que actualiza los accesos a propiedades correspondientes en tu código.
317
+
318
+ > Usa el `withIntlayer` asíncrono, no `withIntlayerSync`. La variante síncrona no ejecuta el pipeline de análisis, por lo que la purga y la minificación no tienen efecto con ella.
319
+
320
+ > La purga y la minificación solo se ejecutan en `next build` — el pipeline de optimización está desactivado durante `next dev`.
321
+
322
+ > También se desactivan cuando hay llamadores de adaptadores de compatibilidad configurados (`swcExtraCallers`, establecidos por los paquetes de compatibilidad como `@intlayer/next-intl` o `@intlayer/react-i18next`): esos puntos de llamada son invisibles para el analizador de uso, por lo que purgar eliminaría campos que el código todavía lee. La reescritura de imports permanece activa.
323
+
324
+ **Las versiones anteriores (antes de 9.2.1)** requerían `@intlayer/babel` y un `babel.config.js` que declarara `intlayerPurgeBabelPlugin` e `intlayerMinifyBabelPlugin`. Ese archivo ya no es necesario y puede eliminarse.
325
+
295
326
  </Tab>
296
327
  <Tab value="vite">
297
328
 
@@ -447,6 +478,8 @@ export default config;
447
478
 
448
479
  > La minificación se omite cuando `optimize` es `false` o cuando `editor.enabled` es `true` (el Editor Visual requiere de los nombres de los campos originales para editarlos).
449
480
 
481
+ > En Next.js, la minificación también se omite cuando `@intlayer/swc` no está instalado o no puede cargarse (Next.js por debajo de 16.1.0). El plugin es la mitad que reescribe los accesos en el código fuente, así que renombrar los diccionarios sin él dejaría tu código leyendo nombres de campos que ya no existen.
482
+
450
483
  > La minificación también se omite con diccionarios de `importMode: 'fetch'`, dado que esos JSON son provistos por una API de terceros bajo sus nombres de campos originales; renombrarlo en el cliente perjudicaría a esa sincronización.
451
484
 
452
485
  ### Purga (eliminación de campos no utilizados)
@@ -475,7 +508,7 @@ export default config;
475
508
  { "title": "…", "subtitle": "…" }
476
509
  ```
477
510
 
478
- > La purga se omite cuando `optimize` es `false` o cuando `editor.enabled` es `true`.
511
+ > La purga se omite cuando `optimize` es `false` o cuando `editor.enabled` es `true`. En Next.js se omite además cuando `@intlayer/swc` no está disponible y cuando hay llamadores de adaptadores de compatibilidad configurados.
479
512
 
480
513
  > La purga también se omite por protección cuando un archivo del código fuente sea irreparable y no logre ejecutarse `useIntlayer` al mismo tiempo que una destructuración. Por lo cual todo el diccionario pasaría a formar parte por completo y sin purgar.
481
514
 
@@ -404,7 +404,7 @@ const config: IntlayerConfig = {
404
404
  ai: {
405
405
  /**
406
406
  * Proveedor de IA que se utilizará.
407
- * Opciones: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
407
+ * Opciones: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
408
408
  * Predeterminado: 'openai'
409
409
  */
410
410
  provider: "openai",
@@ -1034,15 +1034,15 @@ Intlayer admite múltiples proveedores de IA para una flexibilidad máxima. Los
1034
1034
  - **Together.ai**
1035
1035
  - **LM Studio**
1036
1036
 
1037
- | Campo | Descripción | Tipo | Predeterminado | Ejemplo | Nota |
1038
- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1039
- | `provider` | El proveedor que se usará para las funciones de IA de Intlayer. | `'openai'` &#124; <br/> `'anthropic'` &#124; <br/> `'mistral'` &#124; <br/> `'deepseek'` &#124; <br/> `'gemini'` &#124; <br/> `'ollama'` &#124; <br/> `'openrouter'` &#124; <br/> `'alibaba'` &#124; <br/> `'fireworks'` &#124; <br/> `'groq'` &#124; <br/> `'huggingface'` &#124; <br/> `'bedrock'` &#124; <br/> `'googleaistudio'` &#124; <br/> `'googlevertex'` &#124; <br/> `'togetherai'` &#124; <br/> `'lmstudio'` | `undefined` | `'anthropic'` | Diferentes proveedores requieren diferentes llaves de API y tienen distintos precios. |
1040
- | `model` | El modelo que se usará para las funciones de IA. | `string` | Ninguno | `'gpt-4o-2024-11-20'` | El modelo específico varía según el proveedor. |
1041
- | `temperature` | Controla la aleatoriedad de las respuestas de la IA. | `number` | Ninguno | `0.1` | Temperatura más alta = más creativo y menos predecible. |
1042
- | `apiKey` | Su llave API para el proveedor seleccionado. | `string` | Ninguno | `process.env.OPENAI_API_KEY` | Manténgalo en secreto; almacénelo en variables de entorno. |
1043
- | `applicationContext` | Contexto adicional sobre su aplicación para ayudar a la IA a generar traducciones más precisas (dominio, audiencia, tono, terminología). | `string` | Ninguno | `'Mi contexto de aplicación'` | Puede usarse para añadir reglas (p. ej.: `"No debes transformar las urls"`). |
1044
- | `baseURL` | La URL base para la API de IA. | `string` | Ninguno | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Puede apuntar a un endpoint de API de IA local o personalizado. |
1045
- | `dataSerialization` | Formato de serialización de datos para las funciones de IA. | `'json'` &#124; <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: estándar, fiable; usa más tokens.<br/>• `'toon'`: menos tokens, menos consistente.<br/>• Se pasan parámetros adicionales al modelo como contexto (esfuerzo de razonamiento, etc.). |
1037
+ | Campo | Descripción | Tipo | Predeterminado | Ejemplo | Nota |
1038
+ | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1039
+ | `provider` | El proveedor que se usará para las funciones de IA de Intlayer. | `'openai'` &#124; <br/> `'anthropic'` &#124; <br/> `'mistral'` &#124; <br/> `'deepseek'` &#124; <br/> `'gemini'` &#124; <br/> `'ollama'` &#124; <br/> `'openrouter'` &#124; <br/> `'alibaba'` &#124; <br/> `'fireworks'` &#124; <br/> `'groq'` &#124; <br/> `'huggingface'` &#124; <br/> `'bedrock'` &#124; <br/> `'googleaistudio'` &#124; <br/> `'googlevertex'` &#124; <br/> `'togetherai'` &#124; <br/> `'lmstudio'` &#124; <br/> `'moonshotai'` | `undefined` | `'anthropic'` | Diferentes proveedores requieren diferentes llaves de API y tienen distintos precios. |
1040
+ | `model` | El modelo que se usará para las funciones de IA. | `string` | Ninguno | `'gpt-4o-2024-11-20'` | El modelo específico varía según el proveedor. |
1041
+ | `temperature` | Controla la aleatoriedad de las respuestas de la IA. | `number` | Ninguno | `0.1` | Temperatura más alta = más creativo y menos predecible. |
1042
+ | `apiKey` | Su llave API para el proveedor seleccionado. | `string` | Ninguno | `process.env.OPENAI_API_KEY` | Manténgalo en secreto; almacénelo en variables de entorno. |
1043
+ | `applicationContext` | Contexto adicional sobre su aplicación para ayudar a la IA a generar traducciones más precisas (dominio, audiencia, tono, terminología). | `string` | Ninguno | `'Mi contexto de aplicación'` | Puede usarse para añadir reglas (p. ej.: `"No debes transformar las urls"`). |
1044
+ | `baseURL` | La URL base para la API de IA. | `string` | Ninguno | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Puede apuntar a un endpoint de API de IA local o personalizado. |
1045
+ | `dataSerialization` | Formato de serialización de datos para las funciones de IA. | `'json'` &#124; <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: estándar, fiable; usa más tokens.<br/>• `'toon'`: menos tokens, menos consistente.<br/>• Se pasan parámetros adicionales al modelo como contexto (esfuerzo de razonamiento, etc.). |
1046
1046
 
1047
1047
  ---
1048
1048
 
@@ -207,7 +207,7 @@ export const ComponentExample = () => {
207
207
  Este enfoque te permite:
208
208
 
209
209
  1. **Aumentar la velocidad de desarrollo**
210
- - Los archivos `.content.{{ts|mjs|cjs|json}}` se pueden crear utilizando una extensión de VSCode
210
+ - Los archivos `.content.{ts|js|mjs|cjs|json|tsx|jsx|md|mdx|yaml|yml}` se pueden crear utilizando una extensión de VSCode
211
211
  - Las herramientas de autocompletado de IA en tu IDE (como GitHub Copilot) pueden ayudarte a declarar tu contenido, reduciendo el copiar/pegar
212
212
 
213
213
  2. **Limpiar tu base de código**
@@ -231,27 +231,27 @@ Este enfoque te permite:
231
231
 
232
232
  ## Características adicionales de Intlayer
233
233
 
234
- | Característica | Descripción |
235
- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
236
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true) | **Soporte Multi-Framework**<br><br>Intlayer es compatible con todos los frameworks y librerías principales, incluidos Next.js, React, Vite, Vue.js, Nuxt, Preact, Express y más. |
237
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true) | **Administración de contenido basada en JavaScript**<br><br>Aprovecha la flexibilidad de JavaScript para definir y administrar tu contenido de manera eficiente.<br><br> - [Declaración de contenido](https://intlayer.org/doc/concept/content) |
238
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Compilador**<br><br>El compilador de Intlayer extrae automáticamente el contenido de los componentes y genera los archivos de diccionario.<br><br> - [Compilador](https://intlayer.org/doc/compiler) |
239
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true) | **Archivo de declaración de contenido por idioma**<br><br>Acelera tu desarrollo declarando tu contenido una vez, antes de la generación automática.<br><br> - [Archivo de declaración de contenido por idioma](https://intlayer.org/doc/concept/per-locale-file) |
240
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true) | **Entorno seguro para tipos**<br><br>Aprovecha TypeScript para garantizar que tus definiciones de contenido y tu código estén libres de errores, mientras te beneficias del autocompletado del IDE.<br><br> - [Configuración de TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
241
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true) | **Configuración simplificada**<br><br>Ponte en marcha rápidamente con una configuración mínima. Ajusta la configuración de internacionalización, enrutamiento, IA, compilación y manejo de contenido con facilidad.<br><br> - [Explorar la integración de Next.js](https://intlayer.org/doc/environment/nextjs) |
242
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true) | **Obtención simplificada de contenido**<br><br>No es necesario llamar a tu función `t` para cada fragmento de contenido. Recupera todo tu contenido directamente usando un único hook.<br><br> - [Integración con React](https://intlayer.org/doc/environment/create-react-app) |
243
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true) | **Implementación consistente de componentes de servidor**<br><br>Perfectamente adecuado para los componentes de servidor de Next.js, usa la misma implementación para componentes de cliente y de servidor, sin necesidad de pasar tu función `t` a través de cada componente de servidor.<br><br> - [Componentes de servidor](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
244
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true) | **Base de código organizada**<br><br>Mantén tu base de código más organizada: 1 componente = 1 diccionario en la misma carpeta. Las traducciones cercanas a sus respectivos componentes mejoran la mantenibilidad y la claridad.<br><br> - [Cómo funciona Intlayer](https://intlayer.org/doc/concept/how-works-intlayer) |
245
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true) | **Enrutamiento mejorado**<br><br>Soporte completo de enrutamiento de aplicaciones, adaptándose sin problemas a estructuras de aplicaciones complejas, para Next.js, React, Vite, Vue.js, etc.<br><br> - [Explorar la integración de Next.js](https://intlayer.org/doc/environment/nextjs) |
246
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true) | **Soporte de Markdown**<br><br>Importa e interpreta archivos locales y Markdown remoto para contenido multilingüe como políticas de privacidad, documentación, etc. Interpreta y haz accesibles los metadatos de Markdown en tu código.<br><br> - [Archivos de contenido](https://intlayer.org/doc/concept/content/file) |
247
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true) | **Editor visual y CMS gratuitos**<br><br>Un editor visual y un CMS gratuitos están disponibles para los escritores de contenido, eliminando la necesidad de una plataforma de localización. Mantén tu contenido sincronizado usando Git, o externalízalo total o parcialmente con el CMS.<br><br> - [Editor de Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS de Intlayer](https://intlayer.org/doc/concept/cms) |
248
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true) | **Contenido eliminable en compilación (Tree-shakable)**<br><br>Contenido eliminable en compilación, reduciendo el tamaño del bundle final. Carga contenido por componente, excluyendo cualquier contenido no utilizado de tu bundle. Soporta la carga diferida (lazy loading) para mejorar la eficiencia de carga de la aplicación.<br><br> - [Optimización de la compilación de aplicaciones](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
249
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true) | **Renderizado estático**<br><br>No bloquea el renderizado estático.<br><br> - [Integración de Next.js](https://intlayer.org/doc/environment/nextjs) |
250
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true) | **Traducción basada en IA**<br><br>Transforma tu sitio web a 231 idiomas con un solo clic utilizando las herramientas avanzadas de traducción basadas en IA de Intlayer usando tu propio proveedor de IA/clave API.<br><br> - [Integración de CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI de Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Autocompletar](https://intlayer.org/doc/concept/auto-fill) |
251
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true) | **Integración del servidor MCP**<br><br>Proporciona un servidor MCP (Model Context Protocol) para la automatización del IDE, lo que permite una gestión de contenido perfecta y flujos de trabajo de i18n directamente dentro de tu entorno de desarrollo.<br><br> - [Servidor MCP](https://github.com/aymericzip/intlayer/blob/main/docs/es/mcp_server.md) |
252
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true) | **Extension de VSCode**<br><br>Intlayer proporciona una extensión de VSCode para ayudarte a administrar tu contenido y traducciones, compilar tus diccionarios, traducir tu contenido y más.<br><br> - [Extensión de VSCode](https://intlayer.org/doc/vs-code-extension) |
253
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true) | **Interoperabilidad**<br><br>Permite la interoperabilidad con react-i18next, next-i18next, next-intl y react-intl.<br><br> - [Intlayer y react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer y next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer y next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) |
254
- | Probar traducciones faltantes (CLI/CI) | ✅ CLI: npx intlayer content test (auditoría compatible con CI) |
234
+ | Característica | Descripción |
235
+ | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
236
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true) | **Soporte Multi-Framework**<br><br>Intlayer es compatible con todos los frameworks y librerías principales, incluidos Next.js, React, Vite, Vue.js, Nuxt, Preact, Express y más. |
237
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true) | **Administración de contenido basada en JavaScript**<br><br>Aprovecha la flexibilidad de JavaScript para definir y administrar tu contenido de manera eficiente.<br><br> - [Declaración de contenido](https://intlayer.org/doc/concept/content) |
238
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Compilador**<br><br>El compilador de Intlayer extrae automáticamente el contenido de los componentes y genera los archivos de diccionario.<br><br> - [Compilador](https://intlayer.org/doc/compiler) |
239
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true) | **Archivo de declaración de contenido por idioma**<br><br>Acelera tu desarrollo declarando tu contenido una vez, antes de la generación automática.<br><br> - [Archivo de declaración de contenido por idioma](https://intlayer.org/doc/concept/per-locale-file) |
240
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true) | **Entorno seguro para tipos**<br><br>Aprovecha TypeScript para garantizar que tus definiciones de contenido y tu código estén libres de errores, mientras te beneficias del autocompletado del IDE.<br><br> - [Configuración de TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
241
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true) | **Configuración simplificada**<br><br>Ponte en marcha rápidamente con una configuración mínima. Ajusta la configuración de internacionalización, enrutamiento, IA, compilación y manejo de contenido con facilidad.<br><br> - [Explorar la integración de Next.js](https://intlayer.org/doc/environment/nextjs) |
242
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true) | **Obtención simplificada de contenido**<br><br>No es necesario llamar a tu función `t` para cada fragmento de contenido. Recupera todo tu contenido directamente usando un único hook.<br><br> - [Integración con React](https://intlayer.org/doc/environment/create-react-app) |
243
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true) | **Implementación consistente de componentes de servidor**<br><br>Perfectamente adecuado para los componentes de servidor de Next.js, usa la misma implementación para componentes de cliente y de servidor, sin necesidad de pasar tu función `t` a través de cada componente de servidor.<br><br> - [Componentes de servidor](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
244
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true) | **Base de código organizada**<br><br>Mantén tu base de código más organizada: 1 componente = 1 diccionario en la misma carpeta. Las traducciones cercanas a sus respectivos componentes mejoran la mantenibilidad y la claridad.<br><br> - [Cómo funciona Intlayer](https://intlayer.org/doc/concept/how-works-intlayer) |
245
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true) | **Enrutamiento mejorado**<br><br>Soporte completo de enrutamiento de aplicaciones, adaptándose sin problemas a estructuras de aplicaciones complejas, para Next.js, React, Vite, Vue.js, etc.<br><br> - [Explorar la integración de Next.js](https://intlayer.org/doc/environment/nextjs) |
246
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true) | **Soporte de Markdown**<br><br>Importa e interpreta archivos locales y Markdown remoto para contenido multilingüe como políticas de privacidad, documentación, etc. Interpreta y haz accesibles los metadatos de Markdown en tu código.<br><br> - [Archivos de contenido](https://intlayer.org/doc/concept/content/file) |
247
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true) | **Editor visual y CMS gratuitos**<br><br>Un editor visual y un CMS gratuitos están disponibles para los escritores de contenido, eliminando la necesidad de una plataforma de localización. Mantén tu contenido sincronizado usando Git, o externalízalo total o parcialmente con el CMS.<br><br> - [Editor de Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS de Intlayer](https://intlayer.org/doc/concept/cms) |
248
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true) | **Contenido eliminable en compilación (Tree-shakable)**<br><br>Contenido eliminable en compilación, reduciendo el tamaño del bundle final. Carga contenido por componente, excluyendo cualquier contenido no utilizado de tu bundle. Soporta la carga diferida (lazy loading) para mejorar la eficiencia de carga de la aplicación.<br><br> - [Optimización de la compilación de aplicaciones](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
249
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true) | **Renderizado estático**<br><br>No bloquea el renderizado estático.<br><br> - [Integración de Next.js](https://intlayer.org/doc/environment/nextjs) |
250
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true) | **Traducción basada en IA**<br><br>Transforma tu sitio web a 231 idiomas con un solo clic utilizando las herramientas avanzadas de traducción basadas en IA de Intlayer usando tu propio proveedor de IA/clave API.<br><br> - [Integración de CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI de Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Autocompletar](https://intlayer.org/doc/concept/auto-fill) |
251
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true) | **Integración del servidor MCP**<br><br>Proporciona un servidor MCP (Model Context Protocol) para la automatización del IDE, lo que permite una gestión de contenido perfecta y flujos de trabajo de i18n directamente dentro de tu entorno de desarrollo.<br><br> - [Servidor MCP](https://github.com/aymericzip/intlayer/blob/main/docs/es/mcp_server.md) |
252
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true) | **Extension de VSCode**<br><br>Intlayer proporciona una extensión de VSCode para ayudarte a administrar tu contenido y traducciones, compilar tus diccionarios, traducir tu contenido y más.<br><br> - [Extensión de VSCode](https://intlayer.org/doc/vs-code-extension) |
253
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true) | **Interoperabilidad**<br><br>Permite la interoperabilidad con react-i18next, next-i18next, next-intl y react-intl.<br><br> - [Intlayer y react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer y next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer y next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Adaptadores de compatibilidad de Intlayer](https://intlayer.org/doc/compatibility) |
254
+ | Probar traducciones faltantes (CLI/CI) | ✅ CLI: npx intlayer content test (auditoría compatible con CI) |
255
255
 
256
256
  ## Comparación de Intlayer con otras soluciones
257
257
 
@@ -290,3 +290,5 @@ Las estrellas de GitHub son un fuerte indicador de la popularidad de un proyecto
290
290
  `intlayer` también puede ayudar a gestionar tus espacios de nombres para `react-intl`, `react-i18next`, `next-intl`, `next-i18next` y `vue-i18n`.
291
291
 
292
292
  Usando `intlayer`, puedes declarar tu contenido en el formato de tu biblioteca de i18n favorita, e intlayer generará tus espacios de nombres en la ubicación de tu elección (ejemplo: `/messages/{{locale}}/{{namespace}}.json`).
293
+
294
+ Si deseas seguir usando la API de tu biblioteca i18n actual, `intlayer` también proporciona **adaptadores de compatibilidad (compat adapters)**: paquetes que exponen exactamente la misma API que `react-i18next`, `next-intl`, `react-intl`, `vue-i18n` y otras, pero servidas por los diccionarios de Intlayer. Esto te permite migrar progresivamente sin reescribir tu código. Consulta la [documentación de los adaptadores de compatibilidad](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/index.md).
@@ -404,7 +404,7 @@ export const getLocale = (event: RequestEvent): Locale => {
404
404
  };
405
405
  ```
406
406
 
407
- > `getLocaleFromStorage` verificará la localidad desde el encabezado o la cookie dependiendo de tu configuración. Consulta [Configuración](https://intlayer.org/doc/configuration) para más detalles.
407
+ > `getLocaleFromStorage` verificará la localidad desde el encabezado o la cookie dependiendo de tu configuración. Consulta [Configuración](https://intlayer.org/doc/concept/configuration) para más detalles.
408
408
 
409
409
  > La función `localeDetector` procesará el encabezado `Accept-Language` y devolverá la mejor coincidencia.
410
410
 
@@ -254,19 +254,21 @@ import {
254
254
  HeadContent,
255
255
  Scripts,
256
256
  createRootRouteWithContext,
257
+ getRouteApi,
257
258
  } from "@tanstack/solid-router";
258
259
  import { HydrationScript } from "solid-js/web";
259
260
  import { Suspense, type ParentComponent } from "solid-js";
260
261
  import { IntlayerProvider } from "solid-intlayer";
261
262
  import { defaultLocale, getHTMLTextDir } from "intlayer";
262
- import { Route as LocaleRoute } from "./{-$locale}/route";
263
+
264
+ const localeRoute = getRouteApi("/{-$locale}");
263
265
 
264
266
  export const Route = createRootRouteWithContext()({
265
267
  shellComponent: RootComponent,
266
268
  });
267
269
 
268
270
  const RootComponent: ParentComponent = (props) => {
269
- const params = LocaleRoute.useParams();
271
+ const params = localeRoute.useParams();
270
272
  const locale = params()?.locale ?? defaultLocale;
271
273
 
272
274
  return (
@@ -551,7 +553,7 @@ Como vimos en el Paso 5, puede gestionar los atributos `lang` y `dir` de la etiq
551
553
 
552
554
  ```tsx fileName="src/routes/__root.tsx"
553
555
  const RootComponent: ParentComponent = (props) => {
554
- const params = LocaleRoute.useParams();
556
+ const params = localeRoute.useParams();
555
557
  const locale = params()?.locale ?? defaultLocale;
556
558
 
557
559
  return (
@@ -271,13 +271,15 @@ Configura tu diseño raíz para admitir la internacionalización mediante el uso
271
271
  ```tsx fileName="src/routes/__root.tsx"
272
272
  import {
273
273
  createRootRouteWithContext,
274
+ getRouteApi,
274
275
  HeadContent,
275
276
  Scripts,
276
277
  } from "@tanstack/react-router";
277
278
  import { defaultLocale, getHTMLTextDir } from "intlayer";
278
279
  import { type ReactNode } from "react";
279
280
  import { IntlayerProvider } from "react-intlayer";
280
- import { Route as LocaleRoute } from "./{-$locale}/route";
281
+
282
+ const localeRoute = getRouteApi("/{-$locale}");
281
283
 
282
284
  export const Route = createRootRouteWithContext<{}>()({
283
285
  head: () => ({
@@ -299,7 +301,7 @@ export const Route = createRootRouteWithContext<{}>()({
299
301
  });
300
302
 
301
303
  function RootDocument({ children }: { children: ReactNode }) {
302
- const params = LocaleRoute.useParams();
304
+ const params = localeRoute.useParams();
303
305
  const locale = params?.locale ?? defaultLocale;
304
306
 
305
307
  return (
@@ -632,7 +634,7 @@ Como se vio en el Paso 5, puedes gestionar los atributos `lang` y `dir` de la et
632
634
 
633
635
  ```tsx fileName="src/routes/__root.tsx"
634
636
  function RootDocument({ children }: { children: ReactNode }) {
635
- const params = LocaleRoute.useParams();
637
+ const params = localeRoute.useParams();
636
638
  const locale = params?.locale ?? defaultLocale;
637
639
 
638
640
  return (
@@ -13,6 +13,10 @@ keywords:
13
13
  - Intlayer
14
14
  - Next.js
15
15
  - Vite
16
+ slugs:
17
+ - doc
18
+ - concept
19
+ - live-sync
16
20
  history:
17
21
  - version: 9.0.0
18
22
  date: 2026-07-08