@intlayer/docs 7.0.0-canary.1 → 7.0.0-canary.3

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 (43) hide show
  1. package/dist/cjs/common.cjs.map +1 -1
  2. package/dist/esm/common.mjs.map +1 -1
  3. package/dist/types/common.d.ts +5 -0
  4. package/dist/types/common.d.ts.map +1 -1
  5. package/docs/ar/intlayer_with_nextjs_16.md +1652 -0
  6. package/docs/ar/releases/v7.md +486 -0
  7. package/docs/de/intlayer_with_nextjs_16.md +1662 -0
  8. package/docs/de/releases/v7.md +503 -0
  9. package/docs/en/intlayer_with_nextjs_15.md +5 -2
  10. package/docs/en/intlayer_with_nextjs_16.md +4 -4
  11. package/docs/en-GB/intlayer_with_nextjs_16.md +1642 -0
  12. package/docs/en-GB/releases/v7.md +486 -0
  13. package/docs/es/intlayer_with_nextjs_16.md +1670 -0
  14. package/docs/es/releases/v7.md +503 -0
  15. package/docs/fr/intlayer_with_nextjs_16.md +1692 -0
  16. package/docs/fr/releases/v7.md +504 -0
  17. package/docs/hi/intlayer_with_nextjs_16.md +1618 -0
  18. package/docs/hi/releases/v7.md +486 -0
  19. package/docs/id/intlayer_with_nextjs_16.md +1604 -0
  20. package/docs/id/releases/v7.md +503 -0
  21. package/docs/it/intlayer_with_nextjs_16.md +1600 -0
  22. package/docs/it/releases/v7.md +505 -0
  23. package/docs/ja/intlayer_CMS.md +0 -9
  24. package/docs/ja/intlayer_with_nextjs_16.md +1788 -0
  25. package/docs/ja/releases/v7.md +504 -0
  26. package/docs/ko/intlayer_with_nextjs_16.md +1641 -0
  27. package/docs/ko/releases/v7.md +504 -0
  28. package/docs/pl/intlayer_with_nextjs_16.md +1645 -0
  29. package/docs/pl/releases/v7.md +486 -0
  30. package/docs/pt/intlayer_with_nextjs_16.md +1646 -0
  31. package/docs/pt/introduction.md +0 -15
  32. package/docs/pt/releases/v7.md +486 -0
  33. package/docs/ru/intlayer_with_nextjs_16.md +1610 -0
  34. package/docs/ru/releases/v7.md +486 -0
  35. package/docs/tr/intlayer_with_nextjs_16.md +1599 -0
  36. package/docs/tr/releases/v7.md +486 -0
  37. package/docs/vi/intlayer_with_nextjs_16.md +1597 -0
  38. package/docs/vi/releases/v7.md +486 -0
  39. package/docs/zh/intlayer_CMS.md +0 -23
  40. package/docs/zh/intlayer_with_nextjs_16.md +1628 -0
  41. package/docs/zh/releases/v7.md +487 -0
  42. package/package.json +14 -14
  43. package/src/common.ts +5 -0
@@ -0,0 +1,503 @@
1
+ ---
2
+ createdAt: 2025-09-22
3
+ updatedAt: 2025-09-23
4
+ title: Nueva Intlayer v7 - ¿Qué hay de nuevo?
5
+ description: Descubre las novedades de Intlayer v7. Grandes mejoras en rendimiento, experiencia del desarrollador y nuevas funcionalidades para mejorar tu flujo de trabajo de internacionalización.
6
+ keywords:
7
+ - Intlayer
8
+ - Localización
9
+ - Desarrollo
10
+ - Rendimiento
11
+ - Experiencia del desarrollador
12
+ - Funcionalidades
13
+ - React
14
+ - Next.js
15
+ - JavaScript
16
+ - TypeScript
17
+ slugs:
18
+ - doc
19
+ - releases
20
+ - v7
21
+ ---
22
+
23
+ # Nueva Intlayer v7 - ¿Qué hay de nuevo?
24
+
25
+ ¡Bienvenido a Intlayer v7! Esta versión mayor introduce mejoras significativas en rendimiento, seguridad de tipos y experiencia del desarrollador. A continuación, los aspectos destacados, con notas de migración y ejemplos prácticos.
26
+
27
+ ## Aspectos destacados
28
+
29
+ - Estrategia de caché para compilaciones más rápidas
30
+ - Generación mejorada de tipos TypeScript con tipos específicos por localización
31
+ - Optimización del paquete: Localizaciones como cadenas en lugar de enum
32
+ - Nuevos modos de enrutamiento: `prefix-no-default`, `prefix-all`, `no-prefix`, `search-params`
33
+ - Almacenamiento de localización conforme al GDPR con localStorage por defecto
34
+ - Configuración flexible de almacenamiento: cookies, localStorage, sessionStorage o múltiples
35
+ - Tamaño del paquete del Editor Visual un 30% más pequeño
36
+ - Opciones mejoradas de configuración del middleware
37
+ - Comportamiento actualizado del comando fill para una mejor gestión de contenido
38
+ - Mayor estabilidad con actualizaciones completas del archivo de declaración de contenido
39
+ - Gestión inteligente de reintentos para mayor precisión en las traducciones
40
+ - Paralelización para un procesamiento de traducción más rápido
41
+ - División inteligente para manejar archivos grandes dentro de los límites del contexto de IA
42
+
43
+ ---
44
+
45
+ ## Rendimiento: Caché para compilaciones más rápidas
46
+
47
+ En lugar de reconstruir las declaraciones de contenido con esbuild en cada compilación, la versión 7 implementa una estrategia de caché que acelera el proceso de construcción.
48
+
49
+ ```bash
50
+ npx intlayer build
51
+ ```
52
+
53
+ El nuevo sistema de caché:
54
+
55
+ - Almacena las declaraciones de contenido compiladas para evitar procesamiento redundante
56
+ - Detecta cambios y reconstruye solo los archivos modificados
57
+ - Reduce significativamente los tiempos de compilación en proyectos grandes
58
+
59
+ ---
60
+
61
+ ## TypeScript: Generación de tipos específicos por localización
62
+
63
+ Los tipos de TypeScript ahora se generan por localización, proporcionando una tipificación más fuerte y eliminando los tipos unión entre todas las localizaciones.
64
+
65
+ **Comportamiento en v6:**
66
+
67
+ ```tsx
68
+ const content = getIntlayer("my-title-content", "en");
69
+ // typeof content = { title: "My title" } | { title: "Mon titre" } | { title: "Mi título" }
70
+ ```
71
+
72
+ **Comportamiento en v7:**
73
+
74
+ ```tsx
75
+ const content = getIntlayer("my-title-content", "en");
76
+ // typeof content = { title: "My title" }
77
+ ```
78
+
79
+ Beneficios:
80
+
81
+ - Autocompletado más preciso en tu IDE
82
+ - Mejor seguridad de tipos sin contaminación entre locales
83
+ - Rendimiento mejorado al reducir la complejidad de tipos
84
+
85
+ ---
86
+
87
+ ## Optimización del paquete: Locales como cadenas
88
+
89
+ El tipo `Locales` ya no es un enum, lo que significa que ahora es totalmente tree-shakeable y no inflará tu paquete con miles de registros de locales no usados.
90
+
91
+ **v6:**
92
+
93
+ ```typescript
94
+ import { Locales } from "intlayer";
95
+ // Enum que incluye todos los locales -> no es tree-shakeable
96
+
97
+ const locale: Locales = Locales.ENGLISH;
98
+ ```
99
+
100
+ **v7:**
101
+
102
+ ```typescript
103
+ import { Locales, Locale } from "intlayer";
104
+ // Tipo cadena -> totalmente tree-shakeable
105
+
106
+ const locale: Locale = Locales.ENGLISH;
107
+ ```
108
+
109
+ > Debido a que `Locales` ya no es un enum, deberás cambiar el tipo de `Locales` a `Locale` para obtener el locale como tipo.
110
+
111
+ Consulta los [detalles de implementación](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts) para más información.
112
+
113
+ ---
114
+
115
+ ## Nuevos modos de enrutamiento para mayor flexibilidad
116
+
117
+ v7 introduce una configuración unificada `routing.mode` que reemplaza las opciones anteriores `prefixDefault` y `noPrefix`, ofreciendo un control más granular sobre la estructura de las URLs.
118
+
119
+ ### Modos de enrutamiento disponibles
120
+
121
+ - **`prefix-no-default`** (por defecto): El locale por defecto no tiene prefijo, los demás locales sí
122
+ - `/dashboard` (en) o `/fr/dashboard` (fr)
123
+ - **`prefix-all`**: Todos los locales tienen un prefijo
124
+ - `/en/dashboard` (en) o `/fr/dashboard` (fr)
125
+ - **`no-prefix`**: Sin prefijos de locale en las URLs (locale manejado vía almacenamiento/headers)
126
+ - `/dashboard` para todos los locales
127
+ - **`search-params`**: Locale pasado como parámetro de consulta
128
+ - `/dashboard?locale=en` o `/dashboard?locale=fr`
129
+
130
+ ### Configuración básica
131
+
132
+ ```typescript
133
+ // intlayer.config.ts
134
+ export default {
135
+ internationalization: {
136
+ locales: ["en", "fr", "es"],
137
+ defaultLocale: "en",
138
+ },
139
+ routing: {
140
+ mode: "prefix-no-default", // por defecto
141
+ },
142
+ };
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Cumplimiento GDPR: almacenamiento en localStorage / cookies
148
+
149
+ v7 prioriza la privacidad del usuario usando `localStorage` como mecanismo de almacenamiento predeterminado en lugar de cookies. Este cambio ayuda con el cumplimiento del GDPR al evitar los requisitos de consentimiento de cookies para las preferencias de locale.
150
+
151
+ ### Opciones de configuración de almacenamiento
152
+
153
+ El nuevo campo `routing.storage` también está disponible además de las opciones anteriores `middleware.cookieName` y `middleware.serverSetCookie`, ofreciendo configuraciones flexibles de almacenamiento:
154
+
155
+ ```typescript
156
+ // Desactivar almacenamiento
157
+ storage: false
158
+
159
+ // Tipos simples de almacenamiento
160
+ storage: 'cookie'
161
+ storage: 'localStorage'
162
+ storage: 'sessionStorage'
163
+
164
+ // Cookie con atributos personalizados
165
+ storage: {
166
+ type: 'cookie',
167
+ name: 'custom-locale',
168
+ domain: '.example.com',
169
+ secure: true,
170
+ sameSite: 'strict'
171
+ }
172
+
173
+ // localStorage con clave personalizada
174
+ storage: {
175
+ type: 'localStorage',
176
+ name: 'custom-locale'
177
+ }
178
+
179
+ // Múltiples tipos de almacenamiento para redundancia
180
+ storage: ['cookie', 'localStorage']
181
+ ```
182
+
183
+ ### Ejemplo de configuración compatible con GDPR
184
+
185
+ Para aplicaciones en producción que necesitan equilibrar funcionalidad con cumplimiento de GDPR:
186
+
187
+ ```typescript
188
+ // intlayer.config.ts
189
+ export default {
190
+ internationalization: {
191
+ locales: ["en", "fr", "es"],
192
+ defaultLocale: "en",
193
+ },
194
+ routing: {
195
+ mode: "prefix-no-default",
196
+ storage: [
197
+ {
198
+ type: "localStorage", // Almacenamiento principal (no se necesita consentimiento)
199
+ name: "user-locale",
200
+ },
201
+ {
202
+ type: "cookie", // Almacenamiento opcional en cookies (requiere consentimiento)
203
+ name: "user-locale",
204
+ secure: true,
205
+ sameSite: "strict",
206
+ httpOnly: false,
207
+ },
208
+ ],
209
+ },
210
+ };
211
+ ```
212
+
213
+ ### Habilitar / deshabilitar el almacenamiento en cookies
214
+
215
+ Ejemplo usando React / Next.js:
216
+
217
+ Se puede definir globalmente:
218
+
219
+ ```typescript
220
+ <IntlayerProvider isCookieEnabled={false}>
221
+ <App />
222
+ </IntlayerProvider>
223
+ ```
224
+
225
+ Se puede sobrescribir localmente para cada hook:
226
+
227
+ ```ts
228
+ const { setLocale } = useLocale({ isCookieEnabled: false });
229
+
230
+ setLocale("en");
231
+ ```
232
+
233
+ **Nota:** Las cookies están habilitadas por defecto.
234
+ **Nota:** Consulta los [requisitos de cookies del GDPR](https://gdpr.eu/cookies/) para tu caso específico.
235
+
236
+ ---
237
+
238
+ ## Editor Visual: paquete un 30% más pequeño
239
+
240
+ El paquete del Editor Visual ha sido optimizado para ser un 30% más pequeño que la versión anterior, gracias a:
241
+
242
+ - Mejoras en el rendimiento del editor de código
243
+ - Eliminación de dependencias innecesarias en los paquetes principales de Intlayer
244
+ - Mejor tree-shaking y empaquetado de módulos
245
+
246
+ Esto se traduce en tiempos de descarga más rápidos y un mejor rendimiento en tiempo de ejecución para tu aplicación.
247
+
248
+ ---
249
+
250
+ ## Comando fill: comportamiento actualizado para una mejor gestión de contenido
251
+
252
+ v7 introduce un comportamiento mejorado para el comando `fill`, proporcionando una gestión de contenido más predecible y flexible:
253
+
254
+ ### Nuevo comportamiento de fill
255
+
256
+ - **`fill: true`** - Reescribe el archivo actual con contenido completado para todos los locales
257
+ - **`fill: "ruta/al/archivo"`** - Completa el archivo especificado sin modificar el archivo actual
258
+ - **`fill: false`** - Desactiva completamente el auto-fill
259
+
260
+ ### Soporte mejorado para estructuras de contenido complejas
261
+
262
+ El comando fill ahora soporta estructuras complejas de declaración de contenido, incluyendo:
263
+
264
+ - **Objetos compuestos**: Declaraciones de contenido que hacen referencia a otros objetos
265
+ - **Contenido desestructurado**: Contenido que usa patrones de desestructuración
266
+ - **Referencias anidadas**: Objetos que se llaman entre sí en jerarquías complejas
267
+ - **Estructuras de contenido dinámicas**: Contenido con propiedades condicionales o computadas
268
+
269
+ ### Beneficios
270
+
271
+ - **Intención más clara**: El comportamiento ahora es más explícito sobre qué se modifica
272
+ - **Mejor separación**: Los archivos de contenido pueden mantenerse separados de las traducciones completadas
273
+ - **Flujo de trabajo mejorado**: Los desarrolladores tienen más control sobre dónde se almacenan las traducciones
274
+ - **Soporte para estructuras complejas**: Maneja arquitecturas de contenido sofisticadas con múltiples objetos interconectados
275
+
276
+ ### Ejemplo de uso
277
+
278
+ ```typescript
279
+ // Reescribe el archivo actual con todos los locales
280
+ const content = {
281
+ key: "example",
282
+ fill: true, // Reescribe este archivo
283
+ content: {
284
+ title: "Hello World",
285
+ },
286
+ };
287
+
288
+ // Llena un archivo separado sin modificar el archivo actual
289
+ const content = {
290
+ key: "example",
291
+ fill: "./translations.json", // Crea/actualiza translations.json
292
+ content: {
293
+ title: "Hello World",
294
+ },
295
+ };
296
+
297
+ // Deshabilita el auto-llenado
298
+ const content = {
299
+ key: "example",
300
+ fill: false, // Sin auto-llenado
301
+ content: {
302
+ title: "Hello World",
303
+ },
304
+ };
305
+
306
+ // Estructura de contenido compleja con objetos compuestos
307
+ const sharedContent = {
308
+ buttons: {
309
+ save: "Guardar",
310
+ cancel: "Cancelar",
311
+ },
312
+ };
313
+
314
+ const content = {
315
+ key: "complex-example",
316
+ fill: true,
317
+ content: {
318
+ // Referencias a otros objetos
319
+ sharedContent,
320
+
321
+ // Contenido desestructurado
322
+ ...sharedContent,
323
+
324
+ // Referencias anidadas
325
+ sections: [
326
+ {
327
+ ...sharedContent.buttons,
328
+ header: "Sección 1",
329
+ },
330
+ ],
331
+ },
332
+ };
333
+ ```
334
+
335
+ ---
336
+
337
+ ## Estabilidad mejorada y gestión de traducciones
338
+
339
+ v7 introduce varias mejoras para hacer que la traducción de contenido sea más confiable y eficiente:
340
+
341
+ ### Actualizaciones completas de archivos de declaración de contenido
342
+
343
+ El sistema ahora actualiza archivos `.content.{ts,js,cjs,mjs}` en lugar de actualizaciones parciales, asegurando:
344
+
345
+ - **Integridad de datos**: La reescritura completa de archivos previene actualizaciones parciales que podrían corromper el contenido
346
+ - **Consistencia**: Todos los locales se actualizan de forma atómica, manteniendo la sincronización
347
+ - **Confiabilidad**: Reduce el riesgo de archivos de contenido incompletos o mal formados
348
+
349
+ ### Gestión inteligente de reintentos
350
+
351
+ Nuevos mecanismos de reintento evitan enviar contenido en formatos incorrectos y previenen que todo el proceso de llenado se interrumpa si una solicitud falla.
352
+
353
+ ### Paralelización para un procesamiento más rápido
354
+
355
+ Las operaciones de traducción ahora se ejecutan en una cola para correr en paralelo. Esto acelera significativamente el proceso.
356
+
357
+ ### Segmentación inteligente para archivos grandes
358
+
359
+ Estrategias avanzadas de segmentación manejan archivos de contenido grandes sin exceder las ventanas de contexto de la IA:
360
+
361
+ ### Ejemplo de flujo de trabajo
362
+
363
+ ```typescript
364
+ // Archivo de contenido grande se segmenta automáticamente
365
+ const content = {
366
+ key: "large-documentation",
367
+ fill: true,
368
+ content: {
369
+ // Contenido grande dividido automáticamente para el procesamiento por IA
370
+ introduction: "..." // más de 5000 caracteres
371
+ sections: [
372
+ // Múltiples secciones grandes
373
+ ]
374
+ }
375
+ };
376
+ ```
377
+
378
+ El sistema automáticamente:
379
+
380
+ 1. Analiza el tamaño y la estructura del contenido
381
+ 2. Divide el contenido en partes apropiadas
382
+ 3. Procesa las partes en paralelo
383
+ 4. Valida y reintenta si es necesario
384
+ 5. Reconstruye el archivo completo
385
+
386
+ ---
387
+
388
+ ## Notas de migración desde la versión v6
389
+
390
+ ### Configuraciones eliminadas
391
+
392
+ - **`middleware.cookieName`**: Reemplazado por `routing.storage`
393
+ - **`middleware.serverSetCookie`**: Reemplazado por `routing.storage`
394
+ - **`middleware.prefixDefault`**: Reemplazado por `routing.mode`
395
+ - **`middleware.noPrefix`**: Reemplazado por `routing.mode`
396
+
397
+ ### Mapeo de migración
398
+
399
+ #### Mapeo de configuración
400
+
401
+ | Configuración v6 | Configuración v7 |
402
+ | -------------------------- | ----------------------------------------------------------------- |
403
+ | `autoFill: xxx` | `fill: xxx` |
404
+ | `prefixDefault: false` | `mode: 'prefix-no-default'` |
405
+ | `prefixDefault: true` | `mode: 'prefix-all'` |
406
+ | `noPrefix: true` | `mode: 'no-prefix'` |
407
+ | `cookieName: 'my-locale'` | `storage: { type: 'cookie', name: 'my-locale' }` |
408
+ | `serverSetCookie: 'never'` | `storage: false` o eliminar la cookie del array de almacenamiento |
409
+
410
+ #### Ejemplo de migración
411
+
412
+ **Antes (v6):**
413
+
414
+ ````typescript
415
+ export default {
416
+ #### Mapeo de configuración
417
+
418
+ | Configuración v6 | Configuración v7 |
419
+ | -------------------------- | ---------------------------------------------------- |
420
+ | `autoFill: xxx` | `fill: xxx` |
421
+ | `prefixDefault: false` | `mode: 'prefix-no-default'` |
422
+ | `prefixDefault: true` | `mode: 'prefix-all'` |
423
+ | `noPrefix: true` | `mode: 'no-prefix'` |
424
+ | `cookieName: 'my-locale'` | `storage: { type: 'cookie', name: 'my-locale' }` |
425
+ | `serverSetCookie: 'never'` | `storage: false` o eliminar la cookie del array de almacenamiento |
426
+
427
+ #### Ejemplo de migración
428
+
429
+ **Antes (v6):**
430
+
431
+ ```typescript
432
+ export default {
433
+ middleware: {
434
+ headerName: "x-intlayer-locale",
435
+ cookieName: "intlayer-locale",
436
+ prefixDefault: false,
437
+ basePath: "",
438
+ serverSetCookie: "always",
439
+ noPrefix: false,
440
+ },
441
+ };
442
+ ````
443
+
444
+ **Después (v7):**
445
+
446
+ ```typescript
447
+ export default {
448
+ routing: {
449
+ mode: "prefix-no-default",
450
+ storage: "localStorage", // o 'cookie' si necesitas almacenamiento en cookie
451
+ headerName: "x-intlayer-locale",
452
+ basePath: "",
453
+ detectLocaleOnPrefetchNoPrefix: false,
454
+ },
455
+ };
456
+ ```
457
+
458
+ #### Mapeo del contenido del diccionario
459
+
460
+ | Contenido del diccionario v6 | Contenido del diccionario v7 |
461
+ | ---------------------------- | ---------------------------- |
462
+ | `autoFill: xxx` | `fill: xxx` |
463
+
464
+ #### Ejemplo de migración
465
+
466
+ **Antes (v6):**
467
+
468
+ ```typescript
469
+ const content = {
470
+ key: "example",
471
+ autoFill: true, // Reescribe este archivo
472
+ content: {
473
+ title: "Hola Mundo",
474
+ },
475
+ };
476
+ ```
477
+
478
+ **Después (v7):**
479
+
480
+ ```typescript
481
+ const content = {
482
+ key: "example",
483
+ fill: true, // Reescribe este archivo
484
+ content: {
485
+ title: "Hola Mundo",
486
+ },
487
+ };
488
+ ```
489
+
490
+ ---
491
+
492
+ ## Notas de migración de v5 a v6
493
+
494
+ Consulta las [notas de migración de v5 a v6](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/releases/v6.md) para más información.
495
+
496
+ ---
497
+
498
+ ## Enlaces útiles
499
+
500
+ - [Referencia de configuración](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/configuration.md)
501
+ - [Documentación del Middleware](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/packages/next-intlayer/index.md)
502
+ - [Tipos de TypeScript](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts)
503
+ - [Directrices de cookies GDPR](https://gdpr.eu/cookies/)