@intlayer/docs 7.0.0-canary.2 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/types/common.d.ts +5 -0
- package/dist/types/common.d.ts.map +1 -1
- package/docs/ar/configuration.md +0 -24
- package/docs/ar/intlayer_with_nextjs_16.md +1652 -0
- package/docs/ar/releases/v7.md +485 -0
- package/docs/de/configuration.md +0 -24
- package/docs/de/intlayer_with_nextjs_16.md +1662 -0
- package/docs/de/releases/v7.md +502 -0
- package/docs/en/autoFill.md +3 -1
- package/docs/en/configuration.md +53 -58
- package/docs/en/intlayer_with_nextjs_15.md +5 -2
- package/docs/en/intlayer_with_nextjs_16.md +4 -4
- package/docs/en/releases/v7.md +142 -2
- package/docs/en-GB/configuration.md +9 -30
- package/docs/en-GB/intlayer_with_nextjs_16.md +1642 -0
- package/docs/en-GB/releases/v7.md +485 -0
- package/docs/es/configuration.md +0 -24
- package/docs/es/intlayer_with_nextjs_16.md +1670 -0
- package/docs/es/releases/v7.md +502 -0
- package/docs/fr/configuration.md +0 -24
- package/docs/fr/intlayer_with_nextjs_16.md +1692 -0
- package/docs/fr/releases/v7.md +503 -0
- package/docs/hi/configuration.md +0 -24
- package/docs/hi/intlayer_with_nextjs_16.md +1618 -0
- package/docs/hi/releases/v7.md +485 -0
- package/docs/id/intlayer_with_nextjs_16.md +1604 -0
- package/docs/id/releases/v7.md +502 -0
- package/docs/it/configuration.md +0 -24
- package/docs/it/intlayer_with_nextjs_16.md +1600 -0
- package/docs/it/releases/v7.md +504 -0
- package/docs/ja/configuration.md +0 -24
- package/docs/ja/intlayer_CMS.md +0 -9
- package/docs/ja/intlayer_with_nextjs_16.md +1788 -0
- package/docs/ja/releases/v7.md +503 -0
- package/docs/ko/configuration.md +0 -24
- package/docs/ko/intlayer_with_nextjs_16.md +1641 -0
- package/docs/ko/releases/v7.md +503 -0
- package/docs/pl/intlayer_with_nextjs_16.md +1645 -0
- package/docs/pl/releases/v7.md +485 -0
- package/docs/pt/configuration.md +0 -24
- package/docs/pt/intlayer_with_nextjs_16.md +1646 -0
- package/docs/pt/introduction.md +0 -15
- package/docs/pt/releases/v7.md +485 -0
- package/docs/ru/configuration.md +0 -24
- package/docs/ru/intlayer_with_nextjs_16.md +1610 -0
- package/docs/ru/releases/v7.md +485 -0
- package/docs/tr/configuration.md +0 -24
- package/docs/tr/intlayer_with_nextjs_16.md +1599 -0
- package/docs/tr/releases/v7.md +485 -0
- package/docs/vi/intlayer_with_nextjs_16.md +1597 -0
- package/docs/vi/releases/v7.md +485 -0
- package/docs/zh/configuration.md +0 -24
- package/docs/zh/intlayer_CMS.md +0 -23
- package/docs/zh/intlayer_with_nextjs_16.md +1628 -0
- package/docs/zh/releases/v7.md +486 -0
- package/package.json +14 -14
- package/src/common.ts +5 -0
|
@@ -0,0 +1,502 @@
|
|
|
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
|
+
},
|
|
454
|
+
};
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
#### Mapeo del contenido del diccionario
|
|
458
|
+
|
|
459
|
+
| Contenido del diccionario v6 | Contenido del diccionario v7 |
|
|
460
|
+
| ---------------------------- | ---------------------------- |
|
|
461
|
+
| `autoFill: xxx` | `fill: xxx` |
|
|
462
|
+
|
|
463
|
+
#### Ejemplo de migración
|
|
464
|
+
|
|
465
|
+
**Antes (v6):**
|
|
466
|
+
|
|
467
|
+
```typescript
|
|
468
|
+
const content = {
|
|
469
|
+
key: "example",
|
|
470
|
+
autoFill: true, // Reescribe este archivo
|
|
471
|
+
content: {
|
|
472
|
+
title: "Hola Mundo",
|
|
473
|
+
},
|
|
474
|
+
};
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
**Después (v7):**
|
|
478
|
+
|
|
479
|
+
```typescript
|
|
480
|
+
const content = {
|
|
481
|
+
key: "example",
|
|
482
|
+
fill: true, // Reescribe este archivo
|
|
483
|
+
content: {
|
|
484
|
+
title: "Hola Mundo",
|
|
485
|
+
},
|
|
486
|
+
};
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
491
|
+
## Notas de migración de v5 a v6
|
|
492
|
+
|
|
493
|
+
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.
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
## Enlaces útiles
|
|
498
|
+
|
|
499
|
+
- [Referencia de configuración](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/configuration.md)
|
|
500
|
+
- [Documentación del Middleware](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/packages/next-intlayer/index.md)
|
|
501
|
+
- [Tipos de TypeScript](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts)
|
|
502
|
+
- [Directrices de cookies GDPR](https://gdpr.eu/cookies/)
|
package/docs/fr/configuration.md
CHANGED
|
@@ -336,30 +336,6 @@ Paramètres qui contrôlent le comportement du middleware, y compris la gestion
|
|
|
336
336
|
- Si `noPrefix = false` : l'URL sera `https://example.com/my-app/en`
|
|
337
337
|
- Si `noPrefix = true` : l'URL sera `https://example.com`
|
|
338
338
|
|
|
339
|
-
- **detectLocaleOnPrefetchNoPrefix** :
|
|
340
|
-
- _Type_ : `boolean`
|
|
341
|
-
- _Par défaut_ : `false`
|
|
342
|
-
- _Description_ : Contrôle si la détection de la locale se produit lors des requêtes de préchargement (prefetch) de Next.js.
|
|
343
|
-
- _Exemple_ : `true`
|
|
344
|
-
- _Note_ : Ce paramètre influence la manière dont Next.js gère le préchargement des locales :
|
|
345
|
-
- **Scénario d'exemple :**
|
|
346
|
-
- La langue du navigateur de l'utilisateur est `'fr'`
|
|
347
|
-
- La page actuelle est `/fr/about`
|
|
348
|
-
- Un lien précharge `/about`
|
|
349
|
-
- **Avec `detectLocaleOnPrefetchNoPrefix: true` :**
|
|
350
|
-
- Le préchargement détecte la locale `'fr'` depuis le navigateur
|
|
351
|
-
- Redirige le préchargement vers `/fr/about`
|
|
352
|
-
- **Avec `detectLocaleOnPrefetchNoPrefix: false` (par défaut) :**
|
|
353
|
-
- Le préchargement utilise la locale par défaut
|
|
354
|
-
- Redirige le préchargement vers `/en/about` (en supposant que `'en'` est la locale par défaut)
|
|
355
|
-
- **Quand utiliser `true` :**
|
|
356
|
-
- Votre application utilise des liens internes non localisés (par exemple `<a href="/about">`)
|
|
357
|
-
- Vous souhaitez un comportement cohérent de détection de la langue entre les requêtes normales et les requêtes de préchargement
|
|
358
|
-
- **Quand utiliser `false` (par défaut) :**
|
|
359
|
-
- Votre application utilise des liens préfixés par la langue (par exemple `<a href="/fr/about">`)
|
|
360
|
-
- Vous souhaitez optimiser les performances du préchargement
|
|
361
|
-
- Vous souhaitez éviter les boucles de redirection potentielles
|
|
362
|
-
|
|
363
339
|
---
|
|
364
340
|
|
|
365
341
|
### Configuration du contenu
|