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

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 (108) hide show
  1. package/blog/en/rag_powered_documentation_assistant.md +6 -0
  2. package/dist/cjs/generated/docs.entry.cjs +40 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +40 -0
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +2 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/cli/index.md +1 -1
  9. package/docs/ar/configuration.md +42 -1
  10. package/docs/ar/intlayer_CMS.md +5 -128
  11. package/docs/ar/live-sync.md +174 -0
  12. package/docs/ar/releases/v9.md +45 -1
  13. package/docs/bn/cli/index.md +1 -1
  14. package/docs/bn/configuration.md +45 -1
  15. package/docs/cs/cli/index.md +1 -1
  16. package/docs/cs/configuration.md +45 -1
  17. package/docs/de/cli/index.md +1 -1
  18. package/docs/de/configuration.md +42 -1
  19. package/docs/de/intlayer_CMS.md +5 -135
  20. package/docs/de/live-sync.md +174 -0
  21. package/docs/de/releases/v9.md +45 -1
  22. package/docs/en/analytics.md +222 -0
  23. package/docs/en/cli/index.md +1 -1
  24. package/docs/en/configuration.md +42 -1
  25. package/docs/en/intlayer_CMS.md +6 -140
  26. package/docs/en/live-sync.md +184 -0
  27. package/docs/en/releases/v9.md +53 -3
  28. package/docs/en-GB/cli/index.md +1 -1
  29. package/docs/en-GB/configuration.md +42 -1
  30. package/docs/en-GB/intlayer_CMS.md +5 -128
  31. package/docs/en-GB/live-sync.md +173 -0
  32. package/docs/en-GB/releases/v9.md +45 -1
  33. package/docs/es/cli/index.md +1 -1
  34. package/docs/es/configuration.md +42 -1
  35. package/docs/es/intlayer_CMS.md +5 -140
  36. package/docs/es/live-sync.md +176 -0
  37. package/docs/es/releases/v9.md +45 -1
  38. package/docs/fr/cli/index.md +1 -1
  39. package/docs/fr/configuration.md +42 -1
  40. package/docs/fr/intlayer_CMS.md +5 -135
  41. package/docs/fr/live-sync.md +174 -0
  42. package/docs/fr/releases/v9.md +45 -1
  43. package/docs/hi/cli/index.md +1 -1
  44. package/docs/hi/configuration.md +42 -1
  45. package/docs/hi/intlayer_CMS.md +5 -128
  46. package/docs/hi/live-sync.md +174 -0
  47. package/docs/hi/releases/v9.md +45 -1
  48. package/docs/id/cli/index.md +1 -1
  49. package/docs/id/configuration.md +42 -1
  50. package/docs/id/intlayer_CMS.md +5 -139
  51. package/docs/id/live-sync.md +185 -0
  52. package/docs/id/releases/v9.md +45 -1
  53. package/docs/it/cli/index.md +1 -1
  54. package/docs/it/configuration.md +42 -1
  55. package/docs/it/intlayer_CMS.md +5 -128
  56. package/docs/it/live-sync.md +174 -0
  57. package/docs/it/releases/v9.md +45 -1
  58. package/docs/ja/cli/index.md +1 -1
  59. package/docs/ja/configuration.md +42 -1
  60. package/docs/ja/intlayer_CMS.md +5 -139
  61. package/docs/ja/live-sync.md +185 -0
  62. package/docs/ja/releases/v9.md +45 -1
  63. package/docs/ko/cli/index.md +1 -1
  64. package/docs/ko/configuration.md +42 -1
  65. package/docs/ko/intlayer_CMS.md +5 -141
  66. package/docs/ko/live-sync.md +187 -0
  67. package/docs/ko/releases/v9.md +45 -1
  68. package/docs/nl/cli/index.md +1 -1
  69. package/docs/nl/configuration.md +45 -1
  70. package/docs/pl/cli/index.md +1 -1
  71. package/docs/pl/configuration.md +45 -1
  72. package/docs/pl/intlayer_CMS.md +5 -139
  73. package/docs/pl/live-sync.md +185 -0
  74. package/docs/pl/releases/v9.md +45 -1
  75. package/docs/pt/cli/index.md +1 -1
  76. package/docs/pt/configuration.md +45 -1
  77. package/docs/pt/intlayer_CMS.md +5 -143
  78. package/docs/pt/live-sync.md +174 -0
  79. package/docs/pt/releases/v9.md +45 -1
  80. package/docs/ru/cli/index.md +1 -1
  81. package/docs/ru/configuration.md +42 -1
  82. package/docs/ru/intlayer_CMS.md +5 -139
  83. package/docs/ru/live-sync.md +185 -0
  84. package/docs/ru/releases/v9.md +45 -1
  85. package/docs/tr/cli/index.md +1 -1
  86. package/docs/tr/configuration.md +42 -1
  87. package/docs/tr/intlayer_CMS.md +5 -127
  88. package/docs/tr/live-sync.md +173 -0
  89. package/docs/tr/releases/v9.md +45 -1
  90. package/docs/uk/cli/index.md +1 -1
  91. package/docs/uk/configuration.md +42 -1
  92. package/docs/uk/intlayer_CMS.md +5 -139
  93. package/docs/uk/live-sync.md +185 -0
  94. package/docs/uk/releases/v9.md +45 -1
  95. package/docs/ur/cli/index.md +1 -1
  96. package/docs/ur/configuration.md +45 -1
  97. package/docs/vi/cli/index.md +1 -1
  98. package/docs/vi/configuration.md +42 -1
  99. package/docs/vi/intlayer_CMS.md +5 -139
  100. package/docs/vi/live-sync.md +185 -0
  101. package/docs/vi/releases/v9.md +45 -1
  102. package/docs/zh/cli/index.md +1 -1
  103. package/docs/zh/configuration.md +42 -1
  104. package/docs/zh/intlayer_CMS.md +5 -129
  105. package/docs/zh/live-sync.md +175 -0
  106. package/docs/zh/releases/v9.md +45 -1
  107. package/package.json +7 -7
  108. package/src/generated/docs.entry.ts +40 -0
@@ -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 | Zewnętrzne zarządzanie treścią w Intlayer CMS
5
5
  description: Zewnętrzne zarządzanie treścią w Intlayer CMS, aby delegować zarządzanie treścią do Twojego zespołu.
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: "Przeniesiono sekcję „Synchronizacja na żywo” na osobną stronę (live-sync.md), pozostawiając tu krótkie wprowadzenie i link"
21
24
  - version: 9.0.0
22
25
  date: 2026-06-30
23
26
  changes: "Dodano sekcję samodzielnego hostowania"
@@ -248,144 +251,7 @@ Następnie będziesz mógł zobaczyć i zarządzać swoim słownikiem w [Intlaye
248
251
 
249
252
  Synchronizacja na żywo pozwala Twojej aplikacji odzwierciedlać zmiany treści CMS w czasie rzeczywistym. Nie jest wymagane ponowne budowanie ani wdrażanie. Po włączeniu aktualizacje są przesyłane do serwera synchronizacji na żywo, który odświeża słowniki odczytywane przez Twoją aplikację.
250
253
 
251
- Włącz synchronizację na żywo, aktualizując konfigurację Intlayer:
252
-
253
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
254
- import type { IntlayerConfig } from "intlayer";
255
-
256
- const config: IntlayerConfig = {
257
- // ... inne ustawienia konfiguracyjne
258
- editor: {
259
- /**
260
- * Włącza hot reloading konfiguracji lokalizacji, gdy wykryte zostaną zmiany.
261
- * Na przykład, gdy słownik zostanie dodany lub zaktualizowany, aplikacja aktualizuje
262
- * wyświetlaną na stronie zawartość.
263
- *
264
- * Ponieważ hot reloading wymaga ciągłego połączenia z serwerem,
265
- * jest dostępny tylko dla klientów planu `enterprise`.
266
- *
267
- * Domyślnie: false
268
- */
269
- liveSync: true,
270
- },
271
- dictionary: {
272
- /**
273
- * Kontroluje sposób importowania słowników:
274
- *
275
- * - "live": Słowniki są pobierane dynamicznie za pomocą API Live Sync.
276
- * Zastępuje useIntlayer funkcją useDictionaryDynamic.
277
- *
278
- * Uwaga: Tryb live korzysta z API Live Sync do pobierania słowników. Jeśli wywołanie API
279
- * zakończy się niepowodzeniem, słowniki są importowane dynamicznie.
280
- * Uwaga: Tryb live jest używany tylko dla słowników zdalnych i oznaczonych flagą "live".
281
- * Pozostałe używają trybu dynamicznego dla wydajności.
282
- */
283
- importMode: "fetch",
284
- },
285
- };
286
-
287
- export default config;
288
- ```
289
-
290
- Uruchom serwer Live Sync, aby otoczyć swoją aplikację:
291
-
292
- Przykład użycia samodzielnego serwera:
293
-
294
- ```json5 fileName="package.json"
295
- {
296
- "scripts": {
297
- // ... inne skrypty
298
- "live:start": "npx intlayer live",
299
- },
300
- }
301
- ```
302
-
303
- Możesz również używać swojego serwera aplikacji równolegle, korzystając z argumentu `--process`.
304
-
305
- Przykład użycia Next.js:
306
-
307
- ```json5 fileName="package.json"
308
- {
309
- "scripts": {
310
- // ... inne skrypty
311
- "build": "next build",
312
- "dev": "next dev",
313
- "start": "npx intlayer live --with 'next start'",
314
- },
315
- }
316
- ```
317
-
318
- Przykład użycia Vite:
319
-
320
- ```json5 fileName="package.json"
321
- {
322
- "scripts": {
323
- // ... inne skrypty
324
- "build": "vite build",
325
- "dev": "vite dev",
326
- "start": "npx intlayer live --with 'vite start'",
327
- },
328
- }
329
- ```
330
-
331
- Serwer Live Sync otacza Twoją aplikację i automatycznie stosuje zaktualizowaną zawartość w momencie jej pojawienia się.
332
-
333
- Aby otrzymywać powiadomienia o zmianach z CMS, serwer Live Sync utrzymuje połączenie SSE z backendem. Gdy zawartość w CMS ulega zmianie, backend przekazuje aktualizację do serwera Live Sync, który zapisuje nowe słowniki. Twoja aplikacja odzwierciedli aktualizację przy następnej nawigacji lub przeładowaniu przeglądarki, nie jest wymagane ponowne budowanie.
334
-
335
- Schemat przepływu (CMS/Backend -> Serwer Live Sync -> Serwer aplikacji -> Frontend):
336
-
337
- ![Schemat przepływu Live Sync CMS/Backend/Serwer Live Sync/Serwer aplikacji/Frontend](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
338
-
339
- Jak to działa:
340
-
341
- ![Schemat logiki Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
342
-
343
- ### Przebieg pracy podczas developmentu (lokalnie)
344
-
345
- - Podczas developmentu wszystkie zdalne słowniki są pobierane przy starcie aplikacji, dzięki czemu możesz szybko testować aktualizacje.
346
- - Aby przetestować Live Sync lokalnie z Next.js, opakuj swój serwer deweloperski:
347
-
348
- ```json5 fileName="package.json"
349
- {
350
- "scripts": {
351
- // ... inne skrypty
352
- "dev": "npx intlayer live --with 'next dev'",
353
- // "dev": "npx intlayer live --with 'vite dev'", // Dla Vite
354
- },
355
- }
356
- ```
357
-
358
- Włącz optymalizację, aby Intlayer stosował transformacje importu Live podczas developmentu:
359
-
360
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
361
- import type { IntlayerConfig } from "intlayer";
362
-
363
- const config: IntlayerConfig = {
364
- editor: {
365
- applicationURL: "http://localhost:5173",
366
- liveSyncURL: "http://localhost:4000",
367
- liveSync: true,
368
- },
369
- dictionary: {
370
- importMode: "fetch",
371
- },
372
- build: {
373
- optimize: true,
374
- },
375
- };
376
-
377
- export default config;
378
- ```
379
-
380
- To ustawienie owija Twój serwer deweloperski serwerem Live Sync, pobiera zdalne słowniki podczas uruchamiania i przesyła aktualizacje z CMS za pomocą SSE. Odśwież stronę, aby zobaczyć zmiany.
381
-
382
- Uwagi i ograniczenia:
383
-
384
- - Dodaj pochodzenie live sync do polityki bezpieczeństwa swojej strony (CSP). Upewnij się, że adres URL live sync jest dozwolony w `connect-src` (oraz `frame-ancestors`, jeśli ma to zastosowanie).
385
- - Live Sync nie działa ze statycznym outputem. W Next.js strona musi być dynamiczna, aby otrzymywać aktualizacje w czasie wykonywania (np. użyj `generateStaticParams`, `generateMetadata`, `getServerSideProps` lub `getStaticProps` odpowiednio, aby uniknąć pełnych ograniczeń statycznych).
386
- - W CMS każdy słownik ma flagę `live`. Tylko słowniki z `live=true` są pobierane przez API live sync; pozostałe są importowane dynamicznie i pozostają niezmienione w czasie wykonywania.
387
- - Flaga `live` jest oceniana dla każdego słownika podczas budowania (build time). Jeśli zdalna zawartość nie była oznaczona jako `live=true` podczas budowania (build time), musisz przebudować projekt, aby włączyć Live Sync dla tego słownika.
388
- - Serwer live sync musi mieć możliwość zapisu do `.intlayer`. W kontenerach upewnij się, że masz dostęp do zapisu do `/.intlayer`.
254
+ Pełny przewodnik po konfiguracji (włączanie, uruchamianie serwera Live Sync, lokalny przepływ pracy programistycznej i ograniczenia) znajdziesz w [dokumentacji Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/live-sync.md).
389
255
 
390
256
  ## Samodzielne hostowanie (Self-Hosting)
391
257
 
@@ -0,0 +1,185 @@
1
+ ---
2
+ createdAt: 2026-07-08
3
+ updatedAt: 2026-07-08
4
+ title: Synchronizacja na żywo | Odzwierciedlaj zmiany treści CMS w czasie rzeczywistym
5
+ description: Pozwól swojej aplikacji odzwierciedlać zmiany treści w Intlayer CMS w czasie działania, bez konieczności przebudowy czy ponownego wdrożenia.
6
+ keywords:
7
+ - Synchronizacja na żywo
8
+ - Live Sync
9
+ - CMS
10
+ - Edytor Wizualny
11
+ - Internacjonalizacja
12
+ - Dokumentacja
13
+ - Intlayer
14
+ - Next.js
15
+ - Vite
16
+ history:
17
+ - version: 9.0.0
18
+ date: 2026-07-08
19
+ changes: "Przeniesiono z dokumentacji Intlayer CMS na osobną stronę"
20
+ - version: 6.0.1
21
+ date: 2025-09-22
22
+ changes: "Dodano dokumentację synchronizacji na żywo"
23
+ - version: 6.0.0
24
+ date: 2025-09-04
25
+ changes: "Zastąpiono pole `hotReload` polem `liveSync`"
26
+ author: aymericzip
27
+ ---
28
+
29
+ # Synchronizacja na żywo
30
+
31
+ Synchronizacja na żywo pozwala Twojej aplikacji odzwierciedlać zmiany treści CMS w czasie rzeczywistym. Nie jest wymagane ponowne budowanie ani wdrażanie. Po włączeniu aktualizacje są przesyłane do serwera synchronizacji na żywo, który odświeża słowniki odczytywane przez Twoją aplikację.
32
+
33
+ ## Spis treści
34
+
35
+ <TOC/>
36
+
37
+ ---
38
+
39
+ ## Włączanie synchronizacji na żywo
40
+
41
+ Włącz synchronizację na żywo, aktualizując konfigurację Intlayer:
42
+
43
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
44
+ import type { IntlayerConfig } from "intlayer";
45
+
46
+ const config: IntlayerConfig = {
47
+ // ... inne ustawienia konfiguracyjne
48
+ editor: {
49
+ /**
50
+ * Włącza hot reloading konfiguracji lokalizacji, gdy wykryte zostaną zmiany.
51
+ * Na przykład, gdy słownik zostanie dodany lub zaktualizowany, aplikacja aktualizuje
52
+ * wyświetlaną na stronie zawartość.
53
+ *
54
+ * Ponieważ hot reloading wymaga ciągłego połączenia z serwerem,
55
+ * jest dostępny tylko dla klientów planu `enterprise`.
56
+ *
57
+ * Domyślnie: false
58
+ */
59
+ liveSync: true,
60
+ },
61
+ dictionary: {
62
+ /**
63
+ * Kontroluje sposób importowania słowników:
64
+ *
65
+ * - "live": Słowniki są pobierane dynamicznie za pomocą API Live Sync.
66
+ * Zastępuje useIntlayer funkcją useDictionaryDynamic.
67
+ *
68
+ * Uwaga: Tryb live korzysta z API Live Sync do pobierania słowników. Jeśli wywołanie API
69
+ * zakończy się niepowodzeniem, słowniki są importowane dynamicznie.
70
+ * Uwaga: Tryb live jest używany tylko dla słowników zdalnych i oznaczonych flagą "live".
71
+ * Pozostałe używają trybu dynamicznego dla wydajności.
72
+ */
73
+ importMode: "fetch",
74
+ },
75
+ };
76
+
77
+ export default config;
78
+ ```
79
+
80
+ Uruchom serwer Live Sync, aby otoczyć swoją aplikację:
81
+
82
+ Przykład użycia samodzielnego serwera:
83
+
84
+ ```json5 fileName="package.json"
85
+ {
86
+ "scripts": {
87
+ // ... inne skrypty
88
+ "live:start": "npx intlayer live",
89
+ },
90
+ }
91
+ ```
92
+
93
+ Możesz również używać swojego serwera aplikacji równolegle, korzystając z argumentu `--process`.
94
+
95
+ Przykład użycia Next.js:
96
+
97
+ ```json5 fileName="package.json"
98
+ {
99
+ "scripts": {
100
+ // ... inne skrypty
101
+ "build": "next build",
102
+ "dev": "next dev",
103
+ "start": "npx intlayer live --with 'next start'",
104
+ },
105
+ }
106
+ ```
107
+
108
+ Przykład użycia Vite:
109
+
110
+ ```json5 fileName="package.json"
111
+ {
112
+ "scripts": {
113
+ // ... inne skrypty
114
+ "build": "vite build",
115
+ "dev": "vite dev",
116
+ "start": "npx intlayer live --with 'vite start'",
117
+ },
118
+ }
119
+ ```
120
+
121
+ Serwer Live Sync otacza Twoją aplikację i automatycznie stosuje zaktualizowaną zawartość w momencie jej pojawienia się.
122
+
123
+ Aby otrzymywać powiadomienia o zmianach z CMS, serwer Live Sync utrzymuje połączenie SSE z backendem. Gdy zawartość w CMS ulega zmianie, backend przekazuje aktualizację do serwera Live Sync, który zapisuje nowe słowniki. Twoja aplikacja odzwierciedli aktualizację przy następnej nawigacji lub przeładowaniu przeglądarki, nie jest wymagane ponowne budowanie.
124
+
125
+ Schemat przepływu (CMS/Backend -> Serwer Live Sync -> Serwer aplikacji -> Frontend):
126
+
127
+ ![Schemat przepływu Live Sync CMS/Backend/Serwer Live Sync/Serwer aplikacji/Frontend](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
128
+
129
+ Jak to działa:
130
+
131
+ ![Schemat logiki Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
132
+
133
+ ## Przebieg pracy podczas developmentu (lokalnie)
134
+
135
+ - Podczas developmentu wszystkie zdalne słowniki są pobierane przy starcie aplikacji, dzięki czemu możesz szybko testować aktualizacje.
136
+ - Aby przetestować Live Sync lokalnie z Next.js, opakuj swój serwer deweloperski:
137
+
138
+ ```json5 fileName="package.json"
139
+ {
140
+ "scripts": {
141
+ // ... inne skrypty
142
+ "dev": "npx intlayer live --with 'next dev'",
143
+ // "dev": "npx intlayer live --with 'vite dev'", // Dla Vite
144
+ },
145
+ }
146
+ ```
147
+
148
+ Włącz optymalizację, aby Intlayer stosował transformacje importu Live podczas developmentu:
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
+ To ustawienie owija Twój serwer deweloperski serwerem Live Sync, pobiera zdalne słowniki podczas uruchamiania i przesyła aktualizacje z CMS za pomocą SSE. Odśwież stronę, aby zobaczyć zmiany.
171
+
172
+ ## Uwagi i ograniczenia
173
+
174
+ - Dodaj pochodzenie live sync do polityki bezpieczeństwa swojej strony (CSP). Upewnij się, że adres URL live sync jest dozwolony w `connect-src` (oraz `frame-ancestors`, jeśli ma to zastosowanie).
175
+ - Live Sync nie działa ze statycznym outputem. W Next.js strona musi być dynamiczna, aby otrzymywać aktualizacje w czasie wykonywania (np. użyj `generateStaticParams`, `generateMetadata`, `getServerSideProps` lub `getStaticProps` odpowiednio, aby uniknąć pełnych ograniczeń statycznych).
176
+ - W CMS każdy słownik ma flagę `live`. Tylko słowniki z `live=true` są pobierane przez API live sync; pozostałe są importowane dynamicznie i pozostają niezmienione w czasie wykonywania.
177
+ - Flaga `live` jest oceniana dla każdego słownika podczas budowania (build time). Jeśli zdalna zawartość nie była oznaczona jako `live=true` podczas budowania (build time), musisz przebudować projekt, aby włączyć Live Sync dla tego słownika.
178
+ - Serwer live sync musi mieć możliwość zapisu do `.intlayer`. W kontenerach upewnij się, że masz dostęp do zapisu do `/.intlayer`.
179
+
180
+ ## Przydatne linki
181
+
182
+ - [Intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md)
183
+ - [Edytor Wizualny Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_visual_editor.md)
184
+ - [Dokumentacja konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md)
185
+ - [Przewodnik po samodzielnym hostowaniu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/self_hosting.md)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-06-14
3
- updatedAt: 2026-06-30
3
+ updatedAt: 2026-07-08
4
4
  title: Nowy Intlayer v9 - Co nowego?
5
5
  description: Odkryj nowości w Intlayer v9. Przedstawiamy pakiety kompatybilności typu drop-in dla popularnych bibliotek i18n oraz wsparcie dla Kolekcji (Collections) i Wariantów (Variants).
6
6
  keywords:
@@ -204,6 +204,49 @@ const product = useIntlayer("product-copy", {
204
204
 
205
205
  ---
206
206
 
207
+ ## `@intlayer/analytics`: śledzenie ekspozycji treści i testy A/B
208
+
209
+ Nowy opcjonalny pakiet, [`@intlayer/analytics`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md), pokazuje, jakie treści są faktycznie wyświetlane Twoim odwiedzającym — i domyka pętlę z **Collections & Variants**, umożliwiając testowanie treści A/B i mierzenie konwersji dla każdego wariantu.
210
+
211
+ - **Śledzenie na poziomie providera**: `IntlayerProvider` (React / Next.js / React Native) automatycznie rejestruje zdarzenia `page_view` przy ładowaniu, zmianie trasy i zmianie języka.
212
+ - **Śledzenie na poziomie węzła**: każde rozwiązanie `useIntlayer` zgłasza zdarzenie `content_exposure` — jaki klucz słownika, ścieżka klucza, język i (jeśli dotyczy) jaki **wariant** A/B został wyświetlony. Powtarzające się ekspozycje tego samego węzła w oknie wysyłki są łączone w jedno zdarzenie.
213
+ - **Deterministyczne przypisanie A/B**: `getVariant(experimentKey, variants)` przypisuje wariant każdej sesji **bez komunikacji z serwerem**, dzięki czemu nie ma migotania przed pierwszym renderowaniem.
214
+ - **`useConversion()`**: przypisuje cel (rejestracja, kliknięcie, zakup…) do wariantu, na który była wystawiona sesja.
215
+ - **Zerowy koszt, gdy nie zainstalowano**: ten sam wzorzec tree-shakeable co `@intlayer/editor` — dynamiczny `import()` opakowany w `try/catch`, plus zmienna środowiskowa czasu kompilacji (`INTLAYER_ANALYTICS_ENABLED`), która całkowicie usuwa integrację z bundla dla aplikacji, które jej nie włączają.
216
+ - **Bez nowego schematu konfiguracji**: ponownie wykorzystuje `editor.backendURL` (punkt końcowy wysyłki / self-hosting) i `editor.clientId` (klucz projektu, będący jednocześnie przełącznikiem włączania).
217
+ - **Dbałość o prywatność**: anonimowe hashowanie sesji (SHA-256, bez przechowywania surowych identyfikatorów), brak przechowywania adresów IP, tylko przybliżona geolokalizacja na poziomie kraju, żądania wysyłane partiami mniej więcej co 20 sekund.
218
+ - **Panel**: nowa strona **Analytics** (widoczna na pasku bocznym po wybraniu projektu) pokazuje aktywnych użytkowników, użytkowników dzisiaj, użytkowników z ostatnich 7/30/90 dni, wykres ewolucji odwiedzających oraz podział według języka i lokalizacji.
219
+
220
+ ```tsx fileName="CTAButton.tsx" codeFormat="tsx"
221
+ import { useConversion } from "react-intlayer";
222
+
223
+ const CTAButton = () => {
224
+ const trackConversion = useConversion();
225
+
226
+ return (
227
+ <button
228
+ onClick={() =>
229
+ trackConversion({
230
+ experimentKey: "homepage-hero",
231
+ variant: "black_friday",
232
+ goal: "cta_click",
233
+ })
234
+ }
235
+ >
236
+ Get started
237
+ </button>
238
+ );
239
+ };
240
+ ```
241
+
242
+ ```bash packageManager="npm"
243
+ npm install @intlayer/analytics
244
+ ```
245
+
246
+ Dostępne już dziś dla React, Next.js i React Native (poprzez `react-intlayer`); inne wiązania frameworków (Vue, Svelte, Angular, …) są planowane, zgodnie z tym samym wzorcem wdrażania co `@intlayer/editor`. Pełny przewodnik znajdziesz w [dokumentacji Analytics](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md).
247
+
248
+ ---
249
+
207
250
  ## Vite Plugin: Bundled Compiler & Proxy
208
251
 
209
252
  Plugin Vite `intlayer()` teraz łączy **kompilator** i **proxy do routingu locale'ów** bezpośrednio, więc większość projektów potrzebuje tylko jednej wtyczki w `vite.config.ts`:
@@ -350,6 +393,7 @@ Jeśli aktualizujesz aplikację z wersji v8, pamiętaj, że wersja v9 nie zawier
350
393
 
351
394
  - [Przewodnik po pakietach kompatybilności (Compat Adapter Packages)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/index.md)
352
395
  - [Dynamiczne słowniki - Kolekcje i Warianty](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dynamic_dictionaries/index.md)
396
+ - [Analytics - Śledzenie ekspozycji treści i testy A/B](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md)
353
397
  - [Dokumentacja konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md)
354
398
  - [SDK CMS - Programowy dostęp z @intlayer/api](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md)
355
399
  - [Przewodnik po samodzielnym hostowaniu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/self_hosting.md)
@@ -125,7 +125,7 @@ Para ver como configurar os idiomas disponíveis ou outros parâmetros, consulte
125
125
 
126
126
  ### Autenticação
127
127
 
128
- - **[Login](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/login.md)** - Autentique-se no Intlayer CMS e obtenha credenciais de acesso
128
+ - **[Login](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/login.md)** - Autentique-se no Intlayer CMS e obtenha credenciais de acesso
129
129
 
130
130
  ### Comandos Principais
131
131
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-06-17
3
+ updatedAt: 2026-07-11
4
4
  title: Configuração (Configuration)
5
5
  description: Saiba como configurar o Intlayer para a sua aplicação. Entenda as várias configurações e opções disponíveis para personalizar o Intlayer conforme as suas necessidades.
6
6
  keywords:
@@ -14,6 +14,12 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 9.0.0
18
+ date: 2026-07-11
19
+ changes: "Adicionada a configuração `analytics`"
20
+ - version: 9.0.0
21
+ date: 2026-06-24
22
+ changes: "Add `enableProxy` option to the routing configuration"
17
23
  - version: 8.10.0
18
24
  date: 2026-06-17
19
25
  changes: "Adicionada a opção `format` à configuração do dicionário"
@@ -352,6 +358,30 @@ const config: IntlayerConfig = {
352
358
  liveSync: true,
353
359
  },
354
360
 
361
+ /**
362
+ * Configuração de analytics.
363
+ */
364
+ analytics: {
365
+ /**
366
+ * Se a recolha de analytics está ativada (visualizações de página, exposições de conteúdo, eventos A/B).
367
+ * Requer que `editor.clientId` esteja definido para a atribuição.
368
+ * Padrão: false
369
+ */
370
+ enabled: true,
371
+
372
+ /**
373
+ * Milissegundos entre os envios automáticos em lote para o backend.
374
+ * Padrão: 20000
375
+ */
376
+ flushInterval: 20000,
377
+
378
+ /**
379
+ * Fração de sessões a registar, de 0 (nenhuma) a 1 (todas).
380
+ * Padrão: 1
381
+ */
382
+ sampleRate: 1,
383
+ },
384
+
355
385
  /**
356
386
  * Definições de tradução e geração assistida por IA.
357
387
  */
@@ -668,6 +698,20 @@ Define as definições para o editor visual integrado, incluindo a porta do serv
668
698
 
669
699
  ---
670
700
 
701
+ ### Configuração de Analytics
702
+
703
+ Define as definições relacionadas com os analytics do Intlayer: a recolha do conteúdo que é efetivamente mostrado aos utilizadores (visualizações de página, exposições de conteúdo) e o suporte a testes A/B de conteúdo.
704
+
705
+ Os analytics são estritamente opt-in: nada é recolhido a menos que `analytics.enabled` esteja explicitamente definido como `true` **e** uma chave de projeto (`editor.clientId`) esteja configurada para a atribuição. Quando desativado (padrão), toda a integração de analytics é eliminada do bundle da sua aplicação (dead-code elimination).
706
+
707
+ | Campo | Descrição | Tipo | Padrão | Exemplo | Nota |
708
+ | --------------- | -------------------------------------------------------------------------------------------- | --------- | ------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
709
+ | `enabled` | Ativa a recolha de analytics (visualizações de página, exposições de conteúdo, eventos A/B). | `boolean` | `false` | `true` | Requer que `editor.clientId` esteja definido para a atribuição; caso contrário, os analytics permanecem desativados mesmo que `enabled` seja `true`. |
710
+ | `flushInterval` | Milissegundos entre os envios automáticos em lote para o backend. | `number` | `20000` | `10000` | |
711
+ | `sampleRate` | Fração de sessões a registar, de `0` (nenhuma) a `1` (todas). | `number` | `1` | `0.5` | A amostragem é determinística por sessão, pelo que uma sessão registada reporta todos os seus eventos (sem funis parciais). |
712
+
713
+ ---
714
+
671
715
  ### Configuração de Roteamento
672
716
 
673
717
  Definições que controlam o comportamento do roteamento, incluindo estrutura de URL, armazenamento de idiomas e gestão de 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 | Externalize seu conteúdo no Intlayer CMS
5
5
  description: Externalize seu conteúdo no Intlayer CMS para delegar a gestão do seu conteúdo para sua equipe.
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: "Seção «Sincronização ao vivo» movida para sua própria página (live-sync.md), mantendo aqui uma breve introdução com link"
21
24
  - version: 9.0.0
22
25
  date: 2026-06-30
23
26
  changes: "Adicionada seção de Auto-hospedagem: bootstrap Docker Compose, inventário de serviços, configuração SDK, recursos opcionais e notas de atualização"
@@ -248,148 +251,7 @@ Depois, poderá ver e gerir o seu dicionário no [Intlayer CMS](https://app.intl
248
251
 
249
252
  A Sincronização ao Vivo permite que a sua aplicação reflita as alterações de conteúdo do CMS em tempo de execução. Não é necessário reconstruir ou reimplantar. Quando ativada, as atualizações são transmitidas para um servidor de Sincronização ao Vivo que atualiza os dicionários que a sua aplicação lê.
250
253
 
251
- > A Sincronização ao Vivo requer uma conexão contínua com o servidor e está disponível no plano enterprise.
252
-
253
- Ative a Sincronização ao Vivo atualizando a sua configuração Intlayer:
254
-
255
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
256
- import type { IntlayerConfig } from "intlayer";
257
-
258
- const config: IntlayerConfig = {
259
- // ... outras configurações
260
- editor: {
261
- /**
262
- * Ativa o recarregamento a quente das configurações de localidade quando são detetadas alterações.
263
- * Por exemplo, quando um dicionário é adicionado ou atualizado, a aplicação atualiza
264
- * o conteúdo exibido na página.
265
- *
266
- * Como o recarregamento a quente requer uma conexão contínua com o servidor, está
267
- * disponível apenas para clientes do plano `enterprise`.
268
- *
269
- * Padrão: false
270
- */
271
- liveSync: true,
272
- },
273
- dictionary: {
274
- /**
275
- * Controla como os dicionários são importados:
276
- *
277
- * - "live": Os dicionários são buscados dinamicamente usando a API de Sincronização ao Vivo.
278
- * Substitui useIntlayer por useDictionaryDynamic.
279
- *
280
- * Nota: O modo live usa a API de Sincronização ao Vivo para buscar os dicionários. Se a chamada da API
281
- * falhar, os dicionários são importados dinamicamente.
282
- * Nota: Apenas dicionários com conteúdo remoto e sinalizadores "live" usam o modo live.
283
- * Outros usam o modo dinâmico para melhor desempenho.
284
- */
285
- importMode: "fetch",
286
- },
287
- };
288
-
289
- export default config;
290
- ```
291
-
292
- Inicie o servidor Live Sync para envolver sua aplicação:
293
-
294
- Exemplo usando Next.js:
295
-
296
- ```json5 fileName="package.json"
297
- {
298
- "scripts": {
299
- // ... outros scripts
300
- "build": "next build",
301
- "dev": "next dev",
302
- "start": "npx intlayer live --with 'next start'",
303
- },
304
- }
305
- ```
306
-
307
- Exemplo usando Vite:
308
-
309
- ```json5 fileName="package.json"
310
- {
311
- "scripts": {
312
- // ... outros scripts
313
- "build": "vite build",
314
- "dev": "vite dev",
315
- "start": "npx intlayer live --with 'vite start'",
316
- },
317
- }
318
- ```
319
-
320
- O servidor Live Sync envolve sua aplicação e aplica automaticamente o conteúdo atualizado assim que ele chega.
321
-
322
- Para receber notificações de alterações do CMS, o servidor Live Sync mantém uma conexão SSE com o backend. Quando o conteúdo muda no CMS, o backend encaminha a atualização para o servidor Live Sync, que grava os novos dicionários. Sua aplicação refletirá a atualização na próxima navegação ou recarregamento do navegador, sem necessidade de reconstrução.
323
-
324
- Fluxograma (CMS/Backend -> Servidor Live Sync -> Servidor de Aplicação -> Frontend):
325
-
326
- ![Esquema Lógico do Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
327
-
328
- Como funciona:
329
-
330
- ![Fluxo Live Sync CMS/Backend/Servidor Live Sync/Servidor de Aplicação/Frontend](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
331
-
332
- ### Fluxo de trabalho de desenvolvimento (local)
333
-
334
- - Em desenvolvimento, todos os dicionários remotos são buscados quando a aplicação inicia, para que você possa testar atualizações rapidamente.
335
- - Para testar o Live Sync localmente com Next.js, envolva seu servidor de desenvolvimento:
336
-
337
- ```json5 fileName="package.json"
338
- {
339
- "scripts": {
340
- // ... outros scripts
341
- "dev": "npx intlayer live --with 'next dev'",
342
- // "dev": "npx intlayer live --with 'vite dev'", // Para Vite
343
- },
344
- }
345
- ```
346
-
347
- Habilite a otimização para que o Intlayer aplique as transformações de importação Live durante o desenvolvimento:
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
- Esta configuração envolve seu servidor de desenvolvimento com o servidor Live Sync, busca dicionários remotos na inicialização e transmite atualizações do CMS via SSE. Atualize a página para ver as mudanças.
370
-
371
- Notas e restrições:
372
-
373
- - Adicione a origem do live sync à política de segurança do seu site (CSP). Certifique-se de que a URL do live sync esteja permitida em `connect-src` (e `frame-ancestors`, se relevante).
374
- - O Live Sync não funciona com saída estática. Para Next.js, a página deve ser dinâmica para receber atualizações em tempo de execução (por exemplo, use `generateStaticParams`, `generateMetadata`, `getServerSideProps` ou `getStaticProps` adequadamente para evitar restrições de somente estático).
375
- /// No CMS, cada dicionário possui uma flag `live`. Apenas dicionários com `live=true` são buscados via API de sincronização ao vivo; os demais são importados dinamicamente e permanecem inalterados em tempo de execução.
376
- /// A flag `live` é avaliada para cada dicionário no momento da compilação. Se o conteúdo remoto não foi marcado como `live=true` durante a compilação, você deve recompilar para habilitar a Sincronização ao Vivo para esse dicionário.
377
- /// O servidor de sincronização ao vivo deve ter permissão para escrever em `.intlayer`. Em contêineres, assegure o acesso de escrita a `/.intlayer`.
378
- ///
379
- /// ## Depuração
380
- ///
381
- /// Se você encontrar algum problema com o CMS, verifique o seguinte:
382
- ///
383
- /// - A aplicação está em execução.
384
- ///
385
- /// - A configuração do [`editor`](https://intlayer.org/doc/concept/configuration#editor-configuration) está corretamente definida no seu arquivo de configuração do Intlayer.
386
- /// - Campos obrigatórios:
387
- - A URL da aplicação deve corresponder àquela que você definiu na configuração do editor (`applicationURL`).
388
- - A URL do CMS
389
-
390
- - Certifique-se de que a configuração do projeto foi enviada para o Intlayer CMS.
391
-
392
- - O editor visual usa um iframe para exibir seu site. Certifique-se de que a Política de Segurança de Conteúdo (CSP) do seu site permita a URL do CMS como `frame-ancestors` ('https://app.intlayer.org' por padrão). Verifique o console do editor para qualquer erro.
254
+ Para o guia de configuração completo (ativação, início do servidor Live Sync, fluxo de trabalho de desenvolvimento local e restrições), consulte a [documentação do Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/live-sync.md).
393
255
 
394
256
  ## Auto-hospedagem
395
257