@intlayer/docs 9.0.0-canary.14 → 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
@@ -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: Konfigurace (Configuration)
5
5
  description: Naučte se, jak nakonfigurovat Intlayer pro vaši aplikaci. Porozumějte různým nastavením a možnostem dostupným pro přizpůsobení Intlayer vašim potřebám.
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: "Přidána konfigurace `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: "Přidání možnosti `format` do konfigurace slovníku"
@@ -352,6 +358,30 @@ const config: IntlayerConfig = {
352
358
  liveSync: true,
353
359
  },
354
360
 
361
+ /**
362
+ * Konfigurace analytiky (analytics).
363
+ */
364
+ analytics: {
365
+ /**
366
+ * Zda je povoleno shromažďování analytiky (zobrazení stránek, expozice obsahu, A/B události).
367
+ * Vyžaduje nastavení `editor.clientId` pro atribuci.
368
+ * Výchozí: false
369
+ */
370
+ enabled: true,
371
+
372
+ /**
373
+ * Milisekundy mezi automatickým dávkovým odesíláním na backend.
374
+ * Výchozí: 20000
375
+ */
376
+ flushInterval: 20000,
377
+
378
+ /**
379
+ * Podíl relací k zaznamenání, od 0 (žádná) do 1 (všechny).
380
+ * Výchozí: 1
381
+ */
382
+ sampleRate: 1,
383
+ },
384
+
355
385
  /**
356
386
  * Nastavení překladů a generování pomocí AI.
357
387
  */
@@ -665,6 +695,20 @@ Definuje nastavení pro vestavěný vizuální editor, včetně portu serveru a
665
695
 
666
696
  ---
667
697
 
698
+ ### Konfigurace analytiky (Analytics)
699
+
700
+ Definuje nastavení související s analytikou Intlayer: shromažďování informací o tom, jaký obsah je uživatelům skutečně zobrazován (zobrazení stránek, expozice obsahu), a podporu A/B testování obsahu.
701
+
702
+ Analytika je striktně opt-in: nic se neshromažďuje, pokud není `analytics.enabled` explicitně nastaveno na `true` **a** není nakonfigurován projektový klíč (`editor.clientId`) pro atribuci. Je-li vypnuta (výchozí stav), celá integrace analytiky je odstraněna z balíčku vaší aplikace (dead-code elimination).
703
+
704
+ | Pole | Popis | Typ | Výchozí | Příklad | Poznámka |
705
+ | --------------- | ---------------------------------------------------------------------------------- | --------- | ------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- |
706
+ | `enabled` | Povolí shromažďování analytiky (zobrazení stránek, expozice obsahu, A/B události). | `boolean` | `false` | `true` | Vyžaduje nastavení `editor.clientId` pro atribuci; jinak analytika zůstává vypnutá, i když je `enabled` nastaveno na `true`. |
707
+ | `flushInterval` | Milisekundy mezi automatickým dávkovým odesíláním na backend. | `number` | `20000` | `10000` | |
708
+ | `sampleRate` | Podíl relací k zaznamenání, od `0` (žádná) do `1` (všechny). | `number` | `1` | `0.5` | Vzorkování je deterministické pro každou relaci, takže zaznamenaná relace hlásí všechny své události (žádné částečné trychtýře). |
709
+
710
+ ---
711
+
668
712
  ### Konfigurace routování (Routing)
669
713
 
670
714
  Nastavení ovládající chování routování, včetně struktury URL, ukládání lokalit a správy middleware.
@@ -125,7 +125,7 @@ Um zu erfahren, wie Sie verfügbare Sprachen oder andere Parameter konfigurieren
125
125
 
126
126
  ### Authentifizierung
127
127
 
128
- - **[Anmelden](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/login.md)** - Bei Intlayer CMS authentifizieren und Zugangsdaten erhalten
128
+ - **[Anmelden](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/login.md)** - Bei Intlayer CMS authentifizieren und Zugangsdaten erhalten
129
129
 
130
130
  ### Kernbefehle
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: Konfiguration (Configuration)
5
5
  description: Erfahren Sie, wie Sie Intlayer für Ihre Anwendung konfigurieren. Verstehen Sie die verschiedenen Einstellungen und Optionen, um Intlayer an Ihre Bedürfnisse anzupassen.
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: "`analytics` Konfiguration hinzugefügt"
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
+ * Analytics-Konfiguration.
363
+ */
364
+ analytics: {
365
+ /**
366
+ * Ob die Analytics-Erfassung aktiviert ist (Seitenaufrufe, Content-Expositionen, A/B-Ereignisse).
367
+ * Erfordert, dass `editor.clientId` für die Zuordnung gesetzt ist.
368
+ * Standard: false
369
+ */
370
+ enabled: true,
371
+
372
+ /**
373
+ * Millisekunden zwischen automatischen gebündelten Übertragungen an das Backend.
374
+ * Standard: 20000
375
+ */
376
+ flushInterval: 20000,
377
+
378
+ /**
379
+ * Anteil der zu erfassenden Sitzungen, von 0 (keine) bis 1 (alle).
380
+ * Standard: 1
381
+ */
382
+ sampleRate: 1,
383
+ },
384
+
358
385
  /**
359
386
  * KI-gestützte Übersetzungs- und Generierungseinstellungen.
360
387
  */
@@ -671,6 +698,20 @@ Definiert Einstellungen für den integrierten Editor, einschließlich Server-Por
671
698
 
672
699
  ---
673
700
 
701
+ ### Analytics-Konfiguration (Analytics Configuration)
702
+
703
+ Definiert Einstellungen für Intlayer Analytics: die Erfassung, welche Inhalte Nutzern tatsächlich angezeigt werden (Seitenaufrufe, Content-Expositionen), und die Unterstützung von A/B-Tests für Inhalte.
704
+
705
+ Analytics ist streng Opt-in: Es wird nichts erfasst, es sei denn, `analytics.enabled` ist explizit auf `true` gesetzt **und** ein Projektschlüssel (`editor.clientId`) ist für die Zuordnung konfiguriert. Wenn deaktiviert (Standard), wird die gesamte Analytics-Integration aus Ihrem Anwendungs-Bundle per Dead-Code-Elimination entfernt.
706
+
707
+ | Feld | Beschreibung | Typ | Standard | Beispiel | Hinweis |
708
+ | --------------- | ---------------------------------------------------------------------------------------- | --------- | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
709
+ | `enabled` | Aktiviert die Analytics-Erfassung (Seitenaufrufe, Content-Expositionen, A/B-Ereignisse). | `boolean` | `false` | `true` | Erfordert, dass `editor.clientId` für die Zuordnung gesetzt ist; andernfalls bleibt Analytics deaktiviert, selbst wenn `enabled` auf `true` steht. |
710
+ | `flushInterval` | Millisekunden zwischen automatischen gebündelten Übertragungen an das Backend. | `number` | `20000` | `10000` | |
711
+ | `sampleRate` | Anteil der zu erfassenden Sitzungen, von `0` (keine) bis `1` (alle). | `number` | `1` | `0.5` | Das Sampling ist pro Sitzung deterministisch, sodass eine erfasste Sitzung alle ihre Ereignisse meldet (keine unvollständigen Funnels). |
712
+
713
+ ---
714
+
674
715
  ### Routing-Konfiguration
675
716
 
676
717
  Einstellungen, die das Routing-Verhalten steuern, einschließlich URL-Struktur, Sprachspeicherung und Middleware-Handhabung.
@@ -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 | Externalisieren Sie Ihre Inhalte in das Intlayer CMS
5
5
  description: Externalisieren Sie Ihre Inhalte in das Intlayer CMS, um die Verwaltung Ihrer Inhalte an Ihr Team zu delegieren.
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: "Abschnitt „Live-Synchronisation“ auf eine eigene Seite (live-sync.md) verschoben; hier nur eine kurze Einführung mit Link belassen"
21
24
  - version: 9.0.0
22
25
  date: 2026-06-30
23
26
  changes: "Self-Hosting-Abschnitt hinzugefügt: Docker Compose Bootstrap, Service-Inventar, SDK-Konfiguration, optionale Funktionen und Upgrade-Hinweise"
@@ -248,140 +251,7 @@ Anschließend können Sie Ihr Wörterbuch im [Intlayer CMS](https://app.intlayer
248
251
 
249
252
  Live Sync ermöglicht es Ihrer App, CMS-Inhaltsänderungen zur Laufzeit widerzuspiegeln. Kein Neuaufbau oder erneutes Bereitstellen erforderlich. Wenn aktiviert, werden Updates an einen Live-Sync-Server gestreamt, der die Wörterbücher aktualisiert, die Ihre Anwendung liest.
250
253
 
251
- > Live Sync erfordert eine kontinuierliche Serververbindung und ist im Enterprise-Plan verfügbar.
252
-
253
- Aktivieren Sie Live Sync, indem Sie Ihre Intlayer-Konfiguration aktualisieren:
254
-
255
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
256
- import type { IntlayerConfig } from "intlayer";
257
-
258
- const config: IntlayerConfig = {
259
- // ... andere Konfigurationseinstellungen
260
- editor: {
261
- /**
262
- * Aktiviert das Hot-Reloading der Lokalisierungskonfigurationen, wenn Änderungen erkannt werden.
263
- * Zum Beispiel, wenn ein Wörterbuch hinzugefügt oder aktualisiert wird, aktualisiert die Anwendung
264
- * den auf der Seite angezeigten Inhalt.
265
- *
266
- * Da Hot-Reloading eine kontinuierliche Verbindung zum Server erfordert, ist es
267
- * nur für Kunden des `enterprise`-Plans verfügbar.
268
- *
269
- * Standard: false
270
- */
271
- liveSync: true,
272
- },
273
- dictionary: {
274
- /**
275
- * Steuert, wie Wörterbücher importiert werden:
276
- *
277
- * - "live": Wörterbücher werden dynamisch über die Live Sync API abgerufen.
278
- * Ersetzt useIntlayer durch useDictionaryDynamic.
279
- *
280
- * Hinweis: Der Live-Modus verwendet die Live Sync API, um Wörterbücher abzurufen. Wenn der API-Aufruf
281
- * fehlschlägt, werden die Wörterbücher dynamisch importiert.
282
- * Hinweis: Nur Wörterbücher mit entfernten Inhalten und dem "live"-Flag verwenden den Live-Modus.
283
- * Andere verwenden den dynamischen Modus für bessere Leistung.
284
- */
285
- importMode: "fetch",
286
- },
287
- };
288
-
289
- export default config;
290
- ```
291
-
292
- Starten Sie den Live Sync Server, um Ihre Anwendung einzubinden:
293
-
294
- Beispiel mit Next.js:
295
-
296
- ```json5 fileName="package.json"
297
- {
298
- "scripts": {
299
- // ... andere Skripte
300
- "build": "next build",
301
- "dev": "next dev",
302
- "start": "npx intlayer live --with 'next start'",
303
- },
304
- }
305
- ```
306
-
307
- Beispiel mit Vite:
308
-
309
- ```json5 fileName="package.json"
310
- {
311
- "scripts": {
312
- // ... andere Skripte
313
- "build": "vite build",
314
- "dev": "vite dev",
315
- "start": "npx intlayer live --with 'vite start'",
316
- },
317
- }
318
- ```
319
-
320
- Der Live Sync Server umschließt Ihre Anwendung und wendet automatisch aktualisierte Inhalte an, sobald diese eintreffen.
321
-
322
- Um Änderungsbenachrichtigungen vom CMS zu erhalten, hält der Live-Sync-Server eine SSE-Verbindung zum Backend aufrecht. Wenn sich Inhalte im CMS ändern, leitet das Backend die Aktualisierung an den Live-Sync-Server weiter, der die neuen Wörterbücher schreibt. Ihre Anwendung spiegelt die Aktualisierung bei der nächsten Navigation oder beim Neuladen des Browsers wider – ein Neubau ist nicht erforderlich.
323
-
324
- Flussdiagramm (CMS/Backend -> Live Sync Server -> Application Server -> Frontend):
325
-
326
- ![Live Sync Logik Schema](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
327
-
328
- So funktioniert es:
329
-
330
- ![Live Sync Ablauf CMS/Backend/Live Sync Server/Application Server/Frontend Schema](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
331
-
332
- ### Entwicklungs-Workflow (lokal)
333
-
334
- - In der Entwicklung werden alle entfernten Wörterbücher beim Start der Anwendung abgerufen, sodass Sie Updates schnell testen können.
335
- - Um Live Sync lokal mit Next.js zu testen, umschließen Sie Ihren Dev-Server:
336
-
337
- ```json5 fileName="package.json"
338
- {
339
- "scripts": {
340
- // ... andere Skripte
341
- "dev": "npx intlayer live --with 'next dev'",
342
- // "dev": "npx intlayer live --with 'vite dev'", // Für Vite
343
- },
344
- }
345
- ```
346
-
347
- Aktivieren Sie die Optimierung, damit Intlayer während der Entwicklung die Live-Import-Transformationen anwendet:
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
- Diese Konfiguration umschließt Ihren Dev-Server mit dem Live Sync Server, lädt entfernte Wörterbücher beim Start und streamt Updates vom CMS über SSE. Aktualisieren Sie die Seite, um Änderungen zu sehen.
370
-
371
- Hinweise und Einschränkungen:
372
-
373
- - Fügen Sie die Live Sync-Quelle zu Ihrer Site-Sicherheitsrichtlinie (CSP) hinzu. Stellen Sie sicher, dass die Live Sync-URL in `connect-src` (und `frame-ancestors`, falls relevant) erlaubt ist.
374
- - Live Sync funktioniert nicht mit statischem Output. Für Next.js muss die Seite dynamisch sein, um zur Laufzeit Updates zu erhalten (z. B. verwenden Sie `generateStaticParams`, `generateMetadata`, `getServerSideProps` oder `getStaticProps` entsprechend, um vollständige statische Einschränkungen zu vermeiden).
375
-
376
- Diese Einrichtung bindet Ihren Entwicklungsserver mit dem Live-Sync-Server, lädt beim Start entfernte Wörterbücher und streamt Aktualisierungen vom CMS über SSE. Aktualisieren Sie die Seite, um Änderungen zu sehen.
377
-
378
- Hinweise und Einschränkungen:
379
-
380
- - Fügen Sie die Live-Sync-Quelle zu Ihrer Sicherheitsrichtlinie der Website (CSP) hinzu. Stellen Sie sicher, dass die Live-Sync-URL in `connect-src` (und `frame-ancestors`, falls relevant) erlaubt ist.
381
- - Live Sync funktioniert nicht mit statischer Ausgabe. Für Next.js muss die Seite dynamisch sein, um zur Laufzeit Updates zu erhalten (z. B. verwenden Sie `generateStaticParams`, `generateMetadata`, `getServerSideProps` oder `getStaticProps` entsprechend, um vollständige statische Einschränkungen zu vermeiden).
382
- - Im CMS hat jedes Wörterbuch ein `live`-Flag. Nur Wörterbücher mit `live=true` werden über die Live-Sync-API abgerufen; andere werden dynamisch importiert und bleiben zur Laufzeit unverändert.
383
- - Das `live`-Flag wird für jedes Wörterbuch zur Build-Zeit ausgewertet. Wenn der entfernte Inhalt während des Builds nicht mit `live=true` gekennzeichnet war, müssen Sie neu bauen, um Live Sync für dieses Wörterbuch zu aktivieren.
384
- - Der Live-Sync-Server muss in der Lage sein, in `.intlayer` zu schreiben. In Containern stellen Sie sicher, dass Schreibzugriff auf `/.intlayer` besteht.
254
+ Die vollständige Anleitung (Aktivierung, Start des Live-Sync-Servers, lokaler Entwicklungsworkflow und Einschränkungen) finden Sie in der [Live-Sync-Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/live-sync.md).
385
255
 
386
256
  ## Self-Hosting
387
257
 
@@ -0,0 +1,174 @@
1
+ ---
2
+ createdAt: 2026-07-08
3
+ updatedAt: 2026-07-08
4
+ title: Live-Synchronisation | CMS-Inhaltsänderungen zur Laufzeit übernehmen
5
+ description: Lassen Sie Ihre Anwendung CMS-Inhaltsänderungen zur Laufzeit widerspiegeln — ohne Neuerstellung oder erneutes Deployment.
6
+ keywords:
7
+ - Live-Synchronisation
8
+ - Live Sync
9
+ - CMS
10
+ - Visueller Editor
11
+ - Internationalisierung
12
+ - Dokumentation
13
+ - Intlayer
14
+ - Next.js
15
+ - Vite
16
+ history:
17
+ - version: 9.0.0
18
+ date: 2026-07-08
19
+ changes: "Aus der Intlayer-CMS-Dokumentation in eine eigene Seite verschoben"
20
+ - version: 6.0.1
21
+ date: 2025-09-22
22
+ changes: "Live-Sync-Dokumentation hinzugefügt"
23
+ - version: 6.0.0
24
+ date: 2025-09-04
25
+ changes: "Ersetzte das Feld `hotReload` durch `liveSync`"
26
+ author: aymericzip
27
+ ---
28
+
29
+ # Live-Synchronisation
30
+
31
+ Live Sync ermöglicht es Ihrer App, CMS-Inhaltsänderungen zur Laufzeit widerzuspiegeln. Kein Neuaufbau oder erneutes Bereitstellen erforderlich. Wenn aktiviert, werden Updates an einen Live-Sync-Server gestreamt, der die Wörterbücher aktualisiert, die Ihre Anwendung liest.
32
+
33
+ ## Inhaltsverzeichnis
34
+
35
+ <TOC/>
36
+
37
+ ---
38
+
39
+ ## Live-Synchronisation aktivieren
40
+
41
+ > Live Sync erfordert eine kontinuierliche Serververbindung und ist im Enterprise-Plan verfügbar.
42
+
43
+ Aktivieren Sie Live Sync, indem Sie Ihre Intlayer-Konfiguration aktualisieren:
44
+
45
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
46
+ import type { IntlayerConfig } from "intlayer";
47
+
48
+ const config: IntlayerConfig = {
49
+ // ... andere Konfigurationseinstellungen
50
+ editor: {
51
+ /**
52
+ * Aktiviert das Hot-Reloading der Lokalisierungskonfigurationen, wenn Änderungen erkannt werden.
53
+ * Zum Beispiel, wenn ein Wörterbuch hinzugefügt oder aktualisiert wird, aktualisiert die Anwendung
54
+ * den auf der Seite angezeigten Inhalt.
55
+ *
56
+ * Da Hot-Reloading eine kontinuierliche Verbindung zum Server erfordert, ist es
57
+ * nur für Kunden des `enterprise`-Plans verfügbar.
58
+ *
59
+ * Standard: false
60
+ */
61
+ liveSync: true,
62
+ },
63
+ dictionary: {
64
+ /**
65
+ * Steuert, wie Wörterbücher importiert werden:
66
+ *
67
+ * - "live": Wörterbücher werden dynamisch über die Live Sync API abgerufen.
68
+ * Ersetzt useIntlayer durch useDictionaryDynamic.
69
+ *
70
+ * Hinweis: Der Live-Modus verwendet die Live Sync API, um Wörterbücher abzurufen. Wenn der API-Aufruf
71
+ * fehlschlägt, werden die Wörterbücher dynamisch importiert.
72
+ * Hinweis: Nur Wörterbücher mit entfernten Inhalten und dem "live"-Flag verwenden den Live-Modus.
73
+ * Andere verwenden den dynamischen Modus für bessere Leistung.
74
+ */
75
+ importMode: "fetch",
76
+ },
77
+ };
78
+
79
+ export default config;
80
+ ```
81
+
82
+ Starten Sie den Live Sync Server, um Ihre Anwendung einzubinden:
83
+
84
+ Beispiel mit Next.js:
85
+
86
+ ```json5 fileName="package.json"
87
+ {
88
+ "scripts": {
89
+ // ... andere Skripte
90
+ "build": "next build",
91
+ "dev": "next dev",
92
+ "start": "npx intlayer live --with 'next start'",
93
+ },
94
+ }
95
+ ```
96
+
97
+ Beispiel mit Vite:
98
+
99
+ ```json5 fileName="package.json"
100
+ {
101
+ "scripts": {
102
+ // ... andere Skripte
103
+ "build": "vite build",
104
+ "dev": "vite dev",
105
+ "start": "npx intlayer live --with 'vite start'",
106
+ },
107
+ }
108
+ ```
109
+
110
+ Der Live Sync Server umschließt Ihre Anwendung und wendet automatisch aktualisierte Inhalte an, sobald diese eintreffen.
111
+
112
+ Um Änderungsbenachrichtigungen vom CMS zu erhalten, hält der Live-Sync-Server eine SSE-Verbindung zum Backend aufrecht. Wenn sich Inhalte im CMS ändern, leitet das Backend die Aktualisierung an den Live-Sync-Server weiter, der die neuen Wörterbücher schreibt. Ihre Anwendung spiegelt die Aktualisierung bei der nächsten Navigation oder beim Neuladen des Browsers wider – ein Neubau ist nicht erforderlich.
113
+
114
+ Flussdiagramm (CMS/Backend -> Live Sync Server -> Application Server -> Frontend):
115
+
116
+ ![Live Sync Logik Schema](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
117
+
118
+ So funktioniert es:
119
+
120
+ ![Live Sync Ablauf CMS/Backend/Live Sync Server/Application Server/Frontend Schema](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
121
+
122
+ ## Entwicklungs-Workflow (lokal)
123
+
124
+ - In der Entwicklung werden alle entfernten Wörterbücher beim Start der Anwendung abgerufen, sodass Sie Updates schnell testen können.
125
+ - Um Live Sync lokal mit Next.js zu testen, umschließen Sie Ihren Dev-Server:
126
+
127
+ ```json5 fileName="package.json"
128
+ {
129
+ "scripts": {
130
+ // ... andere Skripte
131
+ "dev": "npx intlayer live --with 'next dev'",
132
+ // "dev": "npx intlayer live --with 'vite dev'", // Für Vite
133
+ },
134
+ }
135
+ ```
136
+
137
+ Aktivieren Sie die Optimierung, damit Intlayer während der Entwicklung die Live-Import-Transformationen anwendet:
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
+ Diese Konfiguration umschließt Ihren Dev-Server mit dem Live Sync Server, lädt entfernte Wörterbücher beim Start und streamt Updates vom CMS über SSE. Aktualisieren Sie die Seite, um Änderungen zu sehen.
160
+
161
+ ## Hinweise und Einschränkungen
162
+
163
+ - Fügen Sie die Live-Sync-Quelle zu Ihrer Sicherheitsrichtlinie der Website (CSP) hinzu. Stellen Sie sicher, dass die Live-Sync-URL in `connect-src` (und `frame-ancestors`, falls relevant) erlaubt ist.
164
+ - Live Sync funktioniert nicht mit statischer Ausgabe. Für Next.js muss die Seite dynamisch sein, um zur Laufzeit Updates zu erhalten (z. B. verwenden Sie `generateStaticParams`, `generateMetadata`, `getServerSideProps` oder `getStaticProps` entsprechend, um vollständige statische Einschränkungen zu vermeiden).
165
+ - Im CMS hat jedes Wörterbuch ein `live`-Flag. Nur Wörterbücher mit `live=true` werden über die Live-Sync-API abgerufen; andere werden dynamisch importiert und bleiben zur Laufzeit unverändert.
166
+ - Das `live`-Flag wird für jedes Wörterbuch zur Build-Zeit ausgewertet. Wenn der entfernte Inhalt während des Builds nicht mit `live=true` gekennzeichnet war, müssen Sie neu bauen, um Live Sync für dieses Wörterbuch zu aktivieren.
167
+ - Der Live-Sync-Server muss in der Lage sein, in `.intlayer` zu schreiben. In Containern stellen Sie sicher, dass Schreibzugriff auf `/.intlayer` besteht.
168
+
169
+ ## Nützliche Links
170
+
171
+ - [Intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_CMS.md)
172
+ - [Intlayer Visueller Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_visual_editor.md)
173
+ - [Konfigurationsreferenz](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md)
174
+ - [Self-Hosting-Leitfaden](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/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: Neues Intlayer v9 – Was ist neu?
5
5
  description: Entdecken Sie die Neuerungen in Intlayer v9. Einführung von Drop-in-Kompatibilitätspaketen für beliebte i18n-Bibliotheken und Unterstützung für Collections und Variants.
6
6
  keywords:
@@ -205,6 +205,49 @@ const product = useIntlayer("product-copy", {
205
205
 
206
206
  ---
207
207
 
208
+ ## `@intlayer/analytics`: Content-Exposure-Tracking & A/B-Tests
209
+
210
+ Ein neues optionales Paket, [`@intlayer/analytics`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md), zeigt Ihnen, welche Inhalte Ihren Besuchern tatsächlich angezeigt werden — und schließt damit den Kreis zu **Collections & Variants**, indem es Ihnen ermöglicht, Inhalte per A/B-Test zu testen und Conversions pro Variante zu messen.
211
+
212
+ - **Tracking auf Provider-Ebene**: `IntlayerProvider` (React / Next.js / React Native) erfasst automatisch `page_view`-Ereignisse beim Laden, bei Routenwechseln und bei Sprachwechseln.
213
+ - **Tracking auf Knotenebene**: Jede Auflösung von `useIntlayer` meldet ein `content_exposure`-Ereignis — welcher Dictionary-Schlüssel, Key-Path, welche Sprache und (falls zutreffend) welche A/B-**Variante** angezeigt wurde. Wiederholte Anzeigen desselben Knotens innerhalb eines Flush-Fensters werden zu einem Ereignis zusammengefasst.
214
+ - **Deterministische A/B-Zuweisung**: `getVariant(experimentKey, variants)` weist jeder Sitzung eine Variante zu — **ohne Server-Roundtrip**, sodass kein Flackern vor dem ersten Rendering auftritt.
215
+ - **`useConversion()`**: ordnet ein Ziel (Registrierung, Klick, Kauf …) der Variante zu, der die Sitzung ausgesetzt war.
216
+ - **Keine Kosten, wenn nicht installiert**: gleiches tree-shakeable Muster wie bei `@intlayer/editor` — dynamischer, in `try/catch` gekapselter `import()`, plus eine Build-Zeit-Umgebungsvariable (`INTLAYER_ANALYTICS_ENABLED`), die die gesamte Integration für Apps, die sie nicht nutzen, per Dead-Code-Elimination entfernt.
217
+ - **Kein neues Konfigurationsschema**: verwendet weiterhin `editor.backendURL` (Ingestion-Endpunkt / Self-Hosting) und `editor.clientId` (Projektschlüssel, zugleich Aktivierungsschalter).
218
+ - **Datenschutzfreundlich**: anonymes Session-Hashing (SHA-256, keine Rohkennungen gespeichert), keine IP-Speicherung, nur grobe länderbasierte Geolokalisierung, gebündelte Anfragen etwa alle 20 Sekunden.
219
+ - **Dashboard**: Eine neue **Analytics**-Seite (in der Seitenleiste sichtbar, sobald ein Projekt ausgewählt ist) zeigt aktive Nutzer, Nutzer heute, Nutzer der letzten 7/30/90 Tage, einen Besucherentwicklungsgraphen sowie Aufschlüsselungen nach Sprache und Standort.
220
+
221
+ ```tsx fileName="CTAButton.tsx" codeFormat="tsx"
222
+ import { useConversion } from "react-intlayer";
223
+
224
+ const CTAButton = () => {
225
+ const trackConversion = useConversion();
226
+
227
+ return (
228
+ <button
229
+ onClick={() =>
230
+ trackConversion({
231
+ experimentKey: "homepage-hero",
232
+ variant: "black_friday",
233
+ goal: "cta_click",
234
+ })
235
+ }
236
+ >
237
+ Get started
238
+ </button>
239
+ );
240
+ };
241
+ ```
242
+
243
+ ```bash packageManager="npm"
244
+ npm install @intlayer/analytics
245
+ ```
246
+
247
+ Bereits heute verfügbar für React, Next.js und React Native (über `react-intlayer`); weitere Framework-Anbindungen (Vue, Svelte, Angular, …) sind geplant und folgen demselben Rollout-Muster wie `@intlayer/editor`. Die vollständige Anleitung finden Sie in der [Analytics-Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md).
248
+
249
+ ---
250
+
208
251
  ## Vite Plugin: Bundled Compiler & Proxy
209
252
 
210
253
  Das `intlayer()` Vite Plugin bündelt nun den **Compiler** und den **Locale-Routing Proxy** direkt, sodass die meisten Projekte nur ein einzelnes Plugin in `vite.config.ts` benötigen:
@@ -353,6 +396,7 @@ Wenn Sie von v8 upgraden, beachten Sie, dass v9 keine Breaking Changes enthält.
353
396
 
354
397
  - [Leitfaden für Compat Adapter Packages](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compat/index.md)
355
398
  - [Dynamische Dictionaries – Collections & Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dynamic_dictionaries/index.md)
399
+ - [Analytics - Content-Exposure-Tracking & A/B-Tests](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md)
356
400
  - [Konfigurationsreferenz](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md)
357
401
  - [CMS SDK – Programmatischer Zugriff mit @intlayer/api](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_CMS.md)
358
402
  - [Self-Hosting-Leitfaden](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/self_hosting.md)