@intlayer/docs 9.1.3 → 9.2.0

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 (415) hide show
  1. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  2. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  3. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  4. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  5. package/blog/fr/i18n_meaning.md +7 -1
  6. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  7. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  9. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  11. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  12. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  13. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  14. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  15. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  16. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  17. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  18. package/blog/tr/intlayer_with_react-intl.md +3 -1
  19. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  20. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  22. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  23. package/blog/zh/intlayer_with_i18next.md +87 -28
  24. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  25. package/blog/zh/intlayer_with_next-intl.md +88 -28
  26. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  27. package/blog/zh/intlayer_with_react-intl.md +88 -27
  28. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  29. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  30. package/dist/cjs/generated/blog.entry.cjs +27 -27
  31. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  32. package/dist/cjs/generated/docs.entry.cjs +234 -214
  33. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  34. package/dist/cjs/generated/frequentQuestions.entry.cjs +17 -17
  35. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  36. package/dist/cjs/generated/legal.entry.cjs +2 -2
  37. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  38. package/dist/esm/generated/blog.entry.mjs +27 -27
  39. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  40. package/dist/esm/generated/docs.entry.mjs +234 -214
  41. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  42. package/dist/esm/generated/frequentQuestions.entry.mjs +17 -17
  43. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  44. package/dist/esm/generated/legal.entry.mjs +2 -2
  45. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  46. package/dist/types/generated/docs.entry.d.ts +1 -0
  47. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  48. package/docs/ar/analytics.md +222 -0
  49. package/docs/ar/autoFill.md +28 -9
  50. package/docs/ar/configuration.md +25 -8
  51. package/docs/ar/dictionary/file.md +3 -1
  52. package/docs/ar/dictionary/nesting.md +47 -30
  53. package/docs/ar/formatters.md +148 -193
  54. package/docs/ar/intlayer_CMS.md +152 -0
  55. package/docs/ar/intlayer_with_angular_21.md +9 -9
  56. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  57. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  58. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  59. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  60. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  61. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  62. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  63. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  64. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  65. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  66. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  67. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  68. package/docs/ar/releases/v9.md +0 -37
  69. package/docs/ar/self_hosting.md +46 -49
  70. package/docs/bn/configuration.md +25 -8
  71. package/docs/bn/intlayer_with_angular_21.md +9 -9
  72. package/docs/cs/configuration.md +25 -8
  73. package/docs/cs/intlayer_with_angular_21.md +9 -9
  74. package/docs/de/analytics.md +222 -0
  75. package/docs/de/autoFill.md +28 -9
  76. package/docs/de/configuration.md +25 -8
  77. package/docs/de/dictionary/file.md +3 -1
  78. package/docs/de/dictionary/nesting.md +47 -31
  79. package/docs/de/formatters.md +208 -334
  80. package/docs/de/intlayer_CMS.md +66 -15
  81. package/docs/de/intlayer_with_angular_21.md +9 -9
  82. package/docs/de/intlayer_with_nestjs.md +11 -7
  83. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  84. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  85. package/docs/de/intlayer_with_solid_start.md +1078 -0
  86. package/docs/de/intlayer_with_vite+vue.md +1 -3
  87. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  88. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  89. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  90. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  91. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  92. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  93. package/docs/de/releases/v9.md +0 -15
  94. package/docs/de/self_hosting.md +46 -50
  95. package/docs/en/cli/doc-review.md +13 -2
  96. package/docs/en/configuration.md +24 -15
  97. package/docs/en/intlayer_with_angular_21.md +9 -9
  98. package/docs/en/intlayer_with_solid_start.md +1091 -0
  99. package/docs/en/intlayer_with_vite+solid.md +12 -0
  100. package/docs/en-GB/analytics.md +222 -0
  101. package/docs/en-GB/autoFill.md +26 -7
  102. package/docs/en-GB/configuration.md +25 -8
  103. package/docs/en-GB/dictionary/file.md +2 -0
  104. package/docs/en-GB/dictionary/nesting.md +64 -205
  105. package/docs/en-GB/formatters.md +146 -181
  106. package/docs/en-GB/intlayer_CMS.md +152 -0
  107. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  108. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  109. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  110. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  111. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  112. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  113. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  114. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  115. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  116. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  117. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  118. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  119. package/docs/en-GB/self_hosting.md +60 -49
  120. package/docs/es/analytics.md +222 -0
  121. package/docs/es/autoFill.md +28 -9
  122. package/docs/es/configuration.md +24 -7
  123. package/docs/es/dictionary/file.md +3 -1
  124. package/docs/es/dictionary/nesting.md +47 -30
  125. package/docs/es/formatters.md +114 -168
  126. package/docs/es/intlayer_CMS.md +35 -10
  127. package/docs/es/intlayer_with_angular_21.md +9 -9
  128. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  129. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  130. package/docs/es/intlayer_with_solid_start.md +1078 -0
  131. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  132. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  133. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  134. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  135. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  136. package/docs/es/releases/v9.md +0 -15
  137. package/docs/es/self_hosting.md +46 -49
  138. package/docs/fr/analytics.md +222 -0
  139. package/docs/fr/autoFill.md +27 -8
  140. package/docs/fr/configuration.md +25 -8
  141. package/docs/fr/dictionary/file.md +2 -0
  142. package/docs/fr/dictionary/nesting.md +37 -184
  143. package/docs/fr/formatters.md +95 -236
  144. package/docs/fr/intlayer_CMS.md +66 -15
  145. package/docs/fr/intlayer_with_angular_21.md +9 -9
  146. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  147. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  148. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  149. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  150. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  151. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/fr/releases/v9.md +0 -15
  155. package/docs/fr/self_hosting.md +46 -49
  156. package/docs/hi/analytics.md +222 -0
  157. package/docs/hi/autoFill.md +28 -9
  158. package/docs/hi/configuration.md +25 -8
  159. package/docs/hi/dictionary/file.md +3 -1
  160. package/docs/hi/dictionary/nesting.md +47 -30
  161. package/docs/hi/formatters.md +233 -334
  162. package/docs/hi/how_works_intlayer.md +3 -1
  163. package/docs/hi/intlayer_CMS.md +152 -0
  164. package/docs/hi/intlayer_with_angular_21.md +9 -9
  165. package/docs/hi/intlayer_with_nestjs.md +11 -7
  166. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  167. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  168. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  169. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  170. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  171. package/docs/hi/intlayer_with_vite+react.md +48 -41
  172. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  173. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  174. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  175. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  176. package/docs/hi/packages/next-intlayer/t.md +33 -1
  177. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  178. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  179. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  180. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  181. package/docs/hi/plugins/sync-json.md +9 -9
  182. package/docs/hi/releases/v9.md +0 -15
  183. package/docs/hi/self_hosting.md +38 -51
  184. package/docs/id/analytics.md +223 -0
  185. package/docs/id/configuration.md +25 -8
  186. package/docs/id/dictionary/nesting.md +37 -184
  187. package/docs/id/formatters.md +208 -305
  188. package/docs/id/intlayer_CMS.md +164 -0
  189. package/docs/id/intlayer_with_angular_21.md +9 -9
  190. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  191. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  192. package/docs/id/intlayer_with_solid_start.md +1078 -0
  193. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  194. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  195. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  196. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  197. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  198. package/docs/id/releases/v9.md +12 -0
  199. package/docs/id/self_hosting.md +61 -50
  200. package/docs/it/analytics.md +222 -0
  201. package/docs/it/autoFill.md +27 -8
  202. package/docs/it/configuration.md +25 -8
  203. package/docs/it/dictionary/file.md +3 -1
  204. package/docs/it/dictionary/nesting.md +47 -30
  205. package/docs/it/formatters.md +114 -168
  206. package/docs/it/intlayer_CMS.md +66 -15
  207. package/docs/it/intlayer_with_angular_21.md +9 -9
  208. package/docs/it/intlayer_with_nestjs.md +11 -7
  209. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  210. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  211. package/docs/it/intlayer_with_solid_start.md +1078 -0
  212. package/docs/it/intlayer_with_vite+vue.md +1 -3
  213. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  214. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  215. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  216. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  217. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  218. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  219. package/docs/it/releases/v9.md +0 -15
  220. package/docs/it/self_hosting.md +60 -49
  221. package/docs/ja/analytics.md +222 -0
  222. package/docs/ja/autoFill.md +28 -9
  223. package/docs/ja/configuration.md +25 -8
  224. package/docs/ja/dictionary/content_file.md +15 -7
  225. package/docs/ja/dictionary/file.md +3 -1
  226. package/docs/ja/dictionary/nesting.md +47 -30
  227. package/docs/ja/formatters.md +133 -187
  228. package/docs/ja/intlayer_visual_editor.md +3 -1
  229. package/docs/ja/intlayer_with_angular_21.md +6 -6
  230. package/docs/ja/intlayer_with_nestjs.md +2 -12
  231. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  232. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  233. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  234. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  235. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  236. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  237. package/docs/ja/mcp_server.md +3 -9
  238. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  239. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  240. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  241. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  242. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  243. package/docs/ja/releases/v9.md +12 -0
  244. package/docs/ja/self_hosting.md +46 -50
  245. package/docs/ko/analytics.md +222 -0
  246. package/docs/ko/autoFill.md +28 -9
  247. package/docs/ko/configuration.md +25 -8
  248. package/docs/ko/dictionary/file.md +3 -1
  249. package/docs/ko/dictionary/nesting.md +47 -30
  250. package/docs/ko/formatters.md +133 -187
  251. package/docs/ko/intlayer_with_angular_21.md +9 -9
  252. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  253. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  256. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  257. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  258. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  259. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  260. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  261. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  264. package/docs/ko/releases/v9.md +12 -0
  265. package/docs/ko/self_hosting.md +60 -49
  266. package/docs/nl/configuration.md +25 -8
  267. package/docs/nl/intlayer_with_angular_21.md +9 -9
  268. package/docs/pl/analytics.md +220 -0
  269. package/docs/pl/configuration.md +25 -8
  270. package/docs/pl/dictionary/nesting.md +47 -30
  271. package/docs/pl/formatters.md +208 -305
  272. package/docs/pl/intlayer_CMS.md +152 -0
  273. package/docs/pl/intlayer_with_angular_21.md +9 -9
  274. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  275. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  276. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  277. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  278. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  279. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  280. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  281. package/docs/pl/releases/v9.md +0 -15
  282. package/docs/pl/self_hosting.md +60 -49
  283. package/docs/pt/analytics.md +222 -0
  284. package/docs/pt/configuration.md +25 -8
  285. package/docs/pt/dictionary/file.md +3 -1
  286. package/docs/pt/dictionary/nesting.md +47 -30
  287. package/docs/pt/formatters.md +112 -168
  288. package/docs/pt/intlayer_CMS.md +66 -15
  289. package/docs/pt/intlayer_with_angular_21.md +9 -9
  290. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  291. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  292. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  293. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  294. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  295. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  296. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  297. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  298. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  299. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  300. package/docs/pt/releases/v9.md +0 -15
  301. package/docs/pt/self_hosting.md +60 -49
  302. package/docs/ru/analytics.md +222 -0
  303. package/docs/ru/autoFill.md +27 -8
  304. package/docs/ru/configuration.md +25 -8
  305. package/docs/ru/dictionary/file.md +3 -1
  306. package/docs/ru/dictionary/nesting.md +64 -205
  307. package/docs/ru/formatters.md +108 -128
  308. package/docs/ru/intlayer_with_angular_21.md +9 -9
  309. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  310. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  311. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  312. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  313. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  314. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  315. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  316. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  317. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  318. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  319. package/docs/ru/releases/v9.md +0 -15
  320. package/docs/ru/self_hosting.md +60 -49
  321. package/docs/tr/analytics.md +222 -0
  322. package/docs/tr/autoFill.md +28 -9
  323. package/docs/tr/configuration.md +25 -8
  324. package/docs/tr/dictionary/file.md +2 -0
  325. package/docs/tr/dictionary/nesting.md +47 -30
  326. package/docs/tr/formatters.md +144 -190
  327. package/docs/tr/intlayer_CMS.md +152 -0
  328. package/docs/tr/intlayer_with_angular_21.md +9 -9
  329. package/docs/tr/intlayer_with_nestjs.md +2 -12
  330. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  331. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  332. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  333. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  334. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  335. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  336. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  337. package/docs/tr/self_hosting.md +47 -50
  338. package/docs/uk/analytics.md +222 -0
  339. package/docs/uk/configuration.md +25 -8
  340. package/docs/uk/dictionary/nesting.md +47 -30
  341. package/docs/uk/formatters.md +128 -185
  342. package/docs/uk/intlayer_CMS.md +152 -0
  343. package/docs/uk/intlayer_with_angular_21.md +9 -9
  344. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  345. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  346. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  347. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  348. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  349. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  350. package/docs/uk/releases/v9.md +0 -15
  351. package/docs/uk/self_hosting.md +60 -50
  352. package/docs/ur/configuration.md +25 -8
  353. package/docs/ur/intlayer_with_angular_21.md +9 -9
  354. package/docs/vi/analytics.md +222 -0
  355. package/docs/vi/configuration.md +24 -8
  356. package/docs/vi/dictionary/nesting.md +37 -184
  357. package/docs/vi/formatters.md +208 -309
  358. package/docs/vi/intlayer_CMS.md +164 -0
  359. package/docs/vi/intlayer_with_angular_21.md +9 -9
  360. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  361. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  362. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  363. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  364. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  365. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  366. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  367. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  368. package/docs/vi/plugins/sync-json.md +6 -6
  369. package/docs/vi/releases/v9.md +12 -0
  370. package/docs/vi/self_hosting.md +61 -50
  371. package/docs/zh/CI_CD.md +4 -0
  372. package/docs/zh/analytics.md +222 -0
  373. package/docs/zh/autoFill.md +28 -9
  374. package/docs/zh/configuration.md +24 -8
  375. package/docs/zh/dictionary/file.md +2 -0
  376. package/docs/zh/dictionary/nesting.md +47 -30
  377. package/docs/zh/formatters.md +140 -188
  378. package/docs/zh/intlayer_CMS.md +164 -0
  379. package/docs/zh/intlayer_with_analog.md +193 -3
  380. package/docs/zh/intlayer_with_angular_19.md +272 -3
  381. package/docs/zh/intlayer_with_angular_21.md +7 -7
  382. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  383. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  384. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  385. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  386. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  387. package/docs/zh/intlayer_with_nuxt.md +182 -7
  388. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  389. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  390. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  391. package/docs/zh/intlayer_with_storybook.md +260 -3
  392. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  393. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  394. package/docs/zh/intlayer_with_tanstack.md +731 -20
  395. package/docs/zh/intlayer_with_vanilla.md +314 -4
  396. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  397. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  398. package/docs/zh/intlayer_with_vite+react.md +324 -45
  399. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  400. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  401. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  402. package/docs/zh/mcp_server.md +3 -9
  403. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  404. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  405. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  406. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  407. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  408. package/docs/zh/releases/v9.md +12 -0
  409. package/docs/zh/self_hosting.md +60 -50
  410. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  411. package/package.json +6 -6
  412. package/src/generated/blog.entry.ts +27 -27
  413. package/src/generated/docs.entry.ts +234 -214
  414. package/src/generated/frequentQuestions.entry.ts +17 -17
  415. package/src/generated/legal.entry.ts +2 -2
@@ -48,3 +48,18 @@ import "vite-intlayer";
48
48
  | `intlayerProxy` | डेवलपमेंट मिडलवेयर प्लगइन जो locale detection और routing को संभालता है। | - |
49
49
  | `intlayerMiddleware` | (**अप्रचलित**) `intlayerProxy` के लिए उपनाम। | - |
50
50
  | `intlayerPrune` | बिल्ड के दौरान अप्रयुक्त शब्दकोशों को tree-shake और prune करने के लिए प्लगइन। | [intlayerPrune](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/packages/vite-intlayer/intlayerPrune.md) |
51
+
52
+ ### उपयोगिताएँ
53
+
54
+ | Export | Description | Related Doc |
55
+ | ---------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
56
+ | `createIntlayerProxyHandler` | एक framework-agnostic Node.js `(req, res, next)` middleware को locale-routing logic के साथ return करता है। | [intlayerProxy](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/packages/vite-intlayer/intlayerProxy.md) |
57
+
58
+ ### Types
59
+
60
+ | Export | Description |
61
+ | ---------------------------- | --------------------------------------------------------------------------------------------------------------------- |
62
+ | `IntlayerPluginOptions` | `intlayer()` द्वारा स्वीकृत विकल्प। `GetConfigurationOptions` को `compatCallers` और `proxy` के साथ विस्तारित करता है। |
63
+ | `IntlayerProxyPluginOptions` | `intlayerProxy()` और `createIntlayerProxyHandler()` द्वारा स्वीकृत विकल्प। `ignore` और `configOptions` शामिल हैं। |
64
+ | `IntlayerCompilerOptions` | `intlayerCompiler()` द्वारा स्वीकृत विकल्प। `configOptions` और `compilerConfig` शामिल हैं। |
65
+ | `CompatCallerConfig` | `@intlayer/babel` से पुनः निर्यात। फ़ील्ड-उपयोग विश्लेषण के लिए एक compat-adapter caller पैटर्न का वर्णन करता है। |
@@ -39,11 +39,126 @@ export default defineConfig({
39
39
  });
40
40
  ```
41
41
 
42
- ## विवरण
42
+ ## विकल्प
43
43
 
44
- यह प्लगइन निम्नलिखित कार्य करता है:
44
+ ```ts
45
+ import type { IntlayerPluginOptions } from "vite-intlayer";
46
+ ```
47
+
48
+ `IntlayerPluginOptions` `GetConfigurationOptions` को विस्तृत करता है (देखें `@intlayer/config`) निम्नलिखित अतिरिक्त फ़ील्ड के साथ:
49
+
50
+ | विकल्प | प्रकार | डिफ़ॉल्ट | विवरण |
51
+ | --------------- | ------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
52
+ | `compatCallers` | `CompatCallerConfig[]` | `[]` | compat-adapter packages के लिए अतिरिक्त caller पैटर्न (उदाहरण के लिए `@intlayer/react-i18next`)। बिल्ड समय पर field-usage विश्लेषक को पास किया गया। |
53
+ | `proxy` | `{ ignore?: (req) => boolean }` | `undefined` | bundled locale-routing proxy को आगे बढ़ाए गए विकल्प। विशिष्ट पाथ (उदाहरण के लिए API routes) को locale routing से बाहर करने के लिए `ignore` का उपयोग करें। |
54
+
55
+ अन्य सभी विकल्प (`override`, `configFile`, …) सीधे `getConfiguration()` को आगे बढ़ाए जाते हैं।
56
+
57
+ ### उदाहरण
58
+
59
+ #### locale routing से API routes को ignore करें
60
+
61
+ ```ts
62
+ // vite.config.ts
63
+ import { defineConfig } from "vite";
64
+ import { intlayer } from "vite-intlayer";
65
+
66
+ export default defineConfig({
67
+ plugins: [
68
+ intlayer({
69
+ proxy: {
70
+ ignore: (req) => req.url?.startsWith("/api"),
71
+ },
72
+ }),
73
+ ],
74
+ });
75
+ ```
76
+
77
+ #### कस्टम config फ़ाइल पथ के साथ
78
+
79
+ ```ts
80
+ export default defineConfig({
81
+ plugins: [
82
+ intlayer({
83
+ configFile: "./config/intlayer.config.ts",
84
+ }),
85
+ ],
86
+ });
87
+ ```
88
+
89
+ #### compat-adapter callers के साथ
90
+
91
+ ```ts
92
+ import { intlayer } from "vite-intlayer";
93
+ import { reactI18nextCallerConfig } from "@intlayer/react-i18next/plugin";
94
+
95
+ export default defineConfig({
96
+ plugins: [
97
+ intlayer({
98
+ compatCallers: [reactI18nextCallerConfig],
99
+ }),
100
+ ],
101
+ });
102
+ ```
103
+
104
+ ## प्लगइन क्या करता है
105
+
106
+ ### 1. Dictionary preparation
107
+
108
+ बिल्ड शुरू होने से पहले (और dev में एक घंटे में एक बार), `intlayer` सभी `.content.ts` फ़ाइलों को `.intlayer/` में संग्रहीत अनुकूलित JSON शब्दकोशों में संकलित करने के लिए `prepareIntlayer` को कॉल करता है।
109
+
110
+ ### 2. Module aliases
111
+
112
+ प्लगइन Vite resolve aliases जोड़ता है ताकि `import { myDict } from 'intlayer/dictionaries/my-dict'` डिस्क पर compiled JSON फ़ाइल को resolve करे। SSR builds `ssr.noExternal` का उपयोग करते हैं ताकि सभी `@intlayer/*` packages को aliases के साथ bundled किया जाए।
113
+
114
+ ### 3. Dev-server watcher
115
+
116
+ विकास मोड में एक `chokidar` watcher शुरू किया जाता है। जब कोई `.content.ts` फ़ाइल बदलती है तो dictionaries को फिर से compile किया जाता है और Vite का HMR browser को अपडेट प्रसारित करता है।
117
+
118
+ ### 4. Bundled locale-routing proxy (v9+)
119
+
120
+ Intlayer v9 के बाद से `intlayerProxy` middleware को `intlayer()` के अंदर स्वचालित रूप से पंजीकृत किया जाता है। यह निम्नलिखित को संभालता है:
121
+
122
+ - URL prefix, cookies, और `Accept-Language` header से locale detection।
123
+ - 301 redirects जब detected locale वर्तमान URL से मेल नहीं खाता।
124
+ - Internal URL rewrites ताकि framework को सही `[locale]` route parameter दिखे।
125
+
126
+ Proxy को आपके Intlayer config में `routing.enableProxy` (डिफ़ॉल्ट `true`) द्वारा नियंत्रित किया जाता है। इसे पूरी तरह से अक्षम करने के लिए:
127
+
128
+ ```ts
129
+ // intlayer.config.ts
130
+ import { defineConfig } from "intlayer";
131
+
132
+ export default defineConfig({
133
+ routing: { enableProxy: false },
134
+ });
135
+ ```
136
+
137
+ एक अलग `intlayerProxy()` कॉल के बिना proxy के व्यवहार को कस्टमाइज़ करने के लिए, मुख्य plugin को `proxy` विकल्प pass करें:
138
+
139
+ ```ts
140
+ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api") } });
141
+ ```
142
+
143
+ पूर्ण routing व्यवहार reference के लिए [intlayerProxy documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/packages/vite-intlayer/intlayerProxy.md) देखें।
144
+
145
+ ### 5. Bundled compiler (v9+)
146
+
147
+ जब `compiler.enabled` `true` **और** `compiler.output` आपकी Intlayer कॉन्फ़िग में सेट हो, तो `intlayer()` स्वचालित रूप से `intlayerCompiler` को रजिस्टर करता है। कंपाइलर component फ़ाइलों के अंदर सीधे लिखी गई inline content declarations को निकालता है और transform time पर उन्हें dictionaries में लिखता है। [intlayerCompiler documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/packages/vite-intlayer/intlayerCompiler.md) देखें।
148
+
149
+ ### 6. बिल्ड ऑप्टिमाइज़ेशन
150
+
151
+ एक प्रोडक्शन बिल्ड के दौरान प्लगइन निम्नलिखित जोड़ता है:
152
+
153
+ - **intlayerOptimize** – Babel transform जो `useIntlayer('key')` → `useDictionary(hash)` को फिर से लिखता है और सीधे JSON आयात को इंजेक्ट करता है।
154
+ - **intlayerPrune** – डिक्शनरी JSON से अप्रयुक्त कंटेंट फील्ड को हटाता है।
155
+ - **intlayerMinify** – डिक्शनरी JSON को कॉम्पैक्ट करता है और वैकल्पिक रूप से फील्ड नामों को बदलता है।
156
+
157
+ ये डेवलपमेंट मोड में निष्क्रिय हैं।
158
+
159
+ ## Deprecated aliases
45
160
 
46
- 1. **डिक्शनरी तैयार करना**: यह बिल्ड या डेव (dev) प्रक्रिया की शुरुआत में डिक्शनरीज़ को optimized फाइलों में संकलित करता है।
47
- 2. **वॉच मोड**: डेवलपमेंट मोड में यह डिक्शनरी फाइलों में होने वाले परिवर्तनों पर नज़र रखता है और उन्हें स्वतः पुनः संकलित करता है।
48
- 3. **ऐलियास**: यह आपके एप्लिकेशन में डिक्शनरीज़ तक पहुँचने के लिए ऐलियास प्रदान करता है।
49
- 4. **ट्री-शेकिंग**: यह `intlayerPrune` प्लगइन के माध्यम से अप्रयुक्त अनुवादों की ट्री-शेकिंग का समर्थन करता है।
161
+ | Deprecated export | Replacement |
162
+ | ----------------- | ----------- |
163
+ | `intlayerPlugin` | `intlayer` |
164
+ | `intLayerPlugin` | `intlayer` |
@@ -30,16 +30,89 @@ author: aymericzip
30
30
 
31
31
  ## उपयोग
32
32
 
33
+ ### `intlayer()` के भाग के रूप में (अनुशंसित)
34
+
35
+ अपने Intlayer कॉन्फ़िगरेशन के माध्यम से pruning सक्षम करें और मुख्य प्लगइन सब कुछ संभालता है:
36
+
37
+ ```ts
38
+ // intlayer.config.ts
39
+ import { defineConfig } from "intlayer";
40
+
41
+ export default defineConfig({
42
+ build: {
43
+ optimize: true, // prune और minify दोनों को सक्षम करता है
44
+ },
45
+ });
46
+ ```
47
+
48
+ ```ts
49
+ // vite.config.ts
50
+ import { defineConfig } from "vite";
51
+ import { intlayer } from "vite-intlayer";
52
+
53
+ export default defineConfig({
54
+ plugins: [intlayer()],
55
+ });
56
+ ```
57
+
58
+ ### स्वतंत्र
59
+
60
+ यदि आप प्लगइन स्टैक को मैन्युअल रूप से कंपोज़ कर रहे हैं, तो `intlayerPrune` और `intlayerMinify` एक `PruneContext` ऑब्जेक्ट साझा करते हैं जिसे एक बार बनाया जाना चाहिए और दोनों को पारित किया जाना चाहिए:
61
+
33
62
  ```ts
34
- // vite.config.ts (Vite कॉन्फ़िगरेशन फ़ाइल)
63
+ // vite.config.ts
35
64
  import { defineConfig } from "vite";
36
- import { intlayer, intlayerPrune } from "vite-intlayer";
65
+ import { intlayerPrune, intlayerMinify } from "vite-intlayer";
66
+ import { createPruneContext } from "@intlayer/babel";
67
+ import { getConfiguration } from "@intlayer/config/node";
68
+
69
+ const intlayerConfig = getConfiguration();
70
+ const pruneContext = createPruneContext();
37
71
 
38
72
  export default defineConfig({
39
- plugins: [intlayer(), intlayerPrune()],
73
+ plugins: [
74
+ intlayerPrune(intlayerConfig, pruneContext),
75
+ intlayerMinify(intlayerConfig, pruneContext), // वैकल्पिक, समान संदर्भ से पढ़ता है
76
+ ],
40
77
  });
41
78
  ```
42
79
 
43
- ## विवरण
80
+ ## यह कैसे काम करता है
81
+
82
+ ### 1. उपयोग विश्लेषण (buildStart)
83
+
84
+ `buildStart` के दौरान, `intlayerOptimize` plugin (जो `intlayer()` का भी हिस्सा है) `build.filesList` में सूचीबद्ध प्रत्येक component source file को स्कैन करता है। प्रत्येक `useIntlayer('key')` या `getIntlayer('key')` कॉल के लिए, यह रिकॉर्ड करता है कि कौन से fields को exactly एक्सेस किया गया है, जैसे:
85
+
86
+ ```ts
87
+ const { title, description } = useIntlayer("myDict");
88
+ // records: myDict → { title, description }
89
+ ```
90
+
91
+ यह किसी भी `transform` कॉल के चलने से पहले `pruneContext.fieldUsageMap` बनाता है।
92
+
93
+ ### 2. JSON pruning (transform, enforce: 'pre')
94
+
95
+ जब Vite एक compiled dictionary JSON फ़ाइल को प्रोसेस करता है, तो `intlayerPrune` इसे Vite के built-in JSON → ESM conversion से पहले intercept करता है। यह `pruneContext` से field-usage map को पढ़ता है और किसी भी content field को हटाता है जो recorded usage set में नहीं है।
96
+
97
+ दो content shapes समर्थित हैं:
98
+
99
+ - **Static dictionaries** — `{ nodeType: "translation", translation: { en: {...}, fr: {...} } }`. Fields को `translation` के अंदर per-locale pruned किया जाता है।
100
+ - **Dynamic (per-locale) dictionaries** — flat `{ fieldA: ..., fieldB: ... }`. Fields को top level पर pruned किया जाता है।
101
+
102
+ ### 3. Edge cases
103
+
104
+ यदि किसी dictionary की content structure को पहचाना नहीं जा सकता (उदाहरण के लिए, एक असामान्य nested shape), तो इसे `pruneContext.dictionariesWithEdgeCases` में जोड़ा जाता है और **अछूता छोड़ दिया जाता है**। एक warning लॉग की जाती है। `intlayerMinify` भी इन dictionaries को छोड़ देता है।
105
+
106
+ ### 4. Field-rename map
107
+
108
+ जब pruning सफल होता है, `intlayerPrune` `pruneContext.dictionaryKeyToFieldRenameMap` भी लिखता है — मूल field names से short aliases तक एक mapping। `intlayerMinify` इस map को output JSON में fields को rename करने के लिए पढ़ता है, और `intlayerOptimize` का Babel rename pass source files में property accesses को अपडेट करता है।
109
+
110
+ ## सक्रियण शर्तें
111
+
112
+ `intlayerPrune` सक्रिय है **केवल** जब निम्नलिखित सभी सत्य हों:
113
+
114
+ 1. Vite कमांड `build` है।
115
+ 2. `build.optimize` `true` है (या `undefined`, जो builds के लिए डिफ़ॉल्ट रूप से `true` है)।
116
+ 3. `build.purge` आपके Intlayer config में `true` है।
44
117
 
45
- यह plugin आपके स्रोत कोड का विश्लेषण करता है ताकि यह पहचान किया जा सके कि कौन सी dictionary keys वास्तव में उपयोग की जा रही हैं। इसके बाद यह bundled dictionary files से किसी भी अप्रयुक्त सामग्री को हटा देता है। यह उन बड़े प्रोजेक्ट्स के लिए विशेष रूप से उपयोगी है जिनमें कई dictionaries हों और केवल उनका एक subset ही विशिष्ट पेजों या components में इस्तेमाल हो रहा हो।
118
+ यह स्वचालित रूप से **अक्षम** हो जाता है जब `editor.enabled` `true` है क्योंकि संपादक को पूर्ण शब्दकोश सामग्री की आवश्यकता होती है।
@@ -245,14 +245,14 @@ syncJSON({
245
245
 
246
246
  आप विभिन्न JSON स्रोतों को सिंक्रनाइज़ करने के लिए कई `syncJSON` प्लगइन्स जोड़ सकते हैं। यह तब उपयोगी होता है जब आपके प्रोजेक्ट में कई i18n लाइब्रेरीज़ या विभिन्न JSON संरचनाएँ हों।
247
247
 
248
- ### प्राथमिकता प्रणाली
248
+ #### प्राथमिकता प्रणाली
249
249
 
250
- जब कई प्लगइन्स एक ही शब्दकोश कुंजी को लक्षित करते हैं, तो `priority` पैरामीटर यह निर्धारित करता है कि कौन सा प्लगइन प्राथमिकता प्राप्त करेगा:
250
+ जब कई प्लगइन एक ही शब्दकोश कुंजी को लक्षित करते हैं, तो `priority` पैरामीटर यह निर्धारित करता है कि कौन सा प्लगइन प्राथमिकता लेता है:
251
251
 
252
- - उच्च प्राथमिकता संख्या निम्न प्राथमिकता वाले पर जीतती है
253
- - `.content` फ़ाइलों की डिफ़ॉल्ट प्राथमिकता `0` है
254
- - प्लगइन्स की सामग्री फ़ाइलों की डिफ़ॉल्ट प्राथमिकता `-1` है
255
- - समान प्राथमिकता वाले प्लगइन्स को कॉन्फ़िगरेशन में उनके प्रकट होने के क्रम में संसाधित किया जाता है
252
+ - उच्च प्राथमिकता संख्या निम्न संख्याओं पर जीत जाते हैं
253
+ - `.content` फाइलों की डिफ़ॉल्ट प्राथमिकता `0` है
254
+ - प्लगइन की डिफ़ॉल्ट प्राथमिकता `0` है
255
+ - समान प्राथमिकता वाले प्लगइन को कॉन्फ़िगरेशन में दिखाई देने के क्रम में संसाधित किया जाता है
256
256
 
257
257
  ```ts fileName="intlayer.config.ts"
258
258
  import { Locales, type IntlayerConfig } from "intlayer";
@@ -265,7 +265,7 @@ const config: IntlayerConfig = {
265
265
  },
266
266
 
267
267
  plugins: [
268
- // प्राथमिक JSON स्रोत (सबसे उच्च प्राथमिकता)
268
+ // प्राथमिक JSON स्रोत (उच्चतम प्राथमिकता)
269
269
  syncJSON({
270
270
  format: "i18next",
271
271
  source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
@@ -273,7 +273,7 @@ const config: IntlayerConfig = {
273
273
  priority: 10,
274
274
  }),
275
275
 
276
- // फॉलबैक JSON स्रोत (कम प्राथमिकता)
276
+ // फॉलबैक JSON स्रोत (निम्न प्राथमिकता)
277
277
  syncJSON({
278
278
  format: "i18next",
279
279
  source: ({ locale }) => `./fallback-locales/${locale}.json`,
@@ -281,7 +281,7 @@ const config: IntlayerConfig = {
281
281
  priority: 5,
282
282
  }),
283
283
 
284
- // लेगेसी JSON स्रोत (सबसे कम प्राथमिकता)
284
+ // लीगेसी JSON स्रोत (सबसे कम प्राथमिकता)
285
285
  syncJSON({
286
286
  format: "i18next",
287
287
  source: ({ locale }) => `/my/other/app/legacy/${locale}/messages.json`,
@@ -374,21 +374,6 @@ curl -fsSL https://intlayer.org/install.sh | sh
374
374
 
375
375
  इंस्टॉलर एक `docker-compose.yml` और एक `.env` डाउनलोड करता है, आवश्यक सीक्रेट्स (secrets) को स्वचालित रूप से जनरेट करता है, और `docker compose up -d` चलाता है। सब कुछ — डैशबोर्ड, API, डेटाबेस, ऑब्जेक्ट स्टोरेज, और ट्रांजेक्शनल ईमेल — कंटेनर्स में स्थानीय रूप से चलता है।
376
376
 
377
- ### शामिल सेवाएं
378
-
379
- | सेवा | उद्देश्य |
380
- | -------------------------------------- | ---------------------------------------------------------------- |
381
- | **app** (TanStack Start) | पोर्ट `3000` पर डैशबोर्ड UI |
382
- | **backend** (Fastify/Bun) | पोर्ट `3100` पर REST API |
383
- | **MongoDB 7** (सिंगल-नोड रेप्लिका सेट) | प्राथमिक डेटाबेस |
384
- | **Redis 7** | जॉब क्यूज़ और कैशिंग |
385
- | **MinIO** | S3-संगत ऑब्जेक्ट स्टोरेज (अवतार, स्क्रीनशॉट) |
386
- | **Mailpit** | लोकल SMTP सिंक + पोर्ट `8025` पर ट्रांजेक्शनल ईमेल के लिए वेब UI |
387
-
388
- Chromium (Puppeteer स्क्रीनशॉट जनरेशन के लिए उपयोग किया जाता है) बैकएंड इमेज के अंदर बंडल किया गया है — किसी अतिरिक्त कंटेनर की आवश्यकता नहीं है।
389
-
390
- ---
391
-
392
377
  ## v8 से माइग्रेशन नोट्स
393
378
 
394
379
  यदि आप v8 से अपग्रेड कर रहे हैं, तो ध्यान दें कि v9 में कोई ब्रेकिंग बदलाव (breaking changes) शामिल नहीं हैं। लेकिन यहाँ मुख्य बदलाव दिए गए हैं:
@@ -80,6 +80,18 @@ curl -fsSL https://intlayer.org/install.sh | sh
80
80
 
81
81
  ---
82
82
 
83
+ ## पहली बार सेटअप
84
+
85
+ एक नए instance (खाली डेटाबेस) पर, डैशबोर्ड खोलने से आप **`/init`** पृष्ठ पर रीडायरेक्ट हो जाते हैं:
86
+
87
+ 1. पहला खाता बनाएँ। क्योंकि users collection खाली है, यह खाता स्वचालित रूप से **super admin** को प्रचारित किया जाता है।
88
+ 2. एक सत्यापन ईमेल भेजा जाता है (Resend के माध्यम से)। ईमेल सत्यापन **अनिवार्य** है — यही कारण है कि `RESEND_API_KEY` को शुरू करने से पहले सेट किया जाना चाहिए।
89
+ 3. ईमेल में लिंक पर क्लिक करें, फिर साइन इन करें।
90
+
91
+ एक बार admin मौजूद हो जाने पर, `/init` मानक साइन-इन पृष्ठ पर रीडायरेक्ट करता है।
92
+
93
+ ---
94
+
83
95
  ## सेवाएँ
84
96
 
85
97
  | सर्विस | इमेज | होस्ट पोर्ट(s) | उद्देश्य |
@@ -97,9 +109,18 @@ curl -fsSL https://intlayer.org/install.sh | sh
97
109
 
98
110
  ---
99
111
 
100
- ## एनवायरनमेंट वेरिएबल
112
+ ## Environment variables
113
+
114
+ ### आवश्यक
101
115
 
102
- इंस्टॉलर एक तैयार-से-उपयोग `.env` जेनरेट करता है। नीचे दी गई तालिका प्रत्येक वेरिएबल का वर्णन करती है।
116
+ | Variable | Example | Description |
117
+ | ---------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
118
+ | `DB_ID` | `intlayer` | MongoDB Atlas user |
119
+ | `DB_MDP` | _(your password)_ | MongoDB Atlas password |
120
+ | `DB_CLUSTER` | `cluster0.xxxxx.mongodb.net` | MongoDB Atlas cluster host (used in the `mongodb+srv://` URI) |
121
+ | `BETTER_AUTH_SECRET` | _(generated)_ | 32-byte secret for session signing |
122
+ | `S3_SECRET_ACCESS_KEY` | _(generated)_ | Secret for the bundled MinIO |
123
+ | `RESEND_API_KEY` | _(your key)_ | Transactional email via Resend. Required for first-run setup unless you configure a global SMTP mailer (see [Global mailer](#global-mailer)) |
103
124
 
104
125
  ### आवश्यक (स्वतः जेनरेटेड या प्रॉम्प्टेड)
105
126
 
@@ -125,6 +146,17 @@ curl -fsSL https://intlayer.org/install.sh | sh
125
146
  | `VITE_BACKEND_URL` | `http://localhost:3100` | बिल्ड टाइम पर डैशबोर्ड में बेक किया गया बैकएंड URL |
126
147
  | `VITE_DOMAIN` | `localhost` | बिल्ड टाइम पर डैशबोर्ड में बेक किया गया डोमेन |
127
148
 
149
+ ### Optional (features degrade gracefully when absent)
150
+
151
+ | Variable | Feature |
152
+ | -------------------------------------------------------- | ----------------------------------------- |
153
+ | `OPENAI_API_KEY` | AI-assisted translation and content audit |
154
+ | `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | Billing and subscription management |
155
+ | `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | GitHub OAuth login |
156
+ | `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google OAuth login |
157
+ | `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | GitLab OAuth login |
158
+ | `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Microsoft OAuth login |
159
+
128
160
  ### वैकल्पिक (अनुपस्थिति में फीचर धीरे-धीरे खराब हो जाते हैं)
129
161
 
130
162
  | वेरिएबल | फीचर |
@@ -259,47 +291,11 @@ docker run --rm \
259
291
 
260
292
  ---
261
293
 
262
- ## रिवर्स प्रॉक्सी (Nginx / Caddy) का उपयोग करना
263
-
264
- प्रोडक्शन डिप्लॉयमेंट के लिए, ऐप और बैकएंड कंटेनरों को सीधे एक्सपोज़ करने के बजाय उनके सामने एक रिवर्स प्रॉक्सी रखें।
265
-
266
- ### Nginx उदाहरण
267
-
268
- ```nginx
269
- server {
270
- listen 80;
271
- server_name cms.example.com;
272
-
273
- location / {
274
- proxy_pass http://localhost:3000;
275
- proxy_set_header Host $host;
276
- proxy_set_header X-Real-IP $remote_addr;
277
- }
278
- }
294
+ ## सीमाएं
279
295
 
280
- server {
281
- listen 80;
282
- server_name api.example.com;
283
-
284
- location / {
285
- proxy_pass http://localhost:3100;
286
- proxy_set_header Host $host;
287
- proxy_set_header X-Real-IP $remote_addr;
288
- }
289
- }
290
- ```
291
-
292
- अपने पब्लिक डोमेन से मेल खाने के लिए निम्नलिखित `.env` वेरिएबल को अपडेट करें:
293
-
294
- ```sh
295
- BACKEND_URL=https://api.example.com
296
- APP_URL=https://cms.example.com
297
- DOMAIN=example.com
298
- VITE_BACKEND_URL=https://api.example.com
299
- VITE_DOMAIN=example.com
300
- ```
301
-
302
- > `VITE_*` वेरिएबल बिल्ड टाइम पर डैशबोर्ड इमेज में बेक किए जाते हैं। यदि आप इमेज बनने के बाद उन्हें बदलते हैं, तो आपको `app` इमेज (`docker compose build app`) को फिर से बनाना होगा या रनटाइम कॉन्फ़िग इंजेक्शन का उपयोग करना होगा।
296
+ - **MongoDB बाहरी (Atlas) होना चाहिए।** बैकएंड केवल `mongodb+srv://` पर कनेक्ट करता है (जो `DB_ID` / `DB_MDP` / `DB_CLUSTER` से बनाया गया है), इसलिए एक सादा `mongodb://host:27017` — कंटेनर के अपने बंडल किए गए `mongod` सहित — का उपयोग नहीं किया जा सकता है। एक MongoDB Atlas क्लस्टर प्रदान करें।
297
+ - **कोई कस्टम डोमेन नहीं।** सभी ब्राउज़र-सामने वाले `VITE_*` URLs बिल्ड टाइम पर ऐप में इनलाइन किए जाते हैं, और प्रकाशित इमेज `localhost` मानों के साथ आती है। डैशबोर्ड को `http://localhost:3000` पर एक्सेस किया जाना चाहिए; इसे एक सार्वजनिक डोमेन पर सर्व करने के लिए इमेज को लक्ष्य URLs के साथत: फिर से बनाने की आवश्यकता होगी और इसे तुरंत समर्थित नहीं किया जाता है।
298
+ - **ईमेल को एक काम करने वाले मेलर की आवश्यकता है।** पहली बार सेटअप ईमेल सत्यापन को लागू करता है, इसलिए या तो `RESEND_API_KEY` या एक [global SMTP mailer](#global-mailer) (`MAIL_PROVIDER=smtp` + `MAIL_SMTP_*`) को कॉन्फ़िगर किया जाना चाहिए। पहले एडमिन साइन इन करने के बाद, प्रत्येक संगठन डैशबोर्ड से अपना स्वयं का SMTP या Resend मेलर भी कॉन्फ़िगर कर सकता है।
303
299
 
304
300
  ---
305
301
 
@@ -315,15 +311,6 @@ docker compose logs mongo
315
311
  docker compose logs redis
316
312
  ```
317
313
 
318
- ### डैशबोर्ड API तक नहीं पहुँच सकता
319
-
320
- सत्यापित करें कि `VITE_BACKEND_URL` उस URL से मेल खाता है जहाँ बैकएंड **ब्राउज़र** से (डॉकर नेटवर्क से नहीं) पहुँच योग्य है। यदि आपने बैकएंड पोर्ट बदला है या एक रिवर्स प्रॉक्सी जोड़ा है, तो डैशबोर्ड इमेज को फिर से बनाएँ:
321
-
322
- ```sh
323
- docker compose build app
324
- docker compose up -d app
325
- ```
326
-
327
314
  ### ईमेल नहीं भेजा जा रहा है
328
315
 
329
316
  डिफ़ॉल्ट रूप से, सभी आउटबाउंड ईमेल मेलपिट द्वारा कैप्चर किए जाते हैं। भेजे गए संदेशों को देखने के लिए `http://localhost:8025` खोलें। वास्तविक ईमेल भेजने के लिए, `.env` में `MAIL_PROVIDER=resend` और `RESEND_API_KEY=<your-key>` सेट करें, फिर बैकएंड को रीस्टार्ट करें: