@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,174 @@
1
+ ---
2
+ createdAt: 2026-07-08
3
+ updatedAt: 2026-07-08
4
+ title: लाइव सिंक | रनटाइम पर CMS सामग्री परिवर्तनों को प्रतिबिंबित करें
5
+ description: बिना पुनर्निर्माण या पुनः तैनाती के, अपने ऐप को रनटाइम पर Intlayer CMS सामग्री परिवर्तनों को प्रतिबिंबित करने दें।
6
+ keywords:
7
+ - लाइव सिंक
8
+ - Live Sync
9
+ - CMS
10
+ - विज़ुअल एडिटर
11
+ - अंतर्राष्ट्रीयकरण
12
+ - दस्तावेज़ीकरण
13
+ - Intlayer
14
+ - Next.js
15
+ - Vite
16
+ history:
17
+ - version: 9.0.0
18
+ date: 2026-07-08
19
+ changes: "Intlayer CMS दस्तावेज़ से अलग करके अपने स्वयं के पेज पर ले जाया गया"
20
+ - version: 6.0.1
21
+ date: 2025-09-22
22
+ changes: "लाइव सिंक दस्तावेज़ीकरण जोड़ें"
23
+ - version: 6.0.0
24
+ date: 2025-09-04
25
+ changes: "`hotReload` फ़ील्ड को `liveSync` से बदलें"
26
+ author: aymericzip
27
+ ---
28
+
29
+ # लाइव सिंक
30
+
31
+ लाइव सिंक आपकी ऐप को रनटाइम पर CMS सामग्री परिवर्तनों को प्रतिबिंबित करने देता है। पुनर्निर्माण या पुनः तैनाती की आवश्यकता नहीं होती। जब सक्षम किया जाता है, तो अपडेट्स लाइव सिंक सर्वर को स्ट्रीम किए जाते हैं जो आपके एप्लिकेशन द्वारा पढ़े जाने वाले शब्दकोशों को ताज़ा करता है।
32
+
33
+ ## विषय-सूची
34
+
35
+ <TOC/>
36
+
37
+ ---
38
+
39
+ ## लाइव सिंक सक्षम करना
40
+
41
+ > लाइव सिंक के लिए एक निरंतर सर्वर कनेक्शन आवश्यक होता है और यह एंटरप्राइज योजना पर उपलब्ध है।
42
+
43
+ अपने Intlayer कॉन्फ़िगरेशन को अपडेट करके लाइव सिंक सक्षम करें:
44
+
45
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
46
+ import type { IntlayerConfig } from "intlayer";
47
+
48
+ const config: IntlayerConfig = {
49
+ // ... अन्य कॉन्फ़िगरेशन सेटिंग्स
50
+ editor: {
51
+ /**
52
+ * जब परिवर्तन पता चलते हैं तो लोकल कॉन्फ़िगरेशन के हॉट रीलोडिंग को सक्षम करता है।
53
+ * उदाहरण के लिए, जब कोई शब्दकोश जोड़ा या अपडेट किया जाता है, तो एप्लिकेशन
54
+ * पृष्ठ पर प्रदर्शित सामग्री को अपडेट करता है।
55
+ *
56
+ * क्योंकि हॉट रीलोडिंग के लिए सर्वर से निरंतर कनेक्शन आवश्यक है,
57
+ * यह केवल `enterprise` योजना के क्लाइंट्स के लिए उपलब्ध है।
58
+ *
59
+ * डिफ़ॉल्ट: false
60
+ */
61
+ liveSync: true,
62
+ },
63
+ dictionary: {
64
+ /**
65
+ * नियंत्रित करता है कि शब्दकोश कैसे आयात किए जाते हैं:
66
+ *
67
+ * - "live": शब्दकोश लाइव सिंक API का उपयोग करके गतिशील रूप से प्राप्त किए जाते हैं।
68
+ * useIntlayer को useDictionaryDynamic से प्रतिस्थापित करता है।
69
+ *
70
+ * नोट: लाइव मोड शब्दकोश प्राप्त करने के लिए लाइव सिंक API का उपयोग करता है। यदि API कॉल विफल हो जाती है,
71
+ * तो शब्दकोश गतिशील रूप से आयात किए जाते हैं।
72
+ * नोट: केवल दूरस्थ सामग्री वाले और "live" फ्लैग वाले शब्दकोश लाइव मोड का उपयोग करते हैं।
73
+ * अन्य प्रदर्शन के लिए डायनेमिक मोड का उपयोग करते हैं।
74
+ */
75
+ importMode: "fetch",
76
+ },
77
+ };
78
+
79
+ export default config;
80
+ ```
81
+
82
+ अपने एप्लिकेशन को रैप करने के लिए लाइव सिंक सर्वर शुरू करें:
83
+
84
+ Next.js का उपयोग करने का उदाहरण:
85
+
86
+ ```json5 fileName="package.json"
87
+ {
88
+ "scripts": {
89
+ // ... अन्य स्क्रिप्ट्स
90
+ "build": "next build",
91
+ "dev": "next dev",
92
+ "start": "npx intlayer live --with 'next start'",
93
+ },
94
+ }
95
+ ```
96
+
97
+ Vite का उपयोग करने का उदाहरण:
98
+
99
+ ```json5 fileName="package.json"
100
+ {
101
+ "scripts": {
102
+ // ... अन्य स्क्रिप्ट्स
103
+ "build": "vite build",
104
+ "dev": "vite dev",
105
+ "start": "npx intlayer live --with 'vite start'",
106
+ },
107
+ }
108
+ ```
109
+
110
+ लाइव सिंक सर्वर आपके एप्लिकेशन को रैप करता है और जैसे ही अपडेटेड कंटेंट आता है, उसे स्वचालित रूप से लागू करता है।
111
+
112
+ CMS से परिवर्तन सूचनाएँ प्राप्त करने के लिए, Live Sync सर्वर बैकएंड के साथ एक SSE कनेक्शन बनाए रखता है। जब CMS में सामग्री बदलती है, तो बैकएंड अपडेट को Live Sync सर्वर को अग्रेषित करता है, जो नए शब्दकोश लिखता है। आपका एप्लिकेशन अगले नेविगेशन या ब्राउज़र रीलोड पर अपडेट को प्रतिबिंबित करेगा, कोई पुनर्निर्माण आवश्यक नहीं है।
113
+
114
+ फ्लो चार्ट (CMS/बैकएंड -> Live Sync सर्वर -> एप्लिकेशन सर्वर -> फ्रंटेंड):
115
+
116
+ ![Live Sync Logic Schema](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
117
+
118
+ यह कैसे काम करता है:
119
+
120
+ ![Live Sync Flow 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
+ ## विकास कार्यप्रवाह (स्थानीय)
123
+
124
+ - विकास में, जब एप्लिकेशन शुरू होता है तो सभी रिमोट शब्दकोश प्राप्त किए जाते हैं, ताकि आप जल्दी से अपडेट का परीक्षण कर सकें।
125
+ - Next.js के साथ स्थानीय रूप से Live Sync का परीक्षण करने के लिए, अपने dev सर्वर को इस प्रकार लपेटें:
126
+
127
+ ```json5 fileName="package.json"
128
+ {
129
+ "scripts": {
130
+ // ... अन्य स्क्रिप्ट्स
131
+ "dev": "npx intlayer live --with 'next dev'",
132
+ // "dev": "npx intlayer live --with 'vite dev'", // Vite के लिए
133
+ },
134
+ }
135
+ ```
136
+
137
+ विकास के दौरान Intlayer लाइव इम्पोर्ट ट्रांसफ़ॉर्मेशन लागू करने के लिए ऑप्टिमाइज़ेशन सक्षम करें:
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
+ यह सेटअप आपके डेवलपमेंट सर्वर को लाइव सिंक सर्वर के साथ लपेटता है, स्टार्टअप पर रिमोट डिक्शनरीज़ को प्राप्त करता है, और CMS से SSE के माध्यम से अपडेट्स को स्ट्रीम करता है। परिवर्तनों को देखने के लिए पेज को रिफ्रेश करें।
160
+
161
+ ## नोट्स और प्रतिबंध
162
+
163
+ - अपने साइट सुरक्षा नीति (CSP) में लाइव सिंक ओरिजिन को जोड़ें। सुनिश्चित करें कि `connect-src` (और यदि प्रासंगिक हो तो `frame-ancestors`) में लाइव सिंक URL की अनुमति हो।
164
+ - लाइव सिंक स्थैतिक आउटपुट के साथ काम नहीं करता। Next.js के लिए, पेज को रनटाइम पर अपडेट प्राप्त करने के लिए डायनामिक होना चाहिए (जैसे, पूर्ण स्थैतिक-केवल प्रतिबंधों से बचने के लिए `generateStaticParams`, `generateMetadata`, `getServerSideProps`, या `getStaticProps` का उपयुक्त उपयोग करें)।
165
+ - CMS में, प्रत्येक शब्दकोश में एक `live` फ़्लैग होता है। केवल वे शब्दकोश जिनका `live=true` होता है, उन्हें लाइव सिंक API के माध्यम से प्राप्त किया जाता है; अन्य शब्दकोश गतिशील रूप से आयात किए जाते हैं और रनटाइम में अपरिवर्तित रहते हैं।
166
+ - `live` फ़्लैग प्रत्येक शब्दकोश के लिए बिल्ड समय पर मूल्यांकित किया जाता है। यदि बिल्ड के दौरान रिमोट सामग्री को `live=true` के रूप में चिह्नित नहीं किया गया था, तो उस शब्दकोश के लिए लाइव सिंक सक्षम करने के लिए आपको पुनः बिल्ड करना होगा।
167
+ - लाइव सिंक सर्वर को `.intlayer` में लिखने में सक्षम होना चाहिए। कंटेनरों में, `/.intlayer` पर लिखने की अनुमति सुनिश्चित करें।
168
+
169
+ ## उपयोगी लिंक्स
170
+
171
+ - [Intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md)
172
+ - [Intlayer विज़ुअल एडिटर](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_visual_editor.md)
173
+ - [कॉन्फ़िगरेशन संदर्भ](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/configuration.md)
174
+ - [स्व-होस्टिंग गाइड](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/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: नया Intlayer v9 - क्या नया है?
5
5
  description: जानें कि Intlayer v9 में क्या नया है। लोकप्रिय i18n लाइब्रेरीज़ के लिए ड्रॉप-इन कम्पैटिबिलिटी पैकेजेस और Collections और Variants के लिए सपोर्ट का परिचय।
6
6
  keywords:
@@ -205,6 +205,49 @@ const product = useIntlayer("product-copy", {
205
205
 
206
206
  ---
207
207
 
208
+ ## `@intlayer/analytics`: कंटेंट एक्सपोज़र ट्रैकिंग और A/B टेस्टिंग
209
+
210
+ एक नया वैकल्पिक पैकेज, [`@intlayer/analytics`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md), आपको बताता है कि आपके विज़िटर्स को वास्तव में कौन-सी सामग्री दिखाई जा रही है — और **Collections & Variants** के साथ यह चक्र पूरा करता है, जिससे आप कंटेंट पर A/B टेस्ट कर सकते हैं और प्रत्येक वेरिएंट के लिए कन्वर्ज़न माप सकते हैं।
211
+
212
+ - **प्रोवाइडर-स्तर ट्रैकिंग**: `IntlayerProvider` (React / Next.js / React Native) लोड, रूट परिवर्तन और लोकेल परिवर्तन पर स्वचालित रूप से `page_view` इवेंट रिकॉर्ड करता है।
213
+ - **नोड-स्तर ट्रैकिंग**: हर `useIntlayer` रिज़ॉल्यूशन एक `content_exposure` इवेंट रिपोर्ट करता है — कौन-सी डिक्शनरी की, की-पाथ, लोकेल, और (यदि लागू हो) कौन-सा A/B **वेरिएंट** दिखाया गया। फ्लश विंडो के भीतर एक ही नोड के बार-बार एक्सपोज़र को एक इवेंट में मिला दिया जाता है।
214
+ - **डिटरमिनिस्टिक A/B असाइनमेंट**: `getVariant(experimentKey, variants)` बिना **सर्वर राउंड-ट्रिप** के हर सेशन को एक वेरिएंट असाइन करता है, इसलिए पहले रेंडर से पहले कोई फ़्लिकर नहीं होता।
215
+ - **`useConversion()`**: सेशन जिस वेरिएंट के संपर्क में आया, उसे एक लक्ष्य (साइनअप, क्लिक, खरीद…) से जोड़ता है।
216
+ - **इंस्टॉल न होने पर शून्य लागत**: `@intlayer/editor` जैसा ही tree-shakeable पैटर्न — `try/catch` में लिपटा हुआ डायनामिक `import()`, साथ ही एक बिल्ड-टाइम एनवायरनमेंट वेरिएबल (`INTLAYER_ANALYTICS_ENABLED`) जो इसे उपयोग न करने वाले ऐप्स के लिए पूरे इंटीग्रेशन को डेड-कोड के रूप में हटा देता है।
217
+ - **कोई नया कॉन्फ़िगरेशन स्कीमा नहीं**: मौजूदा `editor.backendURL` (इंजेशन एंडपॉइंट / सेल्फ-होस्टिंग) और `editor.clientId` (प्रोजेक्ट की, जो सक्षम करने का स्विच भी है) का पुनः उपयोग करता है।
218
+ - **गोपनीयता का सम्मान**: सेशन का अनाम हैशिंग (SHA-256, कोई रॉ आईडी संग्रहीत नहीं), कोई IP संग्रहण नहीं, केवल मोटे तौर पर देश-स्तरीय भू-स्थान, लगभग हर 20 सेकंड में बैच में भेजे गए अनुरोध।
219
+ - **डैशबोर्ड**: एक नया **Analytics** पेज (प्रोजेक्ट चुनने के बाद साइडबार में दिखता है) सक्रिय उपयोगकर्ता, आज के उपयोगकर्ता, पिछले 7/30/90 दिनों के उपयोगकर्ता, विज़िटर इवोल्यूशन ग्राफ़, और लोकेल बनाम लोकेशन ब्रेकडाउन दिखाता है।
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
+ आज React, Next.js, और React Native (`react-intlayer` के माध्यम से) के लिए उपलब्ध है; अन्य फ्रेमवर्क बाइंडिंग्स (Vue, Svelte, Angular, …) की योजना बनाई गई है, जो `@intlayer/editor` के समान रोलआउट पैटर्न का पालन करेंगी। पूर्ण गाइड के लिए [Analytics दस्तावेज़](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md) देखें।
248
+
249
+ ---
250
+
208
251
  ## Vite Plugin: बंडल्ड Compiler & Proxy
209
252
 
210
253
  `intlayer()` Vite plugin अब **compiler** और **locale-routing proxy** को सीधे बंडल करता है, इसलिए अधिकांश projects को `vite.config.ts` में केवल एक ही plugin की आवश्यकता है:
@@ -351,6 +394,7 @@ Chromium (Puppeteer स्क्रीनशॉट जनरेशन के ल
351
394
 
352
395
  - [Compat Adapter Packages Guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/compat/index.md)
353
396
  - [Dynamic Dictionaries - Collections & Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/dynamic_dictionaries/index.md)
397
+ - [Analytics - कंटेंट एक्सपोज़र ट्रैकिंग और A/B टेस्टिंग](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/analytics.md)
354
398
  - [Configuration Reference](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/configuration.md)
355
399
  - [CMS SDK - @intlayer/api के साथ प्रोग्रामेटिक एक्सेस](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md)
356
400
  - [स्व-होस्टिंग गाइड](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/self_hosting.md)
@@ -125,7 +125,7 @@ Untuk mempelajari cara mengonfigurasi bahasa yang tersedia atau parameter lainny
125
125
 
126
126
  ### Autentikasi
127
127
 
128
- - **[Login](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/login.md)** - Autentikasi dengan Intlayer CMS dan dapatkan kredensial akses
128
+ - **[Login](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/login.md)** - Autentikasi dengan Intlayer CMS dan dapatkan kredensial akses
129
129
 
130
130
  ### Perintah Utama
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: Konfigurasi
5
5
  description: Pelajari cara mengonfigurasi Intlayer untuk aplikasi Anda. Pahami berbagai pengaturan dan opsi yang tersedia untuk menyesuaikan Intlayer sesuai kebutuhan Anda.
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: "Menambahkan konfigurasi `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
+ * Konfigurasi analitik (analytics).
363
+ */
364
+ analytics: {
365
+ /**
366
+ * Apakah pengumpulan analitik diaktifkan (tampilan halaman, eksposur konten, peristiwa A/B).
367
+ * Membutuhkan `editor.clientId` untuk diatur agar atribusi berfungsi.
368
+ * Default: false
369
+ */
370
+ enabled: true,
371
+
372
+ /**
373
+ * Milidetik antara pengiriman batch otomatis ke backend.
374
+ * Default: 20000
375
+ */
376
+ flushInterval: 20000,
377
+
378
+ /**
379
+ * Fraksi sesi yang direkam, dari 0 (tidak ada) hingga 1 (semua).
380
+ * Default: 1
381
+ */
382
+ sampleRate: 1,
383
+ },
384
+
358
385
  /**
359
386
  * Pengaturan terjemahan dan pembuatan berbasis AI.
360
387
  */
@@ -668,6 +695,20 @@ Mendefinisikan pengaturan yang terkait dengan editor terintegrasi, termasuk port
668
695
 
669
696
  ---
670
697
 
698
+ ### Konfigurasi Analitik (Analytics)
699
+
700
+ Menentukan pengaturan terkait analitik Intlayer: mengumpulkan konten apa yang sebenarnya ditampilkan kepada pengguna (tampilan halaman, eksposur konten) dan mendukung pengujian A/B pada konten.
701
+
702
+ Analitik bersifat opt-in secara ketat: tidak ada yang dikumpulkan kecuali `analytics.enabled` secara eksplisit diatur ke `true` **dan** kunci proyek (`editor.clientId`) dikonfigurasi untuk atribusi. Saat dinonaktifkan (default), seluruh integrasi analitik dihilangkan dari bundel aplikasi Anda (dead-code elimination).
703
+
704
+ | Field | Deskripsi | Tipe | Default | Contoh | Catatan |
705
+ | --------------- | ------------------------------------------------------------------------------------- | --------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
706
+ | `enabled` | Mengaktifkan pengumpulan analitik (tampilan halaman, eksposur konten, peristiwa A/B). | `boolean` | `false` | `true` | Membutuhkan `editor.clientId` untuk diatur agar atribusi berfungsi; jika tidak, analitik tetap nonaktif meskipun `enabled` bernilai `true`. |
707
+ | `flushInterval` | Milidetik antara pengiriman batch otomatis ke backend. | `number` | `20000` | `10000` | |
708
+ | `sampleRate` | Fraksi sesi yang direkam, dari `0` (tidak ada) hingga `1` (semua). | `number` | `1` | `0.5` | Sampling bersifat deterministik per sesi, sehingga sesi yang direkam melaporkan semua peristiwanya (tidak ada funnel parsial). |
709
+
710
+ ---
711
+
671
712
  ### Konfigurasi Routing (Routing)
672
713
 
673
714
  Pengaturan yang mengontrol perilaku routing, termasuk struktur URL, penyimpanan locale, dan penanganan middleware.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-08-23
3
- updatedAt: 2025-08-23
3
+ updatedAt: 2026-07-08
4
4
  title: Intlayer CMS | Eksternalisasi konten Anda ke Intlayer CMS
5
5
  description: Eksternalisasi konten Anda ke Intlayer CMS untuk mendelegasikan pengelolaan konten kepada tim Anda.
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: "Bagian 'Sinkronisasi langsung' dipindahkan ke halamannya sendiri (live-sync.md), hanya menyisakan pengantar singkat dan tautan di sini"
21
24
  - version: 6.0.1
22
25
  date: 2025-09-22
23
26
  changes: "Menambahkan dokumentasi live sync"
@@ -245,144 +248,7 @@ Kemudian Anda akan dapat melihat dan mengelola kamus Anda di [Intlayer CMS](http
245
248
 
246
249
  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.
247
250
 
248
- Aktifkan Sinkronisasi Langsung dengan memperbarui konfigurasi Intlayer Anda:
249
-
250
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
251
- import type { IntlayerConfig } from "intlayer";
252
-
253
- const config: IntlayerConfig = {
254
- // ... pengaturan konfigurasi lainnya
255
- editor: {
256
- /**
257
- * Mengaktifkan hot reloading konfigurasi locale saat perubahan terdeteksi.
258
- * Misalnya, ketika sebuah kamus ditambahkan atau diperbarui, aplikasi akan memperbarui
259
- * konten yang ditampilkan pada halaman.
260
- *
261
- * Karena hot reloading memerlukan koneksi terus-menerus ke server, fitur ini
262
- * hanya tersedia untuk klien dengan paket `enterprise`.
263
- *
264
- * Default: false
265
- */
266
- liveSync: true,
267
- },
268
- dictionary: {
269
- /**
270
- * Mengontrol bagaimana kamus diimpor:
271
- *
272
- * - "live": Kamus diambil secara dinamis menggunakan Live Sync API.
273
- * Menggantikan useIntlayer dengan useDictionaryDynamic.
274
- *
275
- * Catatan: Mode live menggunakan Live Sync API untuk mengambil kamus. Jika panggilan API
276
- * gagal, kamus diimpor secara dinamis.
277
- * Catatan: Hanya kamus dengan konten jarak jauh dan flag "live" yang menggunakan mode live.
278
- * Yang lain menggunakan mode dinamis untuk kinerja.
279
- */
280
- importMode: "fetch",
281
- },
282
- };
283
-
284
- export default config;
285
- ```
286
-
287
- Mulai server Live Sync untuk membungkus aplikasi Anda:
288
-
289
- Contoh menggunakan server mandiri:
290
-
291
- ```json5 fileName="package.json"
292
- {
293
- "scripts": {
294
- // ... skrip lainnya
295
- "live:start": "npx intlayer live",
296
- },
297
- }
298
- ```
299
-
300
- Anda juga dapat menggunakan server aplikasi Anda secara paralel dengan menggunakan argumen `--process`.
301
-
302
- Contoh menggunakan Next.js:
303
-
304
- ```json5 fileName="package.json"
305
- {
306
- "scripts": {
307
- // ... skrip lainnya
308
- "build": "next build",
309
- "dev": "next dev",
310
- "start": "npx intlayer live --with 'next start'",
311
- },
312
- }
313
- ```
314
-
315
- Contoh menggunakan Vite:
316
-
317
- ```json5 fileName="package.json"
318
- {
319
- "scripts": {
320
- // ... skrip lainnya
321
- "build": "vite build",
322
- "dev": "vite dev",
323
- "start": "npx intlayer live --with 'vite start'",
324
- },
325
- }
326
- ```
327
-
328
- Server Live Sync membungkus aplikasi Anda dan secara otomatis menerapkan konten yang diperbarui saat konten tersebut tiba.
329
-
330
- 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.
331
-
332
- Diagram alur (CMS/Backend -> Server Live Sync -> Server Aplikasi -> Frontend):
333
-
334
- ![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)
335
-
336
- Cara kerjanya:
337
-
338
- ![Skema Logika Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
339
-
340
- ### Alur kerja pengembangan (lokal)
341
-
342
- - Dalam pengembangan, semua kamus jarak jauh diambil saat aplikasi dimulai, sehingga Anda dapat menguji pembaruan dengan cepat.
343
- - Untuk menguji Live Sync secara lokal dengan Next.js, bungkus server dev Anda:
344
-
345
- ```json5 fileName="package.json"
346
- {
347
- "scripts": {
348
- // ... skrip lainnya
349
- "dev": "npx intlayer live --with 'next dev'",
350
- // "dev": "npx intlayer live --with 'vite dev'", // Untuk Vite
351
- },
352
- }
353
- ```
354
-
355
- Aktifkan optimasi agar Intlayer menerapkan transformasi impor Live selama pengembangan:
356
-
357
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
358
- import type { IntlayerConfig } from "intlayer";
359
-
360
- const config: IntlayerConfig = {
361
- editor: {
362
- applicationURL: "http://localhost:5173",
363
- liveSyncURL: "http://localhost:4000",
364
- liveSync: true,
365
- },
366
- dictionary: {
367
- importMode: "fetch",
368
- },
369
- build: {
370
- optimize: true,
371
- },
372
- };
373
-
374
- export default config;
375
- ```
376
-
377
- 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.
378
-
379
- Catatan dan batasan:
380
-
381
- - Tambahkan origin live sync ke kebijakan keamanan situs Anda (CSP). Pastikan URL live sync diizinkan dalam `connect-src` (dan `frame-ancestors` jika relevan).
382
- - 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).
383
- - 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.
384
- - 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.
385
- - Server live sync harus dapat menulis ke `.intlayer`. Dalam container, pastikan akses tulis ke `/.intlayer`.
251
+ Untuk panduan pengaturan lengkap (mengaktifkan, menjalankan server Live Sync, alur kerja pengembangan lokal, dan batasan), lihat [dokumentasi Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/live-sync.md).
386
252
 
387
253
  ## Debug
388
254