@intlayer/docs 8.5.1 → 8.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (727) hide show
  1. package/blog/ar/intlayer_with_i18next.md +1 -1
  2. package/blog/ar/intlayer_with_next-i18next.md +1 -1
  3. package/blog/ar/intlayer_with_next-intl.md +1 -1
  4. package/blog/ar/intlayer_with_react-i18next.md +1 -1
  5. package/blog/ar/intlayer_with_react-intl.md +1 -1
  6. package/blog/ar/intlayer_with_vue-i18n.md +1 -1
  7. package/blog/de/intlayer_with_i18next.md +1 -1
  8. package/blog/de/intlayer_with_next-i18next.md +1 -1
  9. package/blog/de/intlayer_with_next-intl.md +1 -1
  10. package/blog/de/intlayer_with_react-i18next.md +1 -1
  11. package/blog/de/intlayer_with_react-intl.md +1 -1
  12. package/blog/de/intlayer_with_vue-i18n.md +1 -1
  13. package/blog/en/intlayer_with_i18next.md +1 -1
  14. package/blog/en/intlayer_with_next-i18next.md +1 -1
  15. package/blog/en/intlayer_with_next-intl.md +1 -1
  16. package/blog/en/intlayer_with_react-i18next.md +1 -1
  17. package/blog/en/intlayer_with_react-intl.md +1 -1
  18. package/blog/en/intlayer_with_vue-i18n.md +1 -1
  19. package/blog/en-GB/intlayer_with_i18next.md +1 -1
  20. package/blog/en-GB/intlayer_with_next-i18next.md +1 -1
  21. package/blog/en-GB/intlayer_with_next-intl.md +1 -1
  22. package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
  23. package/blog/en-GB/intlayer_with_react-intl.md +1 -1
  24. package/blog/en-GB/intlayer_with_vue-i18n.md +1 -1
  25. package/blog/es/intlayer_with_i18next.md +1 -1
  26. package/blog/es/intlayer_with_next-i18next.md +1 -1
  27. package/blog/es/intlayer_with_next-intl.md +1 -1
  28. package/blog/es/intlayer_with_react-i18next.md +1 -1
  29. package/blog/es/intlayer_with_react-intl.md +1 -1
  30. package/blog/es/intlayer_with_vue-i18n.md +1 -1
  31. package/blog/fr/intlayer_with_i18next.md +1 -1
  32. package/blog/fr/intlayer_with_next-i18next.md +1 -1
  33. package/blog/fr/intlayer_with_next-intl.md +1 -1
  34. package/blog/fr/intlayer_with_react-i18next.md +1 -1
  35. package/blog/fr/intlayer_with_react-intl.md +1 -1
  36. package/blog/fr/intlayer_with_vue-i18n.md +1 -1
  37. package/blog/hi/intlayer_with_i18next.md +1 -1
  38. package/blog/hi/intlayer_with_next-i18next.md +1 -1
  39. package/blog/hi/intlayer_with_next-intl.md +1 -1
  40. package/blog/hi/intlayer_with_react-i18next.md +1 -1
  41. package/blog/hi/intlayer_with_react-intl.md +1 -1
  42. package/blog/hi/intlayer_with_vue-i18n.md +1 -1
  43. package/blog/id/intlayer_with_i18next.md +1 -1
  44. package/blog/id/intlayer_with_next-i18next.md +1 -1
  45. package/blog/id/intlayer_with_next-intl.md +1 -1
  46. package/blog/id/intlayer_with_react-i18next.md +1 -1
  47. package/blog/id/intlayer_with_react-intl.md +1 -1
  48. package/blog/id/intlayer_with_vue-i18n.md +1 -1
  49. package/blog/it/intlayer_with_i18next.md +1 -1
  50. package/blog/it/intlayer_with_next-i18next.md +1 -1
  51. package/blog/it/intlayer_with_next-intl.md +1 -1
  52. package/blog/it/intlayer_with_react-i18next.md +1 -1
  53. package/blog/it/intlayer_with_react-intl.md +1 -1
  54. package/blog/it/intlayer_with_vue-i18n.md +1 -1
  55. package/blog/ja/intlayer_with_i18next.md +1 -1
  56. package/blog/ja/intlayer_with_next-i18next.md +1 -1
  57. package/blog/ja/intlayer_with_next-intl.md +1 -1
  58. package/blog/ja/intlayer_with_react-i18next.md +1 -1
  59. package/blog/ja/intlayer_with_react-intl.md +1 -1
  60. package/blog/ja/intlayer_with_vue-i18n.md +1 -1
  61. package/blog/ko/intlayer_with_i18next.md +1 -1
  62. package/blog/ko/intlayer_with_next-i18next.md +1 -1
  63. package/blog/ko/intlayer_with_next-intl.md +1 -1
  64. package/blog/ko/intlayer_with_react-i18next.md +1 -1
  65. package/blog/ko/intlayer_with_react-intl.md +1 -1
  66. package/blog/ko/intlayer_with_vue-i18n.md +1 -1
  67. package/blog/pl/intlayer_with_i18next.md +1 -1
  68. package/blog/pl/intlayer_with_next-i18next.md +1 -1
  69. package/blog/pl/intlayer_with_next-intl.md +1 -1
  70. package/blog/pl/intlayer_with_react-i18next.md +1 -1
  71. package/blog/pl/intlayer_with_react-intl.md +1 -1
  72. package/blog/pl/intlayer_with_vue-i18n.md +1 -1
  73. package/blog/pt/intlayer_with_i18next.md +1 -1
  74. package/blog/pt/intlayer_with_next-i18next.md +1 -1
  75. package/blog/pt/intlayer_with_next-intl.md +1 -1
  76. package/blog/pt/intlayer_with_react-i18next.md +1 -1
  77. package/blog/pt/intlayer_with_react-intl.md +1 -1
  78. package/blog/pt/intlayer_with_vue-i18n.md +1 -1
  79. package/blog/ru/intlayer_with_i18next.md +1 -1
  80. package/blog/ru/intlayer_with_next-i18next.md +1 -1
  81. package/blog/ru/intlayer_with_next-intl.md +1 -1
  82. package/blog/ru/intlayer_with_react-i18next.md +1 -1
  83. package/blog/ru/intlayer_with_react-intl.md +1 -1
  84. package/blog/ru/intlayer_with_vue-i18n.md +1 -1
  85. package/blog/tr/intlayer_with_i18next.md +1 -1
  86. package/blog/tr/intlayer_with_next-i18next.md +1 -1
  87. package/blog/tr/intlayer_with_next-intl.md +1 -1
  88. package/blog/tr/intlayer_with_react-i18next.md +1 -1
  89. package/blog/tr/intlayer_with_react-intl.md +1 -1
  90. package/blog/tr/intlayer_with_vue-i18n.md +1 -1
  91. package/blog/uk/intlayer_with_i18next.md +1 -1
  92. package/blog/uk/intlayer_with_next-i18next.md +1 -1
  93. package/blog/uk/intlayer_with_next-intl.md +1 -1
  94. package/blog/uk/intlayer_with_react-i18next.md +1 -1
  95. package/blog/uk/intlayer_with_react-intl.md +1 -1
  96. package/blog/uk/intlayer_with_vue-i18n.md +1 -1
  97. package/blog/vi/intlayer_with_i18next.md +1 -1
  98. package/blog/vi/intlayer_with_next-i18next.md +1 -1
  99. package/blog/vi/intlayer_with_next-intl.md +1 -1
  100. package/blog/vi/intlayer_with_react-i18next.md +1 -1
  101. package/blog/vi/intlayer_with_react-intl.md +1 -1
  102. package/blog/vi/intlayer_with_vue-i18n.md +1 -1
  103. package/blog/zh/intlayer_with_i18next.md +1 -1
  104. package/blog/zh/intlayer_with_next-i18next.md +1 -1
  105. package/blog/zh/intlayer_with_next-intl.md +1 -1
  106. package/blog/zh/intlayer_with_react-i18next.md +1 -1
  107. package/blog/zh/intlayer_with_react-intl.md +1 -1
  108. package/blog/zh/intlayer_with_vue-i18n.md +1 -1
  109. package/dist/cjs/generated/docs.entry.cjs +20 -0
  110. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  111. package/dist/esm/generated/docs.entry.mjs +20 -0
  112. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  113. package/dist/types/generated/docs.entry.d.ts +1 -0
  114. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  115. package/docs/ar/intlayer_CMS.md +1 -1
  116. package/docs/ar/intlayer_with_adonisjs.md +1 -1
  117. package/docs/ar/intlayer_with_analog.md +1 -1
  118. package/docs/ar/intlayer_with_angular.md +1 -1
  119. package/docs/ar/intlayer_with_create_react_app.md +1 -1
  120. package/docs/ar/intlayer_with_express.md +1 -1
  121. package/docs/ar/intlayer_with_fastify.md +1 -1
  122. package/docs/ar/intlayer_with_hono.md +1 -1
  123. package/docs/ar/intlayer_with_lynx+react.md +1 -1
  124. package/docs/ar/intlayer_with_nestjs.md +1 -1
  125. package/docs/ar/intlayer_with_next-i18next.md +1 -1
  126. package/docs/ar/intlayer_with_next-intl.md +1 -1
  127. package/docs/ar/intlayer_with_nextjs_14.md +1 -1
  128. package/docs/ar/intlayer_with_nextjs_15.md +1 -1
  129. package/docs/ar/intlayer_with_nextjs_16.md +2 -2
  130. package/docs/ar/intlayer_with_nextjs_compiler.md +2 -2
  131. package/docs/ar/intlayer_with_nextjs_no_locale_path.md +1 -1
  132. package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
  133. package/docs/ar/intlayer_with_nuxt.md +1 -1
  134. package/docs/ar/intlayer_with_react_native+expo.md +1 -1
  135. package/docs/ar/intlayer_with_react_router_v7.md +4 -6
  136. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +4 -6
  137. package/docs/ar/intlayer_with_svelte_kit.md +5 -5
  138. package/docs/ar/intlayer_with_tanstack+solid.md +894 -0
  139. package/docs/ar/intlayer_with_tanstack.md +2 -10
  140. package/docs/ar/intlayer_with_vite+lit.md +1 -2
  141. package/docs/ar/intlayer_with_vite+preact.md +2 -2
  142. package/docs/ar/intlayer_with_vite+react.md +2 -2
  143. package/docs/ar/intlayer_with_vite+react_compiler.md +1 -1
  144. package/docs/ar/intlayer_with_vite+solid.md +2 -3
  145. package/docs/ar/intlayer_with_vite+svelte.md +3 -3
  146. package/docs/ar/intlayer_with_vite+vanilla.md +2 -2
  147. package/docs/ar/intlayer_with_vite+vue.md +2 -2
  148. package/docs/bn/intlayer_with_fastify.md +1 -1
  149. package/docs/bn/intlayer_with_hono.md +1 -1
  150. package/docs/bn/intlayer_with_vite+lit.md +1 -2
  151. package/docs/bn/intlayer_with_vite+vanilla.md +2 -2
  152. package/docs/cs/intlayer_with_fastify.md +1 -1
  153. package/docs/cs/intlayer_with_hono.md +1 -1
  154. package/docs/cs/intlayer_with_vite+lit.md +1 -2
  155. package/docs/cs/intlayer_with_vite+vanilla.md +2 -2
  156. package/docs/de/intlayer_CMS.md +1 -1
  157. package/docs/de/intlayer_with_adonisjs.md +1 -1
  158. package/docs/de/intlayer_with_analog.md +1 -1
  159. package/docs/de/intlayer_with_angular.md +1 -1
  160. package/docs/de/intlayer_with_create_react_app.md +1 -1
  161. package/docs/de/intlayer_with_express.md +1 -1
  162. package/docs/de/intlayer_with_fastify.md +1 -1
  163. package/docs/de/intlayer_with_hono.md +1 -1
  164. package/docs/de/intlayer_with_lynx+react.md +1 -1
  165. package/docs/de/intlayer_with_nestjs.md +1 -1
  166. package/docs/de/intlayer_with_next-i18next.md +1 -1
  167. package/docs/de/intlayer_with_next-intl.md +1 -1
  168. package/docs/de/intlayer_with_nextjs_14.md +1 -1
  169. package/docs/de/intlayer_with_nextjs_15.md +1 -1
  170. package/docs/de/intlayer_with_nextjs_16.md +2 -2
  171. package/docs/de/intlayer_with_nextjs_compiler.md +1 -1
  172. package/docs/de/intlayer_with_nextjs_no_locale_path.md +1 -1
  173. package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
  174. package/docs/de/intlayer_with_nuxt.md +1 -1
  175. package/docs/de/intlayer_with_react_router_v7.md +4 -6
  176. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +2 -3
  177. package/docs/de/intlayer_with_svelte_kit.md +5 -5
  178. package/docs/de/intlayer_with_tanstack+solid.md +970 -0
  179. package/docs/de/intlayer_with_tanstack.md +98 -30
  180. package/docs/de/intlayer_with_vite+lit.md +1 -2
  181. package/docs/de/intlayer_with_vite+preact.md +2 -2
  182. package/docs/de/intlayer_with_vite+react.md +2 -2
  183. package/docs/de/intlayer_with_vite+react_compiler.md +1 -1
  184. package/docs/de/intlayer_with_vite+solid.md +2 -3
  185. package/docs/de/intlayer_with_vite+svelte.md +3 -3
  186. package/docs/de/intlayer_with_vite+vanilla.md +2 -2
  187. package/docs/de/intlayer_with_vite+vue.md +2 -2
  188. package/docs/en/intlayer_CMS.md +1 -1
  189. package/docs/en/intlayer_with_adonisjs.md +1 -1
  190. package/docs/en/intlayer_with_analog.md +1 -1
  191. package/docs/en/intlayer_with_angular.md +1 -1
  192. package/docs/en/intlayer_with_create_react_app.md +1 -1
  193. package/docs/en/intlayer_with_express.md +1 -1
  194. package/docs/en/intlayer_with_fastify.md +1 -1
  195. package/docs/en/intlayer_with_hono.md +1 -1
  196. package/docs/en/intlayer_with_lynx+react.md +1 -1
  197. package/docs/en/intlayer_with_nestjs.md +1 -1
  198. package/docs/en/intlayer_with_next-i18next.md +1 -1
  199. package/docs/en/intlayer_with_next-intl.md +1 -1
  200. package/docs/en/intlayer_with_nextjs_14.md +1 -1
  201. package/docs/en/intlayer_with_nextjs_15.md +1 -1
  202. package/docs/en/intlayer_with_nextjs_16.md +2 -2
  203. package/docs/en/intlayer_with_nextjs_compiler.md +2 -2
  204. package/docs/en/intlayer_with_nextjs_no_locale_path.md +1 -1
  205. package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
  206. package/docs/en/intlayer_with_nuxt.md +1 -1
  207. package/docs/en/intlayer_with_react_native+expo.md +1 -1
  208. package/docs/en/intlayer_with_react_router_v7.md +3 -4
  209. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +4 -6
  210. package/docs/en/intlayer_with_svelte_kit.md +4 -4
  211. package/docs/en/intlayer_with_tanstack+solid.md +973 -0
  212. package/docs/en/intlayer_with_tanstack.md +83 -12
  213. package/docs/en/intlayer_with_vite+lit.md +1 -2
  214. package/docs/en/intlayer_with_vite+preact.md +2 -2
  215. package/docs/en/intlayer_with_vite+react.md +2 -2
  216. package/docs/en/intlayer_with_vite+react_compiler.md +1 -1
  217. package/docs/en/intlayer_with_vite+solid.md +2 -3
  218. package/docs/en/intlayer_with_vite+svelte.md +7 -8
  219. package/docs/en/intlayer_with_vite+vanilla.md +2 -2
  220. package/docs/en/intlayer_with_vite+vue.md +2 -2
  221. package/docs/en-GB/intlayer_CMS.md +1 -1
  222. package/docs/en-GB/intlayer_with_adonisjs.md +1 -1
  223. package/docs/en-GB/intlayer_with_analog.md +1 -1
  224. package/docs/en-GB/intlayer_with_angular.md +1 -1
  225. package/docs/en-GB/intlayer_with_create_react_app.md +2 -2
  226. package/docs/en-GB/intlayer_with_express.md +1 -1
  227. package/docs/en-GB/intlayer_with_fastify.md +1 -1
  228. package/docs/en-GB/intlayer_with_hono.md +1 -1
  229. package/docs/en-GB/intlayer_with_lynx+react.md +2 -2
  230. package/docs/en-GB/intlayer_with_nestjs.md +1 -1
  231. package/docs/en-GB/intlayer_with_next-i18next.md +1 -1
  232. package/docs/en-GB/intlayer_with_next-intl.md +1 -1
  233. package/docs/en-GB/intlayer_with_nextjs_14.md +1 -1
  234. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -1
  235. package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
  236. package/docs/en-GB/intlayer_with_nextjs_compiler.md +1 -1
  237. package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +1 -1
  238. package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
  239. package/docs/en-GB/intlayer_with_nuxt.md +1 -1
  240. package/docs/en-GB/intlayer_with_react_native+expo.md +1 -1
  241. package/docs/en-GB/intlayer_with_react_router_v7.md +3 -5
  242. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +3 -5
  243. package/docs/en-GB/intlayer_with_svelte_kit.md +4 -4
  244. package/docs/en-GB/intlayer_with_tanstack+solid.md +968 -0
  245. package/docs/en-GB/intlayer_with_tanstack.md +75 -10
  246. package/docs/en-GB/intlayer_with_vite+lit.md +1 -2
  247. package/docs/en-GB/intlayer_with_vite+preact.md +1 -1
  248. package/docs/en-GB/intlayer_with_vite+react.md +1 -1
  249. package/docs/en-GB/intlayer_with_vite+react_compiler.md +1 -1
  250. package/docs/en-GB/intlayer_with_vite+solid.md +1 -2
  251. package/docs/en-GB/intlayer_with_vite+svelte.md +2 -2
  252. package/docs/en-GB/intlayer_with_vite+vanilla.md +2 -2
  253. package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
  254. package/docs/es/intlayer_CMS.md +1 -1
  255. package/docs/es/intlayer_with_adonisjs.md +1 -1
  256. package/docs/es/intlayer_with_analog.md +1 -1
  257. package/docs/es/intlayer_with_angular.md +1 -1
  258. package/docs/es/intlayer_with_create_react_app.md +1 -1
  259. package/docs/es/intlayer_with_express.md +1 -1
  260. package/docs/es/intlayer_with_fastify.md +1 -1
  261. package/docs/es/intlayer_with_hono.md +1 -1
  262. package/docs/es/intlayer_with_lynx+react.md +1 -1
  263. package/docs/es/intlayer_with_nestjs.md +1 -1
  264. package/docs/es/intlayer_with_next-i18next.md +1 -1
  265. package/docs/es/intlayer_with_next-intl.md +1 -1
  266. package/docs/es/intlayer_with_nextjs_14.md +1 -1
  267. package/docs/es/intlayer_with_nextjs_15.md +1 -1
  268. package/docs/es/intlayer_with_nextjs_16.md +2 -2
  269. package/docs/es/intlayer_with_nextjs_compiler.md +2 -2
  270. package/docs/es/intlayer_with_nextjs_no_locale_path.md +1 -1
  271. package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
  272. package/docs/es/intlayer_with_nuxt.md +1 -1
  273. package/docs/es/intlayer_with_react_native+expo.md +1 -1
  274. package/docs/es/intlayer_with_react_router_v7.md +4 -6
  275. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +4 -6
  276. package/docs/es/intlayer_with_svelte_kit.md +5 -5
  277. package/docs/es/intlayer_with_tanstack+solid.md +970 -0
  278. package/docs/es/intlayer_with_tanstack.md +98 -30
  279. package/docs/es/intlayer_with_vite+lit.md +1 -2
  280. package/docs/es/intlayer_with_vite+preact.md +2 -2
  281. package/docs/es/intlayer_with_vite+react.md +2 -2
  282. package/docs/es/intlayer_with_vite+react_compiler.md +1 -1
  283. package/docs/es/intlayer_with_vite+solid.md +2 -3
  284. package/docs/es/intlayer_with_vite+svelte.md +3 -3
  285. package/docs/es/intlayer_with_vite+vanilla.md +2 -2
  286. package/docs/es/intlayer_with_vite+vue.md +2 -2
  287. package/docs/es/packages/next-intlayer/index.md +1 -1
  288. package/docs/es/packages/react-intlayer/index.md +1 -1
  289. package/docs/fr/intlayer_CMS.md +1 -1
  290. package/docs/fr/intlayer_with_adonisjs.md +1 -1
  291. package/docs/fr/intlayer_with_analog.md +1 -1
  292. package/docs/fr/intlayer_with_angular.md +1 -1
  293. package/docs/fr/intlayer_with_create_react_app.md +1 -1
  294. package/docs/fr/intlayer_with_express.md +1 -1
  295. package/docs/fr/intlayer_with_fastify.md +1 -1
  296. package/docs/fr/intlayer_with_hono.md +1 -1
  297. package/docs/fr/intlayer_with_lynx+react.md +1 -1
  298. package/docs/fr/intlayer_with_nestjs.md +1 -1
  299. package/docs/fr/intlayer_with_next-i18next.md +1 -1
  300. package/docs/fr/intlayer_with_next-intl.md +1 -1
  301. package/docs/fr/intlayer_with_nextjs_14.md +1 -1
  302. package/docs/fr/intlayer_with_nextjs_15.md +1 -1
  303. package/docs/fr/intlayer_with_nextjs_16.md +2 -2
  304. package/docs/fr/intlayer_with_nextjs_compiler.md +2 -2
  305. package/docs/fr/intlayer_with_nextjs_no_locale_path.md +1 -1
  306. package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
  307. package/docs/fr/intlayer_with_nuxt.md +1 -1
  308. package/docs/fr/intlayer_with_react_router_v7.md +4 -6
  309. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +4 -6
  310. package/docs/fr/intlayer_with_svelte_kit.md +6 -6
  311. package/docs/fr/intlayer_with_tanstack+solid.md +970 -0
  312. package/docs/fr/intlayer_with_tanstack.md +98 -30
  313. package/docs/fr/intlayer_with_vite+lit.md +1 -2
  314. package/docs/fr/intlayer_with_vite+preact.md +2 -2
  315. package/docs/fr/intlayer_with_vite+react.md +2 -2
  316. package/docs/fr/intlayer_with_vite+react_compiler.md +1 -1
  317. package/docs/fr/intlayer_with_vite+solid.md +2 -3
  318. package/docs/fr/intlayer_with_vite+svelte.md +3 -3
  319. package/docs/fr/intlayer_with_vite+vanilla.md +2 -2
  320. package/docs/fr/intlayer_with_vite+vue.md +2 -2
  321. package/docs/fr/packages/react-intlayer/index.md +1 -1
  322. package/docs/hi/intlayer_CMS.md +1 -1
  323. package/docs/hi/intlayer_with_adonisjs.md +1 -1
  324. package/docs/hi/intlayer_with_analog.md +1 -1
  325. package/docs/hi/intlayer_with_angular.md +1 -1
  326. package/docs/hi/intlayer_with_create_react_app.md +1 -1
  327. package/docs/hi/intlayer_with_express.md +1 -1
  328. package/docs/hi/intlayer_with_fastify.md +1 -1
  329. package/docs/hi/intlayer_with_hono.md +1 -1
  330. package/docs/hi/intlayer_with_lynx+react.md +1 -1
  331. package/docs/hi/intlayer_with_nestjs.md +1 -1
  332. package/docs/hi/intlayer_with_next-i18next.md +1 -1
  333. package/docs/hi/intlayer_with_next-intl.md +1 -1
  334. package/docs/hi/intlayer_with_nextjs_14.md +1 -1
  335. package/docs/hi/intlayer_with_nextjs_15.md +1 -1
  336. package/docs/hi/intlayer_with_nextjs_16.md +2 -2
  337. package/docs/hi/intlayer_with_nextjs_compiler.md +2 -2
  338. package/docs/hi/intlayer_with_nextjs_no_locale_path.md +1 -1
  339. package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
  340. package/docs/hi/intlayer_with_nuxt.md +1 -1
  341. package/docs/hi/intlayer_with_react_router_v7.md +4 -6
  342. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +4 -6
  343. package/docs/hi/intlayer_with_svelte_kit.md +5 -5
  344. package/docs/hi/intlayer_with_tanstack+solid.md +894 -0
  345. package/docs/hi/intlayer_with_tanstack.md +2 -10
  346. package/docs/hi/intlayer_with_vite+lit.md +1 -2
  347. package/docs/hi/intlayer_with_vite+preact.md +2 -2
  348. package/docs/hi/intlayer_with_vite+react.md +2 -2
  349. package/docs/hi/intlayer_with_vite+react_compiler.md +1 -1
  350. package/docs/hi/intlayer_with_vite+solid.md +2 -3
  351. package/docs/hi/intlayer_with_vite+svelte.md +3 -3
  352. package/docs/hi/intlayer_with_vite+vanilla.md +2 -2
  353. package/docs/hi/intlayer_with_vite+vue.md +2 -2
  354. package/docs/hi/packages/intlayer/index.md +1 -1
  355. package/docs/id/intlayer_CMS.md +1 -1
  356. package/docs/id/intlayer_with_adonisjs.md +1 -1
  357. package/docs/id/intlayer_with_analog.md +1 -1
  358. package/docs/id/intlayer_with_angular.md +1 -1
  359. package/docs/id/intlayer_with_create_react_app.md +1 -1
  360. package/docs/id/intlayer_with_express.md +1 -1
  361. package/docs/id/intlayer_with_fastify.md +1 -1
  362. package/docs/id/intlayer_with_hono.md +1 -1
  363. package/docs/id/intlayer_with_lynx+react.md +1 -1
  364. package/docs/id/intlayer_with_nestjs.md +1 -1
  365. package/docs/id/intlayer_with_next-i18next.md +1 -1
  366. package/docs/id/intlayer_with_next-intl.md +1 -1
  367. package/docs/id/intlayer_with_nextjs_14.md +1 -1
  368. package/docs/id/intlayer_with_nextjs_15.md +1 -1
  369. package/docs/id/intlayer_with_nextjs_16.md +2 -2
  370. package/docs/id/intlayer_with_nextjs_compiler.md +2 -2
  371. package/docs/id/intlayer_with_nextjs_no_locale_path.md +1 -1
  372. package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
  373. package/docs/id/intlayer_with_nuxt.md +1 -1
  374. package/docs/id/intlayer_with_react_native+expo.md +1 -1
  375. package/docs/id/intlayer_with_react_router_v7.md +4 -6
  376. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +4 -6
  377. package/docs/id/intlayer_with_svelte_kit.md +5 -5
  378. package/docs/id/intlayer_with_tanstack+solid.md +894 -0
  379. package/docs/id/intlayer_with_tanstack.md +2 -10
  380. package/docs/id/intlayer_with_vite+lit.md +1 -2
  381. package/docs/id/intlayer_with_vite+preact.md +2 -2
  382. package/docs/id/intlayer_with_vite+react.md +2 -2
  383. package/docs/id/intlayer_with_vite+react_compiler.md +1 -1
  384. package/docs/id/intlayer_with_vite+solid.md +2 -3
  385. package/docs/id/intlayer_with_vite+svelte.md +3 -3
  386. package/docs/id/intlayer_with_vite+vanilla.md +2 -2
  387. package/docs/id/intlayer_with_vite+vue.md +2 -2
  388. package/docs/it/intlayer_CMS.md +1 -1
  389. package/docs/it/intlayer_with_adonisjs.md +1 -1
  390. package/docs/it/intlayer_with_analog.md +1 -1
  391. package/docs/it/intlayer_with_angular.md +1 -1
  392. package/docs/it/intlayer_with_create_react_app.md +1 -1
  393. package/docs/it/intlayer_with_express.md +1 -1
  394. package/docs/it/intlayer_with_fastify.md +1 -1
  395. package/docs/it/intlayer_with_hono.md +1 -1
  396. package/docs/it/intlayer_with_lynx+react.md +1 -1
  397. package/docs/it/intlayer_with_nestjs.md +1 -1
  398. package/docs/it/intlayer_with_next-i18next.md +1 -1
  399. package/docs/it/intlayer_with_next-intl.md +1 -1
  400. package/docs/it/intlayer_with_nextjs_14.md +1 -1
  401. package/docs/it/intlayer_with_nextjs_15.md +1 -1
  402. package/docs/it/intlayer_with_nextjs_16.md +2 -2
  403. package/docs/it/intlayer_with_nextjs_compiler.md +2 -2
  404. package/docs/it/intlayer_with_nextjs_no_locale_path.md +1 -1
  405. package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
  406. package/docs/it/intlayer_with_nuxt.md +1 -1
  407. package/docs/it/intlayer_with_react_native+expo.md +1 -1
  408. package/docs/it/intlayer_with_react_router_v7.md +4 -6
  409. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +4 -6
  410. package/docs/it/intlayer_with_svelte_kit.md +6 -6
  411. package/docs/it/intlayer_with_tanstack+solid.md +970 -0
  412. package/docs/it/intlayer_with_tanstack.md +98 -32
  413. package/docs/it/intlayer_with_vite+lit.md +1 -2
  414. package/docs/it/intlayer_with_vite+preact.md +2 -2
  415. package/docs/it/intlayer_with_vite+react.md +2 -2
  416. package/docs/it/intlayer_with_vite+react_compiler.md +1 -1
  417. package/docs/it/intlayer_with_vite+solid.md +2 -3
  418. package/docs/it/intlayer_with_vite+svelte.md +3 -3
  419. package/docs/it/intlayer_with_vite+vanilla.md +2 -2
  420. package/docs/it/intlayer_with_vite+vue.md +2 -2
  421. package/docs/ja/intlayer_CMS.md +1 -1
  422. package/docs/ja/intlayer_with_adonisjs.md +1 -1
  423. package/docs/ja/intlayer_with_analog.md +1 -1
  424. package/docs/ja/intlayer_with_angular.md +1 -1
  425. package/docs/ja/intlayer_with_create_react_app.md +1 -1
  426. package/docs/ja/intlayer_with_express.md +1 -1
  427. package/docs/ja/intlayer_with_fastify.md +1 -1
  428. package/docs/ja/intlayer_with_hono.md +1 -1
  429. package/docs/ja/intlayer_with_lynx+react.md +1 -1
  430. package/docs/ja/intlayer_with_nestjs.md +1 -1
  431. package/docs/ja/intlayer_with_next-i18next.md +1 -1
  432. package/docs/ja/intlayer_with_next-intl.md +1 -1
  433. package/docs/ja/intlayer_with_nextjs_14.md +1 -1
  434. package/docs/ja/intlayer_with_nextjs_15.md +1 -1
  435. package/docs/ja/intlayer_with_nextjs_16.md +2 -2
  436. package/docs/ja/intlayer_with_nextjs_compiler.md +2 -2
  437. package/docs/ja/intlayer_with_nextjs_no_locale_path.md +1 -1
  438. package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
  439. package/docs/ja/intlayer_with_nuxt.md +1 -1
  440. package/docs/ja/intlayer_with_react_router_v7.md +2 -3
  441. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +4 -6
  442. package/docs/ja/intlayer_with_svelte_kit.md +1 -1
  443. package/docs/ja/intlayer_with_tanstack+solid.md +972 -0
  444. package/docs/ja/intlayer_with_tanstack.md +780 -94
  445. package/docs/ja/intlayer_with_vite+lit.md +1 -2
  446. package/docs/ja/intlayer_with_vite+preact.md +1 -1
  447. package/docs/ja/intlayer_with_vite+react.md +1 -1
  448. package/docs/ja/intlayer_with_vite+react_compiler.md +1 -1
  449. package/docs/ja/intlayer_with_vite+solid.md +2 -3
  450. package/docs/ja/intlayer_with_vite+svelte.md +3 -3
  451. package/docs/ja/intlayer_with_vite+vanilla.md +2 -2
  452. package/docs/ja/intlayer_with_vite+vue.md +2 -2
  453. package/docs/ko/intlayer_CMS.md +1 -1
  454. package/docs/ko/intlayer_with_adonisjs.md +1 -1
  455. package/docs/ko/intlayer_with_analog.md +1 -1
  456. package/docs/ko/intlayer_with_angular.md +1 -1
  457. package/docs/ko/intlayer_with_create_react_app.md +1 -1
  458. package/docs/ko/intlayer_with_express.md +1 -1
  459. package/docs/ko/intlayer_with_fastify.md +1 -1
  460. package/docs/ko/intlayer_with_hono.md +1 -1
  461. package/docs/ko/intlayer_with_lynx+react.md +1 -1
  462. package/docs/ko/intlayer_with_nestjs.md +1 -1
  463. package/docs/ko/intlayer_with_next-i18next.md +1 -1
  464. package/docs/ko/intlayer_with_next-intl.md +1 -1
  465. package/docs/ko/intlayer_with_nextjs_14.md +1 -1
  466. package/docs/ko/intlayer_with_nextjs_15.md +1 -1
  467. package/docs/ko/intlayer_with_nextjs_16.md +2 -2
  468. package/docs/ko/intlayer_with_nextjs_compiler.md +2 -2
  469. package/docs/ko/intlayer_with_nextjs_no_locale_path.md +1 -1
  470. package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
  471. package/docs/ko/intlayer_with_nuxt.md +1 -1
  472. package/docs/ko/intlayer_with_react_native+expo.md +1 -1
  473. package/docs/ko/intlayer_with_react_router_v7.md +4 -6
  474. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +4 -6
  475. package/docs/ko/intlayer_with_svelte_kit.md +5 -5
  476. package/docs/ko/intlayer_with_tanstack+solid.md +970 -0
  477. package/docs/ko/intlayer_with_tanstack.md +97 -103
  478. package/docs/ko/intlayer_with_vite+lit.md +1 -2
  479. package/docs/ko/intlayer_with_vite+preact.md +2 -2
  480. package/docs/ko/intlayer_with_vite+react.md +2 -2
  481. package/docs/ko/intlayer_with_vite+react_compiler.md +1 -1
  482. package/docs/ko/intlayer_with_vite+solid.md +2 -3
  483. package/docs/ko/intlayer_with_vite+svelte.md +3 -3
  484. package/docs/ko/intlayer_with_vite+vanilla.md +2 -2
  485. package/docs/ko/intlayer_with_vite+vue.md +2 -2
  486. package/docs/nl/intlayer_with_fastify.md +1 -1
  487. package/docs/nl/intlayer_with_hono.md +1 -1
  488. package/docs/nl/intlayer_with_vite+lit.md +1 -2
  489. package/docs/nl/intlayer_with_vite+vanilla.md +2 -2
  490. package/docs/pl/intlayer_CMS.md +1 -1
  491. package/docs/pl/intlayer_with_adonisjs.md +1 -1
  492. package/docs/pl/intlayer_with_analog.md +1 -1
  493. package/docs/pl/intlayer_with_angular.md +1 -1
  494. package/docs/pl/intlayer_with_create_react_app.md +1 -1
  495. package/docs/pl/intlayer_with_express.md +1 -1
  496. package/docs/pl/intlayer_with_fastify.md +1 -1
  497. package/docs/pl/intlayer_with_hono.md +1 -1
  498. package/docs/pl/intlayer_with_lynx+react.md +1 -1
  499. package/docs/pl/intlayer_with_nestjs.md +1 -1
  500. package/docs/pl/intlayer_with_next-i18next.md +1 -1
  501. package/docs/pl/intlayer_with_next-intl.md +1 -1
  502. package/docs/pl/intlayer_with_nextjs_14.md +1 -1
  503. package/docs/pl/intlayer_with_nextjs_15.md +1 -1
  504. package/docs/pl/intlayer_with_nextjs_16.md +2 -2
  505. package/docs/pl/intlayer_with_nextjs_compiler.md +2 -2
  506. package/docs/pl/intlayer_with_nextjs_no_locale_path.md +1 -1
  507. package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
  508. package/docs/pl/intlayer_with_nuxt.md +1 -1
  509. package/docs/pl/intlayer_with_react_native+expo.md +1 -1
  510. package/docs/pl/intlayer_with_react_router_v7.md +4 -6
  511. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +4 -6
  512. package/docs/pl/intlayer_with_svelte_kit.md +5 -5
  513. package/docs/pl/intlayer_with_tanstack+solid.md +894 -0
  514. package/docs/pl/intlayer_with_tanstack.md +2 -10
  515. package/docs/pl/intlayer_with_vite+lit.md +1 -2
  516. package/docs/pl/intlayer_with_vite+preact.md +2 -2
  517. package/docs/pl/intlayer_with_vite+react.md +2 -2
  518. package/docs/pl/intlayer_with_vite+react_compiler.md +1 -1
  519. package/docs/pl/intlayer_with_vite+solid.md +2 -3
  520. package/docs/pl/intlayer_with_vite+svelte.md +3 -3
  521. package/docs/pl/intlayer_with_vite+vanilla.md +2 -2
  522. package/docs/pl/intlayer_with_vite+vue.md +2 -2
  523. package/docs/pt/intlayer_CMS.md +1 -1
  524. package/docs/pt/intlayer_with_adonisjs.md +1 -1
  525. package/docs/pt/intlayer_with_analog.md +1 -1
  526. package/docs/pt/intlayer_with_angular.md +1 -1
  527. package/docs/pt/intlayer_with_create_react_app.md +1 -1
  528. package/docs/pt/intlayer_with_express.md +1 -1
  529. package/docs/pt/intlayer_with_fastify.md +1 -1
  530. package/docs/pt/intlayer_with_hono.md +1 -1
  531. package/docs/pt/intlayer_with_lynx+react.md +1 -1
  532. package/docs/pt/intlayer_with_nestjs.md +1 -1
  533. package/docs/pt/intlayer_with_next-i18next.md +1 -1
  534. package/docs/pt/intlayer_with_next-intl.md +1 -1
  535. package/docs/pt/intlayer_with_nextjs_14.md +1 -1
  536. package/docs/pt/intlayer_with_nextjs_15.md +1 -1
  537. package/docs/pt/intlayer_with_nextjs_16.md +2 -2
  538. package/docs/pt/intlayer_with_nextjs_compiler.md +2 -2
  539. package/docs/pt/intlayer_with_nextjs_no_locale_path.md +1 -1
  540. package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
  541. package/docs/pt/intlayer_with_nuxt.md +1 -1
  542. package/docs/pt/intlayer_with_react_native+expo.md +1 -1
  543. package/docs/pt/intlayer_with_react_router_v7.md +3 -4
  544. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +4 -6
  545. package/docs/pt/intlayer_with_svelte_kit.md +6 -6
  546. package/docs/pt/intlayer_with_tanstack+solid.md +970 -0
  547. package/docs/pt/intlayer_with_tanstack.md +98 -32
  548. package/docs/pt/intlayer_with_vite+lit.md +1 -2
  549. package/docs/pt/intlayer_with_vite+preact.md +2 -2
  550. package/docs/pt/intlayer_with_vite+react.md +2 -2
  551. package/docs/pt/intlayer_with_vite+react_compiler.md +1 -1
  552. package/docs/pt/intlayer_with_vite+solid.md +2 -3
  553. package/docs/pt/intlayer_with_vite+svelte.md +3 -3
  554. package/docs/pt/intlayer_with_vite+vanilla.md +2 -2
  555. package/docs/pt/intlayer_with_vite+vue.md +2 -2
  556. package/docs/ru/intlayer_CMS.md +1 -1
  557. package/docs/ru/intlayer_with_adonisjs.md +1 -1
  558. package/docs/ru/intlayer_with_analog.md +1 -1
  559. package/docs/ru/intlayer_with_angular.md +1 -1
  560. package/docs/ru/intlayer_with_create_react_app.md +1 -1
  561. package/docs/ru/intlayer_with_express.md +1 -1
  562. package/docs/ru/intlayer_with_fastify.md +1 -1
  563. package/docs/ru/intlayer_with_hono.md +1 -1
  564. package/docs/ru/intlayer_with_lynx+react.md +1 -1
  565. package/docs/ru/intlayer_with_nestjs.md +1 -1
  566. package/docs/ru/intlayer_with_next-i18next.md +1 -1
  567. package/docs/ru/intlayer_with_next-intl.md +1 -1
  568. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  569. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  570. package/docs/ru/intlayer_with_nextjs_16.md +2 -2
  571. package/docs/ru/intlayer_with_nextjs_compiler.md +2 -2
  572. package/docs/ru/intlayer_with_nextjs_no_locale_path.md +1 -1
  573. package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
  574. package/docs/ru/intlayer_with_nuxt.md +1 -1
  575. package/docs/ru/intlayer_with_react_native+expo.md +1 -1
  576. package/docs/ru/intlayer_with_react_router_v7.md +4 -6
  577. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +4 -6
  578. package/docs/ru/intlayer_with_svelte_kit.md +5 -5
  579. package/docs/ru/intlayer_with_tanstack+solid.md +970 -0
  580. package/docs/ru/intlayer_with_tanstack.md +101 -35
  581. package/docs/ru/intlayer_with_vite+lit.md +1 -2
  582. package/docs/ru/intlayer_with_vite+preact.md +2 -2
  583. package/docs/ru/intlayer_with_vite+react.md +2 -2
  584. package/docs/ru/intlayer_with_vite+react_compiler.md +1 -1
  585. package/docs/ru/intlayer_with_vite+solid.md +2 -3
  586. package/docs/ru/intlayer_with_vite+svelte.md +3 -3
  587. package/docs/ru/intlayer_with_vite+vanilla.md +2 -2
  588. package/docs/ru/intlayer_with_vite+vue.md +2 -2
  589. package/docs/tr/intlayer_CMS.md +1 -1
  590. package/docs/tr/intlayer_with_adonisjs.md +1 -1
  591. package/docs/tr/intlayer_with_analog.md +1 -1
  592. package/docs/tr/intlayer_with_angular.md +1 -1
  593. package/docs/tr/intlayer_with_create_react_app.md +1 -1
  594. package/docs/tr/intlayer_with_express.md +1 -1
  595. package/docs/tr/intlayer_with_fastify.md +1 -1
  596. package/docs/tr/intlayer_with_hono.md +1 -1
  597. package/docs/tr/intlayer_with_lynx+react.md +1 -1
  598. package/docs/tr/intlayer_with_nestjs.md +1 -1
  599. package/docs/tr/intlayer_with_next-i18next.md +1 -1
  600. package/docs/tr/intlayer_with_next-intl.md +1 -1
  601. package/docs/tr/intlayer_with_nextjs_14.md +1 -1
  602. package/docs/tr/intlayer_with_nextjs_15.md +1 -1
  603. package/docs/tr/intlayer_with_nextjs_16.md +2 -2
  604. package/docs/tr/intlayer_with_nextjs_compiler.md +2 -2
  605. package/docs/tr/intlayer_with_nextjs_no_locale_path.md +1 -1
  606. package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
  607. package/docs/tr/intlayer_with_nuxt.md +1 -1
  608. package/docs/tr/intlayer_with_react_native+expo.md +1 -1
  609. package/docs/tr/intlayer_with_react_router_v7.md +4 -6
  610. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +4 -6
  611. package/docs/tr/intlayer_with_svelte_kit.md +5 -5
  612. package/docs/tr/intlayer_with_tanstack+solid.md +895 -0
  613. package/docs/tr/intlayer_with_tanstack.md +2 -10
  614. package/docs/tr/intlayer_with_vite+lit.md +1 -2
  615. package/docs/tr/intlayer_with_vite+preact.md +2 -2
  616. package/docs/tr/intlayer_with_vite+react.md +2 -2
  617. package/docs/tr/intlayer_with_vite+react_compiler.md +1 -1
  618. package/docs/tr/intlayer_with_vite+solid.md +2 -3
  619. package/docs/tr/intlayer_with_vite+svelte.md +3 -3
  620. package/docs/tr/intlayer_with_vite+vanilla.md +2 -2
  621. package/docs/tr/intlayer_with_vite+vue.md +2 -2
  622. package/docs/uk/intlayer_CMS.md +1 -1
  623. package/docs/uk/intlayer_with_adonisjs.md +1 -1
  624. package/docs/uk/intlayer_with_analog.md +1 -1
  625. package/docs/uk/intlayer_with_angular.md +1 -1
  626. package/docs/uk/intlayer_with_create_react_app.md +1 -1
  627. package/docs/uk/intlayer_with_express.md +1 -1
  628. package/docs/uk/intlayer_with_fastify.md +1 -1
  629. package/docs/uk/intlayer_with_hono.md +1 -1
  630. package/docs/uk/intlayer_with_lynx+react.md +1 -1
  631. package/docs/uk/intlayer_with_nestjs.md +1 -1
  632. package/docs/uk/intlayer_with_next-i18next.md +1 -1
  633. package/docs/uk/intlayer_with_next-intl.md +1 -1
  634. package/docs/uk/intlayer_with_nextjs_14.md +1 -1
  635. package/docs/uk/intlayer_with_nextjs_15.md +1 -1
  636. package/docs/uk/intlayer_with_nextjs_16.md +2 -2
  637. package/docs/uk/intlayer_with_nextjs_compiler.md +2 -2
  638. package/docs/uk/intlayer_with_nextjs_no_locale_path.md +1 -1
  639. package/docs/uk/intlayer_with_nextjs_page_router.md +1 -1
  640. package/docs/uk/intlayer_with_nuxt.md +1 -1
  641. package/docs/uk/intlayer_with_react_native+expo.md +1 -1
  642. package/docs/uk/intlayer_with_react_router_v7.md +3 -4
  643. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +4 -6
  644. package/docs/uk/intlayer_with_svelte_kit.md +4 -4
  645. package/docs/uk/intlayer_with_tanstack+solid.md +894 -0
  646. package/docs/uk/intlayer_with_tanstack.md +2 -10
  647. package/docs/uk/intlayer_with_vite+lit.md +1 -2
  648. package/docs/uk/intlayer_with_vite+preact.md +2 -2
  649. package/docs/uk/intlayer_with_vite+react.md +2 -2
  650. package/docs/uk/intlayer_with_vite+react_compiler.md +1 -1
  651. package/docs/uk/intlayer_with_vite+solid.md +2 -3
  652. package/docs/uk/intlayer_with_vite+svelte.md +3 -3
  653. package/docs/uk/intlayer_with_vite+vanilla.md +2 -2
  654. package/docs/uk/intlayer_with_vite+vue.md +2 -2
  655. package/docs/ur/intlayer_with_fastify.md +1 -1
  656. package/docs/ur/intlayer_with_hono.md +1 -1
  657. package/docs/ur/intlayer_with_vite+lit.md +1 -2
  658. package/docs/ur/intlayer_with_vite+vanilla.md +1 -1
  659. package/docs/vi/cli/index.md +1 -1
  660. package/docs/vi/intlayer_CMS.md +1 -1
  661. package/docs/vi/intlayer_with_adonisjs.md +1 -1
  662. package/docs/vi/intlayer_with_analog.md +1 -1
  663. package/docs/vi/intlayer_with_angular.md +1 -1
  664. package/docs/vi/intlayer_with_create_react_app.md +1 -1
  665. package/docs/vi/intlayer_with_express.md +1 -1
  666. package/docs/vi/intlayer_with_fastify.md +1 -1
  667. package/docs/vi/intlayer_with_hono.md +1 -1
  668. package/docs/vi/intlayer_with_lynx+react.md +1 -1
  669. package/docs/vi/intlayer_with_nestjs.md +1 -1
  670. package/docs/vi/intlayer_with_next-i18next.md +1 -1
  671. package/docs/vi/intlayer_with_next-intl.md +1 -1
  672. package/docs/vi/intlayer_with_nextjs_14.md +1 -1
  673. package/docs/vi/intlayer_with_nextjs_15.md +1 -1
  674. package/docs/vi/intlayer_with_nextjs_16.md +2 -2
  675. package/docs/vi/intlayer_with_nextjs_compiler.md +2 -2
  676. package/docs/vi/intlayer_with_nextjs_no_locale_path.md +1 -1
  677. package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
  678. package/docs/vi/intlayer_with_nuxt.md +1 -1
  679. package/docs/vi/intlayer_with_react_native+expo.md +1 -1
  680. package/docs/vi/intlayer_with_react_router_v7.md +4 -6
  681. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +4 -6
  682. package/docs/vi/intlayer_with_svelte_kit.md +5 -5
  683. package/docs/vi/intlayer_with_tanstack+solid.md +894 -0
  684. package/docs/vi/intlayer_with_tanstack.md +2 -10
  685. package/docs/vi/intlayer_with_vite+lit.md +1 -2
  686. package/docs/vi/intlayer_with_vite+preact.md +2 -2
  687. package/docs/vi/intlayer_with_vite+react.md +2 -2
  688. package/docs/vi/intlayer_with_vite+react_compiler.md +1 -1
  689. package/docs/vi/intlayer_with_vite+solid.md +2 -3
  690. package/docs/vi/intlayer_with_vite+svelte.md +3 -3
  691. package/docs/vi/intlayer_with_vite+vanilla.md +2 -2
  692. package/docs/vi/intlayer_with_vite+vue.md +2 -2
  693. package/docs/zh/intlayer_CMS.md +1 -1
  694. package/docs/zh/intlayer_with_adonisjs.md +1 -1
  695. package/docs/zh/intlayer_with_analog.md +1 -1
  696. package/docs/zh/intlayer_with_angular.md +1 -1
  697. package/docs/zh/intlayer_with_create_react_app.md +1 -1
  698. package/docs/zh/intlayer_with_express.md +1 -1
  699. package/docs/zh/intlayer_with_fastify.md +1 -1
  700. package/docs/zh/intlayer_with_hono.md +1 -1
  701. package/docs/zh/intlayer_with_lynx+react.md +1 -1
  702. package/docs/zh/intlayer_with_nestjs.md +1 -1
  703. package/docs/zh/intlayer_with_next-i18next.md +1 -1
  704. package/docs/zh/intlayer_with_next-intl.md +1 -1
  705. package/docs/zh/intlayer_with_nextjs_14.md +1 -1
  706. package/docs/zh/intlayer_with_nextjs_15.md +1 -1
  707. package/docs/zh/intlayer_with_nextjs_16.md +2 -2
  708. package/docs/zh/intlayer_with_nextjs_compiler.md +2 -2
  709. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +1 -1
  710. package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
  711. package/docs/zh/intlayer_with_nuxt.md +1 -1
  712. package/docs/zh/intlayer_with_react_native+expo.md +1 -1
  713. package/docs/zh/intlayer_with_react_router_v7.md +4 -6
  714. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +4 -6
  715. package/docs/zh/intlayer_with_svelte_kit.md +5 -5
  716. package/docs/zh/intlayer_with_tanstack+solid.md +970 -0
  717. package/docs/zh/intlayer_with_tanstack.md +98 -106
  718. package/docs/zh/intlayer_with_vite+lit.md +1 -2
  719. package/docs/zh/intlayer_with_vite+preact.md +2 -2
  720. package/docs/zh/intlayer_with_vite+react.md +2 -2
  721. package/docs/zh/intlayer_with_vite+react_compiler.md +1 -1
  722. package/docs/zh/intlayer_with_vite+solid.md +2 -3
  723. package/docs/zh/intlayer_with_vite+svelte.md +3 -3
  724. package/docs/zh/intlayer_with_vite+vanilla.md +2 -2
  725. package/docs/zh/intlayer_with_vite+vue.md +2 -2
  726. package/package.json +8 -8
  727. package/src/generated/docs.entry.ts +20 -0
@@ -0,0 +1,894 @@
1
+ ---
2
+ createdAt: 2025-03-25
3
+ updatedAt: 2026-03-25
4
+ title: i18n Tanstack Start - Як перекласти додаток Tanstack Start за допомогою Solid.js у 2026 році
5
+ description: Дізнайтеся, як додати інтернаціоналізацію (i18n) до вашого додатка Tanstack Start за допомогою Intlayer та Solid.js. Дотримуйтесь цього вичерпного посібника, щоб зробити свій додаток багатомовним із маршрутизацією, що враховує локаль.
6
+ keywords:
7
+ - Інтернаціоналізація
8
+ - Документація
9
+ - Intlayer
10
+ - Tanstack Start
11
+ - Solid
12
+ - i18n
13
+ - TypeScript
14
+ - Маршрутизація мов
15
+ slugs:
16
+ - doc
17
+ - environment
18
+ - tanstack-start
19
+ applicationTemplate: https://github.com/aymericzip/intlayer-tanstack-start-solid-template
20
+ youtubeVideo: https://www.youtube.com/watch?v=_XTdKVWaeqg
21
+ history:
22
+ - version: 8.5.1
23
+ date: 2026-03-25
24
+ changes: "Додано для Tanstack Start Solid.js"
25
+ ---
26
+
27
+ # Перекладіть свій вебсайт Tanstack Start + Solid.js за допомогою Intlayer | Інтернаціоналізація (i18n)
28
+
29
+ ## Зміст
30
+
31
+ <TOC/>
32
+
33
+ Цей посібник демонструє, як інтегрувати **Intlayer** для безперешкодної інтернаціоналізації в проектах Tanstack Start із Solid.js, маршрутизацією з урахуванням локалі, підтримкою TypeScript та сучасними практиками розробки.
34
+
35
+ ## Що таке Intlayer?
36
+
37
+ **Intlayer** — це інноваційна бібліотека інтернаціоналізації (i18n) з відкритим кодом, розроблена для спрощення підтримки багатьох мов у сучасних веб-додатках.
38
+
39
+ З Intlayer ви можете:
40
+
41
+ - **Легко керувати перекладами** за допомогою декларативних словників на рівні компонентів.
42
+ - **Динамічно локалізувати метадані, маршрути та вміст**.
43
+ - **Забезпечити підтримку TypeScript** за допомогою автоматично згенерованих типів, покращуючи автодоповнення та виявлення помилок.
44
+ - **Користуватися розширеними функціями**, такими як динамічне визначення та перемикання локалі.
45
+ - **Увімкнути маршрутизацію з урахуванням локалі** за допомогою файлової системи маршрутизації Tanstack Start.
46
+
47
+ ---
48
+
49
+ ## Покроковий посібник із налаштування Intlayer у додатку Tanstack Start
50
+
51
+ <Tabs defaultTab="video">
52
+ <Tab label="Відео" value="video">
53
+
54
+ <iframe title="Найкраще рішення i18n для Tanstack Start? Відкрийте для себе Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
55
+
56
+ </Tab>
57
+ <Tab label="Код" value="code">
58
+
59
+ <iframe
60
+ src="https://stackblitz.com/github/aymericzip/intlayer-tanstack-start-solid-template?embed=1&ctl=1&file=intlayer.config.ts"
61
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
62
+ title="Демо CodeSandbox - Як інтернаціоналізувати свій додаток за допомогою Intlayer"
63
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
64
+ loading="lazy"
65
+ />
66
+
67
+ </Tab>
68
+ </Tabs>
69
+
70
+ Перегляньте [Шаблон додатка](https://github.com/aymericzip/intlayer-tanstack-start-solid-template) на GitHub.
71
+
72
+ ### Крок 1: Створення проекту
73
+
74
+ Спочатку створіть новий проект TanStack Start, дотримуючись посібника [Початок нового проекту](https://tanstack.com/start/latest/docs/framework/solid/quick-start) на вебсайті TanStack Start.
75
+
76
+ ### Крок 2: Встановлення пакетів Intlayer
77
+
78
+ Встановіть необхідні пакети за допомогою бажаного менеджера пакетів:
79
+
80
+ ```bash packageManager="npm"
81
+ npm install intlayer solid-intlayer
82
+ npm install vite-intlayer --save-dev
83
+ npx intlayer init
84
+ ```
85
+
86
+ ```bash packageManager="pnpm"
87
+ pnpm add intlayer solid-intlayer
88
+ pnpm add vite-intlayer --save-dev
89
+ pnpm intlayer init
90
+ ```
91
+
92
+ ```bash packageManager="yarn"
93
+ yarn add intlayer solid-intlayer
94
+ yarn add vite-intlayer --save-dev
95
+ yarn intlayer init
96
+ ```
97
+
98
+ ```bash packageManager="bun"
99
+ bun add intlayer solid-intlayer
100
+ bun add vite-intlayer --dev
101
+ bun x intlayer init
102
+ ```
103
+
104
+ - **intlayer**
105
+
106
+ Основний пакет, який надає інструменти інтернаціоналізації для керування конфігурацією, перекладу, [декларування вмісту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md), транспіляції та [команд CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md).
107
+
108
+ - **solid-intlayer**
109
+ Пакет, що інтегрує Intlayer у додаток Solid. Він надає контекстні провайдери та хуки для інтернаціоналізації Solid.
110
+
111
+ - **vite-intlayer**
112
+ Включає плагін Vite для інтеграції Intlayer з [бандлером Vite](https://vite.dev/guide/why.html#why-bundle-for-production), а також проміжне програмне забезпечення (middleware) для визначення бажаної локалі користувача, керування файлами cookie та обробки перенаправлення URL-адрес.
113
+
114
+ ### Крок 3: Конфігурація вашого проекту
115
+
116
+ Створіть файл конфігурації, щоб налаштувати мови вашого додатка:
117
+
118
+ ```typescript fileName="intlayer.config.ts"
119
+ import type { IntlayerConfig } from "intlayer";
120
+
121
+ import { Locales } from "intlayer";
122
+
123
+ const config: IntlayerConfig = {
124
+ internationalization: {
125
+ defaultLocale: Locales.ENGLISH,
126
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
127
+ },
128
+ };
129
+
130
+ export default config;
131
+ ```
132
+
133
+ > За допомогою цього файлу конфігурації можна налаштувати локалізовані URL-адреси, перенаправлення через middleware, назви файлів cookie, розташування та розширення ваших декларацій вмісту, вимкнути логи Intlayer у консолі тощо. Повний список доступних параметрів див. у [документації з конфігурації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md).
134
+
135
+ ### Крок 4: Інтеграція Intlayer у вашу конфігурацію Vite
136
+
137
+ Додайте плагін intlayer у вашу конфігурацію:
138
+
139
+ ```typescript fileName="vite.config.ts"
140
+ import { intlayer } from "vite-intlayer";
141
+ import { defineConfig } from "vite";
142
+ import { devtools } from "@tanstack/devtools-vite";
143
+ import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
144
+ import solidPlugin from "vite-plugin-solid";
145
+
146
+ export default defineConfig({
147
+ plugins: [
148
+ devtools(),
149
+ tanstackStart({
150
+ router: {
151
+ routeFileIgnorePattern:
152
+ ".content.(ts|tsx|js|mjs|cjs|jsx|json|jsonc|json5)$",
153
+ },
154
+ }),
155
+ solidPlugin({ ssr: true }),
156
+ intlayer(),
157
+ ],
158
+ });
159
+ ```
160
+
161
+ > Плагін Vite `intlayer()` використовується для інтеграції Intlayer з Vite. Він забезпечує збірку файлів декларації вмісту та моніторить їх у режимі розробки. Він визначає змінні середовища Intlayer у додатку Vite. Крім того, він надає псевдоніми (aliases) для зменшення накладних витрат на продуктивність.
162
+
163
+ ### Крок 5: Створення кореневого макета (Root Layout)
164
+
165
+ Налаштуйте свій кореневий макет для підтримки інтернаціоналізації, використовуючи `useMatches` для визначення поточної локалі та встановлюючи атрибути `lang` і `dir` на тегу `html`.
166
+
167
+ ```tsx fileName="src/routes/__root.tsx"
168
+ import {
169
+ HeadContent,
170
+ Outlet,
171
+ Scripts,
172
+ createRootRouteWithContext,
173
+ useMatches,
174
+ } from "@tanstack/solid-router";
175
+ import { TanStackRouterDevtools } from "@tanstack/solid-router-devtools";
176
+ import { HydrationScript } from "solid-js/web";
177
+ import { Suspense } from "solid-js";
178
+ import { IntlayerProvider } from "solid-intlayer";
179
+ import { defaultLocale, getHTMLTextDir, type Locale } from "intlayer";
180
+
181
+ export const Route = createRootRouteWithContext()({
182
+ shellComponent: RootComponent,
183
+ });
184
+
185
+ type Params = {
186
+ locale: Locale;
187
+ };
188
+
189
+ function RootComponent() {
190
+ const matches = useMatches();
191
+
192
+ // Спробуйте знайти локаль у параметрах будь-якого активного збігу
193
+ // Це припускає, що ви використовуєте динамічний сегмент "/{-$locale}" у своєму дереві маршрутів
194
+ const locale =
195
+ (
196
+ matches().find((match) => match.routeId === "/{-$locale}/")
197
+ ?.params as Params
198
+ )?.locale ?? defaultLocale;
199
+
200
+ return (
201
+ <html dir={getHTMLTextDir(locale)} lang={locale}>
202
+ <head>
203
+ <HydrationScript />
204
+ </head>
205
+ <body>
206
+ <HeadContent />
207
+ <IntlayerProvider locale={locale}>
208
+ <Suspense>
209
+ <Outlet />
210
+ <TanStackRouterDevtools />
211
+ </Suspense>
212
+ </IntlayerProvider>
213
+ <Scripts />
214
+ </body>
215
+ </html>
216
+ );
217
+ }
218
+ ```
219
+
220
+ ### Крок 6: Створення макета локалі (опціонально)
221
+
222
+ Створіть макет, який обробляє префікс локалі та виконує валідацію. Цей макет гарантуватиме, що обробляються лише дійсні локалі.
223
+
224
+ > Цей крок є необов'язковим, якщо вам не потрібно валідувати префікс локалі на рівні маршруту.
225
+
226
+ ```tsx fileName="src/routes/{-$locale}/route.tsx"
227
+ import { createFileRoute, Outlet, redirect } from "@tanstack/solid-router";
228
+ import { validatePrefix } from "intlayer";
229
+
230
+ export const Route = createFileRoute("/{-$locale}")({
231
+ beforeLoad: ({ params }) => {
232
+ const localeParam = params.locale;
233
+
234
+ // Валідуйте префікс локалі
235
+ const { isValid, localePrefix } = validatePrefix(localeParam);
236
+
237
+ if (!isValid) {
238
+ throw redirect({
239
+ to: "/{-$locale}/404",
240
+ params: { locale: localePrefix },
241
+ replace: true,
242
+ });
243
+ }
244
+ },
245
+ component: Outlet,
246
+ });
247
+ ```
248
+
249
+ > Тут `{-$locale}` — це динамічний параметр маршруту, який замінюється поточною локаллю. Така нотація робить слот необов'язковим, дозволяючи йому працювати з такими режимами маршрутизації, як `'prefix-no-default'` тощо.
250
+
251
+ > Майте на увазі, що цей слот може спричинити проблеми, якщо ви використовуєте кілька динамічних сегментів в одному маршруті (наприклад: `/{-$locale}/other-path/$anotherDynamicPath/...`).
252
+ > Для режиму `'prefix-all'` ви можете віддати перевагу перемиканню слота на `$locale`.
253
+ > Для режиму `'no-prefix'` або `'search-params'` ви можете повністю видалити цей слот.
254
+
255
+ ### Крок 7: Декларування вмісту
256
+
257
+ Створюйте декларації вмісту та керуйте ними для зберігання перекладів:
258
+
259
+ ```tsx fileName="src/contents/page.content.ts"
260
+ import type { Dictionary } from "intlayer";
261
+
262
+ import { t } from "intlayer";
263
+
264
+ const appContent = {
265
+ content: {
266
+ links: {
267
+ about: t({
268
+ en: "About",
269
+ es: "Acerca de",
270
+ fr: "À propos",
271
+ }),
272
+ home: t({
273
+ en: "Home",
274
+ es: "Inicio",
275
+ fr: "Accueil",
276
+ }),
277
+ },
278
+ meta: {
279
+ title: t({
280
+ en: "Welcome to Intlayer + TanStack Router",
281
+ es: "Bienvenido a Intlayer + TanStack Router",
282
+ fr: "Bienvenue à Intlayer + TanStack Router",
283
+ }),
284
+ description: t({
285
+ en: "This is an example of using Intlayer with TanStack Router",
286
+ es: "Este es un ejemplo de uso de Intlayer con TanStack Router",
287
+ fr: "Ceci est un exemple d'utilisation d'Intlayer avec TanStack Router",
288
+ }),
289
+ },
290
+ },
291
+ key: "app",
292
+ } satisfies Dictionary;
293
+
294
+ export default appContent;
295
+ ```
296
+
297
+ > Ваші декларації вмісту можуть бути визначені будь-де у вашому додатку, за умови, що вони включені в каталог `contentDir` (за замовчуванням `./app`). І відповідають розширенню файлу декларації вмісту (за замовчуванням `.content.{json,ts,tsx,js,jsx,mjs,cjs}`).
298
+
299
+ > Докладнішу інформацію див. у [документації з декларування вмісту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md).
300
+
301
+ ### Крок 8: Використання компонентів та хуків з урахуванням локалі
302
+
303
+ Створіть компонент `LocalizedLink` для навігації з урахуванням локалі:
304
+
305
+ ```tsx fileName="src/components/LocalizedLink.tsx"
306
+ import { Link, type LinkProps } from "@tanstack/solid-router";
307
+ import { getPrefix } from "intlayer";
308
+ import { useLocale } from "solid-intlayer";
309
+ import type { JSX } from "solid-js";
310
+
311
+ export const LOCALE_ROUTE = "{-$locale}" as const;
312
+
313
+ export type RemoveLocaleParam<TVal> = TVal extends string
314
+ ? RemoveLocaleFromString<TVal>
315
+ : TVal;
316
+
317
+ export type To = RemoveLocaleParam<LinkProps["to"]>;
318
+
319
+ type CollapseDoubleSlashes<TString extends string> =
320
+ TString extends `${infer THead}//${infer TTail}`
321
+ ? CollapseDoubleSlashes<`${THead}/${TTail}`>
322
+ : TString;
323
+
324
+ export type LocalizedLinkProps = Omit<LinkProps, "to"> & {
325
+ to?: To;
326
+ } & JSX.AnchorHTMLAttributes<HTMLAnchorElement>;
327
+
328
+ type RemoveAll<
329
+ TString extends string,
330
+ TSub extends string,
331
+ > = TString extends `${infer THead}${TSub}${infer TTail}`
332
+ ? RemoveAll<`${THead}${TTail}`, TSub>
333
+ : TString;
334
+
335
+ type RemoveLocaleFromString<TString extends string> = CollapseDoubleSlashes<
336
+ RemoveAll<TString, typeof LOCALE_ROUTE>
337
+ >;
338
+
339
+ export const LocalizedLink = (props: LocalizedLinkProps) => {
340
+ const { locale } = useLocale();
341
+
342
+ return (
343
+ <Link
344
+ {...props}
345
+ params={{
346
+ locale: getPrefix(locale()).localePrefix,
347
+ ...(typeof props.params === "object" ? props.params : {}),
348
+ }}
349
+ to={`/${LOCALE_ROUTE}${props.to ?? ""}` as LinkProps["to"]}
350
+ />
351
+ );
352
+ };
353
+ ```
354
+
355
+ Цей компонент виконує дві функції:
356
+
357
+ - Видалення непотрібного префікса `{-$locale}` з URL.
358
+ - Вставлення параметра локалі в URL, щоб користувач був перенаправлений безпосередньо на локалізований маршрут.
359
+
360
+ Потім ми можемо створити хук `useLocalizedNavigate` для програмної навігації:
361
+
362
+ ```tsx fileName="src/hooks/useLocalizedNavigate.tsx"
363
+ import { useNavigate } from "@tanstack/solid-router";
364
+ import { getLocalizedUrl } from "intlayer";
365
+ import { useLocale } from "solid-intlayer";
366
+
367
+ export const useLocalizedNavigate = () => {
368
+ const navigate = useNavigate();
369
+ const { locale } = useLocale();
370
+
371
+ const localizedNavigate = (to: string) => {
372
+ const localizedTo = getLocalizedUrl(to, locale());
373
+ return navigate({ to: localizedTo });
374
+ };
375
+
376
+ return localizedNavigate;
377
+ };
378
+ ```
379
+
380
+ ### Крок 9: Використання Intlayer на ваших сторінках
381
+
382
+ Отримуйте доступ до своїх словників вмісту в усьому додатку:
383
+
384
+ #### Локалізована домашня сторінка
385
+
386
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
387
+ import { createFileRoute } from "@tanstack/solid-router";
388
+ import { useIntlayer } from "solid-intlayer";
389
+ import { LocalizedLink } from "@/components/LocalizedLink";
390
+
391
+ export const Route = createFileRoute("/{-$locale}/")({
392
+ component: RouteComponent,
393
+ });
394
+
395
+ function RouteComponent() {
396
+ const content = useIntlayer("index-page");
397
+
398
+ return (
399
+ <main>
400
+ <h1>{content().heroTitle}</h1>
401
+ <p>{content().heroDesc}</p>
402
+ <div>
403
+ <LocalizedLink to="/">{content().navHome}</LocalizedLink>
404
+ <LocalizedLink to="/about">{content().navAbout}</LocalizedLink>
405
+ </div>
406
+ </main>
407
+ );
408
+ }
409
+ ```
410
+
411
+ > у Solid `useIntlayer` повертає функцію **accessor** (наприклад, `content()`). Ви повинні викликати цю функцію, щоб отримати доступ до реактивного вмісту.
412
+ >
413
+ > Щоб дізнатися більше про хук `useIntlayer`, зверніться до [документації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/packages/solid-intlayer/useIntlayer.md).
414
+
415
+ ### Крок 10: Створення компонента перемикання локалі
416
+
417
+ Створіть компонент, який дозволить користувачам змінювати мову:
418
+
419
+ ```tsx fileName="src/components/LocaleSwitcher.tsx"
420
+ import { useLocation } from "@tanstack/solid-router";
421
+ import { getLocaleName, getPathWithoutLocale, getPrefix } from "intlayer";
422
+ import { For } from "solid-js";
423
+ import { useIntlayer, useLocale } from "solid-intlayer";
424
+ import { LocalizedLink, type To } from "./LocalizedLink";
425
+
426
+ export const LocaleSwitcher = () => {
427
+ const content = useIntlayer("locale-switcher");
428
+ const location = useLocation();
429
+
430
+ const { availableLocales, locale, setLocale } = useLocale();
431
+
432
+ const pathWithoutLocale = () => getPathWithoutLocale(location().pathname);
433
+
434
+ return (
435
+ <div class="flex flex-row gap-2">
436
+ <For each={availableLocales}>
437
+ {(localeEl) => (
438
+ <LocalizedLink
439
+ aria-current={localeEl === locale() ? "page" : undefined}
440
+ onClick={() => setLocale(localeEl)}
441
+ params={{ locale: getPrefix(localeEl).localePrefix }}
442
+ to={pathWithoutLocale() as To}
443
+ >
444
+ {getLocaleName(localeEl)}
445
+ </LocalizedLink>
446
+ )}
447
+ </For>
448
+ </div>
449
+ );
450
+ };
451
+
452
+ export default LocaleSwitcher;
453
+ ```
454
+
455
+ > у файлах Solid `locale` з `useLocale` є **signal accessor**. Використовуйте `locale()` (з дужками), щоб реактивно читати його поточне значення.
456
+ >
457
+ > Щоб дізнатися більше про хук `useLocale`, зверніться до [документації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/packages/solid-intlayer/useLocale.md).
458
+
459
+ ### Крок 11: Керування атрибутами HTML
460
+
461
+ Як було показано на кроці 5, ви можете керувати атрибутами `lang` і `dir` тегу `html`, використовуючи `useMatches` у вашому кореневому компоненті. Це гарантує, що правильні атрибути встановлено як на сервері, так і на клієнті.
462
+
463
+ ```tsx fileName="src/routes/__root.tsx"
464
+ const RootComponent: ParentComponent = (props) => {
465
+ const matches = useMatches();
466
+
467
+ // Спробуйте знайти локаль у параметрах будь-якого активного збігу
468
+ const locale =
469
+ (
470
+ matches().find((match) => match.routeId === "/{-$locale}/")
471
+ ?.params as Params
472
+ )?.locale ?? defaultLocale;
473
+
474
+ return (
475
+ <html dir={getHTMLTextDir(locale)} lang={locale}>
476
+ {/* ... */}
477
+ </html>
478
+ );
479
+ };
480
+ ```
481
+
482
+ ---
483
+
484
+ ### Крок 12: Додавання Middleware (опціонально)
485
+
486
+ Ви також можете використовувати `intlayerProxy`, щоб додати маршрутизацію на стороні сервера до вашого додатка. Цей плагін автоматично визначатиме поточну локаль на основі URL-адреси та встановлюватиме відповідний файл cookie локалі. Якщо локаль не вказано, плагін визначить найбільш підходящу локаль на основі налаштувань мови браузера користувача. Якщо локаль не виявлено, він перенаправить на локаль за замовчуванням.
487
+
488
+ > Зверніть увагу, що для використання `intlayerProxy` у продакшні вам потрібно перенести пакет `vite-intlayer` з `devDependencies` до `dependencies`.
489
+
490
+ ```typescript {7,14-17} fileName="vite.config.ts"
491
+ import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
492
+ import solid from "vite-plugin-solid";
493
+ import { nitro } from "nitro/vite";
494
+ import { defineConfig } from "vite";
495
+ import { intlayer, intlayerProxy } from "vite-intlayer";
496
+
497
+ export default defineConfig({
498
+ plugins: [
499
+ intlayerProxy(), // Проксі слід розміщувати перед сервером, якщо ви використовуєте Nitro
500
+ nitro(),
501
+ intlayer(),
502
+ tanstackStart({
503
+ router: {
504
+ routeFileIgnorePattern:
505
+ ".content.(ts|tsx|js|mjs|cjs|jsx|json|jsonc|json5)$",
506
+ },
507
+ }),
508
+ solid(),
509
+ ],
510
+ });
511
+ ```
512
+
513
+ ---
514
+
515
+ ### Крок 13: Інтернаціоналізація ваших метаданих (опціонально)
516
+
517
+ Ви також можете використовувати функцію `getIntlayer`, щоб отримати доступ до ваших словників вмісту в завантажувачі `head` для метаданих з урахуванням локалі:
518
+
519
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
520
+ import { createFileRoute } from "@tanstack/solid-router";
521
+ import { getIntlayer } from "intlayer";
522
+
523
+ export const Route = createFileRoute("/{-$locale}/")({
524
+ component: RouteComponent,
525
+ head: ({ params }) => {
526
+ const { locale } = params;
527
+ const metaContent = getIntlayer("page-metadata", locale);
528
+
529
+ return {
530
+ meta: [
531
+ { title: metaContent.title },
532
+ { content: metaContent.description, name: "description" },
533
+ ],
534
+ };
535
+ },
536
+ });
537
+ ```
538
+
539
+ ---
540
+
541
+ ### Крок 14: Отримання локалі у ваших діях на сервері (опціонально)
542
+
543
+ Ви можете захотіти отримати доступ до поточної локалі з ваших серверних дій (server actions) або кінцевих точок API.
544
+ Ви можете зробити це за допомогою допоміжної функції `getLocale` з `intlayer`.
545
+
546
+ Ось приклад з використанням серверних функцій TanStack Start:
547
+
548
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
549
+ import { createServerFn } from "@tanstack/solid-start";
550
+ import {
551
+ getRequestHeader,
552
+ getRequestHeaders,
553
+ } from "@tanstack/solid-start/server";
554
+ import { getCookie, getIntlayer, getLocale } from "intlayer";
555
+
556
+ export const getLocaleServer = createServerFn().handler(async () => {
557
+ const locale = await getLocale({
558
+ // Отримати кукі з запиту (за замовчуванням: 'INTLAYER_LOCALE')
559
+ getCookie: (name) => {
560
+ const cookieString = getRequestHeader("cookie");
561
+
562
+ return getCookie(name, cookieString);
563
+ },
564
+ // Отримати заголовок з запиту (за замовчуванням: 'x-intlayer-locale')
565
+ // Запасний варіант з використанням узгодження Accept-Language
566
+ getHeader: (name) => getRequestHeader(name),
567
+ });
568
+
569
+ // Отримати якийсь вміст за допомогою getIntlayer()
570
+ const content = getIntlayer("app", locale);
571
+
572
+ return { locale, content };
573
+ });
574
+ ```
575
+
576
+ ---
577
+
578
+ ### Крок 15: Керування сторінками "не знайдено" (404) (опціонально)
579
+
580
+ Коли користувач відвідує неіснуючу сторінку, ви можете відобразити власну сторінку "не знайдено", і префікс локалі може вплинути на те, як ця сторінка запускається.
581
+
582
+ #### Розуміння обробки 404 в TanStack Router з префіксами локалі
583
+
584
+ У TanStack Router обробка сторінок 404 з локалізованими маршрутами вимагає багаторівневого підходу:
585
+
586
+ 1. **Спеціальний маршрут 404**: Окремий маршрут для відображення інтерфейсу 404
587
+ 2. **Валідація на рівні маршруту**: Перевіряє префікси локалі та перенаправляє недійсні на 404
588
+ 3. **Catch-all маршрут**: Захоплює будь-які шляхи, що не збігаються, всередині сегмента локалі
589
+
590
+ ```tsx fileName="src/routes/{-$locale}/404.tsx"
591
+ import { createFileRoute } from "@tanstack/solid-router";
592
+
593
+ // Це створює спеціальний маршрут /[locale]/404
594
+ // Він використовується і як прямий маршрут, і як компонент в інших файлах
595
+ export const Route = createFileRoute("/{-$locale}/404")({
596
+ component: NotFoundComponent,
597
+ });
598
+
599
+ // Експортується окремо, щоб його можна було повторно використовувати в notFoundComponent та catch-all маршрутах
600
+ export function NotFoundComponent() {
601
+ return (
602
+ <div>
603
+ <h1>404</h1>
604
+ </div>
605
+ );
606
+ }
607
+ ```
608
+
609
+ ```tsx fileName="src/routes/{-$locale}/route.tsx"
610
+ import { createFileRoute, Outlet, redirect } from "@tanstack/solid-router";
611
+ import { validatePrefix } from "intlayer";
612
+ import { NotFoundComponent } from "./404";
613
+
614
+ export const Route = createFileRoute("/{-$locale}")({
615
+ // beforeLoad запускається перед рендерингом маршруту (і на сервері, і на клієнті)
616
+ // Це ідеальне місце для валідації префікса локалі
617
+ beforeLoad: ({ params }) => {
618
+ const localeParam = params.locale;
619
+
620
+ // validatePrefix перевіряє, чи є локаль дійсною відповідно до вашої конфігурації intlayer
621
+ const { isValid, localePrefix } = validatePrefix(localeParam);
622
+
623
+ if (!isValid) {
624
+ // Недійсний префікс локалі — перенаправлення на сторінку 404 з дійсним префіксом локалі
625
+ throw redirect({
626
+ to: "/{-$locale}/404",
627
+ params: { locale: localePrefix },
628
+ });
629
+ }
630
+ },
631
+ component: Outlet,
632
+ // notFoundComponent викликається, коли дочірній маршрут не існує
633
+ // напр.: /en/неіснуюча-сторінка запускає це всередині макета /en
634
+ notFoundComponent: NotFoundComponent,
635
+ });
636
+ ```
637
+
638
+ ```tsx fileName="src/routes/{-$locale}/$.tsx"
639
+ import { createFileRoute } from "@tanstack/solid-router";
640
+
641
+ import { NotFoundComponent } from "./404";
642
+
643
+ // Маршрут $ (splat/catch-all) збігається з будь-яким шляхом, що не збігається з іншими маршрутами
644
+ // напр.: /en/якийсь/глибоко/вкладений/недійсний/шлях
645
+ // Це гарантує, що ВСІ невідповідні шляхи всередині локалі показують сторінку 404
646
+ // Без цього глибокі невідповідні шляхи могли б показувати порожню сторінку або помилку
647
+ export const Route = createFileRoute("/{-$locale}/$")({
648
+ component: NotFoundComponent,
649
+ });
650
+ ```
651
+
652
+ ### (Опціонально) Крок 16: Вилучення вмісту з ваших компонентів
653
+
654
+ Якщо у вас є існуюча кодова база, трансформація тисяч файлів може зайняти багато часу.
655
+
656
+ Щоб полегшити цей процес, Intlayer пропонує [компілятор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md) / [екстрактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/extract.md) для трансформації ваших компонентів та вилучення вмісту.
657
+
658
+ Щоб налаштувати його, ви можете додати розділ `compiler` у свій файл `intlayer.config.ts`:
659
+
660
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
661
+ import { type IntlayerConfig } from "intlayer";
662
+
663
+ const config: IntlayerConfig = {
664
+ // ... Решта вашої конфігурації
665
+ compiler: {
666
+ /**
667
+ * Вказує, чи слід увімкнути компілятор.
668
+ */
669
+ enabled: true,
670
+
671
+ /**
672
+ * Визначає шлях до вихідних файлів
673
+ */
674
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
675
+
676
+ /**
677
+ * Вказує, чи слід зберігати компоненти після їх трансформації.
678
+ *
679
+ * - Якщо `true`, компілятор перезапише файл компонента на диску. Таким чином, трансформація буде постійною, і компілятор пропустить трансформацію для наступного процесу. У такий спосіб компілятор може трансформувати додаток, після чого його можна буде видалити.
680
+ *
681
+ * - Якщо `false`, компілятор вставить виклик функції `useIntlayer()` у код лише у вихідних даних збірки, зберігши базову кодову базу недоторканою. Трансформація проводитиметься лише в пам'яті.
682
+ */
683
+ saveComponents: false,
684
+
685
+ /**
686
+ * Префікс ключа словника
687
+ */
688
+ dictionaryKeyPrefix: "",
689
+ },
690
+ };
691
+
692
+ export default config;
693
+ ```
694
+
695
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
696
+ /** @type {import('intlayer').IntlayerConfig} */
697
+ const config = {
698
+ // ... Решта вашої конфігурації
699
+ compiler: {
700
+ /**
701
+ * Вказує, чи слід увімкнути компілятор.
702
+ */
703
+ enabled: true,
704
+
705
+ /**
706
+ * Визначає шлях до вихідних файлів
707
+ */
708
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
709
+
710
+ /**
711
+ * Вказує, чи слід зберігати компоненти після їх трансформації.
712
+ *
713
+ * - Якщо `true`, компілятор перезапише файл компонента на диску. Таким чином, трансформація буде постійною, і компілятор пропустить трансформацію для наступного процесу. У такий спосіб компілятор може трансформувати додаток, після чого його можна буде видалити.
714
+ *
715
+ * - Якщо `false`, компілятор вставить виклик функції `useIntlayer()` у код лише у вихідних даних збірки, зберігши базову кодову базу недоторканою. Трансформація проводитиметься лише в пам'яті.
716
+ */
717
+ saveComponents: false,
718
+
719
+ /**
720
+ * Префікс ключа словника
721
+ */
722
+ dictionaryKeyPrefix: "",
723
+ },
724
+ };
725
+
726
+ export default config;
727
+ ```
728
+
729
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
730
+ /** @type {import('intlayer').IntlayerConfig} */
731
+ const config = {
732
+ // ... Решта вашої конфігурації
733
+ compiler: {
734
+ /**
735
+ * Вказує, чи слід увімкнути компілятор.
736
+ */
737
+ enabled: true,
738
+
739
+ /**
740
+ * Визначає шлях до вихідних файлів
741
+ */
742
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
743
+
744
+ /**
745
+ * Вказує, чи слід зберігати компоненти після їх трансформації.
746
+ *
747
+ * - Якщо `true`, компілятор перезапише файл компонента на диску. Таким чином, трансформація буде постійною, і компілятор пропустить трансформацію для наступного процесу. У такий спосіб компілятор може трансформувати додаток, після чого його можна буде видалити.
748
+ *
749
+ * - Якщо `false`, компілятор вставить виклик функції `useIntlayer()` у код лише у вихідних даних збірки, зберігши базову кодову базу недоторканою. Трансформація проводитиметься лише в пам'яті.
750
+ */
751
+ saveComponents: false,
752
+
753
+ /**
754
+ * Префікс ключа словника
755
+ */
756
+ dictionaryKeyPrefix: "",
757
+ },
758
+ };
759
+
760
+ module.exports = config;
761
+ ```
762
+
763
+ <Tabs>
764
+ <Tab value='Команда extract'>
765
+
766
+ Запустіть екстрактор, щоб трансформувати ваші компоненти та вилучити вміст
767
+
768
+ ```bash packageManager="npm"
769
+ npx intlayer extract
770
+ ```
771
+
772
+ ```bash packageManager="pnpm"
773
+ pnpm intlayer extract
774
+ ```
775
+
776
+ ```bash packageManager="yarn"
777
+ yarn intlayer extract
778
+ ```
779
+
780
+ ```bash packageManager="bun"
781
+ bun x intlayer extract
782
+ ```
783
+
784
+ </Tab>
785
+ <Tab value='Компілятор Babel'>
786
+
787
+ Оновіть свій `vite.config.ts`, щоб включити плагін `intlayerCompiler`:
788
+
789
+ ```ts fileName="vite.config.ts"
790
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
791
+ import { defineConfig } from "vite";
792
+ import { devtools } from "@tanstack/devtools-vite";
793
+ import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
794
+ import solidPlugin from "vite-plugin-solid";
795
+
796
+ export default defineConfig({
797
+ plugins: [
798
+ devtools(),
799
+ tanstackStart({
800
+ router: {
801
+ routeFileIgnorePattern:
802
+ ".content.(ts|tsx|js|mjs|cjs|jsx|json|jsonc|json5)$",
803
+ },
804
+ }),
805
+ solidPlugin({ ssr: true }),
806
+ intlayer(),
807
+ intlayerCompiler(),
808
+ ],
809
+ });
810
+ ```
811
+
812
+ ```bash packageManager="npm"
813
+ npm run build # Або rpm run dev
814
+ ```
815
+
816
+ ```bash packageManager="pnpm"
817
+ pnpm run build # Або pnpm run dev
818
+ ```
819
+
820
+ ```bash packageManager="yarn"
821
+ yarn build # Або yarn dev
822
+ ```
823
+
824
+ ```bash packageManager="bun"
825
+ bun run build # Або bun run dev
826
+ ```
827
+
828
+ </Tab>
829
+ </Tabs>
830
+
831
+ ---
832
+
833
+ ### Крок 17: Конфігурація TypeScript (опціонально)
834
+
835
+ Intlayer використовує розширення модулів (module augmentation), щоб отримати переваги TypeScript і зміцнити вашу кодову базу.
836
+
837
+ Переконайтеся, що ваша конфігурація TypeScript включає автоматично згенеровані типи:
838
+
839
+ ```json5 fileName="tsconfig.json"
840
+ {
841
+ // ... ваші існуючі налаштування
842
+ include: [
843
+ // ... ваші існуючі включення
844
+ ".intlayer/**/*.ts", // Включити автоматично згенеровані типи
845
+ ],
846
+ }
847
+ ```
848
+
849
+ ---
850
+
851
+ ### Конфігурація Git
852
+
853
+ Ми рекомендуємо ігнорувати файли, згенеровані Intlayer. Це дозволяє уникнути їх фіксації (commit) у вашому репозиторії Git.
854
+
855
+ Для цього ви можете додати наступні інструкції до свого файлу `.gitignore`:
856
+
857
+ ```plaintext fileName=".gitignore"
858
+ # Ігнорувати файли, згенеровані Intlayer
859
+ .intlayer
860
+ ```
861
+
862
+ ---
863
+
864
+ ## Розширення VS Code
865
+
866
+ Щоб покращити свій досвід розробки з Intlayer, ви можете встановити офіційне **розширення Intlayer VS Code**.
867
+
868
+ [Встановити з VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
869
+
870
+ Це розширення пропонує:
871
+
872
+ - **Автодоповнення** для ключів перекладу.
873
+ - **Виявлення помилок у реальному часі** для відсутніх перекладів.
874
+ - **Вбудований попередній перегляд (inline previews)** перекладеного вмісту.
875
+ - **Швидкі дії** для легкого створення та оновлення перекладів.
876
+
877
+ Докладніше про те, як користуватися розширенням, див. у [документації до розширення Intlayer VS Code](https://intlayer.org/doc/vs-code-extension).
878
+
879
+ ---
880
+
881
+ ## Подальші кроки
882
+
883
+ Щоб піти далі, ви можете впровадити [візуальний редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md) або винести свій вміст за допомогою [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md).
884
+
885
+ ---
886
+
887
+ ## Посилання на документацію
888
+
889
+ - [Документація Intlayer](https://intlayer.org)
890
+ - [Документація Tanstack Start](https://tanstack.com/start/latest)
891
+ - [Хук useIntlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/packages/solid-intlayer/useIntlayer.md)
892
+ - [Хук useLocale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/packages/solid-intlayer/useLocale.md)
893
+ - [Декларування вмісту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md)
894
+ - [Конфігурація](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md)