@intlayer/docs 9.5.5 → 9.5.7

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 (920) hide show
  1. package/README.md +0 -1
  2. package/blog/ar/i18next_vs_intlayer-i18next.md +122 -15
  3. package/blog/ar/i18next_vs_intlayer.md +130 -16
  4. package/blog/ar/lingui_vs_intlayer.md +122 -15
  5. package/blog/ar/next-intl_vs_intlayer-next-intl.md +124 -15
  6. package/blog/ar/next-intl_vs_intlayer.md +136 -20
  7. package/blog/ar/transform_existing_vite_react_app_using_compiler.md +4 -2
  8. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +119 -17
  9. package/blog/ar/vue-i18n_vs_intlayer.md +193 -31
  10. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +361 -0
  11. package/blog/de/i18next_vs_intlayer-i18next.md +122 -15
  12. package/blog/de/i18next_vs_intlayer.md +128 -14
  13. package/blog/de/lingui_vs_intlayer.md +122 -15
  14. package/blog/de/next-intl_vs_intlayer-next-intl.md +124 -15
  15. package/blog/de/next-intl_vs_intlayer.md +125 -15
  16. package/blog/de/transform_existing_vite_react_app_using_compiler.md +4 -2
  17. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  18. package/blog/de/vue-i18n_vs_intlayer.md +193 -31
  19. package/blog/en/i18next_vs_intlayer-i18next.md +121 -14
  20. package/blog/en/i18next_vs_intlayer.md +128 -14
  21. package/blog/en/lingui_vs_intlayer.md +124 -15
  22. package/blog/en/next-intl_vs_intlayer-next-intl.md +123 -14
  23. package/blog/en/next-intl_vs_intlayer.md +125 -13
  24. package/blog/en/transform_existing_vite_react_app_using_compiler.md +4 -2
  25. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +115 -15
  26. package/blog/en/vue-i18n_vs_intlayer.md +188 -27
  27. package/blog/en-GB/i18next_vs_intlayer-i18next.md +121 -14
  28. package/blog/en-GB/i18next_vs_intlayer.md +128 -14
  29. package/blog/en-GB/lingui_vs_intlayer.md +122 -15
  30. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +124 -15
  31. package/blog/en-GB/next-intl_vs_intlayer.md +125 -15
  32. package/blog/en-GB/transform_existing_vite_react_app_using_compiler.md +4 -2
  33. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  34. package/blog/en-GB/vue-i18n_vs_intlayer.md +187 -25
  35. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +116 -0
  36. package/blog/es/i18next_vs_intlayer-i18next.md +122 -15
  37. package/blog/es/i18next_vs_intlayer.md +128 -14
  38. package/blog/es/lingui_vs_intlayer.md +122 -15
  39. package/blog/es/next-intl_vs_intlayer-next-intl.md +124 -15
  40. package/blog/es/next-intl_vs_intlayer.md +125 -15
  41. package/blog/es/transform_existing_vite_react_app_using_compiler.md +4 -2
  42. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  43. package/blog/es/vue-i18n_vs_intlayer.md +193 -31
  44. package/blog/fr/i18next_vs_intlayer-i18next.md +122 -15
  45. package/blog/fr/i18next_vs_intlayer.md +128 -14
  46. package/blog/fr/lingui_vs_intlayer.md +122 -15
  47. package/blog/fr/next-intl_vs_intlayer-next-intl.md +124 -15
  48. package/blog/fr/next-intl_vs_intlayer.md +127 -15
  49. package/blog/fr/transform_existing_vite_react_app_using_compiler.md +4 -2
  50. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +118 -17
  51. package/blog/fr/vue-i18n_vs_intlayer.md +192 -31
  52. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +329 -7
  53. package/blog/hi/i18next_vs_intlayer-i18next.md +122 -15
  54. package/blog/hi/i18next_vs_intlayer.md +130 -16
  55. package/blog/hi/lingui_vs_intlayer.md +122 -15
  56. package/blog/hi/next-intl_vs_intlayer-next-intl.md +124 -15
  57. package/blog/hi/next-intl_vs_intlayer.md +135 -19
  58. package/blog/hi/transform_existing_vite_react_app_using_compiler.md +4 -2
  59. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  60. package/blog/hi/vue-i18n_vs_intlayer.md +193 -31
  61. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  62. package/blog/id/i18next_vs_intlayer-i18next.md +122 -15
  63. package/blog/id/i18next_vs_intlayer.md +128 -14
  64. package/blog/id/lingui_vs_intlayer.md +122 -15
  65. package/blog/id/next-intl_vs_intlayer-next-intl.md +124 -15
  66. package/blog/id/next-intl_vs_intlayer.md +135 -19
  67. package/blog/id/transform_existing_vite_react_app_using_compiler.md +4 -2
  68. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +354 -2
  69. package/blog/id/vue-i18n_vs_intlayer.md +188 -26
  70. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +327 -7
  71. package/blog/it/i18next_vs_intlayer-i18next.md +122 -15
  72. package/blog/it/i18next_vs_intlayer.md +128 -14
  73. package/blog/it/lingui_vs_intlayer.md +122 -15
  74. package/blog/it/next-intl_vs_intlayer-next-intl.md +124 -15
  75. package/blog/it/next-intl_vs_intlayer.md +125 -15
  76. package/blog/it/transform_existing_vite_react_app_using_compiler.md +4 -2
  77. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  78. package/blog/it/vue-i18n_vs_intlayer.md +191 -31
  79. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +332 -5
  80. package/blog/ja/i18next_vs_intlayer-i18next.md +122 -15
  81. package/blog/ja/i18next_vs_intlayer.md +129 -17
  82. package/blog/ja/lingui_vs_intlayer.md +122 -15
  83. package/blog/ja/next-intl_vs_intlayer-next-intl.md +124 -15
  84. package/blog/ja/next-intl_vs_intlayer.md +124 -14
  85. package/blog/ja/transform_existing_vite_react_app_using_compiler.md +4 -2
  86. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  87. package/blog/ja/vue-i18n_vs_intlayer.md +193 -31
  88. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +361 -0
  89. package/blog/ko/i18next_vs_intlayer-i18next.md +122 -15
  90. package/blog/ko/i18next_vs_intlayer.md +129 -17
  91. package/blog/ko/lingui_vs_intlayer.md +122 -15
  92. package/blog/ko/next-intl_vs_intlayer-next-intl.md +124 -15
  93. package/blog/ko/next-intl_vs_intlayer.md +134 -18
  94. package/blog/ko/transform_existing_vite_react_app_using_compiler.md +4 -2
  95. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  96. package/blog/ko/vue-i18n_vs_intlayer.md +193 -31
  97. package/blog/pl/i18next_vs_intlayer-i18next.md +122 -15
  98. package/blog/pl/i18next_vs_intlayer.md +128 -14
  99. package/blog/pl/lingui_vs_intlayer.md +122 -15
  100. package/blog/pl/next-intl_vs_intlayer-next-intl.md +124 -15
  101. package/blog/pl/next-intl_vs_intlayer.md +134 -18
  102. package/blog/pl/transform_existing_vite_react_app_using_compiler.md +4 -2
  103. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  104. package/blog/pl/vue-i18n_vs_intlayer.md +188 -26
  105. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +361 -0
  106. package/blog/pt/i18next_vs_intlayer-i18next.md +122 -15
  107. package/blog/pt/i18next_vs_intlayer.md +128 -14
  108. package/blog/pt/lingui_vs_intlayer.md +122 -15
  109. package/blog/pt/next-intl_vs_intlayer-next-intl.md +124 -15
  110. package/blog/pt/next-intl_vs_intlayer.md +131 -15
  111. package/blog/pt/transform_existing_vite_react_app_using_compiler.md +4 -2
  112. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  113. package/blog/pt/vue-i18n_vs_intlayer.md +193 -31
  114. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +361 -0
  115. package/blog/ru/i18next_vs_intlayer-i18next.md +122 -15
  116. package/blog/ru/i18next_vs_intlayer.md +130 -16
  117. package/blog/ru/lingui_vs_intlayer.md +122 -15
  118. package/blog/ru/next-intl_vs_intlayer-next-intl.md +125 -16
  119. package/blog/ru/next-intl_vs_intlayer.md +123 -13
  120. package/blog/ru/transform_existing_vite_react_app_using_compiler.md +4 -2
  121. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +127 -27
  122. package/blog/ru/vue-i18n_vs_intlayer.md +193 -31
  123. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +326 -19
  124. package/blog/tr/i18next_vs_intlayer-i18next.md +122 -15
  125. package/blog/tr/i18next_vs_intlayer.md +128 -14
  126. package/blog/tr/lingui_vs_intlayer.md +122 -15
  127. package/blog/tr/next-intl_vs_intlayer-next-intl.md +124 -15
  128. package/blog/tr/next-intl_vs_intlayer.md +136 -20
  129. package/blog/tr/transform_existing_vite_react_app_using_compiler.md +4 -2
  130. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  131. package/blog/tr/vue-i18n_vs_intlayer.md +188 -26
  132. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +361 -0
  133. package/blog/uk/i18next_vs_intlayer-i18next.md +122 -15
  134. package/blog/uk/i18next_vs_intlayer.md +130 -16
  135. package/blog/uk/lingui_vs_intlayer.md +122 -15
  136. package/blog/uk/next-intl_vs_intlayer-next-intl.md +124 -15
  137. package/blog/uk/next-intl_vs_intlayer.md +135 -19
  138. package/blog/uk/transform_existing_vite_react_app_using_compiler.md +4 -2
  139. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +135 -17
  140. package/blog/uk/vue-i18n_vs_intlayer.md +188 -27
  141. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +361 -0
  142. package/blog/vi/i18next_vs_intlayer-i18next.md +122 -15
  143. package/blog/vi/i18next_vs_intlayer.md +128 -14
  144. package/blog/vi/lingui_vs_intlayer.md +122 -15
  145. package/blog/vi/next-intl_vs_intlayer-next-intl.md +124 -15
  146. package/blog/vi/next-intl_vs_intlayer.md +135 -19
  147. package/blog/vi/transform_existing_vite_react_app_using_compiler.md +4 -2
  148. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  149. package/blog/vi/vue-i18n_vs_intlayer.md +188 -26
  150. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  151. package/blog/zh/i18next_vs_intlayer-i18next.md +122 -15
  152. package/blog/zh/i18next_vs_intlayer.md +128 -14
  153. package/blog/zh/lingui_vs_intlayer.md +122 -15
  154. package/blog/zh/next-intl_vs_intlayer-next-intl.md +124 -15
  155. package/blog/zh/next-intl_vs_intlayer.md +125 -15
  156. package/blog/zh/transform_existing_vite_react_app_using_compiler.md +4 -2
  157. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  158. package/blog/zh/vue-i18n_vs_intlayer.md +192 -31
  159. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +340 -9
  160. package/dist/cjs/generated/docs.entry.cjs +40 -40
  161. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  162. package/dist/cjs/index.cjs +2 -2
  163. package/dist/esm/generated/docs.entry.mjs +40 -40
  164. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  165. package/dist/esm/index.mjs +2 -2
  166. package/dist/types/generated/docs.entry.d.ts +2 -2
  167. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  168. package/docs/ar/benchmark/nextjs.md +13 -13
  169. package/docs/ar/benchmark/solid.md +5 -5
  170. package/docs/ar/benchmark/svelte.md +4 -4
  171. package/docs/ar/benchmark/tanstack.md +14 -13
  172. package/docs/ar/benchmark/vue.md +5 -5
  173. package/docs/ar/chrome_extension.md +130 -0
  174. package/docs/ar/cli/index.md +6 -1
  175. package/docs/ar/cli/infra.md +162 -0
  176. package/docs/ar/cli/init.md +24 -1
  177. package/docs/ar/dictionary/html.md +173 -5
  178. package/docs/ar/dictionary/markdown.md +263 -1
  179. package/docs/ar/intlayer_with_analog.md +23 -1
  180. package/docs/ar/intlayer_with_angular_19.md +24 -1
  181. package/docs/ar/intlayer_with_angular_21.md +24 -1
  182. package/docs/ar/intlayer_with_astro.md +42 -32
  183. package/docs/ar/intlayer_with_astro_lit.md +56 -36
  184. package/docs/ar/intlayer_with_astro_preact.md +57 -36
  185. package/docs/ar/intlayer_with_astro_react.md +57 -36
  186. package/docs/ar/intlayer_with_astro_solid.md +57 -36
  187. package/docs/ar/intlayer_with_astro_svelte.md +56 -36
  188. package/docs/ar/intlayer_with_astro_vue.md +56 -36
  189. package/docs/ar/intlayer_with_react_router_v7.md +12 -1
  190. package/docs/ar/intlayer_with_remix_3.md +22 -1
  191. package/docs/ar/intlayer_with_solid_start.md +14 -7
  192. package/docs/ar/intlayer_with_svelte_kit.md +12 -1
  193. package/docs/ar/intlayer_with_tanstack+solid.md +13 -2
  194. package/docs/ar/intlayer_with_tanstack.md +13 -6
  195. package/docs/ar/intlayer_with_vite+lit.md +75 -3
  196. package/docs/ar/intlayer_with_vite+preact.md +27 -19
  197. package/docs/ar/intlayer_with_vite+react.md +27 -19
  198. package/docs/ar/intlayer_with_vite+solid.md +27 -19
  199. package/docs/ar/intlayer_with_vite+svelte.md +27 -19
  200. package/docs/ar/intlayer_with_vite+vanilla.md +16 -3
  201. package/docs/ar/intlayer_with_vite+vue.md +27 -19
  202. package/docs/ar/introduction.md +0 -1
  203. package/docs/ar/readme.md +0 -1
  204. package/docs/ar/releases/v8.md +1 -5
  205. package/docs/ar/self_hosting.md +406 -231
  206. package/docs/bn/intlayer_with_vite+lit.md +75 -3
  207. package/docs/bn/intlayer_with_vite+vanilla.md +16 -3
  208. package/docs/bn/introduction.md +0 -1
  209. package/docs/cs/intlayer_with_vite+lit.md +75 -3
  210. package/docs/cs/intlayer_with_vite+vanilla.md +16 -3
  211. package/docs/cs/introduction.md +0 -1
  212. package/docs/de/benchmark/nextjs.md +13 -13
  213. package/docs/de/benchmark/solid.md +5 -5
  214. package/docs/de/benchmark/svelte.md +4 -4
  215. package/docs/de/benchmark/tanstack.md +14 -13
  216. package/docs/de/benchmark/vue.md +5 -5
  217. package/docs/de/chrome_extension.md +130 -0
  218. package/docs/de/cli/index.md +6 -1
  219. package/docs/de/cli/infra.md +162 -0
  220. package/docs/de/cli/init.md +24 -1
  221. package/docs/de/dictionary/html.md +173 -5
  222. package/docs/de/dictionary/markdown.md +263 -1
  223. package/docs/de/intlayer_with_analog.md +23 -1
  224. package/docs/de/intlayer_with_angular_19.md +24 -1
  225. package/docs/de/intlayer_with_angular_21.md +24 -1
  226. package/docs/de/intlayer_with_astro.md +35 -25
  227. package/docs/de/intlayer_with_astro_lit.md +47 -27
  228. package/docs/de/intlayer_with_astro_preact.md +48 -27
  229. package/docs/de/intlayer_with_astro_react.md +48 -27
  230. package/docs/de/intlayer_with_astro_solid.md +48 -27
  231. package/docs/de/intlayer_with_astro_svelte.md +47 -27
  232. package/docs/de/intlayer_with_astro_vue.md +47 -27
  233. package/docs/de/intlayer_with_react_router_v7.md +12 -1
  234. package/docs/de/intlayer_with_remix_3.md +22 -1
  235. package/docs/de/intlayer_with_solid_start.md +14 -7
  236. package/docs/de/intlayer_with_svelte_kit.md +12 -1
  237. package/docs/de/intlayer_with_tanstack+solid.md +13 -2
  238. package/docs/de/intlayer_with_tanstack.md +13 -6
  239. package/docs/de/intlayer_with_vite+lit.md +75 -3
  240. package/docs/de/intlayer_with_vite+preact.md +16 -3
  241. package/docs/de/intlayer_with_vite+react.md +16 -3
  242. package/docs/de/intlayer_with_vite+solid.md +16 -3
  243. package/docs/de/intlayer_with_vite+svelte.md +16 -3
  244. package/docs/de/intlayer_with_vite+vanilla.md +16 -3
  245. package/docs/de/intlayer_with_vite+vue.md +16 -3
  246. package/docs/de/introduction.md +0 -1
  247. package/docs/de/readme.md +0 -1
  248. package/docs/de/releases/v8.md +1 -5
  249. package/docs/de/self_hosting.md +404 -227
  250. package/docs/en/benchmark/nextjs.md +13 -13
  251. package/docs/en/benchmark/solid.md +5 -5
  252. package/docs/en/benchmark/svelte.md +4 -4
  253. package/docs/en/benchmark/tanstack.md +14 -13
  254. package/docs/en/benchmark/vue.md +5 -5
  255. package/docs/en/chrome_extension.md +130 -0
  256. package/docs/en/cli/index.md +6 -1
  257. package/docs/en/cli/infra.md +175 -0
  258. package/docs/en/cli/init.md +25 -1
  259. package/docs/en/dictionary/html.md +173 -5
  260. package/docs/en/dictionary/markdown.md +263 -1
  261. package/docs/en/intlayer_with_analog.md +23 -1
  262. package/docs/en/intlayer_with_angular_19.md +24 -1
  263. package/docs/en/intlayer_with_angular_21.md +24 -1
  264. package/docs/en/intlayer_with_astro.md +29 -21
  265. package/docs/en/intlayer_with_astro_lit.md +46 -26
  266. package/docs/en/intlayer_with_astro_preact.md +47 -26
  267. package/docs/en/intlayer_with_astro_react.md +47 -26
  268. package/docs/en/intlayer_with_astro_solid.md +47 -26
  269. package/docs/en/intlayer_with_astro_svelte.md +46 -26
  270. package/docs/en/intlayer_with_astro_vue.md +46 -26
  271. package/docs/en/intlayer_with_react_router_v7.md +12 -1
  272. package/docs/en/intlayer_with_remix_3.md +22 -1
  273. package/docs/en/intlayer_with_solid_start.md +14 -7
  274. package/docs/en/intlayer_with_svelte_kit.md +12 -1
  275. package/docs/en/intlayer_with_tanstack+solid.md +13 -2
  276. package/docs/en/intlayer_with_tanstack.md +12 -5
  277. package/docs/en/intlayer_with_vite+lit.md +75 -3
  278. package/docs/en/intlayer_with_vite+preact.md +16 -3
  279. package/docs/en/intlayer_with_vite+react.md +16 -3
  280. package/docs/en/intlayer_with_vite+solid.md +16 -3
  281. package/docs/en/intlayer_with_vite+svelte.md +16 -3
  282. package/docs/en/intlayer_with_vite+vanilla.md +16 -3
  283. package/docs/en/intlayer_with_vite+vue.md +16 -3
  284. package/docs/en/introduction.md +0 -1
  285. package/docs/en/readme.md +0 -1
  286. package/docs/en/releases/v8.md +1 -5
  287. package/docs/en/self_hosting.md +418 -176
  288. package/docs/en-GB/benchmark/nextjs.md +13 -13
  289. package/docs/en-GB/benchmark/solid.md +5 -5
  290. package/docs/en-GB/benchmark/svelte.md +4 -4
  291. package/docs/en-GB/benchmark/tanstack.md +14 -13
  292. package/docs/en-GB/benchmark/vue.md +5 -5
  293. package/docs/en-GB/chrome_extension.md +130 -0
  294. package/docs/en-GB/cli/index.md +6 -1
  295. package/docs/en-GB/cli/infra.md +162 -0
  296. package/docs/en-GB/cli/init.md +24 -1
  297. package/docs/en-GB/dictionary/html.md +173 -5
  298. package/docs/en-GB/dictionary/markdown.md +263 -1
  299. package/docs/en-GB/intlayer_with_analog.md +23 -1
  300. package/docs/en-GB/intlayer_with_angular_19.md +24 -1
  301. package/docs/en-GB/intlayer_with_angular_21.md +24 -1
  302. package/docs/en-GB/intlayer_with_astro.md +35 -25
  303. package/docs/en-GB/intlayer_with_astro_lit.md +47 -27
  304. package/docs/en-GB/intlayer_with_astro_preact.md +48 -27
  305. package/docs/en-GB/intlayer_with_astro_react.md +48 -27
  306. package/docs/en-GB/intlayer_with_astro_solid.md +48 -27
  307. package/docs/en-GB/intlayer_with_astro_svelte.md +47 -27
  308. package/docs/en-GB/intlayer_with_astro_vue.md +47 -27
  309. package/docs/en-GB/intlayer_with_react_router_v7.md +12 -1
  310. package/docs/en-GB/intlayer_with_remix_3.md +22 -1
  311. package/docs/en-GB/intlayer_with_solid_start.md +14 -7
  312. package/docs/en-GB/intlayer_with_svelte_kit.md +12 -1
  313. package/docs/en-GB/intlayer_with_tanstack+solid.md +13 -2
  314. package/docs/en-GB/intlayer_with_tanstack.md +13 -6
  315. package/docs/en-GB/intlayer_with_vite+lit.md +75 -3
  316. package/docs/en-GB/intlayer_with_vite+preact.md +16 -3
  317. package/docs/en-GB/intlayer_with_vite+react.md +16 -3
  318. package/docs/en-GB/intlayer_with_vite+solid.md +25 -15
  319. package/docs/en-GB/intlayer_with_vite+svelte.md +16 -3
  320. package/docs/en-GB/intlayer_with_vite+vanilla.md +16 -3
  321. package/docs/en-GB/intlayer_with_vite+vue.md +16 -3
  322. package/docs/en-GB/introduction.md +0 -1
  323. package/docs/en-GB/readme.md +0 -1
  324. package/docs/en-GB/releases/v8.md +1 -5
  325. package/docs/en-GB/self_hosting.md +381 -206
  326. package/docs/es/benchmark/nextjs.md +13 -13
  327. package/docs/es/benchmark/solid.md +5 -5
  328. package/docs/es/benchmark/svelte.md +4 -4
  329. package/docs/es/benchmark/tanstack.md +14 -13
  330. package/docs/es/benchmark/vue.md +5 -5
  331. package/docs/es/chrome_extension.md +130 -0
  332. package/docs/es/cli/index.md +6 -1
  333. package/docs/es/cli/infra.md +162 -0
  334. package/docs/es/cli/init.md +24 -1
  335. package/docs/es/dictionary/html.md +173 -5
  336. package/docs/es/dictionary/markdown.md +263 -1
  337. package/docs/es/intlayer_with_analog.md +23 -1
  338. package/docs/es/intlayer_with_angular_19.md +24 -1
  339. package/docs/es/intlayer_with_angular_21.md +24 -1
  340. package/docs/es/intlayer_with_astro.md +35 -25
  341. package/docs/es/intlayer_with_astro_lit.md +47 -27
  342. package/docs/es/intlayer_with_astro_preact.md +48 -27
  343. package/docs/es/intlayer_with_astro_react.md +48 -27
  344. package/docs/es/intlayer_with_astro_solid.md +48 -27
  345. package/docs/es/intlayer_with_astro_svelte.md +47 -27
  346. package/docs/es/intlayer_with_astro_vue.md +47 -27
  347. package/docs/es/intlayer_with_react_router_v7.md +12 -1
  348. package/docs/es/intlayer_with_remix_3.md +22 -1
  349. package/docs/es/intlayer_with_solid_start.md +14 -7
  350. package/docs/es/intlayer_with_svelte_kit.md +12 -1
  351. package/docs/es/intlayer_with_tanstack+solid.md +13 -2
  352. package/docs/es/intlayer_with_tanstack.md +13 -6
  353. package/docs/es/intlayer_with_vite+lit.md +75 -3
  354. package/docs/es/intlayer_with_vite+preact.md +16 -3
  355. package/docs/es/intlayer_with_vite+react.md +16 -3
  356. package/docs/es/intlayer_with_vite+solid.md +16 -3
  357. package/docs/es/intlayer_with_vite+svelte.md +16 -3
  358. package/docs/es/intlayer_with_vite+vanilla.md +16 -3
  359. package/docs/es/intlayer_with_vite+vue.md +16 -3
  360. package/docs/es/introduction.md +0 -1
  361. package/docs/es/readme.md +0 -1
  362. package/docs/es/releases/v8.md +1 -5
  363. package/docs/es/self_hosting.md +400 -223
  364. package/docs/fr/benchmark/nextjs.md +13 -13
  365. package/docs/fr/benchmark/solid.md +5 -5
  366. package/docs/fr/benchmark/svelte.md +4 -4
  367. package/docs/fr/benchmark/tanstack.md +14 -13
  368. package/docs/fr/benchmark/vue.md +5 -5
  369. package/docs/fr/chrome_extension.md +130 -0
  370. package/docs/fr/cli/index.md +6 -1
  371. package/docs/fr/cli/infra.md +162 -0
  372. package/docs/fr/cli/init.md +24 -1
  373. package/docs/fr/dictionary/html.md +173 -5
  374. package/docs/fr/dictionary/markdown.md +265 -4
  375. package/docs/fr/intlayer_with_analog.md +23 -1
  376. package/docs/fr/intlayer_with_angular_19.md +24 -1
  377. package/docs/fr/intlayer_with_angular_21.md +24 -1
  378. package/docs/fr/intlayer_with_astro.md +36 -26
  379. package/docs/fr/intlayer_with_astro_lit.md +48 -28
  380. package/docs/fr/intlayer_with_astro_preact.md +49 -28
  381. package/docs/fr/intlayer_with_astro_react.md +49 -28
  382. package/docs/fr/intlayer_with_astro_solid.md +49 -28
  383. package/docs/fr/intlayer_with_astro_svelte.md +48 -28
  384. package/docs/fr/intlayer_with_astro_vue.md +48 -28
  385. package/docs/fr/intlayer_with_react_router_v7.md +15 -4
  386. package/docs/fr/intlayer_with_remix_3.md +22 -1
  387. package/docs/fr/intlayer_with_solid_start.md +14 -7
  388. package/docs/fr/intlayer_with_svelte_kit.md +15 -4
  389. package/docs/fr/intlayer_with_tanstack+solid.md +15 -4
  390. package/docs/fr/intlayer_with_tanstack.md +13 -6
  391. package/docs/fr/intlayer_with_vite+lit.md +75 -3
  392. package/docs/fr/intlayer_with_vite+preact.md +19 -6
  393. package/docs/fr/intlayer_with_vite+react.md +19 -6
  394. package/docs/fr/intlayer_with_vite+solid.md +19 -6
  395. package/docs/fr/intlayer_with_vite+svelte.md +19 -6
  396. package/docs/fr/intlayer_with_vite+vanilla.md +19 -6
  397. package/docs/fr/intlayer_with_vite+vue.md +19 -6
  398. package/docs/fr/introduction.md +0 -1
  399. package/docs/fr/readme.md +0 -1
  400. package/docs/fr/releases/v8.md +1 -5
  401. package/docs/fr/self_hosting.md +401 -224
  402. package/docs/hi/benchmark/nextjs.md +13 -13
  403. package/docs/hi/benchmark/solid.md +5 -5
  404. package/docs/hi/benchmark/svelte.md +4 -4
  405. package/docs/hi/benchmark/tanstack.md +14 -13
  406. package/docs/hi/benchmark/vue.md +5 -5
  407. package/docs/hi/chrome_extension.md +130 -0
  408. package/docs/hi/cli/index.md +6 -1
  409. package/docs/hi/cli/infra.md +162 -0
  410. package/docs/hi/cli/init.md +24 -1
  411. package/docs/hi/dictionary/html.md +173 -5
  412. package/docs/hi/dictionary/markdown.md +263 -1
  413. package/docs/hi/intlayer_with_analog.md +23 -1
  414. package/docs/hi/intlayer_with_angular_19.md +24 -1
  415. package/docs/hi/intlayer_with_angular_21.md +24 -1
  416. package/docs/hi/intlayer_with_astro.md +38 -31
  417. package/docs/hi/intlayer_with_astro_lit.md +50 -33
  418. package/docs/hi/intlayer_with_astro_preact.md +51 -33
  419. package/docs/hi/intlayer_with_astro_react.md +51 -33
  420. package/docs/hi/intlayer_with_astro_solid.md +51 -33
  421. package/docs/hi/intlayer_with_astro_svelte.md +50 -33
  422. package/docs/hi/intlayer_with_astro_vue.md +50 -33
  423. package/docs/hi/intlayer_with_react_router_v7.md +20 -12
  424. package/docs/hi/intlayer_with_remix_3.md +22 -1
  425. package/docs/hi/intlayer_with_solid_start.md +14 -7
  426. package/docs/hi/intlayer_with_svelte_kit.md +20 -12
  427. package/docs/hi/intlayer_with_tanstack+solid.md +13 -2
  428. package/docs/hi/intlayer_with_tanstack.md +21 -17
  429. package/docs/hi/intlayer_with_vite+lit.md +75 -3
  430. package/docs/hi/intlayer_with_vite+preact.md +24 -14
  431. package/docs/hi/intlayer_with_vite+react.md +24 -14
  432. package/docs/hi/intlayer_with_vite+solid.md +24 -14
  433. package/docs/hi/intlayer_with_vite+svelte.md +24 -14
  434. package/docs/hi/intlayer_with_vite+vanilla.md +16 -3
  435. package/docs/hi/intlayer_with_vite+vue.md +24 -14
  436. package/docs/hi/introduction.md +0 -1
  437. package/docs/hi/readme.md +0 -1
  438. package/docs/hi/releases/v8.md +1 -5
  439. package/docs/hi/self_hosting.md +409 -235
  440. package/docs/id/benchmark/nextjs.md +13 -13
  441. package/docs/id/benchmark/solid.md +5 -5
  442. package/docs/id/benchmark/svelte.md +4 -4
  443. package/docs/id/benchmark/tanstack.md +14 -13
  444. package/docs/id/benchmark/vue.md +5 -5
  445. package/docs/id/chrome_extension.md +130 -0
  446. package/docs/id/cli/index.md +6 -1
  447. package/docs/id/cli/infra.md +162 -0
  448. package/docs/id/cli/init.md +24 -1
  449. package/docs/id/dictionary/html.md +173 -5
  450. package/docs/id/dictionary/markdown.md +263 -1
  451. package/docs/id/intlayer_with_analog.md +23 -1
  452. package/docs/id/intlayer_with_angular_19.md +24 -1
  453. package/docs/id/intlayer_with_angular_21.md +24 -1
  454. package/docs/id/intlayer_with_astro.md +35 -25
  455. package/docs/id/intlayer_with_astro_lit.md +47 -27
  456. package/docs/id/intlayer_with_astro_preact.md +48 -27
  457. package/docs/id/intlayer_with_astro_react.md +48 -27
  458. package/docs/id/intlayer_with_astro_solid.md +48 -27
  459. package/docs/id/intlayer_with_astro_svelte.md +47 -27
  460. package/docs/id/intlayer_with_astro_vue.md +47 -27
  461. package/docs/id/intlayer_with_react_router_v7.md +12 -1
  462. package/docs/id/intlayer_with_remix_3.md +22 -1
  463. package/docs/id/intlayer_with_solid_start.md +14 -7
  464. package/docs/id/intlayer_with_svelte_kit.md +12 -1
  465. package/docs/id/intlayer_with_tanstack+solid.md +13 -2
  466. package/docs/id/intlayer_with_tanstack.md +13 -6
  467. package/docs/id/intlayer_with_vite+lit.md +75 -3
  468. package/docs/id/intlayer_with_vite+preact.md +16 -3
  469. package/docs/id/intlayer_with_vite+react.md +16 -3
  470. package/docs/id/intlayer_with_vite+solid.md +16 -3
  471. package/docs/id/intlayer_with_vite+svelte.md +16 -3
  472. package/docs/id/intlayer_with_vite+vanilla.md +16 -3
  473. package/docs/id/intlayer_with_vite+vue.md +16 -3
  474. package/docs/id/introduction.md +0 -1
  475. package/docs/id/readme.md +0 -1
  476. package/docs/id/releases/v8.md +1 -5
  477. package/docs/id/self_hosting.md +416 -243
  478. package/docs/it/benchmark/nextjs.md +13 -13
  479. package/docs/it/benchmark/solid.md +5 -5
  480. package/docs/it/benchmark/svelte.md +4 -4
  481. package/docs/it/benchmark/tanstack.md +14 -13
  482. package/docs/it/benchmark/vue.md +5 -5
  483. package/docs/it/chrome_extension.md +130 -0
  484. package/docs/it/cli/index.md +6 -1
  485. package/docs/it/cli/infra.md +162 -0
  486. package/docs/it/cli/init.md +24 -1
  487. package/docs/it/dictionary/html.md +173 -5
  488. package/docs/it/dictionary/markdown.md +263 -1
  489. package/docs/it/intlayer_with_analog.md +23 -1
  490. package/docs/it/intlayer_with_angular_19.md +24 -1
  491. package/docs/it/intlayer_with_angular_21.md +24 -1
  492. package/docs/it/intlayer_with_astro.md +35 -25
  493. package/docs/it/intlayer_with_astro_lit.md +47 -27
  494. package/docs/it/intlayer_with_astro_preact.md +48 -27
  495. package/docs/it/intlayer_with_astro_react.md +48 -27
  496. package/docs/it/intlayer_with_astro_solid.md +48 -27
  497. package/docs/it/intlayer_with_astro_svelte.md +47 -27
  498. package/docs/it/intlayer_with_astro_vue.md +47 -27
  499. package/docs/it/intlayer_with_react_router_v7.md +12 -1
  500. package/docs/it/intlayer_with_remix_3.md +22 -1
  501. package/docs/it/intlayer_with_solid_start.md +14 -7
  502. package/docs/it/intlayer_with_svelte_kit.md +12 -1
  503. package/docs/it/intlayer_with_tanstack+solid.md +13 -2
  504. package/docs/it/intlayer_with_tanstack.md +13 -6
  505. package/docs/it/intlayer_with_vite+lit.md +75 -3
  506. package/docs/it/intlayer_with_vite+preact.md +16 -3
  507. package/docs/it/intlayer_with_vite+react.md +16 -3
  508. package/docs/it/intlayer_with_vite+solid.md +16 -3
  509. package/docs/it/intlayer_with_vite+svelte.md +16 -3
  510. package/docs/it/intlayer_with_vite+vanilla.md +16 -3
  511. package/docs/it/intlayer_with_vite+vue.md +16 -3
  512. package/docs/it/introduction.md +0 -1
  513. package/docs/it/readme.md +0 -1
  514. package/docs/it/releases/v8.md +1 -5
  515. package/docs/it/self_hosting.md +412 -237
  516. package/docs/ja/benchmark/nextjs.md +13 -13
  517. package/docs/ja/benchmark/solid.md +5 -5
  518. package/docs/ja/benchmark/svelte.md +4 -4
  519. package/docs/ja/benchmark/tanstack.md +13 -12
  520. package/docs/ja/benchmark/vue.md +5 -5
  521. package/docs/ja/chrome_extension.md +130 -0
  522. package/docs/ja/cli/index.md +6 -1
  523. package/docs/ja/cli/infra.md +162 -0
  524. package/docs/ja/cli/init.md +24 -1
  525. package/docs/ja/dictionary/html.md +173 -5
  526. package/docs/ja/dictionary/markdown.md +263 -1
  527. package/docs/ja/intlayer_with_analog.md +23 -1
  528. package/docs/ja/intlayer_with_angular_19.md +24 -1
  529. package/docs/ja/intlayer_with_angular_21.md +24 -1
  530. package/docs/ja/intlayer_with_astro.md +35 -25
  531. package/docs/ja/intlayer_with_astro_lit.md +47 -27
  532. package/docs/ja/intlayer_with_astro_preact.md +48 -27
  533. package/docs/ja/intlayer_with_astro_react.md +48 -27
  534. package/docs/ja/intlayer_with_astro_solid.md +48 -27
  535. package/docs/ja/intlayer_with_astro_svelte.md +47 -27
  536. package/docs/ja/intlayer_with_astro_vue.md +47 -27
  537. package/docs/ja/intlayer_with_react_router_v7.md +12 -1
  538. package/docs/ja/intlayer_with_remix_3.md +22 -1
  539. package/docs/ja/intlayer_with_solid_start.md +14 -7
  540. package/docs/ja/intlayer_with_svelte_kit.md +21 -15
  541. package/docs/ja/intlayer_with_tanstack+solid.md +13 -2
  542. package/docs/ja/intlayer_with_tanstack.md +13 -6
  543. package/docs/ja/intlayer_with_vite+lit.md +75 -3
  544. package/docs/ja/intlayer_with_vite+preact.md +16 -3
  545. package/docs/ja/intlayer_with_vite+react.md +16 -3
  546. package/docs/ja/intlayer_with_vite+solid.md +16 -3
  547. package/docs/ja/intlayer_with_vite+svelte.md +16 -3
  548. package/docs/ja/intlayer_with_vite+vanilla.md +16 -3
  549. package/docs/ja/intlayer_with_vite+vue.md +16 -3
  550. package/docs/ja/introduction.md +0 -1
  551. package/docs/ja/readme.md +0 -1
  552. package/docs/ja/releases/v8.md +1 -5
  553. package/docs/ja/self_hosting.md +398 -223
  554. package/docs/ko/benchmark/nextjs.md +13 -13
  555. package/docs/ko/benchmark/solid.md +5 -5
  556. package/docs/ko/benchmark/svelte.md +4 -4
  557. package/docs/ko/benchmark/tanstack.md +14 -13
  558. package/docs/ko/benchmark/vue.md +5 -5
  559. package/docs/ko/chrome_extension.md +130 -0
  560. package/docs/ko/cli/index.md +6 -1
  561. package/docs/ko/cli/infra.md +162 -0
  562. package/docs/ko/cli/init.md +24 -1
  563. package/docs/ko/dictionary/html.md +173 -5
  564. package/docs/ko/dictionary/markdown.md +263 -1
  565. package/docs/ko/intlayer_with_analog.md +23 -1
  566. package/docs/ko/intlayer_with_angular_19.md +24 -1
  567. package/docs/ko/intlayer_with_angular_21.md +24 -1
  568. package/docs/ko/intlayer_with_astro.md +29 -21
  569. package/docs/ko/intlayer_with_astro_lit.md +47 -27
  570. package/docs/ko/intlayer_with_astro_preact.md +48 -27
  571. package/docs/ko/intlayer_with_astro_react.md +48 -27
  572. package/docs/ko/intlayer_with_astro_solid.md +48 -27
  573. package/docs/ko/intlayer_with_astro_svelte.md +47 -27
  574. package/docs/ko/intlayer_with_astro_vue.md +47 -27
  575. package/docs/ko/intlayer_with_react_router_v7.md +12 -1
  576. package/docs/ko/intlayer_with_remix_3.md +22 -1
  577. package/docs/ko/intlayer_with_solid_start.md +14 -7
  578. package/docs/ko/intlayer_with_svelte_kit.md +12 -1
  579. package/docs/ko/intlayer_with_tanstack+solid.md +13 -2
  580. package/docs/ko/intlayer_with_tanstack.md +13 -6
  581. package/docs/ko/intlayer_with_vite+lit.md +75 -3
  582. package/docs/ko/intlayer_with_vite+preact.md +16 -3
  583. package/docs/ko/intlayer_with_vite+react.md +16 -3
  584. package/docs/ko/intlayer_with_vite+solid.md +26 -16
  585. package/docs/ko/intlayer_with_vite+svelte.md +16 -3
  586. package/docs/ko/intlayer_with_vite+vanilla.md +16 -3
  587. package/docs/ko/intlayer_with_vite+vue.md +16 -3
  588. package/docs/ko/introduction.md +0 -1
  589. package/docs/ko/readme.md +0 -1
  590. package/docs/ko/releases/v8.md +1 -5
  591. package/docs/ko/self_hosting.md +411 -238
  592. package/docs/nl/intlayer_with_vite+lit.md +75 -3
  593. package/docs/nl/intlayer_with_vite+vanilla.md +16 -3
  594. package/docs/nl/introduction.md +0 -1
  595. package/docs/pl/benchmark/nextjs.md +13 -13
  596. package/docs/pl/benchmark/solid.md +5 -5
  597. package/docs/pl/benchmark/svelte.md +4 -4
  598. package/docs/pl/benchmark/tanstack.md +14 -13
  599. package/docs/pl/benchmark/vue.md +5 -5
  600. package/docs/pl/chrome_extension.md +130 -0
  601. package/docs/pl/cli/index.md +6 -1
  602. package/docs/pl/cli/infra.md +162 -0
  603. package/docs/pl/cli/init.md +24 -1
  604. package/docs/pl/dictionary/html.md +173 -5
  605. package/docs/pl/dictionary/markdown.md +263 -1
  606. package/docs/pl/intlayer_with_analog.md +23 -1
  607. package/docs/pl/intlayer_with_angular_19.md +24 -1
  608. package/docs/pl/intlayer_with_angular_21.md +24 -1
  609. package/docs/pl/intlayer_with_astro.md +29 -21
  610. package/docs/pl/intlayer_with_astro_lit.md +47 -27
  611. package/docs/pl/intlayer_with_astro_preact.md +48 -27
  612. package/docs/pl/intlayer_with_astro_react.md +48 -27
  613. package/docs/pl/intlayer_with_astro_solid.md +48 -27
  614. package/docs/pl/intlayer_with_astro_svelte.md +47 -27
  615. package/docs/pl/intlayer_with_astro_vue.md +47 -27
  616. package/docs/pl/intlayer_with_react_router_v7.md +12 -1
  617. package/docs/pl/intlayer_with_remix_3.md +22 -1
  618. package/docs/pl/intlayer_with_solid_start.md +14 -7
  619. package/docs/pl/intlayer_with_svelte_kit.md +12 -1
  620. package/docs/pl/intlayer_with_tanstack+solid.md +13 -2
  621. package/docs/pl/intlayer_with_tanstack.md +13 -6
  622. package/docs/pl/intlayer_with_vite+lit.md +75 -3
  623. package/docs/pl/intlayer_with_vite+preact.md +16 -3
  624. package/docs/pl/intlayer_with_vite+react.md +16 -3
  625. package/docs/pl/intlayer_with_vite+solid.md +16 -3
  626. package/docs/pl/intlayer_with_vite+svelte.md +16 -3
  627. package/docs/pl/intlayer_with_vite+vanilla.md +16 -3
  628. package/docs/pl/intlayer_with_vite+vue.md +16 -3
  629. package/docs/pl/introduction.md +0 -1
  630. package/docs/pl/readme.md +0 -1
  631. package/docs/pl/releases/v8.md +1 -5
  632. package/docs/pl/self_hosting.md +408 -233
  633. package/docs/pt/benchmark/nextjs.md +13 -13
  634. package/docs/pt/benchmark/solid.md +5 -5
  635. package/docs/pt/benchmark/svelte.md +4 -4
  636. package/docs/pt/benchmark/tanstack.md +14 -13
  637. package/docs/pt/benchmark/vue.md +5 -5
  638. package/docs/pt/chrome_extension.md +130 -0
  639. package/docs/pt/cli/index.md +6 -1
  640. package/docs/pt/cli/infra.md +162 -0
  641. package/docs/pt/cli/init.md +24 -1
  642. package/docs/pt/dictionary/html.md +173 -5
  643. package/docs/pt/dictionary/markdown.md +263 -1
  644. package/docs/pt/intlayer_with_analog.md +23 -1
  645. package/docs/pt/intlayer_with_angular_19.md +24 -1
  646. package/docs/pt/intlayer_with_angular_21.md +24 -1
  647. package/docs/pt/intlayer_with_astro.md +29 -21
  648. package/docs/pt/intlayer_with_astro_lit.md +47 -27
  649. package/docs/pt/intlayer_with_astro_preact.md +48 -27
  650. package/docs/pt/intlayer_with_astro_react.md +48 -27
  651. package/docs/pt/intlayer_with_astro_solid.md +48 -27
  652. package/docs/pt/intlayer_with_astro_svelte.md +47 -27
  653. package/docs/pt/intlayer_with_astro_vue.md +47 -27
  654. package/docs/pt/intlayer_with_react_router_v7.md +12 -1
  655. package/docs/pt/intlayer_with_remix_3.md +22 -1
  656. package/docs/pt/intlayer_with_solid_start.md +14 -7
  657. package/docs/pt/intlayer_with_svelte_kit.md +12 -1
  658. package/docs/pt/intlayer_with_tanstack+solid.md +13 -2
  659. package/docs/pt/intlayer_with_tanstack.md +13 -6
  660. package/docs/pt/intlayer_with_vite+lit.md +75 -3
  661. package/docs/pt/intlayer_with_vite+preact.md +16 -3
  662. package/docs/pt/intlayer_with_vite+react.md +16 -3
  663. package/docs/pt/intlayer_with_vite+solid.md +16 -3
  664. package/docs/pt/intlayer_with_vite+svelte.md +16 -3
  665. package/docs/pt/intlayer_with_vite+vanilla.md +16 -3
  666. package/docs/pt/intlayer_with_vite+vue.md +16 -3
  667. package/docs/pt/introduction.md +0 -1
  668. package/docs/pt/readme.md +0 -1
  669. package/docs/pt/releases/v8.md +1 -5
  670. package/docs/pt/self_hosting.md +399 -224
  671. package/docs/ru/benchmark/nextjs.md +13 -13
  672. package/docs/ru/benchmark/solid.md +5 -5
  673. package/docs/ru/benchmark/svelte.md +4 -4
  674. package/docs/ru/benchmark/tanstack.md +14 -13
  675. package/docs/ru/benchmark/vue.md +5 -5
  676. package/docs/ru/chrome_extension.md +130 -0
  677. package/docs/ru/cli/index.md +6 -1
  678. package/docs/ru/cli/infra.md +162 -0
  679. package/docs/ru/cli/init.md +24 -1
  680. package/docs/ru/dictionary/html.md +173 -5
  681. package/docs/ru/dictionary/markdown.md +263 -1
  682. package/docs/ru/intlayer_with_analog.md +23 -1
  683. package/docs/ru/intlayer_with_angular_19.md +24 -1
  684. package/docs/ru/intlayer_with_angular_21.md +24 -1
  685. package/docs/ru/intlayer_with_astro.md +35 -25
  686. package/docs/ru/intlayer_with_astro_lit.md +47 -27
  687. package/docs/ru/intlayer_with_astro_preact.md +48 -27
  688. package/docs/ru/intlayer_with_astro_react.md +48 -27
  689. package/docs/ru/intlayer_with_astro_solid.md +48 -27
  690. package/docs/ru/intlayer_with_astro_svelte.md +47 -27
  691. package/docs/ru/intlayer_with_astro_vue.md +47 -27
  692. package/docs/ru/intlayer_with_react_router_v7.md +12 -1
  693. package/docs/ru/intlayer_with_remix_3.md +22 -1
  694. package/docs/ru/intlayer_with_solid_start.md +14 -7
  695. package/docs/ru/intlayer_with_svelte_kit.md +12 -1
  696. package/docs/ru/intlayer_with_tanstack+solid.md +13 -2
  697. package/docs/ru/intlayer_with_tanstack.md +13 -6
  698. package/docs/ru/intlayer_with_vite+lit.md +75 -3
  699. package/docs/ru/intlayer_with_vite+preact.md +16 -3
  700. package/docs/ru/intlayer_with_vite+react.md +16 -3
  701. package/docs/ru/intlayer_with_vite+solid.md +16 -3
  702. package/docs/ru/intlayer_with_vite+svelte.md +16 -3
  703. package/docs/ru/intlayer_with_vite+vanilla.md +16 -3
  704. package/docs/ru/intlayer_with_vite+vue.md +16 -3
  705. package/docs/ru/introduction.md +0 -1
  706. package/docs/ru/readme.md +0 -1
  707. package/docs/ru/releases/v8.md +1 -5
  708. package/docs/ru/self_hosting.md +403 -228
  709. package/docs/tr/benchmark/nextjs.md +13 -13
  710. package/docs/tr/benchmark/solid.md +5 -5
  711. package/docs/tr/benchmark/svelte.md +4 -4
  712. package/docs/tr/benchmark/tanstack.md +14 -13
  713. package/docs/tr/benchmark/vue.md +5 -5
  714. package/docs/tr/chrome_extension.md +130 -0
  715. package/docs/tr/cli/index.md +6 -1
  716. package/docs/tr/cli/infra.md +162 -0
  717. package/docs/tr/cli/init.md +24 -1
  718. package/docs/tr/dictionary/html.md +173 -5
  719. package/docs/tr/dictionary/markdown.md +263 -1
  720. package/docs/tr/intlayer_with_analog.md +23 -1
  721. package/docs/tr/intlayer_with_angular_19.md +24 -1
  722. package/docs/tr/intlayer_with_angular_21.md +24 -1
  723. package/docs/tr/intlayer_with_astro.md +35 -25
  724. package/docs/tr/intlayer_with_astro_lit.md +48 -28
  725. package/docs/tr/intlayer_with_astro_preact.md +49 -28
  726. package/docs/tr/intlayer_with_astro_react.md +49 -28
  727. package/docs/tr/intlayer_with_astro_solid.md +49 -28
  728. package/docs/tr/intlayer_with_astro_svelte.md +48 -28
  729. package/docs/tr/intlayer_with_astro_vue.md +48 -28
  730. package/docs/tr/intlayer_with_react_router_v7.md +12 -1
  731. package/docs/tr/intlayer_with_remix_3.md +22 -1
  732. package/docs/tr/intlayer_with_solid_start.md +14 -7
  733. package/docs/tr/intlayer_with_svelte_kit.md +12 -1
  734. package/docs/tr/intlayer_with_tanstack+solid.md +13 -2
  735. package/docs/tr/intlayer_with_tanstack.md +13 -6
  736. package/docs/tr/intlayer_with_vite+lit.md +75 -3
  737. package/docs/tr/intlayer_with_vite+preact.md +16 -3
  738. package/docs/tr/intlayer_with_vite+react.md +16 -3
  739. package/docs/tr/intlayer_with_vite+solid.md +16 -3
  740. package/docs/tr/intlayer_with_vite+svelte.md +16 -3
  741. package/docs/tr/intlayer_with_vite+vanilla.md +16 -3
  742. package/docs/tr/intlayer_with_vite+vue.md +16 -3
  743. package/docs/tr/introduction.md +0 -1
  744. package/docs/tr/readme.md +0 -1
  745. package/docs/tr/releases/v8.md +1 -5
  746. package/docs/tr/self_hosting.md +410 -234
  747. package/docs/uk/benchmark/nextjs.md +13 -13
  748. package/docs/uk/benchmark/solid.md +5 -5
  749. package/docs/uk/benchmark/svelte.md +4 -4
  750. package/docs/uk/benchmark/tanstack.md +14 -13
  751. package/docs/uk/benchmark/vue.md +5 -5
  752. package/docs/uk/chrome_extension.md +130 -0
  753. package/docs/uk/cli/index.md +6 -1
  754. package/docs/uk/cli/infra.md +162 -0
  755. package/docs/uk/cli/init.md +24 -1
  756. package/docs/uk/dictionary/html.md +173 -5
  757. package/docs/uk/dictionary/markdown.md +263 -1
  758. package/docs/uk/intlayer_with_analog.md +23 -1
  759. package/docs/uk/intlayer_with_angular_19.md +24 -1
  760. package/docs/uk/intlayer_with_angular_21.md +24 -1
  761. package/docs/uk/intlayer_with_astro.md +35 -25
  762. package/docs/uk/intlayer_with_astro_lit.md +47 -27
  763. package/docs/uk/intlayer_with_astro_preact.md +48 -27
  764. package/docs/uk/intlayer_with_astro_react.md +48 -27
  765. package/docs/uk/intlayer_with_astro_solid.md +48 -27
  766. package/docs/uk/intlayer_with_astro_svelte.md +47 -27
  767. package/docs/uk/intlayer_with_astro_vue.md +47 -27
  768. package/docs/uk/intlayer_with_react_router_v7.md +12 -1
  769. package/docs/uk/intlayer_with_remix_3.md +22 -1
  770. package/docs/uk/intlayer_with_solid_start.md +14 -7
  771. package/docs/uk/intlayer_with_svelte_kit.md +12 -1
  772. package/docs/uk/intlayer_with_tanstack+solid.md +13 -2
  773. package/docs/uk/intlayer_with_tanstack.md +13 -6
  774. package/docs/uk/intlayer_with_vite+lit.md +75 -3
  775. package/docs/uk/intlayer_with_vite+preact.md +16 -3
  776. package/docs/uk/intlayer_with_vite+react.md +16 -3
  777. package/docs/uk/intlayer_with_vite+solid.md +16 -3
  778. package/docs/uk/intlayer_with_vite+svelte.md +16 -3
  779. package/docs/uk/intlayer_with_vite+vanilla.md +16 -3
  780. package/docs/uk/intlayer_with_vite+vue.md +16 -3
  781. package/docs/uk/introduction.md +0 -1
  782. package/docs/uk/readme.md +0 -1
  783. package/docs/uk/releases/v8.md +1 -5
  784. package/docs/uk/self_hosting.md +413 -238
  785. package/docs/ur/intlayer_with_vite+lit.md +75 -3
  786. package/docs/ur/intlayer_with_vite+vanilla.md +16 -3
  787. package/docs/ur/introduction.md +0 -1
  788. package/docs/vi/benchmark/nextjs.md +13 -13
  789. package/docs/vi/benchmark/solid.md +5 -5
  790. package/docs/vi/benchmark/svelte.md +4 -4
  791. package/docs/vi/benchmark/tanstack.md +14 -13
  792. package/docs/vi/benchmark/vue.md +5 -5
  793. package/docs/vi/chrome_extension.md +130 -0
  794. package/docs/vi/cli/index.md +6 -1
  795. package/docs/vi/cli/infra.md +162 -0
  796. package/docs/vi/cli/init.md +24 -1
  797. package/docs/vi/dictionary/html.md +173 -5
  798. package/docs/vi/dictionary/markdown.md +263 -1
  799. package/docs/vi/intlayer_with_analog.md +23 -1
  800. package/docs/vi/intlayer_with_angular_19.md +24 -1
  801. package/docs/vi/intlayer_with_angular_21.md +24 -1
  802. package/docs/vi/intlayer_with_astro.md +35 -25
  803. package/docs/vi/intlayer_with_astro_lit.md +47 -27
  804. package/docs/vi/intlayer_with_astro_preact.md +48 -27
  805. package/docs/vi/intlayer_with_astro_react.md +48 -27
  806. package/docs/vi/intlayer_with_astro_solid.md +48 -27
  807. package/docs/vi/intlayer_with_astro_svelte.md +47 -27
  808. package/docs/vi/intlayer_with_astro_vue.md +47 -27
  809. package/docs/vi/intlayer_with_react_router_v7.md +12 -1
  810. package/docs/vi/intlayer_with_remix_3.md +22 -1
  811. package/docs/vi/intlayer_with_solid_start.md +14 -7
  812. package/docs/vi/intlayer_with_svelte_kit.md +12 -1
  813. package/docs/vi/intlayer_with_tanstack+solid.md +13 -2
  814. package/docs/vi/intlayer_with_tanstack.md +13 -6
  815. package/docs/vi/intlayer_with_vite+lit.md +75 -3
  816. package/docs/vi/intlayer_with_vite+preact.md +16 -3
  817. package/docs/vi/intlayer_with_vite+react.md +16 -3
  818. package/docs/vi/intlayer_with_vite+solid.md +16 -3
  819. package/docs/vi/intlayer_with_vite+svelte.md +16 -3
  820. package/docs/vi/intlayer_with_vite+vanilla.md +16 -3
  821. package/docs/vi/intlayer_with_vite+vue.md +16 -3
  822. package/docs/vi/introduction.md +0 -1
  823. package/docs/vi/readme.md +0 -1
  824. package/docs/vi/releases/v8.md +1 -5
  825. package/docs/vi/self_hosting.md +408 -234
  826. package/docs/zh/benchmark/nextjs.md +13 -13
  827. package/docs/zh/benchmark/solid.md +5 -5
  828. package/docs/zh/benchmark/svelte.md +4 -4
  829. package/docs/zh/benchmark/tanstack.md +14 -13
  830. package/docs/zh/benchmark/vue.md +5 -5
  831. package/docs/zh/chrome_extension.md +130 -0
  832. package/docs/zh/cli/index.md +6 -1
  833. package/docs/zh/cli/infra.md +162 -0
  834. package/docs/zh/cli/init.md +24 -1
  835. package/docs/zh/dictionary/html.md +172 -5
  836. package/docs/zh/dictionary/markdown.md +262 -1
  837. package/docs/zh/intlayer_with_analog.md +23 -1
  838. package/docs/zh/intlayer_with_angular_19.md +24 -1
  839. package/docs/zh/intlayer_with_angular_21.md +24 -1
  840. package/docs/zh/intlayer_with_astro.md +29 -21
  841. package/docs/zh/intlayer_with_astro_lit.md +47 -27
  842. package/docs/zh/intlayer_with_astro_preact.md +48 -27
  843. package/docs/zh/intlayer_with_astro_react.md +48 -27
  844. package/docs/zh/intlayer_with_astro_solid.md +48 -27
  845. package/docs/zh/intlayer_with_astro_svelte.md +47 -27
  846. package/docs/zh/intlayer_with_astro_vue.md +47 -27
  847. package/docs/zh/intlayer_with_react_router_v7.md +12 -1
  848. package/docs/zh/intlayer_with_remix_3.md +22 -1
  849. package/docs/zh/intlayer_with_solid_start.md +14 -7
  850. package/docs/zh/intlayer_with_svelte_kit.md +12 -1
  851. package/docs/zh/intlayer_with_tanstack+solid.md +13 -2
  852. package/docs/zh/intlayer_with_tanstack.md +13 -6
  853. package/docs/zh/intlayer_with_vite+lit.md +75 -3
  854. package/docs/zh/intlayer_with_vite+preact.md +16 -3
  855. package/docs/zh/intlayer_with_vite+react.md +16 -3
  856. package/docs/zh/intlayer_with_vite+solid.md +16 -3
  857. package/docs/zh/intlayer_with_vite+svelte.md +16 -3
  858. package/docs/zh/intlayer_with_vite+vanilla.md +16 -3
  859. package/docs/zh/intlayer_with_vite+vue.md +16 -3
  860. package/docs/zh/introduction.md +0 -1
  861. package/docs/zh/readme.md +0 -1
  862. package/docs/zh/releases/v8.md +1 -5
  863. package/docs/zh/self_hosting.md +410 -237
  864. package/docs/zh-TW/introduction.md +0 -1
  865. package/legal/ar/privacy_notice.md +9 -3
  866. package/legal/de/privacy_notice.md +9 -3
  867. package/legal/en/privacy_notice.md +10 -3
  868. package/legal/en-GB/privacy_notice.md +9 -3
  869. package/legal/es/privacy_notice.md +9 -3
  870. package/legal/fr/privacy_notice.md +9 -3
  871. package/legal/hi/privacy_notice.md +9 -3
  872. package/legal/id/privacy_notice.md +9 -3
  873. package/legal/it/privacy_notice.md +9 -3
  874. package/legal/ja/privacy_notice.md +9 -3
  875. package/legal/ko/privacy_notice.md +9 -3
  876. package/legal/pl/privacy_notice.md +9 -3
  877. package/legal/pt/privacy_notice.md +9 -3
  878. package/legal/ru/privacy_notice.md +9 -3
  879. package/legal/tr/privacy_notice.md +9 -3
  880. package/legal/uk/privacy_notice.md +9 -3
  881. package/legal/vi/privacy_notice.md +9 -3
  882. package/legal/zh/privacy_notice.md +9 -3
  883. package/package.json +6 -6
  884. package/src/generated/docs.entry.ts +40 -40
  885. package/docs/ar/intlayer_with_astro_vanilla.md +0 -709
  886. package/docs/ar/roadmap.md +0 -321
  887. package/docs/de/intlayer_with_astro_vanilla.md +0 -705
  888. package/docs/de/roadmap.md +0 -322
  889. package/docs/en/intlayer_with_astro_vanilla.md +0 -706
  890. package/docs/en/roadmap.md +0 -325
  891. package/docs/en-GB/intlayer_with_astro_vanilla.md +0 -709
  892. package/docs/en-GB/roadmap.md +0 -322
  893. package/docs/es/intlayer_with_astro_vanilla.md +0 -701
  894. package/docs/es/roadmap.md +0 -322
  895. package/docs/fr/intlayer_with_astro_vanilla.md +0 -701
  896. package/docs/fr/roadmap.md +0 -322
  897. package/docs/hi/intlayer_with_astro_vanilla.md +0 -720
  898. package/docs/hi/roadmap.md +0 -322
  899. package/docs/id/intlayer_with_astro_vanilla.md +0 -705
  900. package/docs/id/roadmap.md +0 -325
  901. package/docs/it/intlayer_with_astro_vanilla.md +0 -705
  902. package/docs/it/roadmap.md +0 -322
  903. package/docs/ja/intlayer_with_astro_vanilla.md +0 -708
  904. package/docs/ja/roadmap.md +0 -322
  905. package/docs/ko/intlayer_with_astro_vanilla.md +0 -720
  906. package/docs/ko/roadmap.md +0 -322
  907. package/docs/pl/intlayer_with_astro_vanilla.md +0 -705
  908. package/docs/pl/roadmap.md +0 -325
  909. package/docs/pt/intlayer_with_astro_vanilla.md +0 -705
  910. package/docs/pt/roadmap.md +0 -322
  911. package/docs/ru/intlayer_with_astro_vanilla.md +0 -716
  912. package/docs/ru/roadmap.md +0 -322
  913. package/docs/tr/intlayer_with_astro_vanilla.md +0 -705
  914. package/docs/tr/roadmap.md +0 -325
  915. package/docs/uk/intlayer_with_astro_vanilla.md +0 -705
  916. package/docs/uk/roadmap.md +0 -325
  917. package/docs/vi/intlayer_with_astro_vanilla.md +0 -705
  918. package/docs/vi/roadmap.md +0 -325
  919. package/docs/zh/intlayer_with_astro_vanilla.md +0 -704
  920. package/docs/zh/roadmap.md +0 -322
@@ -1,12 +1,13 @@
1
1
  ---
2
2
  createdAt: 2026-06-30
3
- updatedAt: 2026-06-30
4
- title: "Samodzielne hostowanie Intlayer"
5
- description: "Uruchom kompletną instancję Intlayer na własnej infrastrukturze za pomocą jednego polecenia. Konto Intlayer Cloud nie jest wymagane."
3
+ updatedAt: 2026-09-21
4
+ title: Self-hosting Intlayer
5
+ description: "Uruchom Intlayer na własnej infrastrukturze: jako aplikację desktopową, pojedynczy kontener Docker all-in-one lub skalowalny stos Docker Compose. Konto Intlayer Cloud nie jest wymagane."
6
6
  keywords:
7
- - Samodzielne hostowanie
7
+ - Self-Hosting
8
8
  - Docker
9
9
  - Docker Compose
10
+ - Aplikacja desktopowa
10
11
  - Intlayer
11
12
  - CMS
12
13
  - Instalacja
@@ -17,216 +18,457 @@ slugs:
17
18
  author: aymericzip
18
19
  ---
19
20
 
20
- # Samodzielne hostowanie Intlayer
21
+ # Self-hosting Intlayer
21
22
 
22
- Intlayer może działać w całości na Twojej własnej infrastrukturze — konto Intlayer Cloud nie jest wymagane. Jedno polecenie uruchamia gotowy do produkcji stos:
23
+ Intlayer może działać na Twojej własnej infrastrukturze, bez konieczności posiadania konta Intlayer Cloud. Dostępne są trzy konfiguracje, zarządzane przez ten sam instalator (`install.sh`, `install.ps1` w systemie Windows lub `npx intlayer init infra`):
23
24
 
24
- Jedno polecenie instaluje wszystko:
25
+ | Setup | What it is | Pick it for |
26
+ | ------------------------ | ----------------------------------------------------------------------------------- | -------------------------------------------------- |
27
+ | **Aplikacja desktopowa** | Natywny pulpit nawigacyjny dla systemów macOS, Linux i Windows | Klient lokalny, brak konieczności hostowania |
28
+ | **All-in-one Docker** | Pulpit nawigacyjny, API, MongoDB, Redis i MinIO w **jednym kontenerze** | Wersje próbne i instalacje na pojedynczej maszynie |
29
+ | **Docker Compose** | **Jeden kontener na usługę**, każdy magazyn danych wymienialny na usługę zarządzaną | Produkcja, skalowanie, zarządzane bazy danych |
30
+
31
+ ## Table of Contents
32
+
33
+ <TOC/>
34
+
35
+ ## Opublikowane obrazy i pakiety
36
+
37
+ | Artifact | Docker Hub | GHCR mirror | Contents |
38
+ | -------------------- | ------------------------------------------------------------------------- | ------------------------------------------ | -------------------------------------------------------------------------------- |
39
+ | All-in-one container | [`intlayer/cms-all`](https://hub.docker.com/r/intlayer/cms-all) | `ghcr.io/aymericzip/intlayer/cms-all` | app + backend + MongoDB 8 + Redis + MinIO + Chromium |
40
+ | Dashboard (frontend) | [`intlayer/cms-frontend`](https://hub.docker.com/r/intlayer/cms-frontend) | `ghcr.io/aymericzip/intlayer/cms-frontend` | TanStack Start dashboard on Bun |
41
+ | API (backend) | [`intlayer/cms-backend`](https://hub.docker.com/r/intlayer/cms-backend) | `ghcr.io/aymericzip/intlayer/cms-backend` | Fastify REST API on Bun + Chromium |
42
+ | Desktop app | [GitHub releases](https://github.com/aymericzip/intlayer/releases/latest) | n/a | `.dmg` (macOS), `.deb` / `.rpm` / `.AppImage` (Linux), `.exe` / `.msi` (Windows) |
43
+
44
+ Wszystkie trzy obrazy są budowane z tego samego pliku [`docker/selfhost/Dockerfile`](https://github.com/aymericzip/intlayer/tree/main/docker/selfhost) i publikowane przy każdym wydaniu. Stos Compose pobiera również oficjalne obrazy `mongo:8`, `redis:8-alpine` oraz `quay.io/minio/minio`.
45
+
46
+ ## Konfiguracja
47
+
48
+ Instalator pyta o preferowaną konfigurację, sprawdza wymagania wstępne (proponując instalację Dockera), zapisuje plik środowiskowy z wygenerowanymi sekretami i pobiera obrazy. Nigdy nie uruchamia niczego samodzielnie: tryby Dockera wymagają najpierw mailera, więc na końcu wyświetla polecenie do uruchomienia. Ponowne uruchomienie jest bezpieczne: istniejący plik środowiskowy nigdy nie jest nadpisywany, co czyni go również ścieżką aktualizacji.
49
+
50
+ <Tabs group="mode">
51
+ <Tab label="Aplikacja desktopowa" value="desktop">
52
+
53
+ Pulpit nawigacyjny Intlayer jako natywna aplikacja zbudowana w Tauri. Loguje się do Intlayer Cloud (`https://app.intlayer.org`), więc nie trzeba niczego hostować. To właściwy wybór, gdy wolisz lokalnego klienta zamiast karty przeglądarki.
54
+
55
+ ### Instalacja
56
+
57
+ Instalator pobiera pakiet dla Twojego systemu operacyjnego i procesora, a następnie otwiera go (macOS), instaluje (`dpkg` / `rpm` w systemie Linux) lub uruchamia kreatora instalacji (Windows). Możesz go także pobrać ręcznie ze [strony wydań](https://github.com/aymericzip/intlayer/releases/latest).
58
+
59
+ <Tabs group="os">
60
+ <Tab label="macOS / Linux" value="unix">
25
61
 
26
62
  ```sh
27
- curl -fsSL https://intlayer.org/install.sh | sh
63
+ curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode desktop
28
64
  ```
29
65
 
30
- Instalator pobiera plik `docker-compose.yml` oraz `.env`, automatycznie generuje wymagane sekrety i uruchamia wszystkie kontenery za pomocą `docker compose up -d`.
66
+ </Tab>
67
+ <Tab label="Windows" value="windows">
31
68
 
32
- Jedyną zewnętrzną zależnością jest **MongoDB**: backend łączy się z klastrem MongoDB **Atlas**, który Ty dostarczasz. Wszystko inne działa wewnątrz kontenera.
69
+ In PowerShell:
33
70
 
34
- ## Spis treści
71
+ ```powershell
72
+ $env:INTLAYER_MODE = "desktop"; irm https://intlayer.org/install.ps1 | iex
73
+ ```
35
74
 
36
- <TOC/>
75
+ </Tab>
76
+ <Tab label="Intlayer CLI" value="cli">
77
+
78
+ ```bash
79
+ npx intlayer init infra --mode desktop
80
+ ```
81
+
82
+ </Tab>
83
+ </Tabs>
84
+
85
+ ### Wymagania
37
86
 
38
- ## Architektura
87
+ - **Node.js**: aplikacja zawiera wbudowany serwer pulpitu i uruchamia go przy użyciu pliku binarnego `node` z systemu. Zainstaluj go z [nodejs.org](https://nodejs.org), jeśli aplikacja się nie uruchamia.
88
+
89
+ > Opublikowana wersja desktopowa łączy się z backendem Intlayer Cloud. Skierowanie jej na własny backend wymaga przebudowania aplikacji ze zmienną `VITE_BACKEND_URL` wskazującą na Twoje API, zobacz [Ograniczenia](#limitations).
90
+
91
+ </Tab>
92
+ <Tab label="All-in-one Docker" value="docker">
93
+
94
+ Wszystko działa wewnątrz pojedynczego kontenera `intlayer/cms-all`, nadzorowanego przez [s6-overlay](https://github.com/just-containers/s6-overlay), a każdy magazyn danych jest utrwalany w jednym wolumenie.
39
95
 
40
96
  ```
41
97
  ┌─────────────────────────────┐
42
- przeglądarka ──────▶ │ aplikacja (TanStack Start) :3000│ ──┐
43
- └─────────────────────────────┘ │ VITE_BACKEND_URL
98
+ browser ──────▶ │ app (TanStack Start) :3000│ ──┐
99
+ (localhost) └─────────────────────────────┘ │ VITE_BACKEND_URL (baked at build)
44
100
  ┌─────────────────────────────┐ │
45
101
  │ backend (Fastify/Bun) :3100│ ◀─┘
46
102
  └──────────────┬──────────────┘
47
- ┌──────────┬─────────┼──────────┬───────────┐
48
- ▼ ▼ ▼ ▼ ▼
49
- mongo:27017 redis:6379 minio:9000 mailpit:1025 Chromium
50
- (RS z 1 węzłem) (API S3) (SMTP) (w obrazie)
51
- minio:9001 mailpit:8025
52
- (konsola) (interfejs webowy)
103
+ ┌──────────┬─────────┼──────────────┐
104
+ ▼ ▼ ▼ ▼
105
+ mongo:27017 redis:6379 minio:9000 Chromium
106
+ /data/mongo /data/redis /data/minio (in-image)
107
+ (1-node RS) minio:9001
53
108
  ```
54
109
 
55
- Chromium (używany do generowania zrzutów ekranu przez Puppeteer) jest dołączony do obrazu backendu — nie jest potrzebny oddzielny kontener.
110
+ | Usługa | Port(y) hosta | Przeznaczenie |
111
+ | ----------- | ----------------------------- | ---------------------------------------------------------- |
112
+ | **app** | `3000` | Pulpit nawigacyjny (interfejs CMS) |
113
+ | **backend** | `3100` | REST API (punkt końcowy `/health`) |
114
+ | **mongo** | wewnętrzny | MongoDB 8, jedno-węzłowy zestaw replik `rs0` |
115
+ | **redis** | wewnętrzny | Kolejki zadań (BullMQ) i buforowanie |
116
+ | **minio** | `9000` (S3), `9001` (konsola) | Magazyn obiektów zgodny z S3 dla awatarów i zrzutów ekranu |
56
117
 
57
- ## Wymagania wstępne
118
+ Kolejność uruchamiania jest wymuszana przez zależności s6 (`mongod` → init replica-set, `minio` → utworzenie zasobnika, następnie `backend`, a potem `app`), a usługi restartują się po zakończeniu, dzięki czemu pierwszy rozruch naprawia się samoczynnie.
58
119
 
59
- - **Docker** ≥ 24 i **Docker Compose** ≥ v2. Jeśli którykolwiek z nich jest brakujący, instalator wyświetli link do instalacji i zakończy działanie.
60
- - Porty `3000`, `3100`, `8025`, `9000` i `9001` dostępne na hoście.
61
- - Host Linux lub macOS (lub WSL2 na Windows).
120
+ ### Wymagania wstępne
62
121
 
63
- Wszystko inne — Bun, Redis, MinIO, Chromium — jest dołączone do obrazu.
122
+ - **Docker** ≥ 24: instalator oferuje jego instalację (przez [get.docker.com](https://get.docker.com) w systemie Linux, Homebrew w macOS). W systemie Windows najpierw zainstaluj [Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/) (backend WSL 2).
123
+ - Wolne porty `3000`, `3100`, `9000` i `9001` na hoście. MinIO `9000` musi być dostępne dla przeglądarki, która ładuje zasoby bezpośrednio z `S3_PUBLIC_URL`.
124
+ - Mailer: klucz API [Resend](https://resend.com) lub przekaźnik SMTP.
64
125
 
65
- ## Szybki start
126
+ ### 1. Instalacja
66
127
 
67
- ### 1. Uruchom instalator
128
+ Zapisuje `./intlayer.env` z wygenerowanymi `BETTER_AUTH_SECRET` oraz `S3_SECRET_ACCESS_KEY` i pobiera `intlayer/cms-all:latest`.
129
+
130
+ <Tabs group="os">
131
+ <Tab label="macOS / Linux" value="unix">
68
132
 
69
133
  ```sh
70
- curl -fsSL https://intlayer.org/install.sh | sh
134
+ curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode docker
71
135
  ```
72
136
 
73
- Instalator sprawdza, czy Docker jest zainstalowany i uruchomiony, zapisuje `./intlayer.env` z już wygenerowanymi `BETTER_AUTH_SECRET` i `S3_SECRET_ACCESS_KEY`, a następnie pobiera obraz. Nie uruchamia kontenera — backend nie może się uruchomić bez poświadczeń bazy danych.
137
+ </Tab>
138
+ <Tab label="Windows" value="windows">
139
+
140
+ In PowerShell:
141
+
142
+ ```powershell
143
+ $env:INTLAYER_MODE = "docker"; irm https://intlayer.org/install.ps1 | iex
144
+ ```
145
+
146
+ </Tab>
147
+ <Tab label="Intlayer CLI" value="cli">
148
+
149
+ ```bash
150
+ npx intlayer init infra --mode docker
151
+ ```
74
152
 
75
- Ponowne uruchomienie instalatora jest bezpieczne: istniejący plik `intlayer.env` nigdy nie zostanie nadpisany, co czyni to również ścieżką aktualizacji.
153
+ </Tab>
154
+ </Tabs>
76
155
 
77
- ### 2. Wypełnij swoje dane uwierzytelniające
156
+ ### 2. Konfiguracja mailera
78
157
 
79
- Otwórz `intlayer.env` i uzupełnij wartości oznaczone `TODO`:
158
+ Otwórz `intlayer.env` i uzupełnij Resend **lub** SMTP (szczegóły w sekcji [Globalny mailer](#global-mailer)):
80
159
 
81
160
  ```sh fileName="intlayer.env"
82
- DB_ID=<atlas-user>
83
- DB_MDP=<atlas-password>
84
- DB_CLUSTER=<cluster>.xxxxx.mongodb.net
161
+ # Option A: Resend
85
162
  RESEND_API_KEY=<your-resend-key>
86
- ```
87
163
 
88
- Plik zawiera również skomentowane bloki dla opcjonalnych funkcji — [SMTP mailer](#global-mailer), `OPENAI_API_KEY` i dostawcy OAuth. Odkomentuj to, czego potrzebujesz.
164
+ # Option B: SMTP (takes over from Resend as soon as MAIL_SMTP_HOST is set)
165
+ MAIL_SMTP_HOST=smtp.example.com
166
+ MAIL_SMTP_PORT=587
167
+ MAIL_SMTP_USER=<user>
168
+ MAIL_SMTP_PASSWORD=<password>
169
+ MAIL_FROM=Intlayer <no-reply@example.com>
170
+ ```
89
171
 
90
- > Plik jest odczytywany przez `docker run --env-file`, który nie usuwa cudzysłowów i traktuje wszystko po `=` jako wartość. Wpisz wartości bez cudzysłowów i przechowuj komentarze na własnych liniach.
172
+ ### 3. Uruchomienie
91
173
 
92
- ### 3. Uruchom kontener
174
+ Oto polecenie, które wyświetla instalator:
93
175
 
94
- To jest polecenie, które instalator wypisuje po zakończeniu:
176
+ <Tabs group="os">
177
+ <Tab label="macOS / Linux" value="unix">
95
178
 
96
179
  ```sh
97
180
  docker run -d --name intlayer \
98
181
  --restart unless-stopped \
99
- -p 3000:3000 \
100
- -p 3100:3100 \
101
- -p 9000:9000 \
102
- -p 9001:9001 \
182
+ -p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 \
103
183
  -v intlayer-data:/data \
104
184
  --env-file ./intlayer.env \
105
- ghcr.io/aymericzip/intlayer-selfhost:latest
185
+ intlayer/cms-all:latest
106
186
  ```
107
187
 
108
- Następnie otwórz **http://localhost:3000**. Pierwszy boot inicjalizuje magazyny danych, więc daj mu minutę.
188
+ </Tab>
189
+ <Tab label="Windows" value="windows">
109
190
 
110
- > Dashboard jest serwowany na `localhost`. Zobacz [Ograniczenia](#limitations) — niestandardowe domeny nie są obsługiwane przez opublikowany obraz.
191
+ ```powershell
192
+ docker run -d --name intlayer `
193
+ --restart unless-stopped `
194
+ -p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 `
195
+ -v intlayer-data:/data `
196
+ --env-file ./intlayer.env `
197
+ intlayer/cms-all:latest
198
+ ```
111
199
 
112
- ### Ustawienia instalatora
200
+ </Tab>
201
+ <Tab label="Intlayer CLI" value="cli">
202
+
203
+ CLI uruchamia instalator, który wyświetla polecenie `docker run …` widoczne na pozostałych kartach. Skopiuj je do terminala po skonfigurowaniu mailera.
204
+
205
+ </Tab>
206
+ </Tabs>
207
+
208
+ Otwórz **http://localhost:3000** i postępuj zgodnie z instrukcją [Pierwsza konfiguracja](#first-run-setup). Pierwsze uruchomienie inicjalizuje zestaw replik oraz zasobnik, odczekaj chwilę.
209
+
210
+ ### Kopia zapasowa i aktualizacja
113
211
 
114
- Installer odczytuje kilka zmiennych środowiskowych. Ponieważ są one przesyłane do `sh`, przekaż je do powłoki zamiast do `curl`:
212
+ Cały stan znajduje się w wolumenie `intlayer-data` (`/data/mongo`, `/data/redis`, `/data/minio`).
115
213
 
116
214
  ```sh
117
- curl -fsSL https://intlayer.org/install.sh | INTLAYER_ENV_FILE=./config/intlayer.env sh
215
+ # Backup (stop the container first so MongoDB's files are consistent)
216
+ docker stop intlayer
217
+ docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar czf /backup/intlayer-data.tar.gz /data
218
+ docker start intlayer
219
+
220
+ # Restore
221
+ docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar xzf /backup/intlayer-data.tar.gz -C /
222
+ ```
223
+
224
+ Aby zaktualizować, uruchom ponownie instalator (pobiera najnowszy obraz i zachowuje `intlayer.env`), a następnie wykonaj `docker rm -f intlayer` i uruchom ponownie polecenie startowe. Aby użyć zarządzanej bazy MongoDB zamiast wbudowanej, ustaw `MONGODB_URI` w `intlayer.env`.
225
+
226
+ </Tab>
227
+ <Tab label="Docker Compose" value="compose">
228
+
229
+ Jeden kontener na usługę w prywatnej sieci Compose. Pulpit nawigacyjny i API korzystają z opublikowanych obrazów `intlayer/cms-frontend` oraz `intlayer/cms-backend`; magazyny danych korzystają z oficjalnych obrazów `mongo`, `redis` i `minio`.
230
+
231
+ ```
232
+ ┌───────────────────┐
233
+ browser ──────▶ │ app :3000 │ ── SSR ──▶ http://backend:3100
234
+ (localhost) └───────────────────┘
235
+ ┌───────────────────┐
236
+ browser ──────▶ │ backend :3100 │
237
+ (localhost) └─────────┬─────────┘
238
+ ┌───────────────┼───────────────┐
239
+ ▼ ▼ ▼
240
+ mongo:27017 redis:6379 minio:9000 ◀── browser (assets)
241
+ (1-node RS) minio:9001
242
+ ```
243
+
244
+ | Usługa | Obraz | Rola |
245
+ | ------------ | ----------------------- | -------------------------------------------------------------------------- |
246
+ | `app` | `intlayer/cms-frontend` | Pulpit nawigacyjny na `:3000`; oczekuje na sprawność backendu |
247
+ | `backend` | `intlayer/cms-backend` | API na `:3100` z Chromium; oczekuje na Mongo, Redis i zasobnik MinIO |
248
+ | `mongo` | `mongo:8` | Jedno-węzłowy zestaw replik `rs0`, inicjalizowany przez własny healthcheck |
249
+ | `redis` | `redis:8-alpine` | Kolejki i buforowanie, trwałość append-only |
250
+ | `minio` | `quay.io/minio/minio` | Pamięć S3 na `:9000`, konsola na `:9001` |
251
+ | `minio-init` | `quay.io/minio/mc` | Pojedyncze uruchomienie: tworzy zasobnik i politykę anonimowego pobierania |
252
+
253
+ Dane są przechowywane w wolumenach `intlayer_mongo-data`, `intlayer_redis-data` oraz `intlayer_minio-data`. Połączenia między usługami (`MONGODB_URI`, `REDIS_URL`, `S3_ENDPOINT`, wewnętrzny adres URL backendu używany przez SSR) są ustalone w pliku compose i mają pierwszeństwo przed `.env`, który zawiera tylko sekrety i opcjonalne integracje.
254
+
255
+ ### Wymagania wstępne
256
+
257
+ - **Docker** ≥ 24 z wtyczką Compose: instalator oferuje jego instalację w systemach Linux i macOS. W systemie Windows najpierw zainstaluj [Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/) (backend WSL 2).
258
+ - Wolne porty `3000`, `3100`, `9000` i `9001` na hoście.
259
+ - Mailer: klucz API [Resend](https://resend.com) lub przekaźnik SMTP.
260
+
261
+ ### 1. Instalacja
262
+
263
+ Zapisuje `docker-compose.yml` oraz `.env` z wygenerowanymi sekretami w `./intlayer/` i pobiera obrazy.
264
+
265
+ <Tabs group="os">
266
+ <Tab label="macOS / Linux" value="unix">
267
+
268
+ ```sh
269
+ curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode compose
270
+ ```
271
+
272
+ Or by hand:
273
+
274
+ ```sh
275
+ mkdir intlayer && cd intlayer
276
+ curl -fsSLO https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml
277
+ curl -fsSL https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -o .env
278
+ # fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY (openssl rand -hex 32)
279
+ ```
280
+
281
+ </Tab>
282
+ <Tab label="Windows" value="windows">
283
+
284
+ In PowerShell:
285
+
286
+ ```powershell
287
+ $env:INTLAYER_MODE = "compose"; irm https://intlayer.org/install.ps1 | iex
288
+ ```
289
+
290
+ Or by hand:
291
+
292
+ ```powershell
293
+ mkdir intlayer; cd intlayer
294
+ irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml -OutFile docker-compose.yml
295
+ irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -OutFile .env
296
+ # fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY
118
297
  ```
119
298
 
120
- | Zmienna | Domyślnie | Opis |
121
- | ------------------------- | --------------------------------------------- | ---------------------------------- |
122
- | `INTLAYER_IMAGE` | `ghcr.io/aymericzip/intlayer-selfhost:latest` | Obraz do pobrania |
123
- | `INTLAYER_ENV_FILE` | `./intlayer.env` | Gdzie zapisać plik env |
124
- | `INTLAYER_CONTAINER_NAME` | `intlayer` | Nazwa kontenera |
125
- | `INTLAYER_DATA_VOLUME` | `intlayer-data` | Named volume zamontowany w `/data` |
126
- | `INTLAYER_APP_PORT` | `3000` | Port hosta dla dashboardu |
127
- | `INTLAYER_API_PORT` | `3100` | Port hosta dla API |
128
- | `INTLAYER_S3_PORT` | `9000` | Port hosta dla MinIO S3 API |
129
- | `INTLAYER_CONSOLE_PORT` | `9001` | Port hosta dla konsoli MinIO |
299
+ </Tab>
300
+ <Tab label="Intlayer CLI" value="cli">
301
+
302
+ ```bash
303
+ npx intlayer init infra --mode compose
304
+ ```
130
305
 
131
- > Cztery zmienne portów zmieniają tylko **stronę hosta** mapowania wydrukowanego w poleceniu `docker run`. Opublikowany obraz ma `http://localhost:3000`, `http://localhost:3100` i `http://localhost:9000` skompilowane w bundle'u dashboardu w czasie kompilacji, dlatego zmapowanie ich na nowo powoduje, że przeglądarka wskazuje na stare porty. Zachowaj wartości domyślne, chyba że budujesz swój własny obraz — zobacz [Ograniczenia](#limitations).
306
+ </Tab>
307
+ </Tabs>
132
308
 
133
- ## Szybki start
309
+ ### 2. Konfiguracja mailera
134
310
 
135
- Co robi instalator:
311
+ Uzupełnij Resend **lub** SMTP w `intlayer/.env`, dokładnie tak samo jak w konfiguracji all-in-one (zobacz [Globalny mailer](#global-mailer)).
136
312
 
137
- 1. Sprawdza, czy `docker` i `docker compose` są obecne.
138
- 2. Pobiera `docker-compose.yml` i `.env.example` do `./intlayer/`.
139
- 3. Jeśli plik `.env` nie istnieje, kopiuje przykład i generuje losowe sekrety dla `BETTER_AUTH_SECRET`, `S3_ACCESS_KEY_ID` i `S3_SECRET_ACCESS_KEY` za pomocą `openssl rand`.
140
- 4. Uruchamia `docker compose pull` + `docker compose up -d`.
141
- 5. Wyświetla adresy URL: pulpit nawigacyjny `:3000`, API `:3100`, interfejs e-mail `:8025`, konsola MinIO `:9001`.
313
+ ### 3. Uruchomienie
142
314
 
143
- Po uruchomieniu stosu, otwórz **http://localhost:3000** i utwórz swoje pierwsze konto.
315
+ ```sh
316
+ cd intlayer && docker compose up -d
317
+ ```
144
318
 
145
- ## Usługi
319
+ Otwórz **http://localhost:3000** i postępuj zgodnie z instrukcją [Pierwsza konfiguracja](#first-run-setup).
320
+
321
+ ### Zarządzane magazyny danych
322
+
323
+ Usuń zastępowaną usługę z pliku compose (oraz jej wpis w `depends_on` w `backend`), a następnie nadpisz odpowiednią zmienną:
324
+
325
+ ```yaml fileName="docker-compose.yml"
326
+ services:
327
+ backend:
328
+ environment:
329
+ MONGODB_URI: mongodb+srv://user:password@cluster0.xxxxx.mongodb.net/intlayer
330
+ REDIS_URL: rediss://default:password@redis.example.com:6380
331
+ S3_ENDPOINT: https://s3.eu-west-1.amazonaws.com
332
+ S3_PUBLIC_URL: https://intlayer-assets.s3.eu-west-1.amazonaws.com
333
+ ```
146
334
 
147
- | Usługa | Obraz | Port(y) hosta | Cel |
148
- | :------------ | :------------------------------------ | :--------------------------------------- | :---------------------------------------------------------------- |
149
- | **aplikacja** | zbudowana z `apps/app/Dockerfile` | `3000` | Pulpit nawigacyjny TanStack Start (interfejs użytkownika CMS) |
150
- | **backend** | zbudowany z `apps/backend/Dockerfile` | `3100` | Fastify REST API (punkt końcowy `/health`) |
151
- | **mongo** | `mongo:7` | wewnętrzny | Zestaw replikacji z jednym węzłem (`rs0`) |
152
- | **redis** | `redis:7-alpine` | wewnętrzny | Kolejki zadań (BullMQ) i buforowanie (ioredis) |
153
- | **minio** | `minio/minio` | `9000` (S3), `9001` (konsola) | Przechowywanie obiektów zgodne z S3 dla awatarów i zrzutów ekranu |
154
- | **mailpit** | `axllent/mailpit` | `1025` (SMTP), `8025` (interfejs webowy) | Lokalny odbiornik transakcyjnych wiadomości e-mail |
335
+ `S3_ACCESS_KEY_ID` / `S3_SECRET_ACCESS_KEY` / `S3_BUCKET_NAME` zachowują swoje znaczenie w przypadku każdego dostawcy zgodnego z S3.
155
336
 
156
- > Port MinIO `9000` musi być osiągalny przez przeglądarkę, ponieważ przesłane zasoby (awatary, zrzuty ekranu) są ładowane bezpośrednio z `S3_PUBLIC_URL=http://localhost:9000/intlayer`.
337
+ ### Skalowanie
338
+
339
+ `app` i `backend` są bezstanowe (stateless). Za modułem równoważenia obciążenia `docker compose up -d --scale backend=3` działa po usunięciu stałych mapowań portów hosta i gdy proxy odwołuje się do usług po nazwie. Zadania w tle są koordynowane za pośrednictwem Redis (BullMQ), więc wiele replik backendu bezpiecznie współdzieli kolejkę.
340
+
341
+ ### Budowanie ze źródeł
342
+
343
+ W sklonowanym repozytorium plik nadpisujący przełącza obie usługi Intlayer z `image:` na `build:`:
344
+
345
+ ```sh
346
+ cd docker/selfhost
347
+ docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
348
+ ```
349
+
350
+ W ten sposób można również utworzyć obrazy dla domeny niestandardowej: przekaż wartości `VITE_*` jako build args (zobacz [Ograniczenia](#limitations)).
351
+
352
+ ### Kopia zapasowa i aktualizacja
353
+
354
+ ```sh
355
+ # Backup one volume (repeat for intlayer_redis-data and intlayer_minio-data)
356
+ docker compose stop
357
+ docker run --rm -v intlayer_mongo-data:/data -v "$(pwd)":/backup busybox tar czf /backup/mongo-data.tar.gz /data
358
+ docker compose start
359
+
360
+ # Upgrade, volumes are kept
361
+ docker compose pull && docker compose up -d
362
+ ```
363
+
364
+ </Tab>
365
+ </Tabs>
366
+
367
+ ### Ustawienia instalatora
368
+
369
+ Bez `--mode` (lub `INTLAYER_MODE`) instalator wyświetla menu: `desktop`, `docker` (all-in-one) lub `compose`. Odczytuje również kilka zmiennych środowiskowych. Ponieważ instalator jest przekazywany potokiem do powłoki, przekaż je do powłoki, a nie do `curl`:
370
+
371
+ ```sh
372
+ curl -fsSL https://intlayer.org/install.sh | INTLAYER_COMPOSE_DIR=./cms sh -s -- --mode compose
373
+ ```
374
+
375
+ ```powershell
376
+ $env:INTLAYER_MODE = "compose"; $env:INTLAYER_COMPOSE_DIR = ".\cms"; irm https://intlayer.org/install.ps1 | iex
377
+ ```
378
+
379
+ | Variable | Default | Applies to | Description |
380
+ | ------------------------- | ------------------------- | ---------- | ---------------------------------------------------------- |
381
+ | `INTLAYER_MODE` | _(asked)_ | all | `desktop`, `docker` or `compose`, same as `--mode` |
382
+ | `INTLAYER_DOWNLOAD_DIR` | `~/Downloads` | desktop | Where the app installer is saved |
383
+ | `INTLAYER_IMAGE` | `intlayer/cms-all:latest` | docker | All-in-one image to pull |
384
+ | `INTLAYER_ENV_FILE` | `./intlayer.env` | docker | Where to write the environment file |
385
+ | `INTLAYER_CONTAINER_NAME` | `intlayer` | docker | Container name |
386
+ | `INTLAYER_DATA_VOLUME` | `intlayer-data` | docker | Named volume mounted at `/data` |
387
+ | `INTLAYER_APP_PORT` | `3000` | docker | Host port for the dashboard |
388
+ | `INTLAYER_API_PORT` | `3100` | docker | Host port for the API |
389
+ | `INTLAYER_S3_PORT` | `9000` | docker | Host port for the MinIO S3 API |
390
+ | `INTLAYER_CONSOLE_PORT` | `9001` | docker | Host port for the MinIO console |
391
+ | `INTLAYER_COMPOSE_DIR` | `./intlayer` | compose | Where `docker-compose.yml` and `.env` are written |
392
+ | `INTLAYER_SELFHOST_REF` | `main` | both | Git ref the compose file and env template are fetched from |
393
+
394
+ > Zmienne portów zmieniają wyłącznie stronę **hosta** w mapowaniu. Opublikowane obrazy mają wartości `http://localhost:3000`, `http://localhost:3100` oraz `http://localhost:9000` skompilowane w pakiecie pulpitu, więc zachowaj wartości domyślne, chyba że budujesz własne obrazy, zobacz [Ograniczenia](#limitations).
395
+
396
+ ## Pierwsza konfiguracja
397
+
398
+ W nowej instancji (pusta baza danych) otwarcie pulpitu nawigacyjnego przekierowuje na stronę **`/init`**:
399
+
400
+ 1. Utwórz pierwsze konto. Ponieważ kolekcja użytkowników jest pusta, to konto zostanie automatycznie awansowane na **superadministratora**.
401
+ 2. Wiadomość e-mail weryfikacyjna jest wysyłana za pośrednictwem Resend lub przekaźnika SMTP. Weryfikacja adresu e-mail jest **obowiązkowa**, dlatego mailer musi być skonfigurowany przed uruchomieniem.
402
+ 3. Kliknij link w wiadomości e-mail, a następnie zaloguj się.
403
+
404
+ Gdy administrator już istnieje, `/init` przekierowuje do standardowej strony logowania.
157
405
 
158
406
  ## Zmienne środowiskowe
159
407
 
408
+ Oba tryby Dockera odczytują ten sam plik (`intlayer.env` dla kontenera, `.env` dla Compose), wygenerowany na podstawie [`docker/selfhost/.env.template`](https://github.com/aymericzip/intlayer/blob/main/docker/selfhost/.env.template).
409
+
160
410
  ### Wymagane
161
411
 
162
- | Variable | Example | Description |
163
- | ---------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
164
- | `DB_ID` | `intlayer` | Użytkownik MongoDB Atlas |
165
- | `DB_MDP` | _(your password)_ | Hasło MongoDB Atlas |
166
- | `DB_CLUSTER` | `cluster0.xxxxx.mongodb.net` | Host klastra MongoDB Atlas (używany w URI `mongodb+srv://`) |
167
- | `BETTER_AUTH_SECRET` | _(generated)_ | 32-bajtowy secret do podpisywania sesji |
168
- | `S3_SECRET_ACCESS_KEY` | _(generated)_ | Secret dla wbudowanego MinIO |
169
- | `RESEND_API_KEY` | _(your key)_ | Transakcyjne e-maile via Resend. Wymagane dla konfiguracji przy pierwszym uruchomieniu, chyba że skonfigurujesz globalny mailer SMTP (zobacz [Global mailer](#global-mailer)) |
170
-
171
- ### Wymagane (generowane automatycznie lub monitowane)
172
-
173
- | Zmienna | Przykład | Opis |
174
- | :--------------------- | :---------------------------------------------- | :-------------------------------------------------------------- |
175
- | `NODE_ENV` | `production` | Środowisko uruchomieniowe |
176
- | `PORT` | `3100` | Port nasłuchiwania backendu |
177
- | `BACKEND_URL` | `http://localhost:3100` | Publiczny URL API backendu |
178
- | `APP_URL` | `http://localhost:3000` | Publiczny URL pulpitu nawigacyjnego |
179
- | `DOMAIN` | `localhost` | Domena plików cookie |
180
- | `MONGODB_URI` | `mongodb://mongo:27017/intlayer?replicaSet=rs0` | Pełny URI połączenia z MongoDB |
181
- | `REDIS_URL` | `redis://redis:6379` | URL połączenia z Redis |
182
- | `BETTER_AUTH_SECRET` | _(generated)_ | 32-bajtowy sekret do podpisywania sesji |
183
- | `MAIL_PROVIDER` | `smtp` | Transport poczty: `smtp` lub `resend` |
184
- | `MAIL_SMTP_HOST` | `mailpit` | Nazwa hosta SMTP (nazwa kontenera Mailpit) |
185
- | `MAIL_SMTP_PORT` | `1025` | Port SMTP |
186
- | `MAIL_FROM` | `Intlayer <no-reply@localhost>` | Adres nadawcy |
187
- | `S3_ENDPOINT` | `http://minio:9000` | Punkt końcowy zgodny z S3 |
188
- | `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | Publiczny URL do ładowania zasobów przez przeglądarkę |
189
- | `S3_BUCKET_NAME` | `intlayer` | Nazwa zasobnika (bucket) |
190
- | `S3_ACCESS_KEY_ID` | _(generated)_ | Klucz dostępu MinIO |
191
- | `S3_SECRET_ACCESS_KEY` | _(generated)_ | Tajny klucz MinIO |
192
- | `VITE_BACKEND_URL` | `http://localhost:3100` | URL backendu wbudowany w pulpit nawigacyjny w czasie kompilacji |
193
- | `VITE_DOMAIN` | `localhost` | Domena wbudowana w pulpit nawigacyjny w czasie kompilacji |
194
-
195
- ### Opcjonalne (funkcje działają z ograniczoną funkcjonalnością, gdy ich brakuje)
196
-
197
- | Zmienna | Funkcja |
198
- | :------------------------------------------------------- | :---------------------------------------------------------------------------------------------- |
199
- | `OPENAI_API_KEY` | Tłumaczenie wspomagane AI i audyt treści |
200
- | `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | Zarządzanie płatnościami i subskrypcjami |
201
- | `RESEND_API_KEY` | Transakcyjne wiadomości e-mail za pośrednictwem Resend (przesłania Mailpit, gdy jest ustawione) |
202
- | `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | Logowanie GitHub OAuth |
203
- | `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Logowanie Google OAuth |
204
- | `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | Logowanie GitLab OAuth |
205
- | `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Logowanie Microsoft OAuth |
206
- | `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET` | Logowanie LinkedIn OAuth |
207
- | `ATLASSIAN_CLIENT_ID`, `ATLASSIAN_CLIENT_SECRET` | Logowanie Atlassian OAuth |
208
-
209
- ### Globalny dostawca poczty
210
-
211
- Domyślnie wszystkie transakcyjne wiadomości e-mail są wysyłane za pośrednictwem Resend przy użyciu `RESEND_API_KEY`. Wdrożenia self-hosted mogą zamiast tego kierować **każdy** e-mail — w tym e-maile niezwiązane z organizacją, takie jak resetowanie hasła i linki magiczne — za pośrednictwem globalnego dostawcy poczty skonfigurowanego zmiennymi środowiskowymi.
212
-
213
- Ustaw `MAIL_PROVIDER`, aby go aktywować. Jeśli nie jest ustawiony, używany jest domyślny dostawca Resend.
214
-
215
- | Zmienna | Przykład | Opis |
216
- | -------------------- | ------------------------------ | --------------------------------------------------------------------------------- |
217
- | `MAIL_PROVIDER` | `smtp` | Transport globalny: `smtp` lub `resend`. Pozostaw puste, aby użyć domyślnych |
218
- | `MAIL_FROM` | `Intlayer <no-reply@acme.com>` | Nagłówek nadawcy. Akceptuje zwykły adres lub format `Nazwa <email>` |
219
- | `MAIL_SMTP_HOST` | `smtp.acme.com` | Host SMTP (wymagany, gdy `MAIL_PROVIDER=smtp`) |
220
- | `MAIL_SMTP_PORT` | `587` | Port SMTP (domyślnie `587`) |
221
- | `MAIL_SMTP_SECURE` | `false` | Niejawny TLS. Ustaw `true` dla portu `465` |
222
- | `MAIL_SMTP_USER` | _(twoja nazwa użytkownika)_ | Nazwa użytkownika SMTP (opcjonalnie; pomiń dla nieuwierzytelnionych przekaźników) |
223
- | `MAIL_SMTP_PASSWORD` | _(twoje hasło)_ | Hasło SMTP |
224
-
225
- > Priorytet: własny dostawca poczty organizacji (skonfigurowany z pulpitu **Organizacji**) ma priorytet nad globalnym dostawcą poczty, który z kolei ma priorytet nad domyślnym kluczem Resend.
226
-
227
- ## Łączenie Twojego projektu Intlayer
228
-
229
- Po uruchomieniu stosu, skieruj swój projekt na samodzielnie hostowany backend i pulpit nawigacyjny zamiast na `intlayer.org`.
412
+ | Variable | Example | Description |
413
+ | ---------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
414
+ | `BETTER_AUTH_SECRET` | _(generated)_ | 32-byte secret for session signing |
415
+ | `S3_SECRET_ACCESS_KEY` | _(generated)_ | Secret for the bundled MinIO |
416
+ | `RESEND_API_KEY` | _(your key)_ | Transactional email via Resend. Required for first-run setup unless an SMTP relay is configured instead (see [Global mailer](#global-mailer)) |
417
+
418
+ ### Ustalane przez wdrożenie
419
+
420
+ These are set by the image (all-in-one) or by the compose file, and only need overriding for a non-standard topology.
421
+
422
+ | Variable | All-in-one | Docker Compose | Description |
423
+ | ------------------ | --------------------------------------------------- | -------------------------------- | ----------------------------------------------------------------------------- |
424
+ | `PORT` | `3100` | `3100` | Backend listening port |
425
+ | `APP_URL` | `http://localhost:3000` | `http://localhost:3000` | Public URL of the dashboard |
426
+ | `BACKEND_URL` | `http://localhost:3100` | `http://localhost:3100` | Public URL of the backend API |
427
+ | `DOMAIN` | `localhost` | `localhost` | Cookie domain |
428
+ | `SELF_HOSTED` | `true` | `true` | Disables the cloud-only API endpoints (billing, subscriptions, marketplace) |
429
+ | `MONGODB_URI` | `mongodb://127.0.0.1:27017/intlayer?replicaSet=rs0` | `mongodb://mongo:27017/…` | MongoDB connection string, any `mongodb://` or `mongodb+srv://` cluster works |
430
+ | `REDIS_URL` | `redis://127.0.0.1:6379` | `redis://redis:6379` | Redis |
431
+ | `S3_ENDPOINT` | `http://127.0.0.1:9000` | `http://minio:9000` | MinIO (server-to-server) |
432
+ | `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | `http://localhost:9000/intlayer` | Public URL for browser asset loading |
433
+ | `S3_BUCKET_NAME` | `intlayer` | `intlayer` | Bucket name |
434
+ | `S3_ACCESS_KEY_ID` | `intlayer` | `intlayer` | MinIO access key |
435
+
436
+ Usługa Compose `app` otrzymuje dodatkowo `INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100`: przeglądarka łączy się z API pod adresem `localhost:3100`, ale renderowanie po stronie serwera działa wewnątrz sieci Compose i musi używać nazwy usługi.
437
+
438
+ ### Opcjonalne (funkcje działają poprawnie w stopniu ograniczonym przy ich braku)
439
+
440
+ | Variable | Feature |
441
+ | ------------------------------------------------ | ----------------------------------------- |
442
+ | `OPENAI_API_KEY` | AI-assisted translation and content audit |
443
+ | `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | GitHub OAuth login |
444
+ | `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google OAuth login |
445
+ | `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | GitLab OAuth login |
446
+ | `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Microsoft OAuth login |
447
+
448
+ ### Globalny mailer
449
+
450
+ Każda transakcyjna wiadomość e-mail, w tym wiadomości spoza organizacji (takie jak resetowanie hasła i linki logowania), przechodzi przez jeden z dwóch globalnych transportów:
451
+
452
+ - **Resend**, przy użyciu `RESEND_API_KEY`.
453
+ - **SMTP**, przy użyciu zmiennych `MAIL_SMTP_*`. Gdy tylko zostanie ustawiona zmienna `MAIL_SMTP_HOST`, używany jest protokół SMTP, a `RESEND_API_KEY` jest ignorowany.
454
+
455
+ `MAIL_PROVIDER` jest potrzebny tylko do wymuszenia jednego transportu, gdy oba są skonfigurowane (na przykład `MAIL_PROVIDER=resend`, aby zachować Resend, gdy zdefiniowany jest host SMTP).
456
+
457
+ | Variable | Example | Description |
458
+ | -------------------- | ------------------------------ | ---------------------------------------------------------------------------- |
459
+ | `MAIL_FROM` | `Intlayer <no-reply@acme.com>` | Sender header for either transport. Accepts a bare address or `Name <email>` |
460
+ | `MAIL_SMTP_HOST` | `smtp.acme.com` | SMTP host. Setting it selects the SMTP transport |
461
+ | `MAIL_SMTP_PORT` | `587` | SMTP port (defaults to `587`) |
462
+ | `MAIL_SMTP_SECURE` | `false` | Implicit TLS. Set `true` for port `465` |
463
+ | `MAIL_SMTP_USER` | _(your user)_ | SMTP username (optional; omit for unauthenticated relays) |
464
+ | `MAIL_SMTP_PASSWORD` | _(your password)_ | SMTP password |
465
+ | `MAIL_PROVIDER` | `resend` | Optional override: `smtp` or `resend`. Leave unset to auto-select |
466
+
467
+ > Pierwszeństwo: własny mailer organizacji (skonfigurowany w panelu **Organizacja**) ma pierwszeństwo przed mailerem globalnym, który z kolei ma pierwszeństwo przed domyślnym kluczem Resend.
468
+
469
+ ## Łączenie projektu Intlayer
470
+
471
+ Po uruchomieniu stosu skieruj swój projekt na samodzielnie hostowany backend i pulpit nawigacyjny zamiast `intlayer.org`.
230
472
 
231
473
  ### Konfiguracja projektu
232
474
 
@@ -239,23 +481,23 @@ const config: IntlayerConfig = {
239
481
  clientSecret: process.env.INTLAYER_CLIENT_SECRET,
240
482
 
241
483
  /**
242
- * URL samodzielnie hostowanego pulpitu nawigacyjnego CMS.
243
- * Domyślnie: https://app.intlayer.org
484
+ * URL of the self-hosted CMS dashboard.
485
+ * Default: https://app.intlayer.org
244
486
  */
245
- cmsURL: process.env.INTLAYER_CMS_URL, // np. http://localhost:3000
487
+ cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
246
488
 
247
489
  /**
248
- * URL samodzielnie hostowanego API backendu.
249
- * Domyślnie: https://back.intlayer.org
490
+ * URL of the self-hosted backend API.
491
+ * Default: https://back.intlayer.org
250
492
  */
251
- backendURL: process.env.INTLAYER_BACKEND_URL, // np. http://localhost:3100
493
+ backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
252
494
  },
253
495
  };
254
496
 
255
497
  export default config;
256
498
  ```
257
499
 
258
- Ustaw zmienne środowiskowe w pliku `.env` Twojego projektu:
500
+ Set the environment variables in your project's `.env`:
259
501
 
260
502
  ```sh
261
503
  INTLAYER_CMS_URL=http://localhost:3000
@@ -264,11 +506,11 @@ INTLAYER_CLIENT_ID=<your-client-id>
264
506
  INTLAYER_CLIENT_SECRET=<your-client-secret>
265
507
  ```
266
508
 
267
- Utwórz dane uwierzytelniające dostęp w swoim samodzielnie hostowanym pulpicie nawigacyjnym w sekcji **Projects → Access keys** pod adresem `http://localhost:3000/projects`.
509
+ Utwórz poświadczenia dostępu w swoim hostowanym pulpicie w sekcji **Projekty → Klucze dostępu** pod adresem `http://localhost:3000/projects`.
268
510
 
269
511
  ### SDK `@intlayer/api`
270
512
 
271
- Używając SDK `@intlayer/api` programowo, przekaż `backendURL` jawnie:
513
+ W przypadku programistycznego korzystania z pakietu SDK `@intlayer/api` przekaż `backendURL` jawnie:
272
514
 
273
515
  ```typescript fileName="cms.ts" codeFormat="typescript"
274
516
  import { createIntlayerCMS } from "@intlayer/api";
@@ -285,84 +527,17 @@ const cms = createIntlayerCMS({
285
527
  const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
286
528
  ```
287
529
 
288
- ## Aktualizacja
289
-
290
- Spowoduje to pobranie najnowszych obrazów i ponowne uruchomienie kontenerów za pomocą `docker compose pull && docker compose up -d`. Istniejące woluminy (`mongo-data`, `redis-data`, `minio-data`) zostaną zachowane — brak utraty danych.
291
-
292
- ```sh
293
- docker compose pull
294
- docker compose up -d
295
- ```
296
-
297
- ## Kopia zapasowa i przywracanie
298
-
299
- Wszystkie trwałe dane znajdują się w trzech nazwach woluminów Docker.
300
-
301
- ### Kopia zapasowa
302
-
303
- ```sh
304
- docker run --rm \
305
- -v intlayer_mongo-data:/data \
306
- -v "$(pwd)":/backup \
307
- busybox tar czf /backup/mongo-data.tar.gz /data
308
-
309
- docker run --rm \
310
- -v intlayer_redis-data:/data \
311
- -v "$(pwd)":/backup \
312
- busybox tar czf /backup/redis-data.tar.gz /data
313
-
314
- docker run --rm \
315
- -v intlayer_minio-data:/data \
316
- -v "$(pwd)":/backup \
317
- busybox tar czf /backup/minio-data.tar.gz /data
318
- ```
319
-
320
- ### Przywracanie
321
-
322
- ```sh
323
- docker run --rm \
324
- -v intlayer_mongo-data:/data \
325
- -v "$(pwd)":/backup \
326
- busybox tar xzf /backup/mongo-data.tar.gz -C /
327
-
328
- # Powtórz dla redis-data i minio-data
329
- ```
330
-
331
530
  ## Ograniczenia
332
531
 
333
- - **MongoDB musi być zewnętrzna (Atlas).** Backend łączy się tylko przez `mongodb+srv://` (zbudowany z `DB_ID` / `DB_MDP` / `DB_CLUSTER`), więc zwykły `mongodb://host:27017` — w tym wbudowany `mongod` kontenera — nie może być używany. Zapewnij klaster MongoDB Atlas.
334
- - **Brak niestandardowej domeny.** Wszystkie adresy URL `VITE_*` dostępne w przeglądarce są wbudowywane w aplikację w czasie kompilacji, a opublikowany obraz zawiera wartości `localhost`. Dostęp do dashboardu musi być realizowany pod adresem `http://localhost:3000`; udostępnienie go w domenie publicznej wymagałoby przebudowania obrazu z docelowymi adresami URL wbakowanymi w kod i nie jest obsługiwane out of the box.
335
- - **Email wymaga działającego mailera.** Konfiguracja przy pierwszym uruchomieniu wymusza weryfikację email, więc musi być skonfigurowany `RESEND_API_KEY` lub [globalny mailer SMTP](#global-mailer) (`MAIL_PROVIDER=smtp` + `MAIL_SMTP_*`). Po zalogowaniu się pierwszego administratora każda organizacja może również skonfigurować swój własny mailer SMTP lub Resend z dashboardu.
336
-
337
- ## Rozwiązywanie problemów
338
-
339
- ### Backend w pętli awarii przy pierwszym uruchomieniu
340
-
341
- MongoDB i Redis muszą być sprawne przed uruchomieniem backendu. Plik compose używa `depends_on` z `condition: service_healthy`. Jeśli widzisz powtarzające się restarty backendu, sprawdź, czy testy kondycji `mongo` i `redis` przechodzą pomyślnie:
342
-
343
- ```sh
344
- docker compose ps
345
- docker compose logs mongo
346
- docker compose logs redis
347
- ```
348
-
349
- Poszukaj `MongoDB connection error` w górnej części dziennika.
350
-
351
- ### Pulpit nawigacyjny nie może dotrzeć do API
352
-
353
- Sprawdź, czy `VITE_BACKEND_URL` odpowiada adresowi URL, pod którym backend jest osiągalny z **przeglądarki** (nie z sieci Docker). Jeśli zmieniłeś port backendu lub dodałeś reverse proxy, ponownie zbuduj obraz pulpitu nawigacyjnego:
354
-
355
- ### Brak zasobnika MinIO
356
-
357
- Jeśli jednorazowa usługa `minio-init` nie uruchomiła się (lub uruchomiła się, zanim MinIO było gotowe), utwórz zasobnik ręcznie:
358
-
359
- ```sh
360
- docker compose run --rm minio-init
361
- ```
532
+ - **Brak domeny niestandardowej i brak remapowania portów.** Wszystkie adresy URL `VITE_*` widoczne dla przeglądarki są wbudowane w pulpit nawigacyjny podczas kompilacji, a opublikowane obrazy (i aplikacja desktopowa) są dostarczane z wartościami `localhost` / Intlayer Cloud. Dostęp do pulpitu nawigacyjnego musi odbywać się pod adresem `http://localhost:3000`, do API pod `:3100`, a do MinIO pod `:9000`. Udostępnianie w domenie publicznej lub wskazywanie aplikacji desktopowej na własny backend wymaga ponownego zbudowania z wbudowanymi docelowymi adresami URL (`--build-arg VITE_BACKEND_URL=… VITE_SITE_URL=… VITE_DOMAIN=…` w `docker/selfhost/Dockerfile` lub przez `docker-compose.build.yml`) i nie jest domyślnie obsługiwane.
533
+ - **Wysyłanie e-maili wymaga działającego mailera.** Pierwsza konfiguracja wymusza weryfikację e-mail, dlatego należy skonfigurować `RESEND_API_KEY` lub [przekaźnik SMTP](#global-mailer) (`MAIL_SMTP_*`). Po zalogowaniu się pierwszego administratora każda organizacja może również skonfigurować własny mailer SMTP lub Resend z poziomu pulpitu nawigacyjnego.
534
+ - **Aplikacja desktopowa wymaga środowiska Node.js** na komputerze do uruchomienia wbudowanego serwera.
362
535
 
363
536
  ## Przydatne linki
364
537
 
365
538
  - [Dokumentacja Intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md)
366
- - [Referencje konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md)
367
- - [SDK CMS — `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md#programmatic-access-with-the-intlayerapi-sdk)
368
- - [Docker Image (aymercizip/intlayer-selfhost)](https://hub.docker.com/repository/docker/aymercizip/intlayer-selfhost/general)
539
+ - [Informacje o konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md)
540
+ - [SDK CMS: `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md#programmatic-access-with-the-intlayerapi-sdk)
541
+ - [Wydania aplikacji desktopowej](https://github.com/aymericzip/intlayer/releases/latest)
542
+ - Docker Hub: [`intlayer/cms-all`](https://hub.docker.com/r/intlayer/cms-all), [`intlayer/cms-frontend`](https://hub.docker.com/r/intlayer/cms-frontend), [`intlayer/cms-backend`](https://hub.docker.com/r/intlayer/cms-backend), mirror na GHCR: `ghcr.io/aymericzip/intlayer/`
543
+ - [`docker/selfhost/`](https://github.com/aymericzip/intlayer/tree/main/docker/selfhost): Dockerfile, `docker-compose.yml` i `.env.template`