@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,505 @@
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
+ detectLocaleOnPrefetchNoPrefix: false,
456
+ },
457
+ };
458
+ ```
459
+
460
+ #### Mappatura del contenuto del dizionario
461
+
462
+ | Contenuto dizionario v6 | Contenuto dizionario v7 |
463
+ | ----------------------- | ----------------------- |
464
+ | `autoFill: xxx` | `fill: xxx` |
465
+
466
+ #### Esempio di migrazione
467
+
468
+ **Prima (v6):**
469
+
470
+ ```typescript
471
+ const content = {
472
+ key: "example",
473
+ autoFill: true, // Riscrive questo file
474
+ content: {
475
+ title: "Hello World",
476
+ },
477
+ };
478
+ ```
479
+
480
+ **Dopo (v7):**
481
+
482
+ ```typescript
483
+ const content = {
484
+ key: "example",
485
+ fill: true, // Riscrive questo file
486
+ content: {
487
+ title: "Hello World",
488
+ },
489
+ };
490
+ ```
491
+
492
+ ---
493
+
494
+ ## Note di migrazione da v5 a v6
495
+
496
+ 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.
497
+
498
+ ---
499
+
500
+ ## Link utili
501
+
502
+ - [Riferimento alla configurazione](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/configuration.md)
503
+ - [Documentazione Middleware](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/packages/next-intlayer/index.md)
504
+ - [Tipi TypeScript](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts)
505
+ - [Linee guida GDPR sui cookie](https://gdpr.eu/cookies/)
@@ -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を通じて取得され、それ以外は動的にインポートされ、実行時には変更されません。