@intlayer/docs 9.0.0-canary.15 → 9.0.0-canary.16

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 (107) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +40 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +40 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +2 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/cli/index.md +1 -1
  8. package/docs/ar/configuration.md +42 -1
  9. package/docs/ar/intlayer_CMS.md +5 -128
  10. package/docs/ar/live-sync.md +174 -0
  11. package/docs/ar/releases/v9.md +45 -1
  12. package/docs/bn/cli/index.md +1 -1
  13. package/docs/bn/configuration.md +45 -1
  14. package/docs/cs/cli/index.md +1 -1
  15. package/docs/cs/configuration.md +45 -1
  16. package/docs/de/cli/index.md +1 -1
  17. package/docs/de/configuration.md +42 -1
  18. package/docs/de/intlayer_CMS.md +5 -135
  19. package/docs/de/live-sync.md +174 -0
  20. package/docs/de/releases/v9.md +45 -1
  21. package/docs/en/analytics.md +222 -0
  22. package/docs/en/cli/index.md +1 -1
  23. package/docs/en/configuration.md +42 -1
  24. package/docs/en/intlayer_CMS.md +6 -140
  25. package/docs/en/live-sync.md +184 -0
  26. package/docs/en/releases/v9.md +53 -3
  27. package/docs/en-GB/cli/index.md +1 -1
  28. package/docs/en-GB/configuration.md +42 -1
  29. package/docs/en-GB/intlayer_CMS.md +5 -128
  30. package/docs/en-GB/live-sync.md +173 -0
  31. package/docs/en-GB/releases/v9.md +45 -1
  32. package/docs/es/cli/index.md +1 -1
  33. package/docs/es/configuration.md +42 -1
  34. package/docs/es/intlayer_CMS.md +5 -140
  35. package/docs/es/live-sync.md +176 -0
  36. package/docs/es/releases/v9.md +45 -1
  37. package/docs/fr/cli/index.md +1 -1
  38. package/docs/fr/configuration.md +42 -1
  39. package/docs/fr/intlayer_CMS.md +5 -135
  40. package/docs/fr/live-sync.md +174 -0
  41. package/docs/fr/releases/v9.md +45 -1
  42. package/docs/hi/cli/index.md +1 -1
  43. package/docs/hi/configuration.md +42 -1
  44. package/docs/hi/intlayer_CMS.md +5 -128
  45. package/docs/hi/live-sync.md +174 -0
  46. package/docs/hi/releases/v9.md +45 -1
  47. package/docs/id/cli/index.md +1 -1
  48. package/docs/id/configuration.md +42 -1
  49. package/docs/id/intlayer_CMS.md +5 -139
  50. package/docs/id/live-sync.md +185 -0
  51. package/docs/id/releases/v9.md +45 -1
  52. package/docs/it/cli/index.md +1 -1
  53. package/docs/it/configuration.md +42 -1
  54. package/docs/it/intlayer_CMS.md +5 -128
  55. package/docs/it/live-sync.md +174 -0
  56. package/docs/it/releases/v9.md +45 -1
  57. package/docs/ja/cli/index.md +1 -1
  58. package/docs/ja/configuration.md +42 -1
  59. package/docs/ja/intlayer_CMS.md +5 -139
  60. package/docs/ja/live-sync.md +185 -0
  61. package/docs/ja/releases/v9.md +45 -1
  62. package/docs/ko/cli/index.md +1 -1
  63. package/docs/ko/configuration.md +42 -1
  64. package/docs/ko/intlayer_CMS.md +5 -141
  65. package/docs/ko/live-sync.md +187 -0
  66. package/docs/ko/releases/v9.md +45 -1
  67. package/docs/nl/cli/index.md +1 -1
  68. package/docs/nl/configuration.md +45 -1
  69. package/docs/pl/cli/index.md +1 -1
  70. package/docs/pl/configuration.md +45 -1
  71. package/docs/pl/intlayer_CMS.md +5 -139
  72. package/docs/pl/live-sync.md +185 -0
  73. package/docs/pl/releases/v9.md +45 -1
  74. package/docs/pt/cli/index.md +1 -1
  75. package/docs/pt/configuration.md +45 -1
  76. package/docs/pt/intlayer_CMS.md +5 -143
  77. package/docs/pt/live-sync.md +174 -0
  78. package/docs/pt/releases/v9.md +45 -1
  79. package/docs/ru/cli/index.md +1 -1
  80. package/docs/ru/configuration.md +42 -1
  81. package/docs/ru/intlayer_CMS.md +5 -139
  82. package/docs/ru/live-sync.md +185 -0
  83. package/docs/ru/releases/v9.md +45 -1
  84. package/docs/tr/cli/index.md +1 -1
  85. package/docs/tr/configuration.md +42 -1
  86. package/docs/tr/intlayer_CMS.md +5 -127
  87. package/docs/tr/live-sync.md +173 -0
  88. package/docs/tr/releases/v9.md +45 -1
  89. package/docs/uk/cli/index.md +1 -1
  90. package/docs/uk/configuration.md +42 -1
  91. package/docs/uk/intlayer_CMS.md +5 -139
  92. package/docs/uk/live-sync.md +185 -0
  93. package/docs/uk/releases/v9.md +45 -1
  94. package/docs/ur/cli/index.md +1 -1
  95. package/docs/ur/configuration.md +45 -1
  96. package/docs/vi/cli/index.md +1 -1
  97. package/docs/vi/configuration.md +42 -1
  98. package/docs/vi/intlayer_CMS.md +5 -139
  99. package/docs/vi/live-sync.md +185 -0
  100. package/docs/vi/releases/v9.md +45 -1
  101. package/docs/zh/cli/index.md +1 -1
  102. package/docs/zh/configuration.md +42 -1
  103. package/docs/zh/intlayer_CMS.md +5 -129
  104. package/docs/zh/live-sync.md +175 -0
  105. package/docs/zh/releases/v9.md +45 -1
  106. package/package.json +7 -7
  107. package/src/generated/docs.entry.ts +40 -0
@@ -0,0 +1,185 @@
1
+ ---
2
+ createdAt: 2026-07-08
3
+ updatedAt: 2026-07-08
4
+ title: Sinkronisasi langsung | Refleksikan perubahan konten CMS saat runtime
5
+ description: Biarkan aplikasi Anda merefleksikan perubahan konten Intlayer CMS saat runtime, tanpa perlu build ulang atau deploy ulang.
6
+ keywords:
7
+ - Sinkronisasi langsung
8
+ - Live Sync
9
+ - CMS
10
+ - Editor Visual
11
+ - Internasionalisasi
12
+ - Dokumentasi
13
+ - Intlayer
14
+ - Next.js
15
+ - Vite
16
+ history:
17
+ - version: 9.0.0
18
+ date: 2026-07-08
19
+ changes: "Dipindahkan dari dokumentasi Intlayer CMS ke halamannya sendiri"
20
+ - version: 6.0.1
21
+ date: 2025-09-22
22
+ changes: "Menambahkan dokumentasi live sync"
23
+ - version: 6.0.0
24
+ date: 2025-09-04
25
+ changes: "Mengganti field `hotReload` dengan `liveSync`"
26
+ author: aymericzip
27
+ ---
28
+
29
+ # Sinkronisasi langsung
30
+
31
+ Sinkronisasi Langsung memungkinkan aplikasi Anda mencerminkan perubahan konten CMS secara real-time. Tidak perlu membangun ulang atau menerapkan ulang. Saat diaktifkan, pembaruan dikirimkan ke server Sinkronisasi Langsung yang menyegarkan kamus yang dibaca aplikasi Anda.
32
+
33
+ ## Daftar Isi
34
+
35
+ <TOC/>
36
+
37
+ ---
38
+
39
+ ## Mengaktifkan Sinkronisasi langsung
40
+
41
+ Aktifkan Sinkronisasi Langsung dengan memperbarui konfigurasi Intlayer Anda:
42
+
43
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
44
+ import type { IntlayerConfig } from "intlayer";
45
+
46
+ const config: IntlayerConfig = {
47
+ // ... pengaturan konfigurasi lainnya
48
+ editor: {
49
+ /**
50
+ * Mengaktifkan hot reloading konfigurasi locale saat perubahan terdeteksi.
51
+ * Misalnya, ketika sebuah kamus ditambahkan atau diperbarui, aplikasi akan memperbarui
52
+ * konten yang ditampilkan pada halaman.
53
+ *
54
+ * Karena hot reloading memerlukan koneksi terus-menerus ke server, fitur ini
55
+ * hanya tersedia untuk klien dengan paket `enterprise`.
56
+ *
57
+ * Default: false
58
+ */
59
+ liveSync: true,
60
+ },
61
+ dictionary: {
62
+ /**
63
+ * Mengontrol bagaimana kamus diimpor:
64
+ *
65
+ * - "live": Kamus diambil secara dinamis menggunakan Live Sync API.
66
+ * Menggantikan useIntlayer dengan useDictionaryDynamic.
67
+ *
68
+ * Catatan: Mode live menggunakan Live Sync API untuk mengambil kamus. Jika panggilan API
69
+ * gagal, kamus diimpor secara dinamis.
70
+ * Catatan: Hanya kamus dengan konten jarak jauh dan flag "live" yang menggunakan mode live.
71
+ * Yang lain menggunakan mode dinamis untuk kinerja.
72
+ */
73
+ importMode: "fetch",
74
+ },
75
+ };
76
+
77
+ export default config;
78
+ ```
79
+
80
+ Mulai server Live Sync untuk membungkus aplikasi Anda:
81
+
82
+ Contoh menggunakan server mandiri:
83
+
84
+ ```json5 fileName="package.json"
85
+ {
86
+ "scripts": {
87
+ // ... skrip lainnya
88
+ "live:start": "npx intlayer live",
89
+ },
90
+ }
91
+ ```
92
+
93
+ Anda juga dapat menggunakan server aplikasi Anda secara paralel dengan menggunakan argumen `--process`.
94
+
95
+ Contoh menggunakan Next.js:
96
+
97
+ ```json5 fileName="package.json"
98
+ {
99
+ "scripts": {
100
+ // ... skrip lainnya
101
+ "build": "next build",
102
+ "dev": "next dev",
103
+ "start": "npx intlayer live --with 'next start'",
104
+ },
105
+ }
106
+ ```
107
+
108
+ Contoh menggunakan Vite:
109
+
110
+ ```json5 fileName="package.json"
111
+ {
112
+ "scripts": {
113
+ // ... skrip lainnya
114
+ "build": "vite build",
115
+ "dev": "vite dev",
116
+ "start": "npx intlayer live --with 'vite start'",
117
+ },
118
+ }
119
+ ```
120
+
121
+ Server Live Sync membungkus aplikasi Anda dan secara otomatis menerapkan konten yang diperbarui saat konten tersebut tiba.
122
+
123
+ Untuk menerima notifikasi perubahan dari CMS, server Live Sync mempertahankan koneksi SSE ke backend. Ketika konten berubah di CMS, backend meneruskan pembaruan ke server Live Sync, yang kemudian menulis kamus baru. Aplikasi Anda akan mencerminkan pembaruan tersebut pada navigasi berikutnya atau saat memuat ulang browser, tidak perlu membangun ulang.
124
+
125
+ Diagram alur (CMS/Backend -> Server Live Sync -> Server Aplikasi -> Frontend):
126
+
127
+ ![Alur Live Sync CMS/Backend/Server Live Sync/Server Aplikasi/Frontend](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
128
+
129
+ Cara kerjanya:
130
+
131
+ ![Skema Logika Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
132
+
133
+ ## Alur kerja pengembangan (lokal)
134
+
135
+ - Dalam pengembangan, semua kamus jarak jauh diambil saat aplikasi dimulai, sehingga Anda dapat menguji pembaruan dengan cepat.
136
+ - Untuk menguji Live Sync secara lokal dengan Next.js, bungkus server dev Anda:
137
+
138
+ ```json5 fileName="package.json"
139
+ {
140
+ "scripts": {
141
+ // ... skrip lainnya
142
+ "dev": "npx intlayer live --with 'next dev'",
143
+ // "dev": "npx intlayer live --with 'vite dev'", // Untuk Vite
144
+ },
145
+ }
146
+ ```
147
+
148
+ Aktifkan optimasi agar Intlayer menerapkan transformasi impor Live selama pengembangan:
149
+
150
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
151
+ import type { IntlayerConfig } from "intlayer";
152
+
153
+ const config: IntlayerConfig = {
154
+ editor: {
155
+ applicationURL: "http://localhost:5173",
156
+ liveSyncURL: "http://localhost:4000",
157
+ liveSync: true,
158
+ },
159
+ dictionary: {
160
+ importMode: "fetch",
161
+ },
162
+ build: {
163
+ optimize: true,
164
+ },
165
+ };
166
+
167
+ export default config;
168
+ ```
169
+
170
+ Pengaturan ini membungkus server dev Anda dengan server Live Sync, mengambil kamus jarak jauh saat startup, dan mengalirkan pembaruan dari CMS melalui SSE. Segarkan halaman untuk melihat perubahan.
171
+
172
+ ## Catatan dan batasan
173
+
174
+ - Tambahkan origin live sync ke kebijakan keamanan situs Anda (CSP). Pastikan URL live sync diizinkan dalam `connect-src` (dan `frame-ancestors` jika relevan).
175
+ - Live Sync tidak berfungsi dengan output statis. Untuk Next.js, halaman harus dinamis agar dapat menerima pembaruan saat runtime (misalnya, gunakan `generateStaticParams`, `generateMetadata`, `getServerSideProps`, atau `getStaticProps` secara tepat untuk menghindari batasan hanya statis penuh).
176
+ - Di CMS, setiap kamus memiliki flag `live`. Hanya kamus dengan `live=true` yang diambil melalui API live sync; yang lain diimpor secara dinamis dan tetap tidak berubah saat runtime.
177
+ - Flag `live` dievaluasi untuk setiap kamus saat build. Jika konten jarak jauh tidak diberi flag `live=true` selama build, Anda harus membangun ulang untuk mengaktifkan Live Sync untuk kamus tersebut.
178
+ - Server live sync harus dapat menulis ke `.intlayer`. Dalam container, pastikan akses tulis ke `/.intlayer`.
179
+
180
+ ## Tautan berguna
181
+
182
+ - [Intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_CMS.md)
183
+ - [Editor Visual Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_visual_editor.md)
184
+ - [Referensi Konfigurasi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/configuration.md)
185
+ - [Panduan Self-Hosting](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/self_hosting.md)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-06-14
3
- updatedAt: 2026-06-29
3
+ updatedAt: 2026-07-08
4
4
  title: Intlayer v9 Baru - Apa yang baru?
5
5
  description: Temukan apa yang baru di Intlayer v9. Memperkenalkan paket kompatibilitas drop-in untuk pustaka i18n populer dan dukungan untuk Collections dan Variants.
6
6
  keywords:
@@ -203,6 +203,49 @@ const product = useIntlayer("product-copy", {
203
203
 
204
204
  ---
205
205
 
206
+ ## `@intlayer/analytics`: pelacakan eksposur konten & pengujian A/B
207
+
208
+ Paket opsional baru, [`@intlayer/analytics`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md), memberi tahu Anda konten apa yang benar-benar ditampilkan kepada pengunjung Anda — dan melengkapi **Collections & Variants** dengan memungkinkan Anda melakukan pengujian A/B pada konten serta mengukur konversi per varian.
209
+
210
+ - **Pelacakan tingkat provider**: `IntlayerProvider` (React / Next.js / React Native) secara otomatis mencatat peristiwa `page_view` saat memuat, berpindah rute, dan berganti locale.
211
+ - **Pelacakan tingkat node**: setiap resolusi `useIntlayer` melaporkan peristiwa `content_exposure` — kunci dictionary, key path, locale mana, dan (jika berlaku) **varian** A/B mana yang ditampilkan. Eksposur berulang pada node yang sama dalam satu jendela flush digabungkan menjadi satu peristiwa.
212
+ - **Penetapan A/B deterministik**: `getVariant(experimentKey, variants)` menetapkan varian ke setiap sesi **tanpa round-trip ke server**, sehingga tidak ada kedipan sebelum render pertama.
213
+ - **`useConversion()`**: mengaitkan sebuah goal (pendaftaran, klik, pembelian…) dengan varian yang dilihat sesi tersebut.
214
+ - **Tanpa biaya jika tidak dipasang**: pola tree-shakeable yang sama seperti `@intlayer/editor` — `import()` dinamis yang dibungkus `try/catch`, ditambah variabel lingkungan waktu build (`INTLAYER_ANALYTICS_ENABLED`) yang menghapus seluruh integrasi melalui dead-code elimination untuk aplikasi yang tidak mengaktifkannya.
215
+ - **Tanpa skema konfigurasi baru**: menggunakan kembali `editor.backendURL` (endpoint pengiriman / self-hosting) dan `editor.clientId` (kunci proyek, sekaligus saklar pengaktif).
216
+ - **Menghormati privasi**: hashing sesi anonim (SHA-256, tanpa menyimpan id mentah), tanpa penyimpanan IP, geolokasi kasar hanya berdasarkan negara, permintaan dikirim secara batch kira-kira setiap 20 detik.
217
+ - **Dashboard**: halaman **Analytics** baru (muncul di sidebar setelah proyek dipilih) menampilkan pengguna aktif, pengguna hari ini, pengguna 7/30/90 hari terakhir, grafik evolusi pengunjung, serta rincian Locale vs Lokasi.
218
+
219
+ ```tsx fileName="CTAButton.tsx" codeFormat="tsx"
220
+ import { useConversion } from "react-intlayer";
221
+
222
+ const CTAButton = () => {
223
+ const trackConversion = useConversion();
224
+
225
+ return (
226
+ <button
227
+ onClick={() =>
228
+ trackConversion({
229
+ experimentKey: "homepage-hero",
230
+ variant: "black_friday",
231
+ goal: "cta_click",
232
+ })
233
+ }
234
+ >
235
+ Get started
236
+ </button>
237
+ );
238
+ };
239
+ ```
240
+
241
+ ```bash packageManager="npm"
242
+ npm install @intlayer/analytics
243
+ ```
244
+
245
+ Sudah tersedia hari ini untuk React, Next.js, dan React Native (melalui `react-intlayer`); binding framework lain (Vue, Svelte, Angular, …) direncanakan, mengikuti pola rilis yang sama seperti `@intlayer/editor`. Lihat [dokumentasi Analytics](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md) untuk panduan lengkap.
246
+
247
+ ---
248
+
206
249
  ## Vite Plugin: Bundled Compiler & Proxy
207
250
 
208
251
  Plugin Vite `intlayer()` sekarang menggabungkan **compiler** dan **locale-routing proxy** secara langsung, sehingga sebagian besar proyek hanya memerlukan satu plugin di `vite.config.ts`:
@@ -324,5 +367,6 @@ Jika Anda memperbarui dari v8, perhatikan bahwa v9 tidak menyertakan breaking ch
324
367
 
325
368
  - [Panduan Compat Adapter Packages](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/compat/index.md)
326
369
  - [Dynamic Dictionaries - Collections & Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dynamic_dictionaries/index.md)
370
+ - [Analytics - Pelacakan eksposur konten & pengujian A/B](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md)
327
371
  - [Referensi Konfigurasi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/configuration.md)
328
372
  - [SDK CMS - Akses terprogram dengan @intlayer/api](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_CMS.md)
@@ -125,7 +125,7 @@ Per vedere come configurare le lingue disponibili o altri parametri, fai riferim
125
125
 
126
126
  ### Autenticazione
127
127
 
128
- - **[Login](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/login.md)** - Autenticati con l'Intlayer CMS e ottieni le credenziali di accesso
128
+ - **[Login](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/login.md)** - Autenticati con l'Intlayer CMS e ottieni le credenziali di accesso
129
129
 
130
130
  ### Comandi principali
131
131
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-06-23
3
+ updatedAt: 2026-07-11
4
4
  title: Configurazione
5
5
  description: Scopri come configurare Intlayer per la tua applicazione. Comprendi le diverse impostazioni e opzioni disponibili per personalizzare Intlayer secondo le tue necessità.
6
6
  keywords:
@@ -14,6 +14,9 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 9.0.0
18
+ date: 2026-07-11
19
+ changes: "Aggiunta la configurazione `analytics`"
17
20
  - version: 9.0.0
18
21
  date: 2026-06-24
19
22
  changes: "Add `enableProxy` option to the routing configuration"
@@ -355,6 +358,30 @@ const config: IntlayerConfig = {
355
358
  liveSync: true,
356
359
  },
357
360
 
361
+ /**
362
+ * Configurazione degli analytics.
363
+ */
364
+ analytics: {
365
+ /**
366
+ * Se la raccolta degli analytics è abilitata (visualizzazioni di pagina, esposizioni di contenuto, eventi A/B).
367
+ * Richiede che `editor.clientId` sia impostato per l'attribuzione.
368
+ * Predefinito: false
369
+ */
370
+ enabled: true,
371
+
372
+ /**
373
+ * Millisecondi tra gli invii automatici in batch al backend.
374
+ * Predefinito: 20000
375
+ */
376
+ flushInterval: 20000,
377
+
378
+ /**
379
+ * Frazione di sessioni da registrare, da 0 (nessuna) a 1 (tutte).
380
+ * Predefinito: 1
381
+ */
382
+ sampleRate: 1,
383
+ },
384
+
358
385
  /**
359
386
  * Impostazioni per le traduzioni e la generazione tramite IA.
360
387
  */
@@ -671,6 +698,20 @@ Definisce le impostazioni per l'editor visuale, incluse la porta del server e lo
671
698
 
672
699
  ---
673
700
 
701
+ ### Configurazione Analytics (Analytics)
702
+
703
+ Definisce le impostazioni relative agli analytics di Intlayer: la raccolta di quale contenuto viene effettivamente mostrato agli utenti (visualizzazioni di pagina, esposizioni di contenuto) e il supporto ai test A/B sui contenuti.
704
+
705
+ Gli analytics sono rigorosamente opt-in: non viene raccolto nulla a meno che `analytics.enabled` non sia esplicitamente impostato su `true` **e** una chiave di progetto (`editor.clientId`) sia configurata per l'attribuzione. Quando disabilitati (impostazione predefinita), l'intera integrazione analytics viene eliminata dal bundle dell'applicazione (dead-code elimination).
706
+
707
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
708
+ | --------------- | ------------------------------------------------------------------------------------------------------ | --------- | ----------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
709
+ | `enabled` | Abilita la raccolta degli analytics (visualizzazioni di pagina, esposizioni di contenuto, eventi A/B). | `boolean` | `false` | `true` | Richiede che `editor.clientId` sia impostato per l'attribuzione; altrimenti gli analytics rimangono disabilitati anche se `enabled` è `true`. |
710
+ | `flushInterval` | Millisecondi tra gli invii automatici in batch al backend. | `number` | `20000` | `10000` | |
711
+ | `sampleRate` | Frazione di sessioni da registrare, da `0` (nessuna) a `1` (tutte). | `number` | `1` | `0.5` | Il campionamento è deterministico per sessione, quindi una sessione registrata riporta tutti i suoi eventi (nessun funnel parziale). |
712
+
713
+ ---
714
+
674
715
  ### Configurazione Routing (Routing)
675
716
 
676
717
  Impostazioni che controllano il comportamento del routing, inclusa la struttura dell'URL, lo storage del locale e la gestione del middleware.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-08-23
3
- updatedAt: 2026-06-30
3
+ updatedAt: 2026-07-08
4
4
  title: Intlayer CMS | Esternalizza i tuoi contenuti nel CMS di Intlayer
5
5
  description: Esternalizza i tuoi contenuti nel CMS di Intlayer per delegare la gestione dei tuoi contenuti al tuo team.
6
6
  keywords:
@@ -18,6 +18,9 @@ slugs:
18
18
  - cms
19
19
  youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
20
20
  history:
21
+ - version: 9.0.0
22
+ date: 2026-07-08
23
+ changes: "Spostata la sezione «Sincronizzazione live» nella propria pagina (live-sync.md), lasciando qui una breve introduzione con link"
21
24
  - version: 9.0.0
22
25
  date: 2026-06-30
23
26
  changes: "Aggiunta sezione Self-Hosting: bootstrap Docker Compose, inventario dei servizi, configurazione SDK, funzionalità opzionali e note di aggiornamento"
@@ -248,133 +251,7 @@ Successivamente potrai visualizzare e gestire il tuo dizionario nel [Intlayer CM
248
251
 
249
252
  La Sincronizzazione Live consente alla tua app di riflettere le modifiche ai contenuti del CMS in tempo reale. Non è necessario ricostruire o ridistribuire. Quando abilitata, gli aggiornamenti vengono trasmessi a un server di Sincronizzazione Live che aggiorna i dizionari letti dalla tua applicazione.
250
253
 
251
- > Live Sync richiede una connessione continua al server ed è disponibile nel piano enterprise.
252
-
253
- Abilita Live Sync aggiornando la configurazione di Intlayer:
254
-
255
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
256
- import type { IntlayerConfig } from "intlayer";
257
-
258
- const config: IntlayerConfig = {
259
- // ... altre impostazioni di configurazione
260
- editor: {
261
- /**
262
- * Abilita il caricamento a caldo delle configurazioni locali quando vengono rilevate modifiche.
263
- * Ad esempio, quando un dizionario viene aggiunto o aggiornato, l'applicazione aggiorna
264
- * il contenuto visualizzato nella pagina.
265
- *
266
- * Poiché il caricamento a caldo richiede una connessione continua al server, è
267
- * disponibile solo per i clienti del piano `enterprise`.
268
- *
269
- * Predefinito: false
270
- */
271
- liveSync: true,
272
- },
273
- dictionary: {
274
- /**
275
- * Controlla come vengono importati i dizionari:
276
- *
277
- * - "live": I dizionari vengono recuperati dinamicamente utilizzando l'API Live Sync.
278
- * Sostituisce useIntlayer con useDictionaryDynamic.
279
- *
280
- * Nota: La modalità live utilizza l'API Live Sync per recuperare i dizionari. Se la chiamata API
281
- * fallisce, i dizionari vengono importati dinamicamente.
282
- * Nota: Solo i dizionari con contenuto remoto e flag "live" utilizzano la modalità live.
283
- * Gli altri usano la modalità dinamica per le prestazioni.
284
- */
285
- importMode: "fetch",
286
- },
287
- };
288
-
289
- export default config;
290
- ```
291
-
292
- Avvia il server Live Sync per avvolgere la tua applicazione:
293
-
294
- Esempio con Next.js:
295
-
296
- ```json5 fileName="package.json"
297
- {
298
- "scripts": {
299
- // ... altri script
300
- "build": "next build",
301
- "dev": "next dev",
302
- "start": "npx intlayer live --with 'next start'",
303
- },
304
- }
305
- ```
306
-
307
- Esempio con Vite:
308
-
309
- ```json5 fileName="package.json"
310
- {
311
- "scripts": {
312
- // ... altri script
313
- "build": "vite build",
314
- "dev": "vite dev",
315
- "start": "npx intlayer live --with 'vite start'",
316
- },
317
- }
318
- ```
319
-
320
- Il server Live Sync avvolge la tua applicazione e applica automaticamente i contenuti aggiornati non appena arrivano.
321
-
322
- Per ricevere notifiche di modifica dal CMS, il server Live Sync mantiene una connessione SSE con il backend. Quando il contenuto cambia nel CMS, il backend inoltra l'aggiornamento al server Live Sync, che scrive i nuovi dizionari. La tua applicazione rifletterà l'aggiornamento alla successiva navigazione o al reload del browser, non è necessario ricostruire.
323
-
324
- Diagramma di flusso (CMS/Backend -> Server Live Sync -> Server Applicazione -> Frontend):
325
-
326
- ![Schema Logica Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
327
-
328
- Come funziona:
329
-
330
- ![Schema Flusso Live Sync CMS/Backend/Server Live Sync/Server Applicazione/Frontend](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
331
-
332
- ### Flusso di lavoro di sviluppo (locale)
333
-
334
- - In fase di sviluppo, tutti i dizionari remoti vengono recuperati all'avvio dell'applicazione, così puoi testare rapidamente gli aggiornamenti.
335
- - Per testare Live Sync localmente con Next.js, avvolgi il tuo server di sviluppo:
336
-
337
- ```json5 fileName="package.json"
338
- {
339
- "scripts": {
340
- // ... altri script
341
- "dev": "npx intlayer live --with 'next dev'",
342
- // "dev": "npx intlayer live --with 'vite dev'", // Per Vite
343
- },
344
- }
345
- ```
346
-
347
- Abilita l'ottimizzazione affinché Intlayer applichi le trasformazioni di importazione Live durante lo sviluppo:
348
-
349
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
350
- import type { IntlayerConfig } from "intlayer";
351
-
352
- const config: IntlayerConfig = {
353
- editor: {
354
- applicationURL: "http://localhost:5173",
355
- liveSyncURL: "http://localhost:4000",
356
- liveSync: true,
357
- },
358
- dictionary: {
359
- importMode: "fetch",
360
- },
361
- build: {
362
- optimize: true,
363
- },
364
- };
365
-
366
- export default config;
367
- ```
368
-
369
- Questa configurazione avvolge il tuo server di sviluppo con il server Live Sync, recupera i dizionari remoti all'avvio e trasmette aggiornamenti dal CMS tramite SSE. Aggiorna la pagina per vedere le modifiche.
370
-
371
- Note e vincoli:
372
-
373
- - Aggiungi l'origine del live sync alla tua politica di sicurezza del sito (CSP). Assicurati che l'URL del live sync sia consentito in `connect-src` (e in `frame-ancestors` se pertinente).
374
- - Live Sync non funziona con output statico. Per Next.js, la pagina deve essere dinamica per ricevere aggiornamenti in fase di esecuzione (ad esempio, usa `generateStaticParams`, `generateMetadata`, `getServerSideProps` o `getStaticProps` in modo appropriato per evitare vincoli di solo statico completo).
375
- - Nel CMS, ogni dizionario ha un flag `live`. Solo i dizionari con `live=true` vengono recuperati tramite l'API di live sync; gli altri vengono importati dinamicamente e rimangono invariati a runtime.
376
- - Il flag `live` viene valutato per ogni dizionario al momento della build. Se il contenuto remoto non era contrassegnato come `live=true` durante la build, è necessario ricostruire per abilitare Live Sync per quel dizionario.
377
- - Il server di live sync deve poter scrivere nella cartella `.intlayer`. Nei container, assicurarsi che sia garantito l'accesso in scrittura a `/.intlayer`.
254
+ Per la guida completa alla configurazione (attivazione, avvio del server Live Sync, flusso di lavoro di sviluppo locale e limitazioni), consulta la [documentazione di Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/live-sync.md).
378
255
 
379
256
  ## Self-Hosting
380
257
 
@@ -0,0 +1,174 @@
1
+ ---
2
+ createdAt: 2026-07-08
3
+ updatedAt: 2026-07-08
4
+ title: Sincronizzazione live | Rifletti le modifiche dei contenuti del CMS in tempo reale
5
+ description: Consenti alla tua applicazione di riflettere le modifiche dei contenuti del CMS Intlayer in tempo reale, senza ricompilazione né nuova distribuzione.
6
+ keywords:
7
+ - Sincronizzazione live
8
+ - Live Sync
9
+ - CMS
10
+ - Editor Visivo
11
+ - Internazionalizzazione
12
+ - Documentazione
13
+ - Intlayer
14
+ - Next.js
15
+ - Vite
16
+ history:
17
+ - version: 9.0.0
18
+ date: 2026-07-08
19
+ changes: "Spostato dalla documentazione del CMS Intlayer in una pagina dedicata"
20
+ - version: 6.0.1
21
+ date: 2025-09-22
22
+ changes: "Aggiunta documentazione sulla sincronizzazione live"
23
+ - version: 6.0.0
24
+ date: 2025-09-04
25
+ changes: "Sostituito il campo `hotReload` con `liveSync`"
26
+ author: aymericzip
27
+ ---
28
+
29
+ # Sincronizzazione live
30
+
31
+ La Sincronizzazione Live consente alla tua app di riflettere le modifiche ai contenuti del CMS in tempo reale. Non è necessario ricostruire o ridistribuire. Quando abilitata, gli aggiornamenti vengono trasmessi a un server di Sincronizzazione Live che aggiorna i dizionari letti dalla tua applicazione.
32
+
33
+ ## Indice
34
+
35
+ <TOC/>
36
+
37
+ ---
38
+
39
+ ## Attivare la sincronizzazione live
40
+
41
+ > Live Sync richiede una connessione continua al server ed è disponibile nel piano enterprise.
42
+
43
+ Abilita Live Sync aggiornando la configurazione di Intlayer:
44
+
45
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
46
+ import type { IntlayerConfig } from "intlayer";
47
+
48
+ const config: IntlayerConfig = {
49
+ // ... altre impostazioni di configurazione
50
+ editor: {
51
+ /**
52
+ * Abilita il caricamento a caldo delle configurazioni locali quando vengono rilevate modifiche.
53
+ * Ad esempio, quando un dizionario viene aggiunto o aggiornato, l'applicazione aggiorna
54
+ * il contenuto visualizzato nella pagina.
55
+ *
56
+ * Poiché il caricamento a caldo richiede una connessione continua al server, è
57
+ * disponibile solo per i clienti del piano `enterprise`.
58
+ *
59
+ * Predefinito: false
60
+ */
61
+ liveSync: true,
62
+ },
63
+ dictionary: {
64
+ /**
65
+ * Controlla come vengono importati i dizionari:
66
+ *
67
+ * - "live": I dizionari vengono recuperati dinamicamente utilizzando l'API Live Sync.
68
+ * Sostituisce useIntlayer con useDictionaryDynamic.
69
+ *
70
+ * Nota: La modalità live utilizza l'API Live Sync per recuperare i dizionari. Se la chiamata API
71
+ * fallisce, i dizionari vengono importati dinamicamente.
72
+ * Nota: Solo i dizionari con contenuto remoto e flag "live" utilizzano la modalità live.
73
+ * Gli altri usano la modalità dinamica per le prestazioni.
74
+ */
75
+ importMode: "fetch",
76
+ },
77
+ };
78
+
79
+ export default config;
80
+ ```
81
+
82
+ Avvia il server Live Sync per avvolgere la tua applicazione:
83
+
84
+ Esempio con Next.js:
85
+
86
+ ```json5 fileName="package.json"
87
+ {
88
+ "scripts": {
89
+ // ... altri script
90
+ "build": "next build",
91
+ "dev": "next dev",
92
+ "start": "npx intlayer live --with 'next start'",
93
+ },
94
+ }
95
+ ```
96
+
97
+ Esempio con Vite:
98
+
99
+ ```json5 fileName="package.json"
100
+ {
101
+ "scripts": {
102
+ // ... altri script
103
+ "build": "vite build",
104
+ "dev": "vite dev",
105
+ "start": "npx intlayer live --with 'vite start'",
106
+ },
107
+ }
108
+ ```
109
+
110
+ Il server Live Sync avvolge la tua applicazione e applica automaticamente i contenuti aggiornati non appena arrivano.
111
+
112
+ Per ricevere notifiche di modifica dal CMS, il server Live Sync mantiene una connessione SSE con il backend. Quando il contenuto cambia nel CMS, il backend inoltra l'aggiornamento al server Live Sync, che scrive i nuovi dizionari. La tua applicazione rifletterà l'aggiornamento alla successiva navigazione o al reload del browser, non è necessario ricostruire.
113
+
114
+ Diagramma di flusso (CMS/Backend -> Server Live Sync -> Server Applicazione -> Frontend):
115
+
116
+ ![Schema Logica Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
117
+
118
+ Come funziona:
119
+
120
+ ![Schema Flusso Live Sync CMS/Backend/Server Live Sync/Server Applicazione/Frontend](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
121
+
122
+ ## Flusso di lavoro di sviluppo (locale)
123
+
124
+ - In fase di sviluppo, tutti i dizionari remoti vengono recuperati all'avvio dell'applicazione, così puoi testare rapidamente gli aggiornamenti.
125
+ - Per testare Live Sync localmente con Next.js, avvolgi il tuo server di sviluppo:
126
+
127
+ ```json5 fileName="package.json"
128
+ {
129
+ "scripts": {
130
+ // ... altri script
131
+ "dev": "npx intlayer live --with 'next dev'",
132
+ // "dev": "npx intlayer live --with 'vite dev'", // Per Vite
133
+ },
134
+ }
135
+ ```
136
+
137
+ Abilita l'ottimizzazione affinché Intlayer applichi le trasformazioni di importazione Live durante lo sviluppo:
138
+
139
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
140
+ import type { IntlayerConfig } from "intlayer";
141
+
142
+ const config: IntlayerConfig = {
143
+ editor: {
144
+ applicationURL: "http://localhost:5173",
145
+ liveSyncURL: "http://localhost:4000",
146
+ liveSync: true,
147
+ },
148
+ dictionary: {
149
+ importMode: "fetch",
150
+ },
151
+ build: {
152
+ optimize: true,
153
+ },
154
+ };
155
+
156
+ export default config;
157
+ ```
158
+
159
+ Questa configurazione avvolge il tuo server di sviluppo con il server Live Sync, recupera i dizionari remoti all'avvio e trasmette aggiornamenti dal CMS tramite SSE. Aggiorna la pagina per vedere le modifiche.
160
+
161
+ ## Note e vincoli
162
+
163
+ - Aggiungi l'origine del live sync alla tua politica di sicurezza del sito (CSP). Assicurati che l'URL del live sync sia consentito in `connect-src` (e in `frame-ancestors` se pertinente).
164
+ - Live Sync non funziona con output statico. Per Next.js, la pagina deve essere dinamica per ricevere aggiornamenti in fase di esecuzione (ad esempio, usa `generateStaticParams`, `generateMetadata`, `getServerSideProps` o `getStaticProps` in modo appropriato per evitare vincoli di solo statico completo).
165
+ - Nel CMS, ogni dizionario ha un flag `live`. Solo i dizionari con `live=true` vengono recuperati tramite l'API di live sync; gli altri vengono importati dinamicamente e rimangono invariati a runtime.
166
+ - Il flag `live` viene valutato per ogni dizionario al momento della build. Se il contenuto remoto non era contrassegnato come `live=true` durante la build, è necessario ricostruire per abilitare Live Sync per quel dizionario.
167
+ - Il server di live sync deve poter scrivere nella cartella `.intlayer`. Nei container, assicurarsi che sia garantito l'accesso in scrittura a `/.intlayer`.
168
+
169
+ ## Link utili
170
+
171
+ - [CMS Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md)
172
+ - [Editor Visivo di Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md)
173
+ - [Riferimento di configurazione](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/configuration.md)
174
+ - [Guida al Self-Hosting](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/self_hosting.md)