@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,504 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-22
|
|
3
|
+
updatedAt: 2025-09-23
|
|
4
|
+
title: Nuovo Intlayer v7 - Novità
|
|
5
|
+
description: Scopri le novità di Intlayer v7. Miglioramenti significativi nelle prestazioni, nell'esperienza dello sviluppatore e nuove funzionalità per migliorare il tuo flusso di lavoro di internazionalizzazione.
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- Localizzazione
|
|
9
|
+
- Sviluppo
|
|
10
|
+
- Prestazioni
|
|
11
|
+
- Esperienza dello sviluppatore
|
|
12
|
+
- Funzionalità
|
|
13
|
+
- React
|
|
14
|
+
- Next.js
|
|
15
|
+
- JavaScript
|
|
16
|
+
- TypeScript
|
|
17
|
+
slugs:
|
|
18
|
+
- doc
|
|
19
|
+
- releases
|
|
20
|
+
- v7
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Nuovo Intlayer v7 - Novità
|
|
24
|
+
|
|
25
|
+
Benvenuto in Intlayer v7! Questa versione principale introduce miglioramenti significativi nelle prestazioni, nella sicurezza dei tipi e nell'esperienza dello sviluppatore. Di seguito i punti salienti, con note di migrazione ed esempi pratici.
|
|
26
|
+
|
|
27
|
+
## Punti salienti
|
|
28
|
+
|
|
29
|
+
- Strategia di caching per build più veloci
|
|
30
|
+
- Generazione migliorata dei tipi TypeScript con tipi specifici per locale
|
|
31
|
+
- Ottimizzazione del bundle: Locali come stringhe invece che enum
|
|
32
|
+
- Nuove modalità di routing: `prefix-no-default`, `prefix-all`, `no-prefix`, `search-params`
|
|
33
|
+
- Archiviazione locale conforme al GDPR con localStorage come predefinito
|
|
34
|
+
- Configurazione flessibile dello storage: cookie, localStorage, sessionStorage o multipli
|
|
35
|
+
- Dimensione del pacchetto Visual Editor ridotta del 30%
|
|
36
|
+
- Opzioni di configurazione middleware migliorate
|
|
37
|
+
- Comportamento aggiornato del comando fill per una migliore gestione dei contenuti
|
|
38
|
+
- Stabilità migliorata con aggiornamenti completi dei file di dichiarazione dei contenuti
|
|
39
|
+
- Gestione intelligente dei retry per una maggiore accuratezza delle traduzioni
|
|
40
|
+
- Parallelizzazione per un'elaborazione delle traduzioni più veloce
|
|
41
|
+
- Suddivisione intelligente per gestire file di grandi dimensioni entro i limiti del contesto AI
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Prestazioni: Caching per build più veloci
|
|
46
|
+
|
|
47
|
+
Invece di ricostruire le dichiarazioni di contenuto con esbuild a ogni build, la versione 7 implementa una strategia di caching che accelera il processo di build.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx intlayer build
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Il nuovo sistema di caching:
|
|
54
|
+
|
|
55
|
+
- Memorizza le dichiarazioni di contenuto compilate per evitare elaborazioni ridondanti
|
|
56
|
+
- Rileva le modifiche e ricostruisce solo i file modificati
|
|
57
|
+
- Riduce significativamente i tempi di build per progetti di grandi dimensioni
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## TypeScript: Generazione di tipi specifici per locale
|
|
62
|
+
|
|
63
|
+
I tipi TypeScript ora vengono generati per ogni locale, offrendo un typing più forte ed eliminando i tipi unione tra tutti i locali.
|
|
64
|
+
|
|
65
|
+
**Comportamento 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
|
+
**Comportamento v7:**
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
tsx;
|
|
76
|
+
const content = getIntlayer("my-title-content", "en");
|
|
77
|
+
// typeof content = { title: "My title" }
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Vantaggi:
|
|
81
|
+
|
|
82
|
+
- Completamento automatico più preciso nel tuo IDE
|
|
83
|
+
- Maggiore sicurezza dei tipi senza inquinamento tra tipi di diverse localizzazioni
|
|
84
|
+
- Prestazioni migliorate riducendo la complessità dei tipi
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Ottimizzazione del bundle: Locali come stringhe
|
|
89
|
+
|
|
90
|
+
Il tipo `Locales` non è più un enum, il che significa che ora è completamente tree-shakeable e non appesantirà il tuo bundle con migliaia di record di localizzazione inutilizzati.
|
|
91
|
+
|
|
92
|
+
**v6:**
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
import { Locales } from "intlayer";
|
|
96
|
+
// Enum che include tutte le localizzazioni -> non tree-shakeable
|
|
97
|
+
|
|
98
|
+
const locale: Locales = Locales.ENGLISH;
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**v7:**
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { Locales, Locale } from "intlayer";
|
|
105
|
+
// Tipo stringa -> completamente tree-shakeable
|
|
106
|
+
|
|
107
|
+
const locale: Locale = Locales.ENGLISH;
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
> Poiché `Locales` non è più un enum, dovrai cambiare il tipo da `Locales` a `Locale` per ottenere la localizzazione come tipo.
|
|
111
|
+
|
|
112
|
+
Consulta i [dettagli di implementazione](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts) per maggiori informazioni.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Nuove modalità di routing per una maggiore flessibilità
|
|
117
|
+
|
|
118
|
+
La versione 7 introduce una configurazione unificata `routing.mode` che sostituisce le precedenti opzioni `prefixDefault` e `noPrefix`, offrendo un controllo più granulare sulla struttura degli URL.
|
|
119
|
+
|
|
120
|
+
### Modalità di routing disponibili
|
|
121
|
+
|
|
122
|
+
- **`prefix-no-default`** (predefinita): la localizzazione predefinita non ha prefisso, le altre localizzazioni sì
|
|
123
|
+
- `/dashboard` (en) o `/fr/dashboard` (fr)
|
|
124
|
+
- **`prefix-all`**: tutte le localizzazioni hanno un prefisso
|
|
125
|
+
- `/en/dashboard` (en) o `/fr/dashboard` (fr)
|
|
126
|
+
- **`no-prefix`**: Nessun prefisso di localizzazione negli URL (la localizzazione è gestita tramite storage/header)
|
|
127
|
+
- `/dashboard` per tutte le localizzazioni
|
|
128
|
+
- **`search-params`**: La localizzazione viene passata come parametro di query
|
|
129
|
+
- `/dashboard?locale=en` o `/dashboard?locale=fr`
|
|
130
|
+
|
|
131
|
+
### Configurazione di base
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
// intlayer.config.ts
|
|
135
|
+
export default {
|
|
136
|
+
internationalization: {
|
|
137
|
+
locales: ["en", "fr", "es"],
|
|
138
|
+
defaultLocale: "en",
|
|
139
|
+
},
|
|
140
|
+
routing: {
|
|
141
|
+
mode: "prefix-no-default", // predefinito
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Conformità GDPR: storage in localStorage / cookie
|
|
149
|
+
|
|
150
|
+
La versione 7 dà priorità alla privacy dell'utente utilizzando `localStorage` come meccanismo di storage predefinito invece dei cookie. Questo cambiamento aiuta a rispettare il GDPR evitando la necessità del consenso per i cookie relativi alle preferenze di localizzazione.
|
|
151
|
+
|
|
152
|
+
### Opzioni di configurazione dello storage
|
|
153
|
+
|
|
154
|
+
Il nuovo campo `routing.storage` è disponibile in aggiunta alle precedenti opzioni `middleware.cookieName` e `middleware.serverSetCookie`, offrendo configurazioni di storage flessibili:
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
// Disabilita lo storage
|
|
158
|
+
storage: false
|
|
159
|
+
|
|
160
|
+
// Tipi di storage semplici
|
|
161
|
+
storage: 'cookie'
|
|
162
|
+
storage: 'localStorage'
|
|
163
|
+
storage: 'sessionStorage'
|
|
164
|
+
|
|
165
|
+
// Cookie con attributi personalizzati
|
|
166
|
+
storage: {
|
|
167
|
+
type: 'cookie',
|
|
168
|
+
name: 'custom-locale',
|
|
169
|
+
domain: '.example.com',
|
|
170
|
+
secure: true,
|
|
171
|
+
sameSite: 'strict'
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// localStorage con chiave personalizzata
|
|
175
|
+
storage: {
|
|
176
|
+
type: 'localStorage',
|
|
177
|
+
name: 'custom-locale'
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Più tipi di storage per ridondanza
|
|
181
|
+
storage: ['cookie', 'localStorage']
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Esempio di configurazione conforme al GDPR
|
|
185
|
+
|
|
186
|
+
Per applicazioni in produzione che devono bilanciare funzionalità e conformità al GDPR:
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
typescript;
|
|
190
|
+
// intlayer.config.ts
|
|
191
|
+
export default {
|
|
192
|
+
internationalization: {
|
|
193
|
+
locales: ["en", "fr", "es"],
|
|
194
|
+
defaultLocale: "en",
|
|
195
|
+
},
|
|
196
|
+
routing: {
|
|
197
|
+
mode: "prefix-no-default",
|
|
198
|
+
storage: [
|
|
199
|
+
{
|
|
200
|
+
type: "localStorage", // Archiviazione primaria (non necessita di consenso)
|
|
201
|
+
name: "user-locale",
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
type: "cookie", // Archiviazione cookie opzionale (richiede consenso)
|
|
205
|
+
name: "user-locale",
|
|
206
|
+
secure: true,
|
|
207
|
+
sameSite: "strict",
|
|
208
|
+
httpOnly: false,
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Abilitare / disabilitare l'archiviazione tramite cookie
|
|
216
|
+
|
|
217
|
+
Esempio con React / Next.js:
|
|
218
|
+
|
|
219
|
+
Può essere definito globalmente:
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
<IntlayerProvider isCookieEnabled={false}>
|
|
223
|
+
<App />
|
|
224
|
+
</IntlayerProvider>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Può essere sovrascritto localmente per ogni hook:
|
|
228
|
+
|
|
229
|
+
```ts
|
|
230
|
+
const { setLocale } = useLocale({ isCookieEnabled: false });
|
|
231
|
+
|
|
232
|
+
setLocale("en");
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Nota:** I cookie sono abilitati di default.
|
|
236
|
+
**Nota:** Controlla i [requisiti GDPR per i cookie](https://gdpr.eu/cookies/) per il tuo caso specifico.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Visual Editor: pacchetto ridotto del 30%
|
|
241
|
+
|
|
242
|
+
Il pacchetto Visual Editor è stato ottimizzato per essere il 30% più piccolo rispetto alla versione precedente, grazie a:
|
|
243
|
+
|
|
244
|
+
- Miglioramenti delle prestazioni dell'editor di codice
|
|
245
|
+
- Rimozione di dipendenze non necessarie dai pacchetti core di Intlayer
|
|
246
|
+
- Migliore tree-shaking e bundling dei moduli
|
|
247
|
+
|
|
248
|
+
Questo si traduce in tempi di download più rapidi e prestazioni di runtime migliorate per la tua applicazione.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Comando Fill: comportamento aggiornato per una migliore gestione dei contenuti
|
|
253
|
+
|
|
254
|
+
La versione 7 introduce un comportamento migliorato per il comando `fill`, offrendo una gestione dei contenuti più prevedibile e flessibile:
|
|
255
|
+
|
|
256
|
+
### Nuovo comportamento di fill
|
|
257
|
+
|
|
258
|
+
- **`fill: true`** - Riscrive il file corrente con il contenuto compilato per tutte le localizzazioni
|
|
259
|
+
- **`fill: "path/to/file"`** - Compila il file specificato senza modificare il file corrente
|
|
260
|
+
- **`fill: false`** - Disabilita completamente l'auto-fill
|
|
261
|
+
|
|
262
|
+
### Supporto migliorato per strutture di contenuto complesse
|
|
263
|
+
|
|
264
|
+
Il comando fill ora supporta strutture complesse di dichiarazione del contenuto, inclusi:
|
|
265
|
+
|
|
266
|
+
- **Oggetti composti**: Dichiarazioni di contenuto che fanno riferimento ad altri oggetti
|
|
267
|
+
- **Contenuto destrutturato**: Contenuto che utilizza pattern di destrutturazione
|
|
268
|
+
- **Riferimenti annidati**: Oggetti che si richiamano a vicenda in gerarchie complesse
|
|
269
|
+
- **Strutture di contenuto dinamiche**: Contenuto con proprietà condizionali o calcolate
|
|
270
|
+
|
|
271
|
+
### Vantaggi
|
|
272
|
+
|
|
273
|
+
- **Intento più chiaro**: Il comportamento è ora più esplicito su cosa viene modificato
|
|
274
|
+
- **Migliore separazione**: I file di contenuto possono essere mantenuti separati dalle traduzioni compilate
|
|
275
|
+
- **Flusso di lavoro migliorato**: Gli sviluppatori hanno un maggiore controllo su dove vengono memorizzate le traduzioni
|
|
276
|
+
- **Supporto per strutture complesse**: Gestione di architetture di contenuto sofisticate con molteplici oggetti interconnessi
|
|
277
|
+
|
|
278
|
+
### Esempio di utilizzo
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
// Riscrive il file corrente con tutte le localizzazioni
|
|
282
|
+
const content = {
|
|
283
|
+
key: "example",
|
|
284
|
+
fill: true, // Riscrive questo file
|
|
285
|
+
content: {
|
|
286
|
+
title: "Hello World",
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
// Compila un file separato senza modificare il file corrente
|
|
291
|
+
const content = {
|
|
292
|
+
key: "example",
|
|
293
|
+
fill: "./translations.json", // Crea/aggiorna translations.json
|
|
294
|
+
content: {
|
|
295
|
+
title: "Hello World",
|
|
296
|
+
},
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
// Disabilita il riempimento automatico
|
|
300
|
+
const content = {
|
|
301
|
+
key: "example",
|
|
302
|
+
fill: false, // Nessun riempimento automatico
|
|
303
|
+
content: {
|
|
304
|
+
title: "Hello World",
|
|
305
|
+
},
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
// Struttura di contenuto complessa con oggetti composti
|
|
309
|
+
const sharedContent = {
|
|
310
|
+
buttons: {
|
|
311
|
+
save: "Salva",
|
|
312
|
+
cancel: "Annulla",
|
|
313
|
+
},
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
const content = {
|
|
317
|
+
key: "complex-example",
|
|
318
|
+
fill: true,
|
|
319
|
+
content: {
|
|
320
|
+
// Riferimenti ad altri oggetti
|
|
321
|
+
sharedContent,
|
|
322
|
+
|
|
323
|
+
// Contenuto destrutturato
|
|
324
|
+
...sharedContent,
|
|
325
|
+
|
|
326
|
+
// Riferimenti annidati
|
|
327
|
+
sections: [
|
|
328
|
+
{
|
|
329
|
+
...sharedContent.buttons,
|
|
330
|
+
header: "Sezione 1",
|
|
331
|
+
},
|
|
332
|
+
],
|
|
333
|
+
},
|
|
334
|
+
};
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## Maggiore stabilità e gestione delle traduzioni
|
|
340
|
+
|
|
341
|
+
La versione 7 introduce diversi miglioramenti per rendere la traduzione dei contenuti più affidabile ed efficiente:
|
|
342
|
+
|
|
343
|
+
### Aggiornamenti completi dei file di dichiarazione dei contenuti
|
|
344
|
+
|
|
345
|
+
Il sistema ora aggiorna i file `.content.{ts,js,cjs,mjs}` invece di aggiornamenti parziali, garantendo:
|
|
346
|
+
|
|
347
|
+
- **Integrità dei dati**: La riscrittura completa dei file previene aggiornamenti parziali che potrebbero corrompere il contenuto
|
|
348
|
+
- **Coerenza**: Tutte le localizzazioni vengono aggiornate in modo atomico, mantenendo la sincronizzazione
|
|
349
|
+
- **Affidabilità**: Riduce il rischio di file di contenuto incompleti o malformati
|
|
350
|
+
|
|
351
|
+
### Gestione intelligente dei tentativi di ripetizione
|
|
352
|
+
|
|
353
|
+
I nuovi meccanismi di retry impediscono di inviare contenuti in formati errati e evitano che l'intero processo di fill si interrompa se una richiesta fallisce.
|
|
354
|
+
|
|
355
|
+
### Parallelizzazione per un'elaborazione più veloce
|
|
356
|
+
|
|
357
|
+
Le operazioni di traduzione ora vengono eseguite in coda per poter essere processate in parallelo. Questo accelera significativamente il processo.
|
|
358
|
+
|
|
359
|
+
### Suddivisione intelligente per file di grandi dimensioni
|
|
360
|
+
|
|
361
|
+
Strategie avanzate di chunking gestiscono file di contenuto di grandi dimensioni senza superare i limiti del contesto AI:
|
|
362
|
+
|
|
363
|
+
### Esempio di flusso di lavoro
|
|
364
|
+
|
|
365
|
+
```typescript
|
|
366
|
+
// Il file di contenuto di grandi dimensioni viene automaticamente suddiviso in chunk
|
|
367
|
+
const content = {
|
|
368
|
+
key: "large-documentation",
|
|
369
|
+
fill: true,
|
|
370
|
+
content: {
|
|
371
|
+
// Contenuto grande automaticamente suddiviso in chunk per l'elaborazione AI
|
|
372
|
+
introduction: "..." // oltre 5000 caratteri
|
|
373
|
+
sections: [
|
|
374
|
+
// Più sezioni grandi
|
|
375
|
+
]
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
Il sistema automaticamente:
|
|
381
|
+
|
|
382
|
+
1. Analizza la dimensione e la struttura del contenuto
|
|
383
|
+
2. Suddivide il contenuto in chunk appropriati
|
|
384
|
+
3. Elabora i chunk in parallelo
|
|
385
|
+
4. Valida e ritenta se necessario
|
|
386
|
+
5. Ricostruisce il file completo
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Note di migrazione dalla versione v6
|
|
391
|
+
|
|
392
|
+
### Configurazioni rimosse
|
|
393
|
+
|
|
394
|
+
- **`middleware.cookieName`**: Sostituito da `routing.storage`
|
|
395
|
+
- **`middleware.serverSetCookie`**: Sostituito da `routing.storage`
|
|
396
|
+
- **`middleware.prefixDefault`**: Sostituito da `routing.mode`
|
|
397
|
+
- **`middleware.noPrefix`**: Sostituito da `routing.mode`
|
|
398
|
+
|
|
399
|
+
### Mappatura della migrazione
|
|
400
|
+
|
|
401
|
+
#### Mappatura della configurazione
|
|
402
|
+
|
|
403
|
+
| Configurazione v6 | Configurazione v7 |
|
|
404
|
+
| -------------------------- | ------------------------------------------------------------- |
|
|
405
|
+
| `autoFill: xxx` | `fill: xxx` |
|
|
406
|
+
| `prefixDefault: false` | `mode: 'prefix-no-default'` |
|
|
407
|
+
| `prefixDefault: true` | `mode: 'prefix-all'` |
|
|
408
|
+
| `noPrefix: true` | `mode: 'no-prefix'` |
|
|
409
|
+
| `cookieName: 'my-locale'` | `storage: { type: 'cookie', name: 'my-locale' }` |
|
|
410
|
+
| `serverSetCookie: 'never'` | `storage: false` o rimuovere il cookie dall'array di storage` |
|
|
411
|
+
|
|
412
|
+
#### Esempio di migrazione
|
|
413
|
+
|
|
414
|
+
**Prima (v6):**
|
|
415
|
+
|
|
416
|
+
````typescript
|
|
417
|
+
export default {
|
|
418
|
+
#### Mappatura della configurazione
|
|
419
|
+
|
|
420
|
+
| Configurazione v6 | Configurazione v7 |
|
|
421
|
+
| ------------------------ | --------------------------------------------------- |
|
|
422
|
+
| `autoFill: xxx` | `fill: xxx` |
|
|
423
|
+
| `prefixDefault: false` | `mode: 'prefix-no-default'` |
|
|
424
|
+
| `prefixDefault: true` | `mode: 'prefix-all'` |
|
|
425
|
+
| `noPrefix: true` | `mode: 'no-prefix'` |
|
|
426
|
+
| `cookieName: 'my-locale'`| `storage: { type: 'cookie', name: 'my-locale' }` |
|
|
427
|
+
| `serverSetCookie: 'never'`| `storage: false` o rimuovere il cookie dall'array di storage |
|
|
428
|
+
|
|
429
|
+
#### Esempio di migrazione
|
|
430
|
+
|
|
431
|
+
**Prima (v6):**
|
|
432
|
+
|
|
433
|
+
```typescript
|
|
434
|
+
export default {
|
|
435
|
+
middleware: {
|
|
436
|
+
headerName: "x-intlayer-locale",
|
|
437
|
+
cookieName: "intlayer-locale",
|
|
438
|
+
prefixDefault: false,
|
|
439
|
+
basePath: "",
|
|
440
|
+
serverSetCookie: "always",
|
|
441
|
+
noPrefix: false,
|
|
442
|
+
},
|
|
443
|
+
};
|
|
444
|
+
````
|
|
445
|
+
|
|
446
|
+
**Dopo (v7):**
|
|
447
|
+
|
|
448
|
+
```typescript
|
|
449
|
+
export default {
|
|
450
|
+
routing: {
|
|
451
|
+
mode: "prefix-no-default",
|
|
452
|
+
storage: "localStorage", // oppure 'cookie' se è necessario lo storage tramite cookie
|
|
453
|
+
headerName: "x-intlayer-locale",
|
|
454
|
+
basePath: "",
|
|
455
|
+
},
|
|
456
|
+
};
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
#### Mappatura del contenuto del dizionario
|
|
460
|
+
|
|
461
|
+
| Contenuto dizionario v6 | Contenuto dizionario v7 |
|
|
462
|
+
| ----------------------- | ----------------------- |
|
|
463
|
+
| `autoFill: xxx` | `fill: xxx` |
|
|
464
|
+
|
|
465
|
+
#### Esempio di migrazione
|
|
466
|
+
|
|
467
|
+
**Prima (v6):**
|
|
468
|
+
|
|
469
|
+
```typescript
|
|
470
|
+
const content = {
|
|
471
|
+
key: "example",
|
|
472
|
+
autoFill: true, // Riscrive questo file
|
|
473
|
+
content: {
|
|
474
|
+
title: "Hello World",
|
|
475
|
+
},
|
|
476
|
+
};
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**Dopo (v7):**
|
|
480
|
+
|
|
481
|
+
```typescript
|
|
482
|
+
const content = {
|
|
483
|
+
key: "example",
|
|
484
|
+
fill: true, // Riscrive questo file
|
|
485
|
+
content: {
|
|
486
|
+
title: "Hello World",
|
|
487
|
+
},
|
|
488
|
+
};
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
## Note di migrazione da v5 a v6
|
|
494
|
+
|
|
495
|
+
Consulta le [note di migrazione da v5 a v6](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/releases/v6.md) per maggiori informazioni.
|
|
496
|
+
|
|
497
|
+
---
|
|
498
|
+
|
|
499
|
+
## Link utili
|
|
500
|
+
|
|
501
|
+
- [Riferimento alla configurazione](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/configuration.md)
|
|
502
|
+
- [Documentazione Middleware](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/packages/next-intlayer/index.md)
|
|
503
|
+
- [Tipi TypeScript](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts)
|
|
504
|
+
- [Linee guida GDPR sui cookie](https://gdpr.eu/cookies/)
|
package/docs/ja/configuration.md
CHANGED
|
@@ -333,30 +333,6 @@ module.exports = config;
|
|
|
333
333
|
- `noPrefix = false` の場合: URLは `https://example.com/my-app/en`
|
|
334
334
|
- `noPrefix = true` の場合: URLは `https://example.com`
|
|
335
335
|
|
|
336
|
-
- **detectLocaleOnPrefetchNoPrefix**:
|
|
337
|
-
- _タイプ_: `boolean`
|
|
338
|
-
- _デフォルト_: `false`
|
|
339
|
-
- _説明_: Next.jsのプリフェッチリクエスト時にロケール検出を行うかどうかを制御します。
|
|
340
|
-
- _例_: `true`
|
|
341
|
-
- _注意_: この設定はNext.jsのロケールプリフェッチの動作に影響します:
|
|
342
|
-
- **例のシナリオ:**
|
|
343
|
-
- ユーザーのブラウザ言語が `'fr'`
|
|
344
|
-
- 現在のページが `/fr/about`
|
|
345
|
-
- リンクが `/about` をプリフェッチする
|
|
346
|
-
- **`detectLocaleOnPrefetchNoPrefix: true` の場合:**
|
|
347
|
-
- プリフェッチはブラウザから `'fr'` ロケールを検出
|
|
348
|
-
- プリフェッチを `/fr/about` にリダイレクト
|
|
349
|
-
- **`detectLocaleOnPrefetchNoPrefix: false`(デフォルト)の場合:**
|
|
350
|
-
- プリフェッチはデフォルトロケールを使用
|
|
351
|
-
- プリフェッチを `/en/about` にリダイレクト(`'en'` がデフォルトの場合)
|
|
352
|
-
- **`true` を使うべき場合:**
|
|
353
|
-
- アプリがローカライズされていない内部リンクを使用している場合(例:`<a href="/about">`)
|
|
354
|
-
- 通常のリクエストとプリフェッチリクエスト間で一貫したロケール検出動作を望む場合
|
|
355
|
-
- **`false`(デフォルト)を使用する場合:**
|
|
356
|
-
- アプリがロケール接頭辞付きリンクを使用している場合(例:`<a href="/fr/about">`)
|
|
357
|
-
- プリフェッチのパフォーマンスを最適化したい場合
|
|
358
|
-
- リダイレクトループの可能性を回避したい場合
|
|
359
|
-
|
|
360
336
|
---
|
|
361
337
|
|
|
362
338
|
### コンテンツ設定
|
package/docs/ja/intlayer_CMS.md
CHANGED
|
@@ -510,15 +510,6 @@ module.exports = config;
|
|
|
510
510
|
|
|
511
511
|
注意事項と制約:
|
|
512
512
|
|
|
513
|
-
- サイトのセキュリティポリシー(CSP)にLive Syncのオリジンを追加してください。`connect-src`(および該当する場合は`frame-ancestors`)にLive SyncのURLが許可されていることを確認してください。
|
|
514
|
-
- Live Syncは静的出力では動作しません。Next.jsの場合、ページは動的である必要があり、ランタイムで更新を受け取るために(例:`generateStaticParams`、`generateMetadata`、`getServerSideProps`、または`getStaticProps`を適切に使用して)完全な静的のみの制約を回避してください。
|
|
515
|
-
|
|
516
|
-
```
|
|
517
|
-
|
|
518
|
-
このセットアップは、開発サーバーを Live Sync サーバーでラップし、起動時にリモート辞書を取得し、CMS からの更新を SSE 経由でストリーミングします。変更を確認するにはページをリフレッシュしてください。
|
|
519
|
-
|
|
520
|
-
注意事項と制約:
|
|
521
|
-
|
|
522
513
|
- Live Sync のオリジンをサイトのセキュリティポリシー(CSP)に追加してください。Live Sync の URL が `connect-src`(および該当する場合は `frame-ancestors`)で許可されていることを確認してください。
|
|
523
514
|
- Live Sync は静的出力では動作しません。Next.js の場合、ページはランタイムで更新を受け取るために動的である必要があります(例:完全な静的のみの制約を避けるために、`generateStaticParams`、`generateMetadata`、`getServerSideProps`、または `getStaticProps` を適切に使用してください)。
|
|
524
515
|
- CMSでは、各辞書に`live`フラグがあります。`live=true`の辞書のみがライブ同期APIを通じて取得され、それ以外は動的にインポートされ、実行時には変更されません。
|