@intlayer/docs 7.5.11 → 7.5.13

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 (417) hide show
  1. package/blog/ar/intlayer_with_i18next.md +0 -2
  2. package/blog/ar/intlayer_with_next-i18next.md +0 -2
  3. package/blog/ar/intlayer_with_react-i18next.md +0 -2
  4. package/blog/de/intlayer_with_i18next.md +0 -45
  5. package/blog/de/intlayer_with_next-i18next.md +0 -46
  6. package/blog/de/intlayer_with_react-i18next.md +0 -2
  7. package/blog/en/intlayer_with_i18next.md +0 -46
  8. package/blog/en/intlayer_with_next-i18next.md +0 -48
  9. package/blog/en/intlayer_with_next-intl.md +0 -44
  10. package/blog/en/intlayer_with_react-i18next.md +0 -44
  11. package/blog/en/intlayer_with_react-intl.md +0 -42
  12. package/blog/en/intlayer_with_vue-i18n.md +0 -44
  13. package/blog/en-GB/intlayer_with_i18next.md +0 -45
  14. package/blog/en-GB/intlayer_with_next-i18next.md +0 -47
  15. package/blog/en-GB/intlayer_with_next-intl.md +0 -42
  16. package/blog/en-GB/intlayer_with_react-i18next.md +0 -43
  17. package/blog/en-GB/intlayer_with_react-intl.md +0 -42
  18. package/blog/en-GB/intlayer_with_vue-i18n.md +0 -46
  19. package/blog/es/intlayer_with_i18next.md +0 -45
  20. package/blog/es/intlayer_with_next-i18next.md +0 -47
  21. package/blog/es/intlayer_with_next-intl.md +0 -42
  22. package/blog/es/intlayer_with_react-i18next.md +0 -43
  23. package/blog/es/intlayer_with_react-intl.md +0 -42
  24. package/blog/es/intlayer_with_vue-i18n.md +0 -46
  25. package/blog/fr/intlayer_with_i18next.md +0 -45
  26. package/blog/fr/intlayer_with_next-i18next.md +0 -47
  27. package/blog/fr/intlayer_with_next-intl.md +0 -42
  28. package/blog/fr/intlayer_with_react-i18next.md +0 -43
  29. package/blog/fr/intlayer_with_react-intl.md +0 -42
  30. package/blog/fr/intlayer_with_vue-i18n.md +0 -46
  31. package/blog/hi/intlayer_with_i18next.md +0 -2
  32. package/blog/hi/intlayer_with_next-i18next.md +0 -2
  33. package/blog/hi/intlayer_with_react-i18next.md +0 -2
  34. package/blog/id/intlayer_with_i18next.md +0 -2
  35. package/blog/id/intlayer_with_next-i18next.md +0 -2
  36. package/blog/id/intlayer_with_react-i18next.md +0 -2
  37. package/blog/it/intlayer_with_i18next.md +0 -2
  38. package/blog/it/intlayer_with_next-i18next.md +0 -2
  39. package/blog/it/intlayer_with_react-i18next.md +0 -2
  40. package/blog/ja/intlayer_with_i18next.md +0 -45
  41. package/blog/ja/intlayer_with_next-i18next.md +0 -46
  42. package/blog/ja/intlayer_with_next-intl.md +0 -42
  43. package/blog/ja/intlayer_with_react-i18next.md +0 -42
  44. package/blog/ja/intlayer_with_react-intl.md +0 -42
  45. package/blog/ja/intlayer_with_vue-i18n.md +0 -46
  46. package/blog/ko/intlayer_with_i18next.md +0 -2
  47. package/blog/ko/intlayer_with_next-i18next.md +0 -2
  48. package/blog/ko/intlayer_with_react-i18next.md +0 -1
  49. package/blog/pl/intlayer_with_i18next.md +0 -45
  50. package/blog/pl/intlayer_with_next-i18next.md +0 -46
  51. package/blog/pl/intlayer_with_next-intl.md +0 -42
  52. package/blog/pl/intlayer_with_react-i18next.md +0 -43
  53. package/blog/pl/intlayer_with_react-intl.md +0 -42
  54. package/blog/pl/intlayer_with_vue-i18n.md +0 -46
  55. package/blog/pt/intlayer_with_i18next.md +0 -2
  56. package/blog/pt/intlayer_with_next-i18next.md +0 -2
  57. package/blog/pt/intlayer_with_react-i18next.md +0 -2
  58. package/blog/ru/intlayer_with_i18next.md +0 -45
  59. package/blog/ru/intlayer_with_next-i18next.md +0 -47
  60. package/blog/ru/intlayer_with_next-intl.md +0 -42
  61. package/blog/ru/intlayer_with_react-i18next.md +0 -43
  62. package/blog/ru/intlayer_with_react-intl.md +0 -42
  63. package/blog/ru/intlayer_with_vue-i18n.md +0 -46
  64. package/blog/tr/intlayer_with_i18next.md +0 -2
  65. package/blog/tr/intlayer_with_next-i18next.md +0 -1
  66. package/blog/tr/intlayer_with_react-i18next.md +0 -2
  67. package/blog/uk/compiler_vs_declarative_i18n.md +224 -0
  68. package/blog/uk/i18n_using_next-i18next.md +1086 -0
  69. package/blog/uk/i18n_using_next-intl.md +760 -0
  70. package/blog/uk/index.md +69 -0
  71. package/blog/uk/internationalization_and_SEO.md +273 -0
  72. package/blog/uk/intlayer_with_i18next.md +211 -0
  73. package/blog/uk/intlayer_with_next-i18next.md +202 -0
  74. package/blog/uk/intlayer_with_next-intl.md +203 -0
  75. package/blog/uk/intlayer_with_react-i18next.md +200 -0
  76. package/blog/uk/intlayer_with_react-intl.md +202 -0
  77. package/blog/uk/intlayer_with_vue-i18n.md +206 -0
  78. package/blog/uk/l10n_platform_alternative/Lokalise.md +80 -0
  79. package/blog/uk/l10n_platform_alternative/crowdin.md +80 -0
  80. package/blog/uk/l10n_platform_alternative/phrase.md +78 -0
  81. package/blog/uk/list_i18n_technologies/CMS/drupal.md +143 -0
  82. package/blog/uk/list_i18n_technologies/CMS/wix.md +167 -0
  83. package/blog/uk/list_i18n_technologies/CMS/wordpress.md +189 -0
  84. package/blog/uk/list_i18n_technologies/frameworks/angular.md +125 -0
  85. package/blog/uk/list_i18n_technologies/frameworks/flutter.md +128 -0
  86. package/blog/uk/list_i18n_technologies/frameworks/react-native.md +217 -0
  87. package/blog/uk/list_i18n_technologies/frameworks/react.md +155 -0
  88. package/blog/uk/list_i18n_technologies/frameworks/svelte.md +145 -0
  89. package/blog/uk/list_i18n_technologies/frameworks/vue.md +144 -0
  90. package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1499 -0
  91. package/blog/uk/nextjs-multilingual-seo-comparison.md +360 -0
  92. package/blog/uk/rag_powered_documentation_assistant.md +288 -0
  93. package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  94. package/blog/uk/vue-i18n_vs_intlayer.md +279 -0
  95. package/blog/uk/what_is_internationalization.md +167 -0
  96. package/blog/vi/intlayer_with_i18next.md +0 -2
  97. package/blog/vi/intlayer_with_next-i18next.md +0 -2
  98. package/blog/vi/intlayer_with_react-i18next.md +0 -2
  99. package/blog/zh/intlayer_with_i18next.md +0 -2
  100. package/blog/zh/intlayer_with_next-i18next.md +0 -2
  101. package/blog/zh/intlayer_with_react-i18next.md +0 -2
  102. package/blog/zh/intlayer_with_vue-i18n.md +0 -46
  103. package/dist/cjs/generated/blog.entry.cjs +58 -29
  104. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  105. package/dist/cjs/generated/docs.entry.cjs +218 -99
  106. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  107. package/dist/cjs/generated/frequentQuestions.entry.cjs +50 -15
  108. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  109. package/dist/cjs/generated/legal.entry.cjs +4 -2
  110. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  111. package/dist/esm/generated/blog.entry.mjs +58 -29
  112. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  113. package/dist/esm/generated/docs.entry.mjs +218 -99
  114. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  115. package/dist/esm/generated/frequentQuestions.entry.mjs +50 -15
  116. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  117. package/dist/esm/generated/legal.entry.mjs +4 -2
  118. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  119. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  120. package/dist/types/generated/docs.entry.d.ts +1 -0
  121. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  122. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
  123. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  124. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  125. package/docs/ar/configuration.md +6 -1
  126. package/docs/ar/dictionary/content_file.md +6 -1
  127. package/docs/ar/intlayer_with_next-i18next.md +0 -1
  128. package/docs/ar/intlayer_with_nextjs_14.md +28 -0
  129. package/docs/ar/intlayer_with_nextjs_15.md +28 -0
  130. package/docs/ar/intlayer_with_nextjs_16.md +28 -0
  131. package/docs/ar/intlayer_with_nextjs_no_locale_path.md +1159 -0
  132. package/docs/ar/plugins/sync-json.md +6 -2
  133. package/docs/de/configuration.md +6 -1
  134. package/docs/de/dictionary/content_file.md +6 -1
  135. package/docs/de/intlayer_with_next-i18next.md +0 -1
  136. package/docs/de/intlayer_with_nextjs_14.md +28 -0
  137. package/docs/de/intlayer_with_nextjs_15.md +28 -0
  138. package/docs/de/intlayer_with_nextjs_16.md +28 -0
  139. package/docs/de/intlayer_with_nextjs_no_locale_path.md +1152 -0
  140. package/docs/de/plugins/sync-json.md +6 -2
  141. package/docs/en/configuration.md +6 -1
  142. package/docs/en/dictionary/content_file.md +6 -1
  143. package/docs/en/intlayer_with_next-i18next.md +0 -1
  144. package/docs/en/intlayer_with_nextjs_14.md +28 -0
  145. package/docs/en/intlayer_with_nextjs_15.md +28 -0
  146. package/docs/en/intlayer_with_nextjs_16.md +31 -1
  147. package/docs/en/intlayer_with_nextjs_no_locale_path.md +1132 -0
  148. package/docs/en/plugins/sync-json.md +6 -2
  149. package/docs/en-GB/configuration.md +6 -1
  150. package/docs/en-GB/dictionary/content_file.md +3 -1
  151. package/docs/en-GB/intlayer_with_next-i18next.md +0 -1
  152. package/docs/en-GB/intlayer_with_nextjs_14.md +28 -0
  153. package/docs/en-GB/intlayer_with_nextjs_15.md +28 -0
  154. package/docs/en-GB/intlayer_with_nextjs_16.md +28 -0
  155. package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +1154 -0
  156. package/docs/en-GB/plugins/sync-json.md +6 -2
  157. package/docs/es/configuration.md +6 -1
  158. package/docs/es/dictionary/content_file.md +6 -1
  159. package/docs/es/intlayer_with_next-i18next.md +0 -1
  160. package/docs/es/intlayer_with_nextjs_14.md +28 -0
  161. package/docs/es/intlayer_with_nextjs_15.md +28 -0
  162. package/docs/es/intlayer_with_nextjs_16.md +28 -0
  163. package/docs/es/intlayer_with_nextjs_no_locale_path.md +1143 -0
  164. package/docs/es/plugins/sync-json.md +6 -2
  165. package/docs/fr/configuration.md +6 -1
  166. package/docs/fr/dictionary/content_file.md +3 -1
  167. package/docs/fr/intlayer_with_next-i18next.md +0 -1
  168. package/docs/fr/intlayer_with_nextjs_14.md +28 -0
  169. package/docs/fr/intlayer_with_nextjs_15.md +28 -0
  170. package/docs/fr/intlayer_with_nextjs_16.md +28 -0
  171. package/docs/fr/intlayer_with_nextjs_no_locale_path.md +1174 -0
  172. package/docs/fr/plugins/sync-json.md +9 -5
  173. package/docs/hi/configuration.md +6 -1
  174. package/docs/hi/dictionary/content_file.md +3 -1
  175. package/docs/hi/intlayer_with_next-i18next.md +0 -1
  176. package/docs/hi/intlayer_with_nextjs_14.md +28 -0
  177. package/docs/hi/intlayer_with_nextjs_15.md +28 -0
  178. package/docs/hi/intlayer_with_nextjs_16.md +28 -0
  179. package/docs/hi/intlayer_with_nextjs_no_locale_path.md +1151 -0
  180. package/docs/hi/plugins/sync-json.md +6 -2
  181. package/docs/id/configuration.md +6 -1
  182. package/docs/id/dictionary/content_file.md +3 -1
  183. package/docs/id/intlayer_with_next-i18next.md +0 -1
  184. package/docs/id/intlayer_with_nextjs_14.md +28 -0
  185. package/docs/id/intlayer_with_nextjs_15.md +28 -0
  186. package/docs/id/intlayer_with_nextjs_16.md +28 -0
  187. package/docs/id/intlayer_with_nextjs_no_locale_path.md +1154 -0
  188. package/docs/id/plugins/sync-json.md +6 -2
  189. package/docs/it/configuration.md +6 -1
  190. package/docs/it/dictionary/content_file.md +3 -1
  191. package/docs/it/intlayer_with_next-i18next.md +0 -1
  192. package/docs/it/intlayer_with_nextjs_14.md +28 -0
  193. package/docs/it/intlayer_with_nextjs_15.md +28 -0
  194. package/docs/it/intlayer_with_nextjs_16.md +28 -0
  195. package/docs/it/intlayer_with_nextjs_no_locale_path.md +1148 -0
  196. package/docs/it/plugins/sync-json.md +6 -2
  197. package/docs/ja/configuration.md +6 -1
  198. package/docs/ja/dictionary/content_file.md +3 -1
  199. package/docs/ja/intlayer_with_next-i18next.md +0 -1
  200. package/docs/ja/intlayer_with_nextjs_14.md +28 -0
  201. package/docs/ja/intlayer_with_nextjs_15.md +28 -0
  202. package/docs/ja/intlayer_with_nextjs_16.md +28 -0
  203. package/docs/ja/intlayer_with_nextjs_no_locale_path.md +1222 -0
  204. package/docs/ja/plugins/sync-json.md +6 -2
  205. package/docs/ko/configuration.md +6 -1
  206. package/docs/ko/dictionary/content_file.md +3 -1
  207. package/docs/ko/intlayer_with_next-i18next.md +0 -1
  208. package/docs/ko/intlayer_with_nextjs_14.md +28 -0
  209. package/docs/ko/intlayer_with_nextjs_15.md +28 -0
  210. package/docs/ko/intlayer_with_nextjs_16.md +28 -0
  211. package/docs/ko/intlayer_with_nextjs_no_locale_path.md +1205 -0
  212. package/docs/ko/plugins/sync-json.md +6 -2
  213. package/docs/pl/configuration.md +3 -1
  214. package/docs/pl/dictionary/content_file.md +3 -1
  215. package/docs/pl/intlayer_with_next-i18next.md +0 -1
  216. package/docs/pl/intlayer_with_nextjs_14.md +28 -0
  217. package/docs/pl/intlayer_with_nextjs_15.md +28 -0
  218. package/docs/pl/intlayer_with_nextjs_16.md +28 -0
  219. package/docs/pl/intlayer_with_nextjs_no_locale_path.md +1149 -0
  220. package/docs/pl/plugins/sync-json.md +6 -2
  221. package/docs/pt/configuration.md +6 -1
  222. package/docs/pt/dictionary/content_file.md +3 -1
  223. package/docs/pt/intlayer_with_next-i18next.md +0 -1
  224. package/docs/pt/intlayer_with_nextjs_14.md +28 -0
  225. package/docs/pt/intlayer_with_nextjs_15.md +28 -0
  226. package/docs/pt/intlayer_with_nextjs_16.md +28 -0
  227. package/docs/pt/intlayer_with_nextjs_no_locale_path.md +1152 -0
  228. package/docs/pt/plugins/sync-json.md +6 -2
  229. package/docs/ru/configuration.md +6 -1
  230. package/docs/ru/dictionary/content_file.md +6 -1
  231. package/docs/ru/intlayer_with_next-i18next.md +0 -1
  232. package/docs/ru/intlayer_with_nextjs_14.md +28 -0
  233. package/docs/ru/intlayer_with_nextjs_15.md +28 -0
  234. package/docs/ru/intlayer_with_nextjs_16.md +28 -0
  235. package/docs/ru/intlayer_with_nextjs_no_locale_path.md +1204 -0
  236. package/docs/ru/plugins/sync-json.md +6 -2
  237. package/docs/tr/configuration.md +6 -1
  238. package/docs/tr/dictionary/content_file.md +3 -1
  239. package/docs/tr/intlayer_with_next-i18next.md +0 -1
  240. package/docs/tr/intlayer_with_nextjs_14.md +28 -0
  241. package/docs/tr/intlayer_with_nextjs_15.md +28 -0
  242. package/docs/tr/intlayer_with_nextjs_16.md +28 -0
  243. package/docs/tr/intlayer_with_nextjs_no_locale_path.md +1159 -0
  244. package/docs/tr/plugins/sync-json.md +6 -2
  245. package/docs/uk/CI_CD.md +198 -0
  246. package/docs/uk/autoFill.md +307 -0
  247. package/docs/uk/bundle_optimization.md +185 -0
  248. package/docs/uk/cli/build.md +64 -0
  249. package/docs/uk/cli/ci.md +137 -0
  250. package/docs/uk/cli/configuration.md +63 -0
  251. package/docs/uk/cli/debug.md +46 -0
  252. package/docs/uk/cli/doc-review.md +43 -0
  253. package/docs/uk/cli/doc-translate.md +132 -0
  254. package/docs/uk/cli/editor.md +28 -0
  255. package/docs/uk/cli/fill.md +130 -0
  256. package/docs/uk/cli/index.md +190 -0
  257. package/docs/uk/cli/init.md +84 -0
  258. package/docs/uk/cli/list.md +90 -0
  259. package/docs/uk/cli/list_projects.md +128 -0
  260. package/docs/uk/cli/live.md +41 -0
  261. package/docs/uk/cli/login.md +157 -0
  262. package/docs/uk/cli/pull.md +78 -0
  263. package/docs/uk/cli/push.md +98 -0
  264. package/docs/uk/cli/sdk.md +71 -0
  265. package/docs/uk/cli/test.md +76 -0
  266. package/docs/uk/cli/transform.md +65 -0
  267. package/docs/uk/cli/version.md +24 -0
  268. package/docs/uk/cli/watch.md +37 -0
  269. package/docs/uk/compiler.md +133 -0
  270. package/docs/uk/component_i18n.md +194 -0
  271. package/docs/uk/configuration.md +742 -0
  272. package/docs/uk/dictionary/condition.md +237 -0
  273. package/docs/uk/dictionary/content_file.md +1134 -0
  274. package/docs/uk/dictionary/enumeration.md +245 -0
  275. package/docs/uk/dictionary/file.md +232 -0
  276. package/docs/uk/dictionary/function_fetching.md +212 -0
  277. package/docs/uk/dictionary/gender.md +273 -0
  278. package/docs/uk/dictionary/insertion.md +187 -0
  279. package/docs/uk/dictionary/markdown.md +383 -0
  280. package/docs/uk/dictionary/nesting.md +273 -0
  281. package/docs/uk/dictionary/translation.md +332 -0
  282. package/docs/uk/formatters.md +595 -0
  283. package/docs/uk/how_works_intlayer.md +256 -0
  284. package/docs/uk/index.md +175 -0
  285. package/docs/uk/interest_of_intlayer.md +297 -0
  286. package/docs/uk/intlayer_CMS.md +569 -0
  287. package/docs/uk/intlayer_visual_editor.md +292 -0
  288. package/docs/uk/intlayer_with_angular.md +710 -0
  289. package/docs/uk/intlayer_with_astro.md +256 -0
  290. package/docs/uk/intlayer_with_create_react_app.md +1258 -0
  291. package/docs/uk/intlayer_with_express.md +429 -0
  292. package/docs/uk/intlayer_with_fastify.md +446 -0
  293. package/docs/uk/intlayer_with_lynx+react.md +548 -0
  294. package/docs/uk/intlayer_with_nestjs.md +283 -0
  295. package/docs/uk/intlayer_with_next-i18next.md +640 -0
  296. package/docs/uk/intlayer_with_next-intl.md +456 -0
  297. package/docs/uk/intlayer_with_nextjs_14.md +1646 -0
  298. package/docs/uk/intlayer_with_nextjs_15.md +1910 -0
  299. package/docs/uk/intlayer_with_nextjs_16.md +1763 -0
  300. package/docs/uk/intlayer_with_nextjs_no_locale_path.md +1159 -0
  301. package/docs/uk/intlayer_with_nextjs_page_router.md +1541 -0
  302. package/docs/uk/intlayer_with_nuxt.md +711 -0
  303. package/docs/uk/intlayer_with_react_native+expo.md +715 -0
  304. package/docs/uk/intlayer_with_react_router_v7.md +600 -0
  305. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +669 -0
  306. package/docs/uk/intlayer_with_svelte_kit.md +579 -0
  307. package/docs/uk/intlayer_with_tanstack.md +818 -0
  308. package/docs/uk/intlayer_with_vite+preact.md +1748 -0
  309. package/docs/uk/intlayer_with_vite+react.md +1449 -0
  310. package/docs/uk/intlayer_with_vite+solid.md +302 -0
  311. package/docs/uk/intlayer_with_vite+svelte.md +520 -0
  312. package/docs/uk/intlayer_with_vite+vue.md +1113 -0
  313. package/docs/uk/introduction.md +222 -0
  314. package/docs/uk/locale_mapper.md +242 -0
  315. package/docs/uk/mcp_server.md +211 -0
  316. package/docs/uk/packages/express-intlayer/t.md +465 -0
  317. package/docs/uk/packages/intlayer/getConfiguration.md +145 -0
  318. package/docs/uk/packages/intlayer/getEnumeration.md +159 -0
  319. package/docs/uk/packages/intlayer/getHTMLTextDir.md +121 -0
  320. package/docs/uk/packages/intlayer/getLocaleLang.md +81 -0
  321. package/docs/uk/packages/intlayer/getLocaleName.md +135 -0
  322. package/docs/uk/packages/intlayer/getLocalizedUrl.md +338 -0
  323. package/docs/uk/packages/intlayer/getMultilingualUrls.md +359 -0
  324. package/docs/uk/packages/intlayer/getPathWithoutLocale.md +75 -0
  325. package/docs/uk/packages/intlayer/getPrefix.md +213 -0
  326. package/docs/uk/packages/intlayer/getTranslation.md +190 -0
  327. package/docs/uk/packages/intlayer/getTranslationContent.md +189 -0
  328. package/docs/uk/packages/next-intlayer/t.md +365 -0
  329. package/docs/uk/packages/next-intlayer/useDictionary.md +276 -0
  330. package/docs/uk/packages/next-intlayer/useIntlayer.md +263 -0
  331. package/docs/uk/packages/next-intlayer/useLocale.md +166 -0
  332. package/docs/uk/packages/react-intlayer/t.md +311 -0
  333. package/docs/uk/packages/react-intlayer/useDictionary.md +295 -0
  334. package/docs/uk/packages/react-intlayer/useI18n.md +250 -0
  335. package/docs/uk/packages/react-intlayer/useIntlayer.md +251 -0
  336. package/docs/uk/packages/react-intlayer/useLocale.md +210 -0
  337. package/docs/uk/per_locale_file.md +345 -0
  338. package/docs/uk/plugins/sync-json.md +398 -0
  339. package/docs/uk/readme.md +265 -0
  340. package/docs/uk/releases/v6.md +305 -0
  341. package/docs/uk/releases/v7.md +624 -0
  342. package/docs/uk/roadmap.md +346 -0
  343. package/docs/uk/testing.md +204 -0
  344. package/docs/uk/vs_code_extension.md +133 -0
  345. package/docs/vi/configuration.md +6 -1
  346. package/docs/vi/dictionary/content_file.md +6 -1
  347. package/docs/vi/intlayer_with_next-i18next.md +0 -1
  348. package/docs/vi/intlayer_with_nextjs_14.md +28 -0
  349. package/docs/vi/intlayer_with_nextjs_15.md +28 -0
  350. package/docs/vi/intlayer_with_nextjs_16.md +28 -0
  351. package/docs/vi/intlayer_with_nextjs_no_locale_path.md +1151 -0
  352. package/docs/vi/plugins/sync-json.md +6 -2
  353. package/docs/zh/configuration.md +6 -1
  354. package/docs/zh/dictionary/content_file.md +6 -1
  355. package/docs/zh/intlayer_with_next-i18next.md +0 -1
  356. package/docs/zh/intlayer_with_nextjs_14.md +28 -0
  357. package/docs/zh/intlayer_with_nextjs_15.md +28 -0
  358. package/docs/zh/intlayer_with_nextjs_16.md +28 -0
  359. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +1206 -0
  360. package/docs/zh/plugins/sync-json.md +9 -5
  361. package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -1
  362. package/frequent_questions/ar/error-vite-env-only.md +77 -0
  363. package/frequent_questions/de/SSR_Next_no_[locale].md +1 -1
  364. package/frequent_questions/de/error-vite-env-only.md +77 -0
  365. package/frequent_questions/en/SSR_Next_no_[locale].md +1 -1
  366. package/frequent_questions/en/error-vite-env-only.md +77 -0
  367. package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -1
  368. package/frequent_questions/en-GB/error-vite-env-only.md +77 -0
  369. package/frequent_questions/es/SSR_Next_no_[locale].md +1 -1
  370. package/frequent_questions/es/error-vite-env-only.md +76 -0
  371. package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -1
  372. package/frequent_questions/fr/error-vite-env-only.md +77 -0
  373. package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -1
  374. package/frequent_questions/hi/error-vite-env-only.md +77 -0
  375. package/frequent_questions/id/SSR_Next_no_[locale].md +1 -1
  376. package/frequent_questions/id/error-vite-env-only.md +77 -0
  377. package/frequent_questions/it/SSR_Next_no_[locale].md +1 -1
  378. package/frequent_questions/it/error-vite-env-only.md +77 -0
  379. package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -1
  380. package/frequent_questions/ja/error-vite-env-only.md +77 -0
  381. package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -1
  382. package/frequent_questions/ko/error-vite-env-only.md +77 -0
  383. package/frequent_questions/pl/SSR_Next_no_[locale].md +1 -1
  384. package/frequent_questions/pl/error-vite-env-only.md +77 -0
  385. package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -1
  386. package/frequent_questions/pt/error-vite-env-only.md +77 -0
  387. package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -1
  388. package/frequent_questions/ru/error-vite-env-only.md +77 -0
  389. package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -1
  390. package/frequent_questions/tr/error-vite-env-only.md +77 -0
  391. package/frequent_questions/uk/SSR_Next_no_[locale].md +104 -0
  392. package/frequent_questions/uk/array_as_content_declaration.md +72 -0
  393. package/frequent_questions/uk/build_dictionaries.md +58 -0
  394. package/frequent_questions/uk/build_error_CI_CD.md +74 -0
  395. package/frequent_questions/uk/bun_set_up.md +53 -0
  396. package/frequent_questions/uk/customized_locale_list.md +64 -0
  397. package/frequent_questions/uk/domain_routing.md +113 -0
  398. package/frequent_questions/uk/error-vite-env-only.md +77 -0
  399. package/frequent_questions/uk/esbuild_error.md +29 -0
  400. package/frequent_questions/uk/get_locale_cookie.md +142 -0
  401. package/frequent_questions/uk/intlayer_command_undefined.md +155 -0
  402. package/frequent_questions/uk/locale_incorect_in_url.md +73 -0
  403. package/frequent_questions/uk/package_version_error.md +181 -0
  404. package/frequent_questions/uk/static_rendering.md +44 -0
  405. package/frequent_questions/uk/translated_path_url.md +55 -0
  406. package/frequent_questions/uk/unknown_command.md +97 -0
  407. package/frequent_questions/vi/SSR_Next_no_[locale].md +1 -1
  408. package/frequent_questions/vi/error-vite-env-only.md +77 -0
  409. package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -1
  410. package/frequent_questions/zh/error-vite-env-only.md +77 -0
  411. package/legal/uk/privacy_notice.md +83 -0
  412. package/legal/uk/terms_of_service.md +55 -0
  413. package/package.json +6 -6
  414. package/src/generated/blog.entry.ts +29 -0
  415. package/src/generated/docs.entry.ts +119 -0
  416. package/src/generated/frequentQuestions.entry.ts +35 -0
  417. package/src/generated/legal.entry.ts +2 -0
@@ -0,0 +1,520 @@
1
+ ---
2
+ createdAt: 2025-04-18
3
+ updatedAt: 2025-12-30
4
+ title: "Як перекласти ваш додаток на Vite та Svelte — посібник i18n 2026"
5
+ description: "Дізнайтеся, як зробити ваш вебсайт на Vite та Svelte багатомовним. Дотримуйтеся документації, щоб інтернаціоналізувати (i18n) і перекласти його."
6
+ keywords:
7
+ - Інтернаціоналізація
8
+ - Документація
9
+ - Intlayer
10
+ - Vite
11
+ - Svelte
12
+ - JavaScript
13
+ slugs:
14
+ - doc
15
+ - environment
16
+ - vite-and-svelte
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-vite-svelte-template
18
+ history:
19
+ - version: 7.5.9
20
+ date: 2025-12-30
21
+ changes: Додано команду init
22
+ - version: 5.5.11
23
+ date: 2025-11-19
24
+ changes: Оновлено документацію
25
+ - version: 5.5.10
26
+ date: 2025-06-29
27
+ changes: Ініціалізовано історію
28
+ ---
29
+
30
+ # Перекладіть ваш вебсайт на Vite та Svelte за допомогою Intlayer | Інтернаціоналізація (i18n)
31
+
32
+ ## Зміст
33
+
34
+ <TOC/>
35
+
36
+ ## Що таке Intlayer?
37
+
38
+ **Intlayer** — це інноваційна open-source бібліотека для інтернаціоналізації (i18n), створена для спрощення підтримки багатомовності в сучасних вебдодатках.
39
+
40
+ З Intlayer ви можете:
41
+
42
+ - **Легко керувати перекладами** за допомогою декларативних словників на рівні компонентів.
43
+ - **Динамічно локалізувати метадані, маршрути й вміст.**
44
+ - **Забезпечити підтримку TypeScript** за допомогою автогенерованих типів, що покращує автодоповнення та виявлення помилок.
45
+ - **Скористатися розширеними можливостями**, такими як динамічне визначення та перемикання локалі.
46
+
47
+ ---
48
+
49
+ ## Покрокове керівництво зі встановлення Intlayer у Vite та Svelte додаток
50
+
51
+ <iframe
52
+ src="https://stackblitz.com/github/aymericzip/intlayer-vite-react-template?embed=1&ctl=1&file=intlayer.config.ts"
53
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
54
+ title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
55
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
56
+ loading="lazy"
57
+ />
58
+
59
+ Перегляньте [Application Template](https://github.com/aymericzip/intlayer-vite-svelte-template) на GitHub.
60
+
61
+ ### Крок 1: Встановлення залежностей
62
+
63
+ Встановіть необхідні пакети за допомогою npm:
64
+
65
+ ```bash packageManager="npm"
66
+ npm install intlayer svelte-intlayer
67
+ npm install vite-intlayer --save-dev
68
+ npx intlayer init
69
+ ```
70
+
71
+ ```bash packageManager="pnpm"
72
+ pnpm add intlayer svelte-intlayer
73
+ pnpm add vite-intlayer --save-dev
74
+ pnpm intlayer init
75
+ ```
76
+
77
+ ```bash packageManager="yarn"
78
+ yarn add intlayer svelte-intlayer
79
+ yarn add vite-intlayer --save-dev
80
+ yarn intlayer init
81
+ ```
82
+
83
+ ```bash packageManager="bun"
84
+ bun add intlayer svelte-intlayer
85
+ bun add vite-intlayer --save-dev
86
+ bunx intlayer init
87
+ ```
88
+
89
+ - **intlayer**
90
+
91
+ Основний пакет, який надає інструменти для інтернаціоналізації: управління конфігурацією, переклади, [оголошення контенту](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).
92
+
93
+ - **svelte-intlayer**
94
+ Пакет, який інтегрує Intlayer у Svelte-додаток. Він надає провайдери контексту та хуки для інтернаціоналізації у Svelte.
95
+
96
+ - **vite-intlayer**
97
+ Містить плагін Vite для інтеграції Intlayer з [Vite bundler](https://vite.dev/guide/why.html#why-bundle-for-production), а також middleware для виявлення переважної мови користувача, керування cookies та обробки перенаправлень URL.
98
+
99
+ ### Крок 2: Конфігурація вашого проєкту
100
+
101
+ Створіть конфігураційний файл для налаштування мов вашого застосунку:
102
+
103
+ ```typescript fileName="intlayer.config.ts"
104
+ import { Locales, type IntlayerConfig } from "intlayer";
105
+
106
+ const config: IntlayerConfig = {
107
+ internationalization: {
108
+ locales: [
109
+ Locales.ENGLISH,
110
+ Locales.FRENCH,
111
+ Locales.SPANISH,
112
+ // Your other locales
113
+ ],
114
+ defaultLocale: Locales.ENGLISH,
115
+ },
116
+ };
117
+
118
+ export default config;
119
+ ```
120
+
121
+ > Через цей конфігураційний файл ви можете налаштувати локалізовані URL-адреси, перенаправлення в middleware, назви cookie, розташування та розширення ваших декларацій контенту, вимкнути логи Intlayer у консолі та інше. Для повного списку доступних параметрів зверніться до [документації з конфігурації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md).
122
+
123
+ ### Крок 3: Інтеграція Intlayer у конфігурацію Vite
124
+
125
+ Додайте плагін intlayer до вашої конфігурації.
126
+
127
+ ```typescript fileName="vite.config.ts"
128
+ import { defineConfig } from "vite";
129
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
130
+ import { intlayer } from "vite-intlayer";
131
+
132
+ // Документація конфігурації: https://vitejs.dev/config/
133
+ export default defineConfig({
134
+ plugins: [svelte(), intlayer()],
135
+ });
136
+ ```
137
+
138
+ > Плагін Vite `intlayer()` використовується для інтеграції Intlayer з Vite. Він забезпечує побудову файлів декларацій контенту та відстежує їх у режимі розробки. Він визначає змінні середовища Intlayer у Vite-додатку. Додатково він надаєаліаси (aliases) для оптимізації продуктивності.
139
+
140
+ ### Крок 4: Оголосіть свій контент
141
+
142
+ Створюйте та керуйте деклараціями контенту для зберігання перекладів:
143
+
144
+ ```tsx fileName="src/app.content.tsx" contentDeclarationFormat="typescript"
145
+ import { t, type Dictionary } from "intlayer";
146
+
147
+ const appContent = {
148
+ key: "app",
149
+ content: {
150
+ title: t({
151
+ uk: "Привіт, світ",
152
+ en: "Hello World",
153
+ fr: "Bonjour le monde",
154
+ es: "Hola mundo",
155
+ }),
156
+ },
157
+ } satisfies Dictionary;
158
+
159
+ export default appContent;
160
+ ```
161
+
162
+ ```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
163
+ import { t } from "intlayer";
164
+
165
+ /** @type {import('intlayer').Dictionary} */ // Тип: Dictionary з intlayer
166
+ const appContent = {
167
+ key: "app",
168
+ content: {
169
+ title: t({
170
+ uk: "Привіт, світ",
171
+ en: "Hello World",
172
+ fr: "Bonjour le monde",
173
+ es: "Hola mundo",
174
+ }),
175
+ },
176
+ };
177
+
178
+ export default appContent;
179
+ ```
180
+
181
+ ```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
182
+ const { t } = require("intlayer");
183
+
184
+ /** @type {import('intlayer').Dictionary} */ // Тип: Dictionary з intlayer
185
+ const appContent = {
186
+ key: "app",
187
+ content: {
188
+ title: t({
189
+ uk: "Привіт, світ",
190
+ en: "Hello World",
191
+ fr: "Bonjour le monde",
192
+ es: "Hola mundo",
193
+ }),
194
+ },
195
+ };
196
+
197
+ module.exports = appContent;
198
+ ```
199
+
200
+ ```json fileName="src/app.content.json" contentDeclarationFormat="json"
201
+ {
202
+ "$schema": "https://intlayer.org/schema.json",
203
+ "key": "app",
204
+ "content": {
205
+ "title": {
206
+ "nodeType": "translation",
207
+ "translation": {
208
+ "uk": "Привіт, світ",
209
+ "en": "Hello World",
210
+ "fr": "Bonjour le monde",
211
+ "es": "Hola mundo"
212
+ }
213
+ }
214
+ }
215
+ }
216
+ ```
217
+
218
+ > Ваші декларації контенту можуть бути визначені будь-де у вашому додатку, за умови, що вони знаходяться в директорії `contentDir` (за замовчуванням `./src`). І вони повинні відповідати розширенню файлу декларації контенту (за замовчуванням `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
219
+
220
+ > Для докладнішої інформації зверніться до [документації щодо декларації контенту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md).
221
+
222
+ ### Крок 5: Використання Intlayer у вашому коді
223
+
224
+ ```svelte fileName="src/App.svelte"
225
+ <script>
226
+ import { useIntlayer } from "svelte-intlayer";
227
+
228
+ const content = useIntlayer("app");
229
+ </script>
230
+
231
+ <div>
232
+
233
+
234
+ <!-- Відобразити вміст як простий контент -->
235
+ <h1>{$content.title}</h1>
236
+ <!-- Зробити вміст редагованим за допомогою редактора -->
237
+ <h1><svelte:component this={$content.title} /></h1>
238
+ <!-- Відобразити вміст як рядок -->
239
+ <div aria-label={$content.title.value}></div>
240
+ ```
241
+
242
+ ### (Необов'язково) Крок 6: Змініть мову вашого вмісту
243
+
244
+ ```svelte fileName="src/App.svelte"
245
+ <script lang="ts">
246
+ import { getLocaleName } from 'intlayer';
247
+ import { useLocale } from 'svelte-intlayer';
248
+
249
+ // Отримати інформацію про локаль та функцію setLocale
250
+ const { locale, availableLocales, setLocale } = useLocale();
251
+
252
+ // Обробка зміни локалі
253
+ const changeLocale = (event: Event) => {
254
+ const target = event.target as HTMLSelectElement;
255
+ const newLocale = target.value;
256
+ setLocale(newLocale);
257
+ };
258
+ </script>
259
+
260
+ <div>
261
+ <select value={$locale} on:change={changeLocale}>
262
+ {#each availableLocales ?? [] as loc}
263
+ <option value={loc}>
264
+ {getLocaleName(loc)}
265
+ </option>
266
+ {/each}
267
+ </select>
268
+ </div>
269
+ ```
270
+
271
+ ### (Необов'язково) Крок 7: Відображення Markdown
272
+
273
+ Intlayer підтримує рендеринг вмісту в Markdown безпосередньо у вашому Svelte-застосунку. За замовчуванням Markdown розглядається як звичайний текст. Щоб перетворити Markdown у багате HTML-представлення, ви можете інтегрувати `@humanspeak/svelte-markdown` або інший Markdown-парсер.
274
+
275
+ > Щоб дізнатися, як оголосити markdown-контент за допомогою пакета `intlayer`, див. [документацію з markdown](https://github.com/aymericzip/intlayer/tree/main/docs/uk/dictionary/markdown.md).
276
+
277
+ ```svelte fileName="src/App.svelte"
278
+ <script>
279
+ import { setIntlayerMarkdown } from "svelte-intlayer";
280
+
281
+ setIntlayerMarkdown((markdown) =>
282
+ // відобразити вміст markdown як рядок
283
+ return markdown;
284
+ );
285
+ </script>
286
+
287
+ <h1>{$content.markdownContent}</h1>
288
+ ```
289
+
290
+ > Ви також можете отримати доступ до даних front-matter вашого markdown за допомогою властивості `content.markdownContent.metadata.xxx`.
291
+
292
+ ### (Необов'язково) Крок 8: Налаштування intlayer editor / CMS
293
+
294
+ Щоб налаштувати intlayer editor, дотримуйтесь [документації intlayer editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md).
295
+
296
+ Щоб налаштувати intlayer CMS, дотримуйтесь [документації intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md).
297
+
298
+ Паралельно, у вашому Svelte-застосунку потрібно додати наступний рядок у layout або в корені застосунку:
299
+
300
+ ```svelte fileName="src/layout.svelte"
301
+ import { useIntlayerEditor } from "svelte-intlayer";
302
+
303
+ useIntlayerEditor();
304
+ ```
305
+
306
+ ### (Необов'язково) Крок 7: Додайте локалізований Routing у ваш застосунок
307
+
308
+ Щоб обробляти локалізовану маршрутизацію в Svelte-застосунку, ви можете використовувати `svelte-spa-router` разом з `localeFlatMap` від Intlayer для генерації маршрутів для кожної локалі.
309
+
310
+ Спочатку встановіть `svelte-spa-router`:
311
+
312
+ ```bash packageManager="npm"
313
+ npm install svelte-spa-router
314
+ npx intlayer init
315
+ ```
316
+
317
+ ```bash packageManager="pnpm"
318
+ pnpm add svelte-spa-router
319
+ pnpm intlayer init
320
+ ```
321
+
322
+ ```bash packageManager="yarn"
323
+ yarn add svelte-spa-router
324
+ yarn intlayer init
325
+ ```
326
+
327
+ ```bash packageManager="bun"
328
+ bun add svelte-spa-router
329
+ ```
330
+
331
+ Then, create a `Router.svelte` file to define your routes:
332
+
333
+ ```svelte fileName="src/Router.svelte"
334
+ <script lang="ts">
335
+ import { localeFlatMap } from "intlayer";
336
+ import Router from "svelte-spa-router";
337
+ import { wrap } from "svelte-spa-router/wrap";
338
+ import App from "./App.svelte";
339
+
340
+ const routes = Object.fromEntries(
341
+ localeFlatMap(({locale, urlPrefix}) => [
342
+ [
343
+ urlPrefix || '/',
344
+ wrap({
345
+ component: App as any,
346
+ props: {
347
+ locale,
348
+ },
349
+ }),
350
+ ],
351
+ ])
352
+ );
353
+ </script>
354
+
355
+ <Router {routes} />
356
+ ```
357
+
358
+ Update your `main.ts` to mount the `Router` component instead of `App`:
359
+
360
+ ```typescript fileName="src/main.ts"
361
+ import { mount } from "svelte";
362
+ import Router from "./Router.svelte";
363
+
364
+ const app = mount(Router, {
365
+ target: document.getElementById("app")!,
366
+ });
367
+
368
+ export default app;
369
+ ```
370
+
371
+ Нарешті, оновіть ваш `App.svelte`, щоб приймати проп `locale` і використовувати його з `useIntlayer`:
372
+
373
+ ```svelte fileName="src/App.svelte"
374
+ <script lang="ts">
375
+ import type { Locale } from 'intlayer';
376
+ import { useIntlayer } from 'svelte-intlayer';
377
+ import Counter from './lib/Counter.svelte';
378
+ import LocaleSwitcher from './lib/LocaleSwitcher.svelte';
379
+
380
+ export let locale: Locale;
381
+
382
+ $: content = useIntlayer('app', locale);
383
+ </script>
384
+
385
+ <main>
386
+ <div class="locale-switcher-container">
387
+ <LocaleSwitcher currentLocale={locale} />
388
+ </div>
389
+
390
+ <!-- ... решта вашого додатка ... -->
391
+ </main>
392
+ ```
393
+
394
+ #### Налаштування маршрутизації на стороні сервера (необов'язково)
395
+
396
+ Паралельно ви також можете використати `intlayerProxy` для додавання маршрутизації на стороні сервера до вашого застосунку. Цей плагін автоматично визначатиме поточну локаль на основі URL і встановлюватиме відповідний cookie для локалі. Якщо локаль не вказана, плагін обере найвідповіднішу локаль на основі налаштувань мови браузера користувача. Якщо локаль не буде виявлена, плагін виконає перенаправлення на локаль за замовчуванням.
397
+
398
+ > Зауважте, що для використання `intlayerProxy` в production потрібно перемістити пакет `vite-intlayer` з `devDependencies` до `dependencies`.
399
+
400
+ ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
401
+ import { defineConfig } from "vite";
402
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
403
+ import { intlayer, intlayerProxy } from "vite-intlayer";
404
+
405
+ // https://vitejs.dev/config/ - конфігурація Vite
406
+ export default defineConfig({
407
+ plugins: [svelte(), intlayer(), intlayerProxy()],
408
+ });
409
+ ```
410
+
411
+ ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
412
+ import { defineConfig } from "vite";
413
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
414
+ import { intlayer, intlayerProxy } from "vite-intlayer";
415
+
416
+ // https://vitejs.dev/config/ - конфігурація Vite
417
+ export default defineConfig({
418
+ plugins: [svelte(), intlayer(), intlayerProxy()],
419
+ });
420
+ ```
421
+
422
+ ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
423
+ const { defineConfig } = require("vite");
424
+ const { svelte } = require("@sveltejs/vite-plugin-svelte");
425
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
426
+
427
+ // https://vitejs.dev/config/ - конфігурація Vite
428
+ module.exports = defineConfig({
429
+ plugins: [svelte(), intlayer(), intlayerProxy()],
430
+ });
431
+ ```
432
+
433
+ ### (Необов'язково) Крок 8: Зміна URL при зміні локалі
434
+
435
+ Щоб дозволити користувачам змінювати мову й відповідно оновлювати URL, ви можете створити компонент `LocaleSwitcher`. Цей компонент використовуватиме `getLocalizedUrl` з `intlayer` та `push` із `svelte-spa-router`.
436
+
437
+ ```svelte fileName="src/lib/LocaleSwitcher.svelte"
438
+ <script lang="ts">
439
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
440
+ import { useLocale } from "svelte-intlayer";
441
+ import { push } from "svelte-spa-router";
442
+
443
+ export let currentLocale: string | undefined = undefined;
444
+
445
+ // Отримати інформацію про локаль
446
+ const { locale, availableLocales } = useLocale();
447
+
448
+ // Обробка зміни локалі
449
+ const changeLocale = (event: Event) => {
450
+ const target = event.target as HTMLSelectElement;
451
+ const newLocale = target.value;
452
+ const currentUrl = window.location.pathname;
453
+ const url = getLocalizedUrl( currentUrl, newLocale);
454
+ push(url);
455
+ };
456
+ </script>
457
+
458
+ <div class="locale-switcher">
459
+ <select value={currentLocale ?? $locale} onchange={changeLocale}>
460
+ {#each availableLocales ?? [] as loc}
461
+ <option value={loc}>
462
+ {getLocaleName(loc)}
463
+ </option>
464
+ {/each}
465
+ </select>
466
+ </div>
467
+ ```
468
+
469
+ ### (Необов'язково) Крок 9: Інтернаціоналізовані посилання
470
+
471
+ Для SEO рекомендується додавати префікс локалі до ваших маршрутів (наприклад, `/about`, `/fr/about`).
472
+
473
+ ```svelte fileName="src/lib/components/Link.svelte"
474
+ <script lang="ts">
475
+ import { getLocalizedUrl } from "intlayer";
476
+ import { useLocale } from 'svelte-intlayer';
477
+
478
+ export let href = "";
479
+ const { locale } = useLocale();
480
+
481
+ // Helper to prefix URL
482
+ $: localizedHref = getLocalizedUrl(href, $locale);
483
+ </script>
484
+
485
+ <a href={localizedHref}>
486
+ <slot />
487
+ </a>
488
+ ```
489
+
490
+ ### Конфігурація Git
491
+
492
+ Рекомендується ігнорувати файли, згенеровані Intlayer. Це дозволяє уникнути їх коміту до вашого Git-репозиторію.
493
+
494
+ Для цього можна додати наступні інструкції до файлу `.gitignore`:
495
+
496
+ ```plaintext
497
+ # Ігнорувати файли, згенеровані Intlayer
498
+ .intlayer
499
+ ```
500
+
501
+ ### Розширення VS Code
502
+
503
+ Щоб покращити ваш досвід розробки з Intlayer, ви можете встановити офіційне **Intlayer VS Code Extension**.
504
+
505
+ [Встановити з VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
506
+
507
+ Це розширення надає:
508
+
509
+ - **Автозаповнення** для ключів перекладу.
510
+ - **Виявлення помилок у реальному часі** для відсутніх перекладів.
511
+ - **Вбудовані попередні перегляди** перекладеного контенту.
512
+ - **Швидкі дії** для швидкого створення й оновлення перекладів.
513
+
514
+ Для детальнішої інформації про використання розширення зверніться до документації [розширення Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).
515
+
516
+ ---
517
+
518
+ ### Розширені можливості
519
+
520
+ Щоб рухатися далі, ви можете реалізувати [візуальний редактор](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).