@intlayer/docs 9.0.0-canary.9 → 9.0.1

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 (1153) hide show
  1. package/blog/ar/internationalization_and_SEO.md +6 -0
  2. package/blog/ar/intlayer_with_i18next.md +4 -4
  3. package/blog/ar/intlayer_with_next-i18next.md +4 -4
  4. package/blog/ar/intlayer_with_next-intl.md +4 -4
  5. package/blog/ar/intlayer_with_react-i18next.md +4 -4
  6. package/blog/ar/intlayer_with_react-intl.md +4 -4
  7. package/blog/ar/intlayer_with_vue-i18n.md +4 -4
  8. package/blog/ar/nextjs-multilingual-seo-comparison.md +6 -0
  9. package/blog/de/internationalization_and_SEO.md +6 -0
  10. package/blog/de/intlayer_with_i18next.md +4 -4
  11. package/blog/de/intlayer_with_next-i18next.md +4 -4
  12. package/blog/de/intlayer_with_next-intl.md +4 -4
  13. package/blog/de/intlayer_with_react-i18next.md +4 -4
  14. package/blog/de/intlayer_with_react-intl.md +4 -4
  15. package/blog/de/intlayer_with_vue-i18n.md +4 -4
  16. package/blog/de/nextjs-multilingual-seo-comparison.md +6 -0
  17. package/blog/en/internationalization_and_SEO.md +6 -0
  18. package/blog/en/intlayer_with_i18next.md +4 -4
  19. package/blog/en/intlayer_with_next-i18next.md +4 -4
  20. package/blog/en/intlayer_with_next-intl.md +4 -4
  21. package/blog/en/intlayer_with_react-i18next.md +4 -4
  22. package/blog/en/intlayer_with_react-intl.md +4 -4
  23. package/blog/en/intlayer_with_vue-i18n.md +4 -4
  24. package/blog/en/nextjs-multilingual-seo-comparison.md +6 -0
  25. package/blog/en/rag_powered_documentation_assistant.md +6 -0
  26. package/blog/en-GB/internationalization_and_SEO.md +6 -0
  27. package/blog/en-GB/intlayer_with_i18next.md +4 -4
  28. package/blog/en-GB/intlayer_with_next-i18next.md +4 -4
  29. package/blog/en-GB/intlayer_with_next-intl.md +4 -4
  30. package/blog/en-GB/intlayer_with_react-i18next.md +4 -4
  31. package/blog/en-GB/intlayer_with_react-intl.md +4 -4
  32. package/blog/en-GB/intlayer_with_vue-i18n.md +4 -4
  33. package/blog/en-GB/nextjs-multilingual-seo-comparison.md +6 -0
  34. package/blog/es/internationalization_and_SEO.md +6 -0
  35. package/blog/es/intlayer_with_i18next.md +4 -4
  36. package/blog/es/intlayer_with_next-i18next.md +4 -4
  37. package/blog/es/intlayer_with_next-intl.md +4 -4
  38. package/blog/es/intlayer_with_react-i18next.md +4 -4
  39. package/blog/es/intlayer_with_react-intl.md +4 -4
  40. package/blog/es/intlayer_with_vue-i18n.md +4 -4
  41. package/blog/es/nextjs-multilingual-seo-comparison.md +6 -0
  42. package/blog/fr/internationalization_and_SEO.md +6 -0
  43. package/blog/fr/intlayer_with_i18next.md +4 -4
  44. package/blog/fr/intlayer_with_next-i18next.md +4 -4
  45. package/blog/fr/intlayer_with_next-intl.md +4 -4
  46. package/blog/fr/intlayer_with_react-i18next.md +4 -4
  47. package/blog/fr/intlayer_with_react-intl.md +4 -4
  48. package/blog/fr/intlayer_with_vue-i18n.md +4 -4
  49. package/blog/fr/nextjs-multilingual-seo-comparison.md +6 -0
  50. package/blog/hi/internationalization_and_SEO.md +6 -0
  51. package/blog/hi/intlayer_with_i18next.md +4 -4
  52. package/blog/hi/intlayer_with_next-i18next.md +4 -4
  53. package/blog/hi/intlayer_with_next-intl.md +4 -4
  54. package/blog/hi/intlayer_with_react-i18next.md +4 -4
  55. package/blog/hi/intlayer_with_react-intl.md +4 -4
  56. package/blog/hi/intlayer_with_vue-i18n.md +4 -4
  57. package/blog/hi/nextjs-multilingual-seo-comparison.md +6 -0
  58. package/blog/id/internationalization_and_SEO.md +6 -0
  59. package/blog/id/intlayer_with_i18next.md +4 -4
  60. package/blog/id/intlayer_with_next-i18next.md +4 -4
  61. package/blog/id/intlayer_with_next-intl.md +4 -4
  62. package/blog/id/intlayer_with_react-i18next.md +4 -4
  63. package/blog/id/intlayer_with_react-intl.md +4 -4
  64. package/blog/id/intlayer_with_vue-i18n.md +4 -4
  65. package/blog/id/nextjs-multilingual-seo-comparison.md +6 -0
  66. package/blog/it/internationalization_and_SEO.md +6 -0
  67. package/blog/it/intlayer_with_i18next.md +4 -4
  68. package/blog/it/intlayer_with_next-i18next.md +4 -4
  69. package/blog/it/intlayer_with_next-intl.md +4 -4
  70. package/blog/it/intlayer_with_react-i18next.md +4 -4
  71. package/blog/it/intlayer_with_react-intl.md +4 -4
  72. package/blog/it/intlayer_with_vue-i18n.md +4 -4
  73. package/blog/it/nextjs-multilingual-seo-comparison.md +6 -0
  74. package/blog/ja/internationalization_and_SEO.md +6 -0
  75. package/blog/ja/intlayer_with_i18next.md +4 -4
  76. package/blog/ja/intlayer_with_next-i18next.md +4 -4
  77. package/blog/ja/intlayer_with_next-intl.md +4 -4
  78. package/blog/ja/intlayer_with_react-i18next.md +4 -4
  79. package/blog/ja/intlayer_with_react-intl.md +4 -4
  80. package/blog/ja/intlayer_with_vue-i18n.md +4 -4
  81. package/blog/ja/nextjs-multilingual-seo-comparison.md +6 -0
  82. package/blog/ko/internationalization_and_SEO.md +6 -0
  83. package/blog/ko/intlayer_with_i18next.md +4 -4
  84. package/blog/ko/intlayer_with_next-i18next.md +4 -4
  85. package/blog/ko/intlayer_with_next-intl.md +4 -4
  86. package/blog/ko/intlayer_with_react-i18next.md +4 -4
  87. package/blog/ko/intlayer_with_react-intl.md +4 -4
  88. package/blog/ko/intlayer_with_vue-i18n.md +4 -4
  89. package/blog/ko/nextjs-multilingual-seo-comparison.md +6 -0
  90. package/blog/pl/internationalization_and_SEO.md +6 -0
  91. package/blog/pl/intlayer_with_i18next.md +4 -4
  92. package/blog/pl/intlayer_with_next-i18next.md +4 -4
  93. package/blog/pl/intlayer_with_next-intl.md +4 -4
  94. package/blog/pl/intlayer_with_react-i18next.md +4 -4
  95. package/blog/pl/intlayer_with_react-intl.md +4 -4
  96. package/blog/pl/intlayer_with_vue-i18n.md +4 -4
  97. package/blog/pl/nextjs-multilingual-seo-comparison.md +6 -0
  98. package/blog/pt/internationalization_and_SEO.md +6 -0
  99. package/blog/pt/intlayer_with_i18next.md +4 -4
  100. package/blog/pt/intlayer_with_next-i18next.md +4 -4
  101. package/blog/pt/intlayer_with_next-intl.md +4 -4
  102. package/blog/pt/intlayer_with_react-i18next.md +4 -4
  103. package/blog/pt/intlayer_with_react-intl.md +4 -4
  104. package/blog/pt/intlayer_with_vue-i18n.md +4 -4
  105. package/blog/pt/nextjs-multilingual-seo-comparison.md +6 -0
  106. package/blog/ru/internationalization_and_SEO.md +6 -0
  107. package/blog/ru/intlayer_with_i18next.md +4 -4
  108. package/blog/ru/intlayer_with_next-i18next.md +4 -4
  109. package/blog/ru/intlayer_with_next-intl.md +4 -4
  110. package/blog/ru/intlayer_with_react-i18next.md +4 -4
  111. package/blog/ru/intlayer_with_react-intl.md +4 -4
  112. package/blog/ru/intlayer_with_vue-i18n.md +4 -4
  113. package/blog/ru/nextjs-multilingual-seo-comparison.md +6 -0
  114. package/blog/tr/internationalization_and_SEO.md +6 -0
  115. package/blog/tr/intlayer_with_i18next.md +4 -4
  116. package/blog/tr/intlayer_with_next-i18next.md +4 -4
  117. package/blog/tr/intlayer_with_next-intl.md +4 -4
  118. package/blog/tr/intlayer_with_react-i18next.md +4 -4
  119. package/blog/tr/intlayer_with_react-intl.md +4 -4
  120. package/blog/tr/intlayer_with_vue-i18n.md +4 -4
  121. package/blog/tr/nextjs-multilingual-seo-comparison.md +6 -0
  122. package/blog/uk/internationalization_and_SEO.md +6 -0
  123. package/blog/uk/intlayer_with_i18next.md +4 -4
  124. package/blog/uk/intlayer_with_next-i18next.md +4 -4
  125. package/blog/uk/intlayer_with_next-intl.md +4 -4
  126. package/blog/uk/intlayer_with_react-i18next.md +4 -4
  127. package/blog/uk/intlayer_with_react-intl.md +4 -4
  128. package/blog/uk/intlayer_with_vue-i18n.md +4 -4
  129. package/blog/uk/nextjs-multilingual-seo-comparison.md +6 -0
  130. package/blog/vi/internationalization_and_SEO.md +6 -0
  131. package/blog/vi/intlayer_with_i18next.md +4 -4
  132. package/blog/vi/intlayer_with_next-i18next.md +4 -4
  133. package/blog/vi/intlayer_with_next-intl.md +4 -4
  134. package/blog/vi/intlayer_with_react-i18next.md +4 -4
  135. package/blog/vi/intlayer_with_react-intl.md +4 -4
  136. package/blog/vi/intlayer_with_vue-i18n.md +4 -4
  137. package/blog/vi/nextjs-multilingual-seo-comparison.md +6 -0
  138. package/blog/zh/internationalization_and_SEO.md +6 -0
  139. package/blog/zh/nextjs-multilingual-seo-comparison.md +6 -0
  140. package/dist/cjs/authors.cjs.map +1 -1
  141. package/dist/cjs/blog.cjs.map +1 -1
  142. package/dist/cjs/common.cjs +2 -1
  143. package/dist/cjs/common.cjs.map +1 -1
  144. package/dist/cjs/doc.cjs.map +1 -1
  145. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  146. package/dist/cjs/generated/blog.entry.cjs +0 -1
  147. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  148. package/dist/cjs/generated/docs.entry.cjs +60 -1
  149. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  150. package/dist/cjs/generated/frequentQuestions.entry.cjs +0 -1
  151. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  152. package/dist/cjs/generated/legal.entry.cjs +0 -1
  153. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  154. package/dist/cjs/legal.cjs.map +1 -1
  155. package/dist/esm/authors.mjs.map +1 -1
  156. package/dist/esm/blog.mjs.map +1 -1
  157. package/dist/esm/common.mjs +2 -1
  158. package/dist/esm/common.mjs.map +1 -1
  159. package/dist/esm/doc.mjs.map +1 -1
  160. package/dist/esm/frequentQuestions.mjs.map +1 -1
  161. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  162. package/dist/esm/generated/docs.entry.mjs +60 -0
  163. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  164. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  165. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  166. package/dist/esm/legal.mjs.map +1 -1
  167. package/dist/types/authors.d.ts +16 -8
  168. package/dist/types/authors.d.ts.map +1 -1
  169. package/dist/types/blog.d.ts +0 -1
  170. package/dist/types/blog.d.ts.map +1 -1
  171. package/dist/types/common.d.ts +0 -1
  172. package/dist/types/common.d.ts.map +1 -1
  173. package/dist/types/doc.d.ts +0 -1
  174. package/dist/types/doc.d.ts.map +1 -1
  175. package/dist/types/frequentQuestions.d.ts +0 -1
  176. package/dist/types/frequentQuestions.d.ts.map +1 -1
  177. package/dist/types/generated/blog.entry.d.ts +0 -1
  178. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  179. package/dist/types/generated/docs.entry.d.ts +3 -1
  180. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  181. package/dist/types/generated/frequentQuestions.entry.d.ts +0 -1
  182. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  183. package/dist/types/generated/legal.entry.d.ts +0 -1
  184. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  185. package/dist/types/legal.d.ts +0 -1
  186. package/dist/types/legal.d.ts.map +1 -1
  187. package/docs/ar/bundle_optimization.md +16 -0
  188. package/docs/ar/cli/index.md +1 -1
  189. package/docs/ar/cli/scan.md +2 -2
  190. package/docs/ar/configuration.md +42 -1
  191. package/docs/ar/how_works_intlayer.md +2 -2
  192. package/docs/ar/intlayer_CMS.md +14 -122
  193. package/docs/ar/intlayer_with_adonisjs.md +4 -4
  194. package/docs/ar/intlayer_with_analog.md +4 -4
  195. package/docs/ar/intlayer_with_angular_19.md +4 -4
  196. package/docs/ar/intlayer_with_angular_21.md +4 -4
  197. package/docs/ar/intlayer_with_astro_lit.md +7 -7
  198. package/docs/ar/intlayer_with_astro_preact.md +4 -4
  199. package/docs/ar/intlayer_with_astro_react.md +4 -4
  200. package/docs/ar/intlayer_with_astro_solid.md +4 -4
  201. package/docs/ar/intlayer_with_astro_svelte.md +4 -4
  202. package/docs/ar/intlayer_with_astro_vanilla.md +4 -4
  203. package/docs/ar/intlayer_with_astro_vue.md +4 -4
  204. package/docs/ar/intlayer_with_create_react_app.md +4 -4
  205. package/docs/ar/intlayer_with_express.md +4 -4
  206. package/docs/ar/intlayer_with_fastify.md +4 -4
  207. package/docs/ar/intlayer_with_hono.md +4 -4
  208. package/docs/ar/intlayer_with_lynx+react.md +4 -4
  209. package/docs/ar/intlayer_with_nestjs.md +4 -4
  210. package/docs/ar/intlayer_with_next-i18next.md +4 -4
  211. package/docs/ar/intlayer_with_nextjs_14.md +4 -4
  212. package/docs/ar/intlayer_with_nextjs_15.md +6 -8
  213. package/docs/ar/intlayer_with_nextjs_16.md +6 -8
  214. package/docs/ar/intlayer_with_nextjs_compiler.md +5 -7
  215. package/docs/ar/intlayer_with_nextjs_no_locale_path.md +6 -8
  216. package/docs/ar/intlayer_with_nextjs_page_router.md +4 -4
  217. package/docs/ar/intlayer_with_nuxt.md +5 -5
  218. package/docs/ar/intlayer_with_react_native+expo.md +4 -4
  219. package/docs/ar/intlayer_with_react_router_v7.md +5 -5
  220. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +5 -5
  221. package/docs/ar/intlayer_with_svelte_kit.md +4 -4
  222. package/docs/ar/intlayer_with_tanstack+solid.md +5 -5
  223. package/docs/ar/intlayer_with_tanstack.md +6 -7
  224. package/docs/ar/intlayer_with_vite+lit.md +4 -4
  225. package/docs/ar/intlayer_with_vite+preact.md +5 -5
  226. package/docs/ar/intlayer_with_vite+react.md +5 -5
  227. package/docs/ar/intlayer_with_vite+react_compiler.md +5 -5
  228. package/docs/ar/intlayer_with_vite+solid.md +5 -5
  229. package/docs/ar/intlayer_with_vite+svelte.md +4 -4
  230. package/docs/ar/intlayer_with_vite+vanilla.md +4 -4
  231. package/docs/ar/intlayer_with_vite+vue.md +5 -5
  232. package/docs/ar/live-sync.md +174 -0
  233. package/docs/ar/migration_from_i18next_to_intlayer.md +4 -4
  234. package/docs/ar/migration_from_next-i18next_to_intlayer.md +4 -4
  235. package/docs/ar/migration_from_next-intl_to_intlayer.md +5 -7
  236. package/docs/ar/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  237. package/docs/ar/migration_from_react-i18next_to_intlayer.md +5 -7
  238. package/docs/ar/migration_from_vue-i18n_to_intlayer.md +4 -4
  239. package/docs/ar/releases/v9.md +128 -33
  240. package/docs/ar/self_hosting.md +350 -0
  241. package/docs/bn/bundle_optimization.md +16 -0
  242. package/docs/bn/cli/index.md +1 -1
  243. package/docs/bn/cli/scan.md +2 -2
  244. package/docs/bn/configuration.md +45 -1
  245. package/docs/bn/intlayer_CMS.md +570 -0
  246. package/docs/bn/intlayer_with_angular_21.md +4 -4
  247. package/docs/bn/intlayer_with_fastify.md +4 -4
  248. package/docs/bn/intlayer_with_hono.md +4 -4
  249. package/docs/bn/intlayer_with_vite+lit.md +4 -4
  250. package/docs/bn/intlayer_with_vite+vanilla.md +4 -4
  251. package/docs/bn/releases/v9.md +349 -0
  252. package/docs/cs/bundle_optimization.md +16 -0
  253. package/docs/cs/cli/index.md +1 -1
  254. package/docs/cs/cli/scan.md +2 -2
  255. package/docs/cs/configuration.md +45 -1
  256. package/docs/cs/intlayer_with_angular_21.md +4 -4
  257. package/docs/cs/intlayer_with_fastify.md +4 -4
  258. package/docs/cs/intlayer_with_hono.md +4 -4
  259. package/docs/cs/intlayer_with_vite+lit.md +4 -4
  260. package/docs/cs/intlayer_with_vite+vanilla.md +4 -4
  261. package/docs/cs/releases/v9.md +349 -0
  262. package/docs/de/bundle_optimization.md +16 -0
  263. package/docs/de/cli/index.md +1 -1
  264. package/docs/de/cli/scan.md +2 -2
  265. package/docs/de/configuration.md +42 -1
  266. package/docs/de/how_works_intlayer.md +2 -2
  267. package/docs/de/intlayer_CMS.md +86 -100
  268. package/docs/de/intlayer_with_adonisjs.md +4 -4
  269. package/docs/de/intlayer_with_analog.md +4 -4
  270. package/docs/de/intlayer_with_angular_19.md +4 -4
  271. package/docs/de/intlayer_with_angular_21.md +4 -4
  272. package/docs/de/intlayer_with_astro_lit.md +7 -7
  273. package/docs/de/intlayer_with_astro_preact.md +4 -4
  274. package/docs/de/intlayer_with_astro_react.md +4 -4
  275. package/docs/de/intlayer_with_astro_solid.md +4 -4
  276. package/docs/de/intlayer_with_astro_svelte.md +4 -4
  277. package/docs/de/intlayer_with_astro_vanilla.md +4 -4
  278. package/docs/de/intlayer_with_astro_vue.md +4 -4
  279. package/docs/de/intlayer_with_create_react_app.md +4 -4
  280. package/docs/de/intlayer_with_express.md +4 -4
  281. package/docs/de/intlayer_with_fastify.md +4 -4
  282. package/docs/de/intlayer_with_hono.md +4 -4
  283. package/docs/de/intlayer_with_lynx+react.md +4 -4
  284. package/docs/de/intlayer_with_nestjs.md +4 -4
  285. package/docs/de/intlayer_with_next-i18next.md +4 -4
  286. package/docs/de/intlayer_with_nextjs_14.md +4 -4
  287. package/docs/de/intlayer_with_nextjs_15.md +6 -8
  288. package/docs/de/intlayer_with_nextjs_16.md +6 -8
  289. package/docs/de/intlayer_with_nextjs_no_locale_path.md +6 -8
  290. package/docs/de/intlayer_with_nextjs_page_router.md +4 -4
  291. package/docs/de/intlayer_with_nuxt.md +5 -5
  292. package/docs/de/intlayer_with_react_native+expo.md +4 -4
  293. package/docs/de/intlayer_with_react_router_v7.md +5 -5
  294. package/docs/de/intlayer_with_svelte_kit.md +4 -4
  295. package/docs/de/intlayer_with_tanstack+solid.md +5 -5
  296. package/docs/de/intlayer_with_tanstack.md +6 -7
  297. package/docs/de/intlayer_with_vite+lit.md +4 -4
  298. package/docs/de/intlayer_with_vite+preact.md +5 -5
  299. package/docs/de/intlayer_with_vite+react.md +5 -5
  300. package/docs/de/intlayer_with_vite+react_compiler.md +5 -5
  301. package/docs/de/intlayer_with_vite+solid.md +5 -5
  302. package/docs/de/intlayer_with_vite+vanilla.md +4 -4
  303. package/docs/de/intlayer_with_vite+vue.md +5 -5
  304. package/docs/de/live-sync.md +174 -0
  305. package/docs/de/migration_from_i18next_to_intlayer.md +4 -4
  306. package/docs/de/migration_from_next-i18next_to_intlayer.md +4 -4
  307. package/docs/de/migration_from_next-intl_to_intlayer.md +5 -7
  308. package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  309. package/docs/de/migration_from_react-i18next_to_intlayer.md +5 -7
  310. package/docs/de/migration_from_vue-i18n_to_intlayer.md +4 -4
  311. package/docs/de/releases/v9.md +131 -33
  312. package/docs/de/self_hosting.md +350 -0
  313. package/docs/en/analytics.md +222 -0
  314. package/docs/en/bundle_optimization.md +16 -0
  315. package/docs/en/cli/index.md +1 -1
  316. package/docs/en/cli/scan.md +2 -2
  317. package/docs/en/configuration.md +42 -1
  318. package/docs/en/dictionary/content_file.md +2 -2
  319. package/docs/en/how_works_intlayer.md +2 -2
  320. package/docs/en/intlayer_CMS.md +143 -107
  321. package/docs/en/intlayer_with_adonisjs.md +4 -4
  322. package/docs/en/intlayer_with_analog.md +4 -4
  323. package/docs/en/intlayer_with_angular_19.md +4 -4
  324. package/docs/en/intlayer_with_angular_21.md +4 -4
  325. package/docs/en/intlayer_with_astro.md +4 -4
  326. package/docs/en/intlayer_with_astro_lit.md +7 -7
  327. package/docs/en/intlayer_with_astro_preact.md +4 -4
  328. package/docs/en/intlayer_with_astro_react.md +4 -4
  329. package/docs/en/intlayer_with_astro_solid.md +4 -4
  330. package/docs/en/intlayer_with_astro_svelte.md +4 -4
  331. package/docs/en/intlayer_with_astro_vanilla.md +4 -4
  332. package/docs/en/intlayer_with_astro_vue.md +4 -4
  333. package/docs/en/intlayer_with_create_react_app.md +4 -4
  334. package/docs/en/intlayer_with_express.md +4 -4
  335. package/docs/en/intlayer_with_fastify.md +4 -4
  336. package/docs/en/intlayer_with_hono.md +4 -4
  337. package/docs/en/intlayer_with_lynx+react.md +4 -4
  338. package/docs/en/intlayer_with_nestjs.md +4 -4
  339. package/docs/en/intlayer_with_next-i18next.md +4 -4
  340. package/docs/en/intlayer_with_nextjs_14.md +4 -4
  341. package/docs/en/intlayer_with_nextjs_15.md +5 -7
  342. package/docs/en/intlayer_with_nextjs_16.md +6 -8
  343. package/docs/en/intlayer_with_nextjs_compiler.md +6 -8
  344. package/docs/en/intlayer_with_nextjs_no_locale_path.md +6 -8
  345. package/docs/en/intlayer_with_nextjs_page_router.md +4 -4
  346. package/docs/en/intlayer_with_nuxt.md +5 -5
  347. package/docs/en/intlayer_with_react_native+expo.md +4 -4
  348. package/docs/en/intlayer_with_react_router_v7.md +5 -5
  349. package/docs/en/intlayer_with_svelte_kit.md +4 -4
  350. package/docs/en/intlayer_with_tanstack+solid.md +5 -5
  351. package/docs/en/intlayer_with_tanstack.md +6 -7
  352. package/docs/en/intlayer_with_vite+lit.md +4 -4
  353. package/docs/en/intlayer_with_vite+preact.md +5 -5
  354. package/docs/en/intlayer_with_vite+react.md +5 -5
  355. package/docs/en/intlayer_with_vite+react_compiler.md +5 -5
  356. package/docs/en/intlayer_with_vite+solid.md +5 -5
  357. package/docs/en/intlayer_with_vite+svelte.md +4 -4
  358. package/docs/en/intlayer_with_vite+vanilla.md +4 -4
  359. package/docs/en/intlayer_with_vite+vue.md +5 -5
  360. package/docs/en/live-sync.md +184 -0
  361. package/docs/en/migration_from_i18next_to_intlayer.md +4 -4
  362. package/docs/en/migration_from_next-i18next_to_intlayer.md +4 -4
  363. package/docs/en/migration_from_next-intl_to_intlayer.md +5 -7
  364. package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  365. package/docs/en/migration_from_react-i18next_to_intlayer.md +5 -7
  366. package/docs/en/migration_from_vue-i18n_to_intlayer.md +4 -4
  367. package/docs/en/releases/v9.md +124 -29
  368. package/docs/en/self_hosting.md +310 -0
  369. package/docs/en-GB/bundle_optimization.md +16 -0
  370. package/docs/en-GB/cli/index.md +1 -1
  371. package/docs/en-GB/cli/scan.md +2 -2
  372. package/docs/en-GB/configuration.md +42 -1
  373. package/docs/en-GB/how_works_intlayer.md +2 -2
  374. package/docs/en-GB/intlayer_CMS.md +14 -122
  375. package/docs/en-GB/intlayer_with_adonisjs.md +4 -4
  376. package/docs/en-GB/intlayer_with_analog.md +4 -4
  377. package/docs/en-GB/intlayer_with_angular_19.md +4 -4
  378. package/docs/en-GB/intlayer_with_angular_21.md +4 -4
  379. package/docs/en-GB/intlayer_with_astro_lit.md +7 -7
  380. package/docs/en-GB/intlayer_with_astro_preact.md +4 -4
  381. package/docs/en-GB/intlayer_with_astro_react.md +4 -4
  382. package/docs/en-GB/intlayer_with_astro_solid.md +4 -4
  383. package/docs/en-GB/intlayer_with_astro_svelte.md +4 -4
  384. package/docs/en-GB/intlayer_with_astro_vanilla.md +4 -4
  385. package/docs/en-GB/intlayer_with_astro_vue.md +4 -4
  386. package/docs/en-GB/intlayer_with_create_react_app.md +8 -8
  387. package/docs/en-GB/intlayer_with_express.md +4 -4
  388. package/docs/en-GB/intlayer_with_fastify.md +4 -4
  389. package/docs/en-GB/intlayer_with_hono.md +4 -4
  390. package/docs/en-GB/intlayer_with_lynx+react.md +8 -8
  391. package/docs/en-GB/intlayer_with_nestjs.md +4 -4
  392. package/docs/en-GB/intlayer_with_next-i18next.md +4 -4
  393. package/docs/en-GB/intlayer_with_nextjs_14.md +4 -4
  394. package/docs/en-GB/intlayer_with_nextjs_15.md +6 -8
  395. package/docs/en-GB/intlayer_with_nextjs_16.md +6 -8
  396. package/docs/en-GB/intlayer_with_nextjs_compiler.md +5 -7
  397. package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +6 -8
  398. package/docs/en-GB/intlayer_with_nextjs_page_router.md +4 -4
  399. package/docs/en-GB/intlayer_with_nuxt.md +5 -5
  400. package/docs/en-GB/intlayer_with_react_native+expo.md +4 -4
  401. package/docs/en-GB/intlayer_with_react_router_v7.md +5 -5
  402. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +5 -5
  403. package/docs/en-GB/intlayer_with_svelte_kit.md +4 -4
  404. package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -5
  405. package/docs/en-GB/intlayer_with_tanstack.md +6 -7
  406. package/docs/en-GB/intlayer_with_vite+lit.md +4 -4
  407. package/docs/en-GB/intlayer_with_vite+preact.md +5 -5
  408. package/docs/en-GB/intlayer_with_vite+react.md +5 -5
  409. package/docs/en-GB/intlayer_with_vite+react_compiler.md +5 -5
  410. package/docs/en-GB/intlayer_with_vite+solid.md +5 -5
  411. package/docs/en-GB/intlayer_with_vite+svelte.md +4 -4
  412. package/docs/en-GB/intlayer_with_vite+vanilla.md +4 -4
  413. package/docs/en-GB/intlayer_with_vite+vue.md +5 -5
  414. package/docs/en-GB/live-sync.md +173 -0
  415. package/docs/en-GB/migration_from_i18next_to_intlayer.md +4 -4
  416. package/docs/en-GB/migration_from_next-i18next_to_intlayer.md +4 -4
  417. package/docs/en-GB/migration_from_next-intl_to_intlayer.md +5 -7
  418. package/docs/en-GB/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  419. package/docs/en-GB/migration_from_react-i18next_to_intlayer.md +5 -7
  420. package/docs/en-GB/migration_from_vue-i18n_to_intlayer.md +4 -4
  421. package/docs/en-GB/releases/v9.md +117 -26
  422. package/docs/en-GB/self_hosting.md +350 -0
  423. package/docs/es/bundle_optimization.md +16 -0
  424. package/docs/es/cli/index.md +1 -1
  425. package/docs/es/cli/scan.md +2 -2
  426. package/docs/es/configuration.md +42 -1
  427. package/docs/es/how_works_intlayer.md +2 -2
  428. package/docs/es/intlayer_CMS.md +85 -104
  429. package/docs/es/intlayer_with_adonisjs.md +4 -4
  430. package/docs/es/intlayer_with_analog.md +4 -4
  431. package/docs/es/intlayer_with_angular_19.md +4 -4
  432. package/docs/es/intlayer_with_angular_21.md +4 -4
  433. package/docs/es/intlayer_with_astro_lit.md +7 -7
  434. package/docs/es/intlayer_with_astro_preact.md +4 -4
  435. package/docs/es/intlayer_with_astro_react.md +4 -4
  436. package/docs/es/intlayer_with_astro_solid.md +4 -4
  437. package/docs/es/intlayer_with_astro_svelte.md +4 -4
  438. package/docs/es/intlayer_with_astro_vanilla.md +4 -4
  439. package/docs/es/intlayer_with_astro_vue.md +4 -4
  440. package/docs/es/intlayer_with_create_react_app.md +4 -4
  441. package/docs/es/intlayer_with_express.md +4 -4
  442. package/docs/es/intlayer_with_fastify.md +4 -4
  443. package/docs/es/intlayer_with_hono.md +4 -4
  444. package/docs/es/intlayer_with_lynx+react.md +4 -4
  445. package/docs/es/intlayer_with_nestjs.md +4 -4
  446. package/docs/es/intlayer_with_next-i18next.md +4 -4
  447. package/docs/es/intlayer_with_nextjs_14.md +4 -4
  448. package/docs/es/intlayer_with_nextjs_15.md +6 -8
  449. package/docs/es/intlayer_with_nextjs_16.md +6 -8
  450. package/docs/es/intlayer_with_nextjs_compiler.md +5 -7
  451. package/docs/es/intlayer_with_nextjs_no_locale_path.md +6 -8
  452. package/docs/es/intlayer_with_nextjs_page_router.md +4 -4
  453. package/docs/es/intlayer_with_nuxt.md +5 -5
  454. package/docs/es/intlayer_with_react_native+expo.md +4 -4
  455. package/docs/es/intlayer_with_react_router_v7.md +5 -5
  456. package/docs/es/intlayer_with_svelte_kit.md +4 -4
  457. package/docs/es/intlayer_with_tanstack+solid.md +5 -5
  458. package/docs/es/intlayer_with_tanstack.md +6 -7
  459. package/docs/es/intlayer_with_vite+lit.md +4 -4
  460. package/docs/es/intlayer_with_vite+preact.md +5 -5
  461. package/docs/es/intlayer_with_vite+react.md +5 -5
  462. package/docs/es/intlayer_with_vite+react_compiler.md +5 -5
  463. package/docs/es/intlayer_with_vite+solid.md +5 -5
  464. package/docs/es/intlayer_with_vite+svelte.md +4 -4
  465. package/docs/es/intlayer_with_vite+vanilla.md +4 -4
  466. package/docs/es/intlayer_with_vite+vue.md +5 -5
  467. package/docs/es/live-sync.md +176 -0
  468. package/docs/es/migration_from_i18next_to_intlayer.md +4 -4
  469. package/docs/es/migration_from_next-i18next_to_intlayer.md +4 -4
  470. package/docs/es/migration_from_next-intl_to_intlayer.md +5 -7
  471. package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  472. package/docs/es/migration_from_react-i18next_to_intlayer.md +5 -7
  473. package/docs/es/migration_from_vue-i18n_to_intlayer.md +4 -4
  474. package/docs/es/releases/v9.md +131 -33
  475. package/docs/es/self_hosting.md +350 -0
  476. package/docs/fr/bundle_optimization.md +16 -0
  477. package/docs/fr/cli/index.md +1 -1
  478. package/docs/fr/cli/scan.md +2 -2
  479. package/docs/fr/configuration.md +42 -1
  480. package/docs/fr/how_works_intlayer.md +2 -2
  481. package/docs/fr/intlayer_CMS.md +86 -100
  482. package/docs/fr/intlayer_with_adonisjs.md +4 -4
  483. package/docs/fr/intlayer_with_analog.md +4 -4
  484. package/docs/fr/intlayer_with_angular_19.md +4 -4
  485. package/docs/fr/intlayer_with_angular_21.md +4 -4
  486. package/docs/fr/intlayer_with_astro_lit.md +7 -7
  487. package/docs/fr/intlayer_with_astro_preact.md +4 -4
  488. package/docs/fr/intlayer_with_astro_react.md +4 -4
  489. package/docs/fr/intlayer_with_astro_solid.md +4 -4
  490. package/docs/fr/intlayer_with_astro_svelte.md +4 -4
  491. package/docs/fr/intlayer_with_astro_vanilla.md +4 -4
  492. package/docs/fr/intlayer_with_astro_vue.md +4 -4
  493. package/docs/fr/intlayer_with_create_react_app.md +4 -4
  494. package/docs/fr/intlayer_with_express.md +4 -4
  495. package/docs/fr/intlayer_with_fastify.md +4 -4
  496. package/docs/fr/intlayer_with_hono.md +4 -4
  497. package/docs/fr/intlayer_with_lynx+react.md +4 -4
  498. package/docs/fr/intlayer_with_nestjs.md +4 -4
  499. package/docs/fr/intlayer_with_next-i18next.md +4 -4
  500. package/docs/fr/intlayer_with_nextjs_14.md +4 -4
  501. package/docs/fr/intlayer_with_nextjs_15.md +6 -8
  502. package/docs/fr/intlayer_with_nextjs_16.md +6 -8
  503. package/docs/fr/intlayer_with_nextjs_compiler.md +5 -7
  504. package/docs/fr/intlayer_with_nextjs_no_locale_path.md +6 -8
  505. package/docs/fr/intlayer_with_nextjs_page_router.md +4 -4
  506. package/docs/fr/intlayer_with_nuxt.md +5 -5
  507. package/docs/fr/intlayer_with_react_native+expo.md +4 -4
  508. package/docs/fr/intlayer_with_react_router_v7.md +5 -5
  509. package/docs/fr/intlayer_with_svelte_kit.md +4 -4
  510. package/docs/fr/intlayer_with_tanstack+solid.md +5 -5
  511. package/docs/fr/intlayer_with_tanstack.md +6 -7
  512. package/docs/fr/intlayer_with_vite+lit.md +4 -4
  513. package/docs/fr/intlayer_with_vite+preact.md +5 -5
  514. package/docs/fr/intlayer_with_vite+react.md +5 -5
  515. package/docs/fr/intlayer_with_vite+react_compiler.md +5 -5
  516. package/docs/fr/intlayer_with_vite+solid.md +5 -5
  517. package/docs/fr/intlayer_with_vite+svelte.md +4 -4
  518. package/docs/fr/intlayer_with_vite+vanilla.md +4 -4
  519. package/docs/fr/intlayer_with_vite+vue.md +5 -5
  520. package/docs/fr/live-sync.md +174 -0
  521. package/docs/fr/migration_from_i18next_to_intlayer.md +4 -4
  522. package/docs/fr/migration_from_next-i18next_to_intlayer.md +4 -4
  523. package/docs/fr/migration_from_next-intl_to_intlayer.md +5 -7
  524. package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  525. package/docs/fr/migration_from_react-i18next_to_intlayer.md +5 -7
  526. package/docs/fr/migration_from_vue-i18n_to_intlayer.md +4 -4
  527. package/docs/fr/releases/v9.md +131 -25
  528. package/docs/fr/self_hosting.md +350 -0
  529. package/docs/hi/bundle_optimization.md +16 -0
  530. package/docs/hi/cli/index.md +1 -1
  531. package/docs/hi/cli/scan.md +2 -2
  532. package/docs/hi/configuration.md +42 -1
  533. package/docs/hi/how_works_intlayer.md +2 -2
  534. package/docs/hi/intlayer_CMS.md +14 -122
  535. package/docs/hi/intlayer_with_adonisjs.md +4 -4
  536. package/docs/hi/intlayer_with_analog.md +4 -4
  537. package/docs/hi/intlayer_with_angular_19.md +4 -4
  538. package/docs/hi/intlayer_with_angular_21.md +4 -4
  539. package/docs/hi/intlayer_with_astro_vue.md +4 -4
  540. package/docs/hi/intlayer_with_create_react_app.md +4 -4
  541. package/docs/hi/intlayer_with_express.md +4 -4
  542. package/docs/hi/intlayer_with_fastify.md +4 -4
  543. package/docs/hi/intlayer_with_hono.md +4 -4
  544. package/docs/hi/intlayer_with_lynx+react.md +4 -4
  545. package/docs/hi/intlayer_with_nestjs.md +4 -4
  546. package/docs/hi/intlayer_with_next-i18next.md +4 -4
  547. package/docs/hi/intlayer_with_nextjs_14.md +4 -4
  548. package/docs/hi/intlayer_with_nextjs_15.md +6 -8
  549. package/docs/hi/intlayer_with_nextjs_16.md +6 -8
  550. package/docs/hi/intlayer_with_nextjs_compiler.md +4 -4
  551. package/docs/hi/intlayer_with_nextjs_no_locale_path.md +6 -8
  552. package/docs/hi/intlayer_with_nextjs_page_router.md +4 -4
  553. package/docs/hi/intlayer_with_nuxt.md +5 -5
  554. package/docs/hi/intlayer_with_react_native+expo.md +4 -4
  555. package/docs/hi/intlayer_with_react_router_v7.md +5 -5
  556. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +5 -5
  557. package/docs/hi/intlayer_with_svelte_kit.md +4 -4
  558. package/docs/hi/intlayer_with_tanstack+solid.md +5 -5
  559. package/docs/hi/intlayer_with_tanstack.md +6 -7
  560. package/docs/hi/intlayer_with_vite+lit.md +4 -4
  561. package/docs/hi/intlayer_with_vite+preact.md +5 -5
  562. package/docs/hi/intlayer_with_vite+react.md +5 -5
  563. package/docs/hi/intlayer_with_vite+react_compiler.md +5 -5
  564. package/docs/hi/intlayer_with_vite+solid.md +5 -5
  565. package/docs/hi/intlayer_with_vite+svelte.md +4 -4
  566. package/docs/hi/intlayer_with_vite+vanilla.md +4 -4
  567. package/docs/hi/intlayer_with_vite+vue.md +5 -5
  568. package/docs/hi/live-sync.md +174 -0
  569. package/docs/hi/migration_from_i18next_to_intlayer.md +4 -4
  570. package/docs/hi/migration_from_next-i18next_to_intlayer.md +4 -4
  571. package/docs/hi/migration_from_next-intl_to_intlayer.md +5 -7
  572. package/docs/hi/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  573. package/docs/hi/migration_from_react-i18next_to_intlayer.md +5 -7
  574. package/docs/hi/migration_from_vue-i18n_to_intlayer.md +4 -4
  575. package/docs/hi/packages/intlayer/index.md +4 -4
  576. package/docs/hi/releases/v9.md +129 -33
  577. package/docs/hi/self_hosting.md +350 -0
  578. package/docs/id/bundle_optimization.md +16 -0
  579. package/docs/id/cli/index.md +1 -1
  580. package/docs/id/cli/scan.md +2 -2
  581. package/docs/id/configuration.md +42 -1
  582. package/docs/id/how_works_intlayer.md +2 -2
  583. package/docs/id/intlayer_CMS.md +5 -139
  584. package/docs/id/intlayer_with_adonisjs.md +4 -4
  585. package/docs/id/intlayer_with_analog.md +4 -4
  586. package/docs/id/intlayer_with_angular_19.md +4 -4
  587. package/docs/id/intlayer_with_angular_21.md +4 -4
  588. package/docs/id/intlayer_with_astro_lit.md +7 -7
  589. package/docs/id/intlayer_with_astro_preact.md +4 -4
  590. package/docs/id/intlayer_with_astro_react.md +4 -4
  591. package/docs/id/intlayer_with_astro_solid.md +4 -4
  592. package/docs/id/intlayer_with_astro_svelte.md +4 -4
  593. package/docs/id/intlayer_with_astro_vanilla.md +4 -4
  594. package/docs/id/intlayer_with_astro_vue.md +4 -4
  595. package/docs/id/intlayer_with_create_react_app.md +4 -4
  596. package/docs/id/intlayer_with_express.md +4 -4
  597. package/docs/id/intlayer_with_fastify.md +4 -4
  598. package/docs/id/intlayer_with_hono.md +4 -4
  599. package/docs/id/intlayer_with_lynx+react.md +4 -4
  600. package/docs/id/intlayer_with_nestjs.md +4 -4
  601. package/docs/id/intlayer_with_next-i18next.md +4 -4
  602. package/docs/id/intlayer_with_nextjs_14.md +4 -4
  603. package/docs/id/intlayer_with_nextjs_15.md +5 -7
  604. package/docs/id/intlayer_with_nextjs_16.md +6 -8
  605. package/docs/id/intlayer_with_nextjs_compiler.md +4 -4
  606. package/docs/id/intlayer_with_nextjs_no_locale_path.md +6 -8
  607. package/docs/id/intlayer_with_nextjs_page_router.md +4 -4
  608. package/docs/id/intlayer_with_nuxt.md +5 -5
  609. package/docs/id/intlayer_with_react_native+expo.md +4 -4
  610. package/docs/id/intlayer_with_react_router_v7.md +5 -5
  611. package/docs/id/intlayer_with_svelte_kit.md +4 -4
  612. package/docs/id/intlayer_with_tanstack+solid.md +5 -5
  613. package/docs/id/intlayer_with_tanstack.md +6 -7
  614. package/docs/id/intlayer_with_vite+lit.md +4 -4
  615. package/docs/id/intlayer_with_vite+preact.md +5 -5
  616. package/docs/id/intlayer_with_vite+react.md +5 -5
  617. package/docs/id/intlayer_with_vite+react_compiler.md +5 -5
  618. package/docs/id/intlayer_with_vite+solid.md +5 -5
  619. package/docs/id/intlayer_with_vite+svelte.md +4 -4
  620. package/docs/id/intlayer_with_vite+vanilla.md +4 -4
  621. package/docs/id/intlayer_with_vite+vue.md +5 -5
  622. package/docs/id/live-sync.md +185 -0
  623. package/docs/id/migration_from_i18next_to_intlayer.md +4 -4
  624. package/docs/id/migration_from_next-i18next_to_intlayer.md +4 -4
  625. package/docs/id/migration_from_next-intl_to_intlayer.md +5 -7
  626. package/docs/id/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  627. package/docs/id/migration_from_react-i18next_to_intlayer.md +5 -7
  628. package/docs/id/migration_from_vue-i18n_to_intlayer.md +4 -4
  629. package/docs/id/releases/v9.md +101 -33
  630. package/docs/id/self_hosting.md +350 -0
  631. package/docs/it/bundle_optimization.md +16 -0
  632. package/docs/it/cli/index.md +1 -1
  633. package/docs/it/cli/scan.md +2 -2
  634. package/docs/it/configuration.md +42 -1
  635. package/docs/it/how_works_intlayer.md +2 -2
  636. package/docs/it/intlayer_CMS.md +87 -94
  637. package/docs/it/intlayer_with_adonisjs.md +4 -4
  638. package/docs/it/intlayer_with_analog.md +4 -4
  639. package/docs/it/intlayer_with_angular_19.md +4 -4
  640. package/docs/it/intlayer_with_angular_21.md +4 -4
  641. package/docs/it/intlayer_with_astro_lit.md +7 -7
  642. package/docs/it/intlayer_with_astro_preact.md +4 -4
  643. package/docs/it/intlayer_with_astro_react.md +4 -4
  644. package/docs/it/intlayer_with_astro_solid.md +4 -4
  645. package/docs/it/intlayer_with_astro_svelte.md +4 -4
  646. package/docs/it/intlayer_with_astro_vanilla.md +4 -4
  647. package/docs/it/intlayer_with_astro_vue.md +4 -4
  648. package/docs/it/intlayer_with_create_react_app.md +4 -4
  649. package/docs/it/intlayer_with_express.md +4 -4
  650. package/docs/it/intlayer_with_fastify.md +4 -4
  651. package/docs/it/intlayer_with_hono.md +4 -4
  652. package/docs/it/intlayer_with_lynx+react.md +4 -4
  653. package/docs/it/intlayer_with_nestjs.md +4 -4
  654. package/docs/it/intlayer_with_next-i18next.md +4 -4
  655. package/docs/it/intlayer_with_nextjs_14.md +4 -4
  656. package/docs/it/intlayer_with_nextjs_15.md +6 -8
  657. package/docs/it/intlayer_with_nextjs_16.md +6 -8
  658. package/docs/it/intlayer_with_nextjs_compiler.md +5 -7
  659. package/docs/it/intlayer_with_nextjs_no_locale_path.md +6 -8
  660. package/docs/it/intlayer_with_nextjs_page_router.md +4 -4
  661. package/docs/it/intlayer_with_nuxt.md +5 -5
  662. package/docs/it/intlayer_with_react_native+expo.md +4 -4
  663. package/docs/it/intlayer_with_react_router_v7.md +5 -5
  664. package/docs/it/intlayer_with_svelte_kit.md +4 -4
  665. package/docs/it/intlayer_with_tanstack+solid.md +5 -5
  666. package/docs/it/intlayer_with_tanstack.md +6 -7
  667. package/docs/it/intlayer_with_vite+lit.md +4 -4
  668. package/docs/it/intlayer_with_vite+preact.md +5 -5
  669. package/docs/it/intlayer_with_vite+react.md +6 -6
  670. package/docs/it/intlayer_with_vite+react_compiler.md +5 -5
  671. package/docs/it/intlayer_with_vite+solid.md +5 -5
  672. package/docs/it/intlayer_with_vite+svelte.md +4 -4
  673. package/docs/it/intlayer_with_vite+vanilla.md +4 -4
  674. package/docs/it/intlayer_with_vite+vue.md +5 -5
  675. package/docs/it/live-sync.md +174 -0
  676. package/docs/it/migration_from_i18next_to_intlayer.md +4 -4
  677. package/docs/it/migration_from_next-i18next_to_intlayer.md +4 -4
  678. package/docs/it/migration_from_next-intl_to_intlayer.md +4 -4
  679. package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  680. package/docs/it/migration_from_react-i18next_to_intlayer.md +5 -7
  681. package/docs/it/migration_from_vue-i18n_to_intlayer.md +4 -4
  682. package/docs/it/releases/v9.md +131 -33
  683. package/docs/it/self_hosting.md +350 -0
  684. package/docs/ja/bundle_optimization.md +16 -0
  685. package/docs/ja/cli/index.md +1 -1
  686. package/docs/ja/cli/scan.md +2 -2
  687. package/docs/ja/configuration.md +42 -1
  688. package/docs/ja/how_works_intlayer.md +2 -2
  689. package/docs/ja/intlayer_CMS.md +149 -102
  690. package/docs/ja/intlayer_with_adonisjs.md +4 -4
  691. package/docs/ja/intlayer_with_analog.md +4 -4
  692. package/docs/ja/intlayer_with_angular_19.md +4 -4
  693. package/docs/ja/intlayer_with_angular_21.md +4 -4
  694. package/docs/ja/intlayer_with_astro_lit.md +7 -7
  695. package/docs/ja/intlayer_with_astro_preact.md +4 -4
  696. package/docs/ja/intlayer_with_astro_react.md +4 -4
  697. package/docs/ja/intlayer_with_astro_solid.md +4 -4
  698. package/docs/ja/intlayer_with_astro_svelte.md +4 -4
  699. package/docs/ja/intlayer_with_astro_vanilla.md +4 -4
  700. package/docs/ja/intlayer_with_astro_vue.md +4 -4
  701. package/docs/ja/intlayer_with_create_react_app.md +4 -4
  702. package/docs/ja/intlayer_with_express.md +4 -4
  703. package/docs/ja/intlayer_with_fastify.md +4 -4
  704. package/docs/ja/intlayer_with_hono.md +4 -4
  705. package/docs/ja/intlayer_with_lynx+react.md +4 -4
  706. package/docs/ja/intlayer_with_nestjs.md +4 -4
  707. package/docs/ja/intlayer_with_next-i18next.md +4 -4
  708. package/docs/ja/intlayer_with_nextjs_14.md +4 -4
  709. package/docs/ja/intlayer_with_nextjs_15.md +6 -8
  710. package/docs/ja/intlayer_with_nextjs_16.md +6 -8
  711. package/docs/ja/intlayer_with_nextjs_compiler.md +4 -4
  712. package/docs/ja/intlayer_with_nextjs_no_locale_path.md +6 -8
  713. package/docs/ja/intlayer_with_nextjs_page_router.md +4 -4
  714. package/docs/ja/intlayer_with_nuxt.md +5 -5
  715. package/docs/ja/intlayer_with_react_native+expo.md +4 -4
  716. package/docs/ja/intlayer_with_tanstack+solid.md +5 -5
  717. package/docs/ja/intlayer_with_tanstack.md +6 -7
  718. package/docs/ja/intlayer_with_vite+lit.md +4 -4
  719. package/docs/ja/intlayer_with_vite+preact.md +5 -5
  720. package/docs/ja/intlayer_with_vite+react_compiler.md +5 -5
  721. package/docs/ja/intlayer_with_vite+solid.md +5 -5
  722. package/docs/ja/intlayer_with_vite+svelte.md +4 -4
  723. package/docs/ja/intlayer_with_vite+vanilla.md +4 -4
  724. package/docs/ja/intlayer_with_vite+vue.md +5 -5
  725. package/docs/ja/live-sync.md +185 -0
  726. package/docs/ja/migration_from_i18next_to_intlayer.md +4 -4
  727. package/docs/ja/migration_from_next-i18next_to_intlayer.md +4 -4
  728. package/docs/ja/migration_from_next-intl_to_intlayer.md +5 -7
  729. package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  730. package/docs/ja/migration_from_react-i18next_to_intlayer.md +5 -7
  731. package/docs/ja/migration_from_vue-i18n_to_intlayer.md +4 -4
  732. package/docs/ja/releases/v9.md +101 -33
  733. package/docs/ja/self_hosting.md +350 -0
  734. package/docs/ko/bundle_optimization.md +16 -0
  735. package/docs/ko/cli/index.md +1 -1
  736. package/docs/ko/cli/scan.md +2 -2
  737. package/docs/ko/configuration.md +42 -1
  738. package/docs/ko/how_works_intlayer.md +2 -2
  739. package/docs/ko/intlayer_CMS.md +147 -100
  740. package/docs/ko/intlayer_with_adonisjs.md +4 -4
  741. package/docs/ko/intlayer_with_analog.md +4 -4
  742. package/docs/ko/intlayer_with_angular_19.md +4 -4
  743. package/docs/ko/intlayer_with_angular_21.md +4 -4
  744. package/docs/ko/intlayer_with_astro_vue.md +4 -4
  745. package/docs/ko/intlayer_with_create_react_app.md +4 -4
  746. package/docs/ko/intlayer_with_express.md +4 -4
  747. package/docs/ko/intlayer_with_fastify.md +4 -4
  748. package/docs/ko/intlayer_with_hono.md +4 -4
  749. package/docs/ko/intlayer_with_nestjs.md +4 -4
  750. package/docs/ko/intlayer_with_next-i18next.md +4 -4
  751. package/docs/ko/intlayer_with_nextjs_15.md +6 -8
  752. package/docs/ko/intlayer_with_nextjs_16.md +6 -8
  753. package/docs/ko/intlayer_with_nextjs_compiler.md +5 -7
  754. package/docs/ko/intlayer_with_nextjs_no_locale_path.md +6 -8
  755. package/docs/ko/intlayer_with_nextjs_page_router.md +4 -4
  756. package/docs/ko/intlayer_with_nuxt.md +5 -5
  757. package/docs/ko/intlayer_with_react_native+expo.md +4 -4
  758. package/docs/ko/intlayer_with_react_router_v7.md +5 -5
  759. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +5 -5
  760. package/docs/ko/intlayer_with_svelte_kit.md +4 -4
  761. package/docs/ko/intlayer_with_tanstack+solid.md +5 -5
  762. package/docs/ko/intlayer_with_tanstack.md +6 -7
  763. package/docs/ko/intlayer_with_vite+lit.md +4 -4
  764. package/docs/ko/intlayer_with_vite+preact.md +5 -5
  765. package/docs/ko/intlayer_with_vite+react_compiler.md +5 -5
  766. package/docs/ko/intlayer_with_vite+solid.md +5 -5
  767. package/docs/ko/intlayer_with_vite+svelte.md +4 -4
  768. package/docs/ko/intlayer_with_vite+vanilla.md +4 -4
  769. package/docs/ko/intlayer_with_vite+vue.md +5 -5
  770. package/docs/ko/live-sync.md +187 -0
  771. package/docs/ko/migration_from_i18next_to_intlayer.md +4 -4
  772. package/docs/ko/migration_from_next-i18next_to_intlayer.md +4 -4
  773. package/docs/ko/migration_from_next-intl_to_intlayer.md +5 -7
  774. package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  775. package/docs/ko/migration_from_react-i18next_to_intlayer.md +5 -7
  776. package/docs/ko/migration_from_vue-i18n_to_intlayer.md +4 -4
  777. package/docs/ko/releases/v9.md +100 -33
  778. package/docs/ko/self_hosting.md +350 -0
  779. package/docs/nl/bundle_optimization.md +16 -0
  780. package/docs/nl/cli/index.md +1 -1
  781. package/docs/nl/cli/scan.md +2 -2
  782. package/docs/nl/configuration.md +45 -1
  783. package/docs/nl/intlayer_with_angular_21.md +4 -4
  784. package/docs/nl/intlayer_with_fastify.md +4 -4
  785. package/docs/nl/intlayer_with_hono.md +4 -4
  786. package/docs/nl/intlayer_with_vite+lit.md +4 -4
  787. package/docs/nl/intlayer_with_vite+vanilla.md +4 -4
  788. package/docs/nl/releases/v9.md +349 -0
  789. package/docs/pl/bundle_optimization.md +16 -0
  790. package/docs/pl/cli/index.md +1 -1
  791. package/docs/pl/cli/scan.md +2 -2
  792. package/docs/pl/configuration.md +45 -1
  793. package/docs/pl/how_works_intlayer.md +2 -2
  794. package/docs/pl/intlayer_CMS.md +14 -133
  795. package/docs/pl/intlayer_with_adonisjs.md +4 -4
  796. package/docs/pl/intlayer_with_analog.md +4 -4
  797. package/docs/pl/intlayer_with_angular_19.md +4 -4
  798. package/docs/pl/intlayer_with_angular_21.md +4 -4
  799. package/docs/pl/intlayer_with_astro_lit.md +7 -7
  800. package/docs/pl/intlayer_with_astro_preact.md +4 -4
  801. package/docs/pl/intlayer_with_astro_react.md +4 -4
  802. package/docs/pl/intlayer_with_astro_solid.md +4 -4
  803. package/docs/pl/intlayer_with_astro_svelte.md +4 -4
  804. package/docs/pl/intlayer_with_astro_vanilla.md +4 -4
  805. package/docs/pl/intlayer_with_astro_vue.md +4 -4
  806. package/docs/pl/intlayer_with_create_react_app.md +4 -4
  807. package/docs/pl/intlayer_with_express.md +4 -4
  808. package/docs/pl/intlayer_with_fastify.md +4 -4
  809. package/docs/pl/intlayer_with_hono.md +4 -4
  810. package/docs/pl/intlayer_with_lynx+react.md +4 -4
  811. package/docs/pl/intlayer_with_nestjs.md +4 -4
  812. package/docs/pl/intlayer_with_next-i18next.md +4 -4
  813. package/docs/pl/intlayer_with_nextjs_14.md +4 -4
  814. package/docs/pl/intlayer_with_nextjs_15.md +5 -7
  815. package/docs/pl/intlayer_with_nextjs_16.md +6 -8
  816. package/docs/pl/intlayer_with_nextjs_compiler.md +4 -4
  817. package/docs/pl/intlayer_with_nextjs_no_locale_path.md +6 -8
  818. package/docs/pl/intlayer_with_nextjs_page_router.md +4 -4
  819. package/docs/pl/intlayer_with_nuxt.md +5 -5
  820. package/docs/pl/intlayer_with_react_native+expo.md +4 -4
  821. package/docs/pl/intlayer_with_react_router_v7.md +5 -5
  822. package/docs/pl/intlayer_with_svelte_kit.md +4 -4
  823. package/docs/pl/intlayer_with_tanstack+solid.md +5 -5
  824. package/docs/pl/intlayer_with_tanstack.md +6 -7
  825. package/docs/pl/intlayer_with_vite+lit.md +4 -4
  826. package/docs/pl/intlayer_with_vite+preact.md +5 -5
  827. package/docs/pl/intlayer_with_vite+react.md +5 -5
  828. package/docs/pl/intlayer_with_vite+react_compiler.md +5 -5
  829. package/docs/pl/intlayer_with_vite+solid.md +5 -5
  830. package/docs/pl/intlayer_with_vite+svelte.md +4 -4
  831. package/docs/pl/intlayer_with_vite+vanilla.md +4 -4
  832. package/docs/pl/intlayer_with_vite+vue.md +5 -5
  833. package/docs/pl/live-sync.md +185 -0
  834. package/docs/pl/migration_from_next-i18next_to_intlayer.md +4 -4
  835. package/docs/pl/migration_from_next-intl_to_intlayer.md +5 -7
  836. package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  837. package/docs/pl/migration_from_react-i18next_to_intlayer.md +5 -7
  838. package/docs/pl/releases/v9.md +128 -33
  839. package/docs/pl/self_hosting.md +350 -0
  840. package/docs/pt/bundle_optimization.md +16 -0
  841. package/docs/pt/cli/index.md +1 -1
  842. package/docs/pt/cli/scan.md +2 -2
  843. package/docs/pt/configuration.md +45 -1
  844. package/docs/pt/how_works_intlayer.md +2 -2
  845. package/docs/pt/intlayer_CMS.md +87 -109
  846. package/docs/pt/intlayer_with_adonisjs.md +4 -4
  847. package/docs/pt/intlayer_with_analog.md +4 -4
  848. package/docs/pt/intlayer_with_angular_19.md +4 -4
  849. package/docs/pt/intlayer_with_angular_21.md +4 -4
  850. package/docs/pt/intlayer_with_astro_lit.md +7 -7
  851. package/docs/pt/intlayer_with_astro_preact.md +4 -4
  852. package/docs/pt/intlayer_with_astro_react.md +4 -4
  853. package/docs/pt/intlayer_with_astro_solid.md +4 -4
  854. package/docs/pt/intlayer_with_astro_svelte.md +4 -4
  855. package/docs/pt/intlayer_with_astro_vanilla.md +4 -4
  856. package/docs/pt/intlayer_with_astro_vue.md +4 -4
  857. package/docs/pt/intlayer_with_create_react_app.md +4 -4
  858. package/docs/pt/intlayer_with_express.md +4 -4
  859. package/docs/pt/intlayer_with_fastify.md +4 -4
  860. package/docs/pt/intlayer_with_hono.md +4 -4
  861. package/docs/pt/intlayer_with_lynx+react.md +4 -4
  862. package/docs/pt/intlayer_with_nestjs.md +4 -4
  863. package/docs/pt/intlayer_with_next-i18next.md +4 -4
  864. package/docs/pt/intlayer_with_nextjs_14.md +4 -4
  865. package/docs/pt/intlayer_with_nextjs_15.md +6 -8
  866. package/docs/pt/intlayer_with_nextjs_16.md +6 -8
  867. package/docs/pt/intlayer_with_nextjs_compiler.md +5 -7
  868. package/docs/pt/intlayer_with_nextjs_no_locale_path.md +6 -8
  869. package/docs/pt/intlayer_with_nextjs_page_router.md +4 -4
  870. package/docs/pt/intlayer_with_nuxt.md +5 -5
  871. package/docs/pt/intlayer_with_react_native+expo.md +4 -4
  872. package/docs/pt/intlayer_with_react_router_v7.md +5 -5
  873. package/docs/pt/intlayer_with_svelte_kit.md +4 -4
  874. package/docs/pt/intlayer_with_tanstack+solid.md +5 -5
  875. package/docs/pt/intlayer_with_tanstack.md +6 -7
  876. package/docs/pt/intlayer_with_vite+lit.md +4 -4
  877. package/docs/pt/intlayer_with_vite+preact.md +5 -5
  878. package/docs/pt/intlayer_with_vite+react.md +5 -5
  879. package/docs/pt/intlayer_with_vite+react_compiler.md +5 -5
  880. package/docs/pt/intlayer_with_vite+solid.md +5 -5
  881. package/docs/pt/intlayer_with_vite+svelte.md +4 -4
  882. package/docs/pt/intlayer_with_vite+vanilla.md +4 -4
  883. package/docs/pt/intlayer_with_vite+vue.md +5 -5
  884. package/docs/pt/live-sync.md +174 -0
  885. package/docs/pt/migration_from_i18next_to_intlayer.md +4 -4
  886. package/docs/pt/migration_from_next-i18next_to_intlayer.md +4 -4
  887. package/docs/pt/migration_from_next-intl_to_intlayer.md +5 -7
  888. package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  889. package/docs/pt/migration_from_react-i18next_to_intlayer.md +5 -7
  890. package/docs/pt/migration_from_vue-i18n_to_intlayer.md +4 -4
  891. package/docs/pt/releases/v9.md +131 -33
  892. package/docs/pt/self_hosting.md +350 -0
  893. package/docs/ru/bundle_optimization.md +16 -0
  894. package/docs/ru/cli/index.md +1 -1
  895. package/docs/ru/cli/scan.md +2 -2
  896. package/docs/ru/configuration.md +42 -1
  897. package/docs/ru/how_works_intlayer.md +2 -2
  898. package/docs/ru/intlayer_CMS.md +149 -102
  899. package/docs/ru/intlayer_with_adonisjs.md +4 -4
  900. package/docs/ru/intlayer_with_analog.md +4 -4
  901. package/docs/ru/intlayer_with_angular_19.md +4 -4
  902. package/docs/ru/intlayer_with_angular_21.md +4 -4
  903. package/docs/ru/intlayer_with_astro_vue.md +4 -4
  904. package/docs/ru/intlayer_with_create_react_app.md +4 -4
  905. package/docs/ru/intlayer_with_express.md +4 -4
  906. package/docs/ru/intlayer_with_fastify.md +4 -4
  907. package/docs/ru/intlayer_with_hono.md +4 -4
  908. package/docs/ru/intlayer_with_lynx+react.md +4 -4
  909. package/docs/ru/intlayer_with_nestjs.md +4 -4
  910. package/docs/ru/intlayer_with_next-i18next.md +4 -4
  911. package/docs/ru/intlayer_with_nextjs_14.md +4 -4
  912. package/docs/ru/intlayer_with_nextjs_15.md +6 -8
  913. package/docs/ru/intlayer_with_nextjs_16.md +6 -8
  914. package/docs/ru/intlayer_with_nextjs_compiler.md +5 -7
  915. package/docs/ru/intlayer_with_nextjs_no_locale_path.md +6 -8
  916. package/docs/ru/intlayer_with_nextjs_page_router.md +4 -4
  917. package/docs/ru/intlayer_with_nuxt.md +5 -5
  918. package/docs/ru/intlayer_with_react_native+expo.md +4 -4
  919. package/docs/ru/intlayer_with_react_router_v7.md +5 -5
  920. package/docs/ru/intlayer_with_svelte_kit.md +4 -4
  921. package/docs/ru/intlayer_with_tanstack+solid.md +5 -5
  922. package/docs/ru/intlayer_with_tanstack.md +6 -7
  923. package/docs/ru/intlayer_with_vite+lit.md +4 -4
  924. package/docs/ru/intlayer_with_vite+preact.md +5 -5
  925. package/docs/ru/intlayer_with_vite+react.md +5 -5
  926. package/docs/ru/intlayer_with_vite+react_compiler.md +5 -5
  927. package/docs/ru/intlayer_with_vite+solid.md +5 -5
  928. package/docs/ru/intlayer_with_vite+svelte.md +4 -4
  929. package/docs/ru/intlayer_with_vite+vanilla.md +4 -4
  930. package/docs/ru/intlayer_with_vite+vue.md +5 -5
  931. package/docs/ru/live-sync.md +185 -0
  932. package/docs/ru/migration_from_i18next_to_intlayer.md +4 -4
  933. package/docs/ru/migration_from_next-i18next_to_intlayer.md +4 -4
  934. package/docs/ru/migration_from_next-intl_to_intlayer.md +5 -7
  935. package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  936. package/docs/ru/migration_from_react-i18next_to_intlayer.md +5 -7
  937. package/docs/ru/migration_from_vue-i18n_to_intlayer.md +4 -4
  938. package/docs/ru/releases/v9.md +129 -33
  939. package/docs/ru/self_hosting.md +350 -0
  940. package/docs/tr/bundle_optimization.md +16 -0
  941. package/docs/tr/cli/index.md +1 -1
  942. package/docs/tr/cli/scan.md +2 -2
  943. package/docs/tr/configuration.md +42 -1
  944. package/docs/tr/how_works_intlayer.md +2 -2
  945. package/docs/tr/intlayer_CMS.md +14 -121
  946. package/docs/tr/intlayer_with_adonisjs.md +4 -4
  947. package/docs/tr/intlayer_with_analog.md +4 -4
  948. package/docs/tr/intlayer_with_angular_19.md +4 -4
  949. package/docs/tr/intlayer_with_angular_21.md +4 -4
  950. package/docs/tr/intlayer_with_astro_lit.md +7 -7
  951. package/docs/tr/intlayer_with_astro_preact.md +4 -4
  952. package/docs/tr/intlayer_with_astro_react.md +4 -4
  953. package/docs/tr/intlayer_with_astro_solid.md +4 -4
  954. package/docs/tr/intlayer_with_astro_svelte.md +4 -4
  955. package/docs/tr/intlayer_with_astro_vanilla.md +4 -4
  956. package/docs/tr/intlayer_with_astro_vue.md +4 -4
  957. package/docs/tr/intlayer_with_create_react_app.md +4 -4
  958. package/docs/tr/intlayer_with_express.md +4 -4
  959. package/docs/tr/intlayer_with_fastify.md +4 -4
  960. package/docs/tr/intlayer_with_hono.md +4 -4
  961. package/docs/tr/intlayer_with_lynx+react.md +4 -4
  962. package/docs/tr/intlayer_with_nestjs.md +4 -4
  963. package/docs/tr/intlayer_with_next-i18next.md +4 -4
  964. package/docs/tr/intlayer_with_nextjs_14.md +4 -4
  965. package/docs/tr/intlayer_with_nextjs_15.md +6 -8
  966. package/docs/tr/intlayer_with_nextjs_16.md +6 -8
  967. package/docs/tr/intlayer_with_nextjs_compiler.md +4 -4
  968. package/docs/tr/intlayer_with_nextjs_no_locale_path.md +6 -8
  969. package/docs/tr/intlayer_with_nextjs_page_router.md +4 -4
  970. package/docs/tr/intlayer_with_nuxt.md +5 -5
  971. package/docs/tr/intlayer_with_react_native+expo.md +4 -4
  972. package/docs/tr/intlayer_with_react_router_v7.md +5 -5
  973. package/docs/tr/intlayer_with_svelte_kit.md +4 -4
  974. package/docs/tr/intlayer_with_tanstack+solid.md +5 -5
  975. package/docs/tr/intlayer_with_tanstack.md +6 -7
  976. package/docs/tr/intlayer_with_vite+lit.md +4 -4
  977. package/docs/tr/intlayer_with_vite+preact.md +5 -5
  978. package/docs/tr/intlayer_with_vite+react.md +5 -5
  979. package/docs/tr/intlayer_with_vite+react_compiler.md +5 -5
  980. package/docs/tr/intlayer_with_vite+solid.md +5 -5
  981. package/docs/tr/intlayer_with_vite+svelte.md +4 -4
  982. package/docs/tr/intlayer_with_vite+vanilla.md +4 -4
  983. package/docs/tr/intlayer_with_vite+vue.md +5 -5
  984. package/docs/tr/live-sync.md +173 -0
  985. package/docs/tr/migration_from_i18next_to_intlayer.md +4 -4
  986. package/docs/tr/migration_from_next-i18next_to_intlayer.md +4 -4
  987. package/docs/tr/migration_from_next-intl_to_intlayer.md +5 -7
  988. package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  989. package/docs/tr/migration_from_react-i18next_to_intlayer.md +5 -7
  990. package/docs/tr/migration_from_vue-i18n_to_intlayer.md +4 -4
  991. package/docs/tr/releases/v9.md +116 -33
  992. package/docs/tr/self_hosting.md +350 -0
  993. package/docs/uk/bundle_optimization.md +16 -0
  994. package/docs/uk/cli/index.md +1 -1
  995. package/docs/uk/cli/scan.md +2 -2
  996. package/docs/uk/configuration.md +42 -1
  997. package/docs/uk/how_works_intlayer.md +2 -2
  998. package/docs/uk/intlayer_CMS.md +14 -133
  999. package/docs/uk/intlayer_with_adonisjs.md +4 -4
  1000. package/docs/uk/intlayer_with_analog.md +4 -4
  1001. package/docs/uk/intlayer_with_angular_19.md +4 -4
  1002. package/docs/uk/intlayer_with_angular_21.md +4 -4
  1003. package/docs/uk/intlayer_with_astro_lit.md +7 -7
  1004. package/docs/uk/intlayer_with_astro_preact.md +4 -4
  1005. package/docs/uk/intlayer_with_astro_react.md +4 -4
  1006. package/docs/uk/intlayer_with_astro_solid.md +4 -4
  1007. package/docs/uk/intlayer_with_astro_svelte.md +4 -4
  1008. package/docs/uk/intlayer_with_astro_vanilla.md +4 -4
  1009. package/docs/uk/intlayer_with_astro_vue.md +4 -4
  1010. package/docs/uk/intlayer_with_create_react_app.md +4 -4
  1011. package/docs/uk/intlayer_with_express.md +4 -4
  1012. package/docs/uk/intlayer_with_fastify.md +4 -4
  1013. package/docs/uk/intlayer_with_hono.md +4 -4
  1014. package/docs/uk/intlayer_with_lynx+react.md +4 -4
  1015. package/docs/uk/intlayer_with_nestjs.md +4 -4
  1016. package/docs/uk/intlayer_with_next-i18next.md +4 -4
  1017. package/docs/uk/intlayer_with_nextjs_14.md +4 -4
  1018. package/docs/uk/intlayer_with_nextjs_15.md +6 -8
  1019. package/docs/uk/intlayer_with_nextjs_16.md +6 -8
  1020. package/docs/uk/intlayer_with_nextjs_compiler.md +4 -4
  1021. package/docs/uk/intlayer_with_nextjs_no_locale_path.md +6 -8
  1022. package/docs/uk/intlayer_with_nextjs_page_router.md +4 -4
  1023. package/docs/uk/intlayer_with_nuxt.md +5 -5
  1024. package/docs/uk/intlayer_with_react_native+expo.md +4 -4
  1025. package/docs/uk/intlayer_with_react_router_v7.md +5 -5
  1026. package/docs/uk/intlayer_with_svelte_kit.md +4 -4
  1027. package/docs/uk/intlayer_with_tanstack+solid.md +5 -5
  1028. package/docs/uk/intlayer_with_tanstack.md +6 -7
  1029. package/docs/uk/intlayer_with_vite+lit.md +4 -4
  1030. package/docs/uk/intlayer_with_vite+preact.md +5 -5
  1031. package/docs/uk/intlayer_with_vite+react.md +5 -5
  1032. package/docs/uk/intlayer_with_vite+react_compiler.md +5 -5
  1033. package/docs/uk/intlayer_with_vite+solid.md +5 -5
  1034. package/docs/uk/intlayer_with_vite+svelte.md +4 -4
  1035. package/docs/uk/intlayer_with_vite+vanilla.md +4 -4
  1036. package/docs/uk/intlayer_with_vite+vue.md +5 -5
  1037. package/docs/uk/live-sync.md +185 -0
  1038. package/docs/uk/migration_from_i18next_to_intlayer.md +4 -4
  1039. package/docs/uk/migration_from_next-i18next_to_intlayer.md +4 -4
  1040. package/docs/uk/migration_from_next-intl_to_intlayer.md +5 -7
  1041. package/docs/uk/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  1042. package/docs/uk/migration_from_react-i18next_to_intlayer.md +5 -7
  1043. package/docs/uk/migration_from_vue-i18n_to_intlayer.md +4 -4
  1044. package/docs/uk/releases/v9.md +128 -33
  1045. package/docs/uk/self_hosting.md +350 -0
  1046. package/docs/ur/bundle_optimization.md +16 -0
  1047. package/docs/ur/cli/index.md +1 -1
  1048. package/docs/ur/cli/scan.md +2 -2
  1049. package/docs/ur/configuration.md +45 -1
  1050. package/docs/ur/intlayer_with_angular_21.md +4 -4
  1051. package/docs/ur/intlayer_with_fastify.md +4 -4
  1052. package/docs/ur/intlayer_with_hono.md +4 -4
  1053. package/docs/ur/intlayer_with_vite+lit.md +4 -4
  1054. package/docs/ur/intlayer_with_vite+vanilla.md +4 -4
  1055. package/docs/vi/bundle_optimization.md +16 -0
  1056. package/docs/vi/cli/index.md +1 -1
  1057. package/docs/vi/cli/scan.md +2 -2
  1058. package/docs/vi/configuration.md +42 -1
  1059. package/docs/vi/how_works_intlayer.md +2 -2
  1060. package/docs/vi/intlayer_CMS.md +5 -139
  1061. package/docs/vi/intlayer_with_adonisjs.md +4 -4
  1062. package/docs/vi/intlayer_with_analog.md +4 -4
  1063. package/docs/vi/intlayer_with_angular_19.md +4 -4
  1064. package/docs/vi/intlayer_with_angular_21.md +4 -4
  1065. package/docs/vi/intlayer_with_astro_lit.md +7 -7
  1066. package/docs/vi/intlayer_with_astro_preact.md +4 -4
  1067. package/docs/vi/intlayer_with_astro_react.md +4 -4
  1068. package/docs/vi/intlayer_with_astro_solid.md +4 -4
  1069. package/docs/vi/intlayer_with_astro_svelte.md +4 -4
  1070. package/docs/vi/intlayer_with_astro_vanilla.md +4 -4
  1071. package/docs/vi/intlayer_with_astro_vue.md +4 -4
  1072. package/docs/vi/intlayer_with_create_react_app.md +4 -4
  1073. package/docs/vi/intlayer_with_express.md +4 -4
  1074. package/docs/vi/intlayer_with_fastify.md +4 -4
  1075. package/docs/vi/intlayer_with_hono.md +4 -4
  1076. package/docs/vi/intlayer_with_lynx+react.md +4 -4
  1077. package/docs/vi/intlayer_with_nestjs.md +4 -4
  1078. package/docs/vi/intlayer_with_next-i18next.md +4 -4
  1079. package/docs/vi/intlayer_with_nextjs_14.md +4 -4
  1080. package/docs/vi/intlayer_with_nextjs_15.md +5 -7
  1081. package/docs/vi/intlayer_with_nextjs_16.md +6 -8
  1082. package/docs/vi/intlayer_with_nextjs_compiler.md +4 -4
  1083. package/docs/vi/intlayer_with_nextjs_no_locale_path.md +6 -8
  1084. package/docs/vi/intlayer_with_nextjs_page_router.md +4 -4
  1085. package/docs/vi/intlayer_with_nuxt.md +5 -5
  1086. package/docs/vi/intlayer_with_react_native+expo.md +4 -4
  1087. package/docs/vi/intlayer_with_react_router_v7.md +5 -5
  1088. package/docs/vi/intlayer_with_svelte_kit.md +4 -4
  1089. package/docs/vi/intlayer_with_tanstack+solid.md +5 -5
  1090. package/docs/vi/intlayer_with_tanstack.md +6 -7
  1091. package/docs/vi/intlayer_with_vite+lit.md +4 -4
  1092. package/docs/vi/intlayer_with_vite+preact.md +5 -5
  1093. package/docs/vi/intlayer_with_vite+react.md +5 -5
  1094. package/docs/vi/intlayer_with_vite+react_compiler.md +5 -5
  1095. package/docs/vi/intlayer_with_vite+solid.md +5 -5
  1096. package/docs/vi/intlayer_with_vite+svelte.md +4 -4
  1097. package/docs/vi/intlayer_with_vite+vanilla.md +4 -4
  1098. package/docs/vi/intlayer_with_vite+vue.md +5 -5
  1099. package/docs/vi/live-sync.md +185 -0
  1100. package/docs/vi/migration_from_i18next_to_intlayer.md +4 -4
  1101. package/docs/vi/migration_from_next-i18next_to_intlayer.md +4 -4
  1102. package/docs/vi/migration_from_next-intl_to_intlayer.md +5 -7
  1103. package/docs/vi/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  1104. package/docs/vi/migration_from_react-i18next_to_intlayer.md +5 -7
  1105. package/docs/vi/migration_from_vue-i18n_to_intlayer.md +4 -4
  1106. package/docs/vi/releases/v9.md +101 -33
  1107. package/docs/vi/self_hosting.md +350 -0
  1108. package/docs/zh/bundle_optimization.md +16 -0
  1109. package/docs/zh/cli/index.md +1 -1
  1110. package/docs/zh/cli/scan.md +2 -2
  1111. package/docs/zh/configuration.md +42 -1
  1112. package/docs/zh/how_works_intlayer.md +2 -2
  1113. package/docs/zh/intlayer_CMS.md +5 -129
  1114. package/docs/zh/intlayer_with_adonisjs.md +4 -4
  1115. package/docs/zh/intlayer_with_angular_21.md +4 -4
  1116. package/docs/zh/intlayer_with_astro.md +4 -4
  1117. package/docs/zh/intlayer_with_astro_lit.md +7 -7
  1118. package/docs/zh/intlayer_with_astro_preact.md +4 -4
  1119. package/docs/zh/intlayer_with_astro_react.md +4 -4
  1120. package/docs/zh/intlayer_with_astro_solid.md +4 -4
  1121. package/docs/zh/intlayer_with_astro_svelte.md +4 -4
  1122. package/docs/zh/intlayer_with_astro_vanilla.md +4 -4
  1123. package/docs/zh/intlayer_with_astro_vue.md +4 -4
  1124. package/docs/zh/intlayer_with_create_react_app.md +4 -4
  1125. package/docs/zh/intlayer_with_express.md +4 -4
  1126. package/docs/zh/intlayer_with_fastify.md +4 -4
  1127. package/docs/zh/intlayer_with_hono.md +4 -4
  1128. package/docs/zh/intlayer_with_nestjs.md +4 -4
  1129. package/docs/zh/intlayer_with_next-i18next.md +4 -4
  1130. package/docs/zh/intlayer_with_nextjs_14.md +4 -4
  1131. package/docs/zh/intlayer_with_nextjs_15.md +6 -8
  1132. package/docs/zh/intlayer_with_nextjs_16.md +6 -8
  1133. package/docs/zh/intlayer_with_nextjs_compiler.md +5 -7
  1134. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +6 -8
  1135. package/docs/zh/intlayer_with_nextjs_page_router.md +4 -4
  1136. package/docs/zh/intlayer_with_react_native+expo.md +4 -4
  1137. package/docs/zh/intlayer_with_react_router_v7.md +5 -5
  1138. package/docs/zh/intlayer_with_vite+solid.md +5 -5
  1139. package/docs/zh/intlayer_with_vite+svelte.md +4 -4
  1140. package/docs/zh/intlayer_with_vite+vue.md +5 -5
  1141. package/docs/zh/live-sync.md +175 -0
  1142. package/docs/zh/migration_from_i18next_to_intlayer.md +4 -4
  1143. package/docs/zh/migration_from_next-i18next_to_intlayer.md +4 -4
  1144. package/docs/zh/migration_from_next-intl_to_intlayer.md +5 -7
  1145. package/docs/zh/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
  1146. package/docs/zh/migration_from_react-i18next_to_intlayer.md +5 -7
  1147. package/docs/zh/migration_from_vue-i18n_to_intlayer.md +4 -4
  1148. package/docs/zh/releases/v9.md +101 -25
  1149. package/docs/zh/self_hosting.md +350 -0
  1150. package/docs/zh-TW/bundle_optimization.md +16 -0
  1151. package/docs/zh-TW/intlayer_with_angular_21.md +4 -4
  1152. package/package.json +10 -10
  1153. package/src/generated/docs.entry.ts +60 -0
@@ -63,19 +63,19 @@ Bu rehber, Intlayer'ın üstün içerik beyan sistemi avantajlarından yararlan
63
63
  Tercih ettiğiniz paket yöneticisini kullanarak gerekli paketleri yükleyin:
64
64
 
65
65
  ```bash packageManager="npm"
66
- npx intlayer-cli init --interactive
66
+ npx intlayer init --interactive
67
67
  ```
68
68
 
69
69
  ```bash packageManager="pnpm"
70
- pnpm dlx intlayer-cli init --interactive
70
+ pnpm dlx intlayer@canary init --interactive
71
71
  ```
72
72
 
73
73
  ```bash packageManager="yarn"
74
- yarn dlx intlayer-cli init --interactive
74
+ yarn dlx intlayer@canary init --interactive
75
75
  ```
76
76
 
77
77
  ```bash packageManager="bun"
78
- bunx intlayer-cli init --interactive
78
+ bunx intlayer@canary init --interactive
79
79
  ```
80
80
 
81
81
  > `--interactive` bayrağı isteğe bağlıdır. Bir yapay zeka aracısıysanız `intlayer-cli init` kullanın.
@@ -65,19 +65,19 @@ Bu rehber, Intlayer'ın üstün içerik beyan sistemi avantajlarından yararlan
65
65
  Gerekli paketleri yükleyin:
66
66
 
67
67
  ```bash packageManager="npm"
68
- npx intlayer-cli init --interactive
68
+ npx intlayer init --interactive
69
69
  ```
70
70
 
71
71
  ```bash packageManager="pnpm"
72
- pnpm dlx intlayer-cli init --interactive
72
+ pnpm dlx intlayer@canary init --interactive
73
73
  ```
74
74
 
75
75
  ```bash packageManager="yarn"
76
- yarn dlx intlayer-cli init --interactive
76
+ yarn dlx intlayer@canary init --interactive
77
77
  ```
78
78
 
79
79
  ```bash packageManager="bun"
80
- bunx intlayer-cli init --interactive
80
+ bunx intlayer@canary init --interactive
81
81
  ```
82
82
 
83
83
  > `--interactive` bayrağı isteğe bağlıdır. Bir yapay zeka aracısıysanız `intlayer-cli init` kullanın.
@@ -64,19 +64,19 @@ Bu rehber, Intlayer'ın üstün içerik beyan sistemi kullanılırken react-i18n
64
64
  Gerekli paketleri yükleyin:
65
65
 
66
66
  ```bash packageManager="npm"
67
- npx intlayer-cli init --interactive
67
+ npx intlayer init --interactive
68
68
  ```
69
69
 
70
70
  ```bash packageManager="pnpm"
71
- pnpm dlx intlayer-cli init --interactive
71
+ pnpm dlx intlayer@canary init --interactive
72
72
  ```
73
73
 
74
74
  ```bash packageManager="yarn"
75
- yarn dlx intlayer-cli init --interactive
75
+ yarn dlx intlayer@canary init --interactive
76
76
  ```
77
77
 
78
78
  ```bash packageManager="bun"
79
- bunx intlayer-cli init --interactive
79
+ bunx intlayer@canary init --interactive
80
80
  ```
81
81
 
82
82
  > `--interactive` bayrağı isteğe bağlıdır. Bir yapay zeka aracısıysanız `intlayer-cli init` kullanın.
@@ -63,19 +63,19 @@ Bu rehber, react-intl ile uyumluluğu korurken Intlayer'ın üstün içerik beya
63
63
  Gerekli paketleri yükleyin:
64
64
 
65
65
  ```bash packageManager="npm"
66
- npx intlayer-cli init --interactive
66
+ npx intlayer init --interactive
67
67
  ```
68
68
 
69
69
  ```bash packageManager="pnpm"
70
- pnpm dlx intlayer-cli init --interactive
70
+ pnpm dlx intlayer@canary init --interactive
71
71
  ```
72
72
 
73
73
  ```bash packageManager="yarn"
74
- yarn dlx intlayer-cli init --interactive
74
+ yarn dlx intlayer@canary init --interactive
75
75
  ```
76
76
 
77
77
  ```bash packageManager="bun"
78
- bunx intlayer-cli init --interactive
78
+ bunx intlayer@canary init --interactive
79
79
  ```
80
80
 
81
81
  > `--interactive` bayrağı isteğe bağlıdır. Bir yapay zeka aracısıysanız `intlayer-cli init` kullanın.
@@ -64,19 +64,19 @@ Bu rehber, Intlayer'ın üstün içerik beyan sistemi avantajlarından yararlan
64
64
  Tercih ettiğiniz paket yöneticisini kullanarak gerekli paketleri yükleyin:
65
65
 
66
66
  ```bash packageManager="npm"
67
- npx intlayer-cli init --interactive
67
+ npx intlayer init --interactive
68
68
  ```
69
69
 
70
70
  ```bash packageManager="pnpm"
71
- pnpm dlx intlayer-cli init --interactive
71
+ pnpm dlx intlayer@canary init --interactive
72
72
  ```
73
73
 
74
74
  ```bash packageManager="yarn"
75
- yarn dlx intlayer-cli init --interactive
75
+ yarn dlx intlayer@canary init --interactive
76
76
  ```
77
77
 
78
78
  ```bash packageManager="bun"
79
- bunx intlayer-cli init --interactive
79
+ bunx intlayer@canary init --interactive
80
80
  ```
81
81
 
82
82
  > `--interactive` bayrağı isteğe bağlıdır. Bir yapay zeka aracısıysanız `intlayer-cli init` kullanın.
@@ -345,6 +345,12 @@ export default robots;
345
345
 
346
346
  ---
347
347
 
348
+ ## Intlayer SEO Scanner ile web sitenizi denetleyin
349
+
350
+ Çok dilli uygulamanızın mükemmel şekilde optimize edildiğinden emin olmak için [Intlayer SEO Scanner](https://intlayer.org/i18n-seo-scanner) kullanmanızı öneririz. Çok dilli web sitesi kontrolü için özel bir araçtır; tüm yerelleştirilmiş sayfalarınızda eksik hreflang etiketlerini, bozuk bağlantıları ve diğer SEO sorunlarını belirlemenize yardımcı olur.
351
+
352
+ ---
353
+
348
354
  ## Sonuç
349
355
 
350
356
  Next.js'te i18n'i doğru yapmak sadece metni çevirmekle ilgili değildir, aynı zamanda arama motorlarının ve kullanıcıların içeriğinizin hangi sürümünü sunacağını tam olarak bilmelerini sağlamaktır.
@@ -265,6 +265,12 @@ const LocaleSwitcher: FC = () => {
265
265
 
266
266
  ---
267
267
 
268
+ ## Перевірте свій веб-сайт за допомогою Intlayer SEO Scanner
269
+
270
+ Щоб переконатися, що ваш багатомовний додаток ідеально оптимізовано, ми рекомендуємо використовувати [Intlayer SEO Scanner](https://intlayer.org/i18n-seo-scanner). Це спеціалізований інструмент для перевірки багатомовних веб-сайтів, який допомагає виявити відсутні теги hreflang, непрацюючі посилання та інші проблеми SEO на всіх ваших локалізованих сторінках.
271
+
272
+ ---
273
+
268
274
  ## Підсумок
269
275
 
270
276
  Створення багатомовного вебсайту, це не лише переклад тексту. Йдеться про ефективну структуру URL-адрес, використання тегів `hreflang`, щоб допомогти пошуковим системам показувати правильну версію, і забезпечення відмінного користувацького досвіду з локалізованими візуалами, селекторами мови та послідовною навігацією. Дотримання цих найкращих практик підготує вас до успіху на світових ринках, підвищить задоволеність користувачів і, зрештою, покращить SEO-показники в різних регіонах.
@@ -85,19 +85,19 @@ Intlayer пропонує широкий набір розширених фун
85
85
  Встановіть необхідні пакети:
86
86
 
87
87
  ```bash packageManager="npm"
88
- npx intlayer-cli init --interactive
88
+ npx intlayer init --interactive
89
89
  ```
90
90
 
91
91
  ```bash packageManager="pnpm"
92
- pnpm dlx intlayer-cli init --interactive
92
+ pnpm dlx intlayer@canary init --interactive
93
93
  ```
94
94
 
95
95
  ```bash packageManager="yarn"
96
- yarn dlx intlayer-cli init --interactive
96
+ yarn dlx intlayer@canary init --interactive
97
97
  ```
98
98
 
99
99
  ```bash packageManager="bun"
100
- bunx intlayer-cli init --interactive
100
+ bunx intlayer@canary init --interactive
101
101
  ```
102
102
 
103
103
  > прапорець `--interactive` не є обов'язковим. Використовуйте `intlayer-cli init`, якщо ви є ШІ-агентом.
@@ -76,19 +76,19 @@ Intlayer пропонує широкий набір **розширених мо
76
76
  Встановіть необхідні пакети, використовуючи ваш улюблений пакетний менеджер:
77
77
 
78
78
  ```bash packageManager="npm"
79
- npx intlayer-cli init --interactive
79
+ npx intlayer init --interactive
80
80
  ```
81
81
 
82
82
  ```bash packageManager="pnpm"
83
- pnpm dlx intlayer-cli init --interactive
83
+ pnpm dlx intlayer@canary init --interactive
84
84
  ```
85
85
 
86
86
  ```bash packageManager="yarn"
87
- yarn dlx intlayer-cli init --interactive
87
+ yarn dlx intlayer@canary init --interactive
88
88
  ```
89
89
 
90
90
  ```bash packageManager="bun"
91
- bunx intlayer-cli init --interactive
91
+ bunx intlayer@canary init --interactive
92
92
  ```
93
93
 
94
94
  > прапорець `--interactive` не є обов'язковим. Використовуйте `intlayer-cli init`, якщо ви є ШІ-агентом.
@@ -75,19 +75,19 @@ Intlayer пропонує широкий набір **розширених мо
75
75
  Встановіть необхідні пакети:
76
76
 
77
77
  ```bash packageManager="npm"
78
- npx intlayer-cli init --interactive
78
+ npx intlayer init --interactive
79
79
  ```
80
80
 
81
81
  ```bash packageManager="pnpm"
82
- pnpm dlx intlayer-cli init --interactive
82
+ pnpm dlx intlayer@canary init --interactive
83
83
  ```
84
84
 
85
85
  ```bash packageManager="yarn"
86
- yarn dlx intlayer-cli init --interactive
86
+ yarn dlx intlayer@canary init --interactive
87
87
  ```
88
88
 
89
89
  ```bash packageManager="bun"
90
- bunx intlayer-cli init --interactive
90
+ bunx intlayer@canary init --interactive
91
91
  ```
92
92
 
93
93
  > прапорець `--interactive` не є обов'язковим. Використовуйте `intlayer-cli init`, якщо ви є ШІ-агентом.
@@ -76,19 +76,19 @@ Intlayer пропонує широкий набір **просунутих фу
76
76
  Встановіть необхідні пакети:
77
77
 
78
78
  ```bash packageManager="npm"
79
- npx intlayer-cli init --interactive
79
+ npx intlayer init --interactive
80
80
  ```
81
81
 
82
82
  ```bash packageManager="pnpm"
83
- pnpm dlx intlayer-cli init --interactive
83
+ pnpm dlx intlayer@canary init --interactive
84
84
  ```
85
85
 
86
86
  ```bash packageManager="yarn"
87
- yarn dlx intlayer-cli init --interactive
87
+ yarn dlx intlayer@canary init --interactive
88
88
  ```
89
89
 
90
90
  ```bash packageManager="bun"
91
- bunx intlayer-cli init --interactive
91
+ bunx intlayer@canary init --interactive
92
92
  ```
93
93
 
94
94
  > прапорець `--interactive` не є обов'язковим. Використовуйте `intlayer-cli init`, якщо ви є ШІ-агентом.
@@ -74,19 +74,19 @@ Intlayer пропонує багатий набір **розширених фу
74
74
  Встановіть необхідні пакети:
75
75
 
76
76
  ```bash packageManager="npm"
77
- npx intlayer-cli init --interactive
77
+ npx intlayer init --interactive
78
78
  ```
79
79
 
80
80
  ```bash packageManager="pnpm"
81
- pnpm dlx intlayer-cli init --interactive
81
+ pnpm dlx intlayer@canary init --interactive
82
82
  ```
83
83
 
84
84
  ```bash packageManager="yarn"
85
- yarn dlx intlayer-cli init --interactive
85
+ yarn dlx intlayer@canary init --interactive
86
86
  ```
87
87
 
88
88
  ```bash packageManager="bun"
89
- bunx intlayer-cli init --interactive
89
+ bunx intlayer@canary init --interactive
90
90
  ```
91
91
 
92
92
  > прапорець `--interactive` не є обов'язковим. Використовуйте `intlayer-cli init`, якщо ви є ШІ-агентом.
@@ -76,19 +76,19 @@ Intlayer пропонує широкий набір **розширених мо
76
76
  Встановіть необхідні пакети, використовуючи бажаний пакетний менеджер:
77
77
 
78
78
  ```bash packageManager="npm"
79
- npx intlayer-cli init --interactive
79
+ npx intlayer init --interactive
80
80
  ```
81
81
 
82
82
  ```bash packageManager="pnpm"
83
- pnpm dlx intlayer-cli init --interactive
83
+ pnpm dlx intlayer@canary init --interactive
84
84
  ```
85
85
 
86
86
  ```bash packageManager="yarn"
87
- yarn dlx intlayer-cli init --interactive
87
+ yarn dlx intlayer@canary init --interactive
88
88
  ```
89
89
 
90
90
  ```bash packageManager="bun"
91
- bunx intlayer-cli init --interactive
91
+ bunx intlayer@canary init --interactive
92
92
  ```
93
93
 
94
94
  > прапорець `--interactive` не є обов'язковим. Використовуйте `intlayer-cli init`, якщо ви є ШІ-агентом.
@@ -343,6 +343,12 @@ export default robots;
343
343
 
344
344
  ---
345
345
 
346
+ ## Перевірте свій веб-сайт за допомогою Intlayer SEO Scanner
347
+
348
+ Щоб переконатися, що ваш багатомовний додаток ідеально оптимізовано, ми рекомендуємо використовувати [Intlayer SEO Scanner](https://intlayer.org/i18n-seo-scanner). Це спеціалізований інструмент для перевірки багатомовних веб-сайтів, який допомагає виявити відсутні теги hreflang, непрацюючі посилання та інші проблеми SEO на всіх ваших локалізованих сторінках.
349
+
350
+ ---
351
+
346
352
  ## Висновок
347
353
 
348
354
  Правильна реалізація i18n у Next.js, це не просто переклад тексту, а забезпечення того, щоб пошукові системи та користувачі точно знали, яку версію вашого контенту показувати.
@@ -264,6 +264,12 @@ const LocaleSwitcher: FC = () => {
264
264
 
265
265
  ---
266
266
 
267
+ ## Kiểm tra trang web của bạn bằng Intlayer SEO Scanner
268
+
269
+ Để đảm bảo ứng dụng đa ngôn ngữ của bạn được tối ưu hóa hoàn hảo, chúng tôi khuyên bạn nên sử dụng [Intlayer SEO Scanner](https://intlayer.org/i18n-seo-scanner). Đây là một công cụ chuyên dụng để kiểm tra trang web đa ngôn ngữ, giúp bạn xác định các thẻ hreflang bị thiếu, liên kết bị hỏng và các vấn đề SEO khác trên tất cả các trang được bản địa hóa của bạn.
270
+
271
+ ---
272
+
267
273
  ## Kết Luận
268
274
 
269
275
  Việc làm cho trang web của bạn đa ngôn ngữ không chỉ đơn thuần là dịch văn bản. Nó còn liên quan đến việc cấu trúc URL một cách hiệu quả, sử dụng thẻ `hreflang` để giúp các công cụ tìm kiếm phục vụ phiên bản đúng, và cung cấp trải nghiệm người dùng xuất sắc với hình ảnh địa phương hóa, bộ chọn ngôn ngữ, và điều hướng nhất quán. Tuân theo những thực hành tốt nhất này sẽ giúp bạn thành công trên thị trường toàn cầu, tăng sự hài lòng của người dùng, và cuối cùng là mang lại kết quả SEO tốt hơn trên các khu vực khác nhau.
@@ -70,19 +70,19 @@ Hướng dẫn này sẽ chỉ cho bạn cách tận dụng hệ thống khai b
70
70
  Cài đặt các gói cần thiết:
71
71
 
72
72
  ```bash packageManager="npm"
73
- npx intlayer-cli init --interactive
73
+ npx intlayer init --interactive
74
74
  ```
75
75
 
76
76
  ```bash packageManager="pnpm"
77
- pnpm dlx intlayer-cli init --interactive
77
+ pnpm dlx intlayer@canary init --interactive
78
78
  ```
79
79
 
80
80
  ```bash packageManager="yarn"
81
- yarn dlx intlayer-cli init --interactive
81
+ yarn dlx intlayer@canary init --interactive
82
82
  ```
83
83
 
84
84
  ```bash packageManager="bun"
85
- bunx intlayer-cli init --interactive
85
+ bunx intlayer@canary init --interactive
86
86
  ```
87
87
 
88
88
  > cờ `--interactive` là tùy chọn. Sử dụng `intlayer-cli init` nếu bạn là tác nhân AI.
@@ -63,19 +63,19 @@ Hướng dẫn này sẽ chỉ cho bạn cách tận dụng hệ thống khai b
63
63
  Cài đặt các gói cần thiết bằng trình quản lý gói bạn ưa thích:
64
64
 
65
65
  ```bash packageManager="npm"
66
- npx intlayer-cli init --interactive
66
+ npx intlayer init --interactive
67
67
  ```
68
68
 
69
69
  ```bash packageManager="pnpm"
70
- pnpm dlx intlayer-cli init --interactive
70
+ pnpm dlx intlayer@canary init --interactive
71
71
  ```
72
72
 
73
73
  ```bash packageManager="yarn"
74
- yarn dlx intlayer-cli init --interactive
74
+ yarn dlx intlayer@canary init --interactive
75
75
  ```
76
76
 
77
77
  ```bash packageManager="bun"
78
- bunx intlayer-cli init --interactive
78
+ bunx intlayer@canary init --interactive
79
79
  ```
80
80
 
81
81
  > cờ `--interactive` là tùy chọn. Sử dụng `intlayer-cli init` nếu bạn là tác nhân AI.
@@ -65,19 +65,19 @@ Hướng dẫn này sẽ chỉ cho bạn cách tận dụng hệ thống khai b
65
65
  Cài đặt các gói cần thiết:
66
66
 
67
67
  ```bash packageManager="npm"
68
- npx intlayer-cli init --interactive
68
+ npx intlayer init --interactive
69
69
  ```
70
70
 
71
71
  ```bash packageManager="pnpm"
72
- pnpm dlx intlayer-cli init --interactive
72
+ pnpm dlx intlayer@canary init --interactive
73
73
  ```
74
74
 
75
75
  ```bash packageManager="yarn"
76
- yarn dlx intlayer-cli init --interactive
76
+ yarn dlx intlayer@canary init --interactive
77
77
  ```
78
78
 
79
79
  ```bash packageManager="bun"
80
- bunx intlayer-cli init --interactive
80
+ bunx intlayer@canary init --interactive
81
81
  ```
82
82
 
83
83
  > cờ `--interactive` là tùy chọn. Sử dụng `intlayer-cli init` nếu bạn là tác nhân AI.
@@ -64,19 +64,19 @@ Hướng dẫn này sẽ chỉ cho bạn cách tận dụng hệ thống khai b
64
64
  Cài đặt các gói cần thiết:
65
65
 
66
66
  ```bash packageManager="npm"
67
- npx intlayer-cli init --interactive
67
+ npx intlayer init --interactive
68
68
  ```
69
69
 
70
70
  ```bash packageManager="pnpm"
71
- pnpm dlx intlayer-cli init --interactive
71
+ pnpm dlx intlayer@canary init --interactive
72
72
  ```
73
73
 
74
74
  ```bash packageManager="yarn"
75
- yarn dlx intlayer-cli init --interactive
75
+ yarn dlx intlayer@canary init --interactive
76
76
  ```
77
77
 
78
78
  ```bash packageManager="bun"
79
- bunx intlayer-cli init --interactive
79
+ bunx intlayer@canary init --interactive
80
80
  ```
81
81
 
82
82
  > cờ `--interactive` là tùy chọn. Sử dụng `intlayer-cli init` nếu bạn là tác nhân AI.
@@ -62,19 +62,19 @@ Hướng dẫn này sẽ chỉ cho bạn cách tận dụng hệ thống khai b
62
62
  Cài đặt các gói cần thiết:
63
63
 
64
64
  ```bash packageManager="npm"
65
- npx intlayer-cli init --interactive
65
+ npx intlayer init --interactive
66
66
  ```
67
67
 
68
68
  ```bash packageManager="pnpm"
69
- pnpm dlx intlayer-cli init --interactive
69
+ pnpm dlx intlayer@canary init --interactive
70
70
  ```
71
71
 
72
72
  ```bash packageManager="yarn"
73
- yarn dlx intlayer-cli init --interactive
73
+ yarn dlx intlayer@canary init --interactive
74
74
  ```
75
75
 
76
76
  ```bash packageManager="bun"
77
- bunx intlayer-cli init --interactive
77
+ bunx intlayer@canary init --interactive
78
78
  ```
79
79
 
80
80
  > cờ `--interactive` là tùy chọn. Sử dụng `intlayer-cli init` nếu bạn là tác nhân AI.
@@ -64,19 +64,19 @@ Hướng dẫn này sẽ chỉ cho bạn cách tận dụng hệ thống khai b
64
64
  Cài đặt các gói cần thiết bằng trình quản lý gói bạn ưa thích:
65
65
 
66
66
  ```bash packageManager="npm"
67
- npx intlayer-cli init --interactive
67
+ npx intlayer init --interactive
68
68
  ```
69
69
 
70
70
  ```bash packageManager="pnpm"
71
- pnpm dlx intlayer-cli init --interactive
71
+ pnpm dlx intlayer@canary init --interactive
72
72
  ```
73
73
 
74
74
  ```bash packageManager="yarn"
75
- yarn dlx intlayer-cli init --interactive
75
+ yarn dlx intlayer@canary init --interactive
76
76
  ```
77
77
 
78
78
  ```bash packageManager="bun"
79
- bunx intlayer-cli init --interactive
79
+ bunx intlayer@canary init --interactive
80
80
  ```
81
81
 
82
82
  > cờ `--interactive` là tùy chọn. Sử dụng `intlayer-cli init` nếu bạn là tác nhân AI.
@@ -345,6 +345,12 @@ export default robots;
345
345
 
346
346
  ---
347
347
 
348
+ ## Kiểm tra trang web của bạn bằng Intlayer SEO Scanner
349
+
350
+ Để đảm bảo ứng dụng đa ngôn ngữ của bạn được tối ưu hóa hoàn hảo, chúng tôi khuyên bạn nên sử dụng [Intlayer SEO Scanner](https://intlayer.org/i18n-seo-scanner). Đây là một công cụ chuyên dụng để kiểm tra trang web đa ngôn ngữ, giúp bạn xác định các thẻ hreflang bị thiếu, liên kết bị hỏng và các vấn đề SEO khác trên tất cả các trang được bản địa hóa của bạn.
351
+
352
+ ---
353
+
348
354
  ## Kết luận
349
355
 
350
356
  Việc làm i18n đúng trong Next.js không chỉ là dịch văn bản, mà còn là đảm bảo các công cụ tìm kiếm và người dùng biết chính xác phiên bản nội dung nào cần được phục vụ.
@@ -286,6 +286,12 @@ const LocaleSwitcher: FC = () => {
286
286
 
287
287
  ---
288
288
 
289
+ ## 使用 Intlayer SEO Scanner 审核您的网站
290
+
291
+ 为了确保您的多语言应用程序得到完美优化,我们建议使用 [Intlayer SEO Scanner](https://intlayer.org/i18n-seo-scanner)。这是一款专门用于多语言网站检查的工具,可帮助您识别所有本地化页面中缺失的 hreflang 标签、断开的链接以及其他 SEO 问题。
292
+
293
+ ---
294
+
289
295
  ## 总结
290
296
 
291
297
  让您的网站支持多语言不仅仅涉及翻译文本。它还关乎有效地构建 URL,使用 `hreflang` 标签帮助搜索引擎提供正确的版本,并提供卓越的用户体验, 包括本地化视觉内容、语言选择器和一致的导航。遵循这些最佳实践将使您在全球市场取得成功,提升用户满意度,并最终在各个地区改善 SEO 结果。
@@ -347,6 +347,12 @@ export default robots;
347
347
 
348
348
  ---
349
349
 
350
+ ## 使用 Intlayer SEO Scanner 审核您的网站
351
+
352
+ 为了确保您的多语言应用程序得到完美优化,我们建议使用 [Intlayer SEO Scanner](https://intlayer.org/i18n-seo-scanner)。这是一款专门用于多语言网站检查的工具,可帮助您识别所有本地化页面中缺失的 hreflang 标签、断开的链接以及其他 SEO 问题。
353
+
354
+ ---
355
+
350
356
  ## 结论
351
357
 
352
358
  在 Next.js 中正确处理国际化(i18n)不仅仅是翻译文本,更是确保搜索引擎和用户能够准确识别并访问您内容的正确版本。
@@ -1 +1 @@
1
- {"version":3,"file":"authors.cjs","names":["authorsData"],"sources":["../../src/authors.ts"],"sourcesContent":["import authorsData from '../authors.json' with { type: 'json' };\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type AuthorProfile = {\n /** Full display name */\n name: string;\n /** Schema.org Person @id URI (optional) */\n id?: string;\n /** Professional title */\n title?: string;\n /** Canonical URL for this person */\n url?: string;\n /** Profile image URL */\n image?: string;\n /** List of equivalent profile URLs (LinkedIn, Twitter/X, GitHub…) */\n socialMedias?: string[];\n /** Areas of expertise */\n knowsAbout?: string[];\n /** GitHub username/handle */\n github?: string;\n};\n\nexport type Authors = Record<string, AuthorProfile>;\n\n// ─── Loader (lazy singleton) ──────────────────────────────────────────────────\n\nconst loadAuthors = (): Authors => authorsData as Authors;\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Resolve a full author profile by GitHub handle.\n * Returns `undefined` if the handle is not found in `authors.json`.\n */\nexport const getAuthor = (github: string): AuthorProfile | undefined => {\n const profile = loadAuthors()[github];\n if (!profile) return undefined;\n return {\n ...profile,\n github,\n };\n};\n\nexport { loadAuthors as getAuthors };\n\n/**\n * Build a Schema.org Person node suitable for JSON-LD.\n * Undefined fields are omitted automatically by JSON.stringify.\n */\nexport const buildAuthorJsonLd = (\n profile?: AuthorProfile,\n fallbackName = 'Aymeric Pineau',\n fallbackUrl?: string\n) => ({\n '@type': 'Person' as const,\n '@id': profile?.id,\n name: profile?.name ?? fallbackName,\n url: profile?.url ?? fallbackUrl,\n jobTitle: profile?.title,\n image: profile?.image,\n sameAs: profile?.socialMedias?.length ? profile.socialMedias : undefined,\n knowsAbout: profile?.knowsAbout?.length ? profile.knowsAbout : undefined,\n});\n"],"mappings":";;;;AA2BA,MAAM,oBAA6BA;;;;;AAQnC,MAAa,aAAa,WAA8C;CACtE,MAAM,UAAU,aAAa,CAAC;AAC9B,KAAI,CAAC,QAAS,QAAO;AACrB,QAAO;EACL,GAAG;EACH;EACD;;;;;;AASH,MAAa,qBACX,SACA,eAAe,kBACf,iBACI;CACJ,SAAS;CACT,OAAO,SAAS;CAChB,MAAM,SAAS,QAAQ;CACvB,KAAK,SAAS,OAAO;CACrB,UAAU,SAAS;CACnB,OAAO,SAAS;CAChB,QAAQ,SAAS,cAAc,SAAS,QAAQ,eAAe;CAC/D,YAAY,SAAS,YAAY,SAAS,QAAQ,aAAa;CAChE"}
1
+ {"version":3,"file":"authors.cjs","names":["authorsData"],"sources":["../../src/authors.ts"],"sourcesContent":["import authorsData from '../authors.json' with { type: 'json' };\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type AuthorProfile = {\n /** Full display name */\n name: string;\n /** Schema.org Person @id URI (optional) */\n id?: string;\n /** Professional title */\n title?: string;\n /** Canonical URL for this person */\n url?: string;\n /** Profile image URL */\n image?: string;\n /** List of equivalent profile URLs (LinkedIn, Twitter/X, GitHub…) */\n socialMedias?: string[];\n /** Areas of expertise */\n knowsAbout?: string[];\n /** GitHub username/handle */\n github?: string;\n};\n\nexport type Authors = Record<string, AuthorProfile>;\n\n// ─── Loader (lazy singleton) ──────────────────────────────────────────────────\n\nconst loadAuthors = (): Authors => authorsData as Authors;\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Resolve a full author profile by GitHub handle.\n * Returns `undefined` if the handle is not found in `authors.json`.\n */\nexport const getAuthor = (github: string): AuthorProfile | undefined => {\n const profile = loadAuthors()[github];\n if (!profile) return undefined;\n return {\n ...profile,\n github,\n };\n};\n\nexport { loadAuthors as getAuthors };\n\n/**\n * Build a Schema.org Person node suitable for JSON-LD.\n * Undefined fields are omitted automatically by JSON.stringify.\n */\nexport const buildAuthorJsonLd = (\n profile?: AuthorProfile,\n fallbackName = 'Aymeric Pineau',\n fallbackUrl?: string\n) => ({\n '@type': 'Person' as const,\n '@id': profile?.id,\n name: profile?.name ?? fallbackName,\n url: profile?.url ?? fallbackUrl,\n jobTitle: profile?.title,\n image: profile?.image,\n sameAs: profile?.socialMedias?.length ? profile.socialMedias : undefined,\n knowsAbout: profile?.knowsAbout?.length ? profile.knowsAbout : undefined,\n});\n"],"mappings":";;;;AA2BA,MAAM,oBAA6BA;;;;;AAQnC,MAAa,aAAa,WAA8C;CACtE,MAAM,UAAU,YAAY,CAAC,CAAC;CAC9B,IAAI,CAAC,SAAS,OAAO;CACrB,OAAO;EACL,GAAG;EACH;CACF;AACF;;;;;AAQA,MAAa,qBACX,SACA,eAAe,kBACf,iBACI;CACJ,SAAS;CACT,OAAO,SAAS;CAChB,MAAM,SAAS,QAAQ;CACvB,KAAK,SAAS,OAAO;CACrB,UAAU,SAAS;CACnB,OAAO,SAAS;CAChB,QAAQ,SAAS,cAAc,SAAS,QAAQ,eAAe;CAC/D,YAAY,SAAS,YAAY,SAAS,QAAQ,aAAa;AACjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"blog.cjs","names":["getKeys","blogEntry","defaultLocale","getFiles","getFile","getFileMetadataRecord","getFileMetadata","getFileMetadataBySlug","getFileBySlug"],"sources":["../../src/blog.ts"],"sourcesContent":["import type {\n DeclaredLocales,\n LocalesValues,\n} from '@intlayer/types/module_augmentation';\nimport {\n defaultLocale,\n type FileMetadata,\n getFile,\n getFileBySlug,\n getFileMetadata,\n getFileMetadataBySlug,\n getFileMetadataRecord,\n getFiles,\n getKeys,\n} from './common';\nimport { blogEntry } from './generated/blog.entry';\n\nexport type BlogKey = keyof typeof blogEntry;\nexport type Blogs = Record<BlogKey, Record<LocalesValues, Promise<string>>>;\nexport type BlogMetadata = FileMetadata;\n\nexport const getBlogsKeys = (): (keyof typeof blogEntry)[] =>\n getKeys(blogEntry);\n\nexport const getBlogs = async <L extends LocalesValues = DeclaredLocales>(\n locale: L = defaultLocale as L\n): Promise<Record<BlogKey, string>> => await getFiles(blogEntry, locale);\n\nexport const getBlog = async <L extends LocalesValues = DeclaredLocales>(\n docName: BlogKey,\n locale: L = defaultLocale as L\n): Promise<string> => await getFile(blogEntry, docName, locale);\n\nexport const getBlogMetadataRecord = async <\n L extends LocalesValues = DeclaredLocales,\n>(\n locale: L = defaultLocale as L\n): Promise<Record<BlogKey, FileMetadata>> =>\n await getFileMetadataRecord(blogEntry, locale);\n\nexport const getBlogMetadata = async <\n D extends BlogKey,\n L extends LocalesValues = DeclaredLocales,\n>(\n docName: D,\n locale: L = defaultLocale as L\n): Promise<FileMetadata> => await getFileMetadata(blogEntry, docName, locale);\n\nexport const getBlogMetadataBySlug = async <\n L extends LocalesValues = DeclaredLocales,\n>(\n slugs: string | string[],\n locale: L = defaultLocale as L,\n strict = false\n): Promise<FileMetadata[]> =>\n await getFileMetadataBySlug(blogEntry, slugs, locale, strict);\n\nexport const getBlogBySlug = async <L extends LocalesValues = DeclaredLocales>(\n slugs: string | string[],\n locale: L = defaultLocale as L,\n strict = false\n): Promise<string[]> => await getFileBySlug(blogEntry, slugs, locale, strict);\n"],"mappings":";;;;;AAqBA,MAAa,qBACXA,uBAAQC,uCAAU;AAEpB,MAAa,WAAW,OACtB,SAAYC,iCACyB,MAAMC,wBAASF,wCAAW,OAAO;AAExE,MAAa,UAAU,OACrB,SACA,SAAYC,iCACQ,MAAME,uBAAQH,wCAAW,SAAS,OAAO;AAE/D,MAAa,wBAAwB,OAGnC,SAAYC,iCAEZ,MAAMG,qCAAsBJ,wCAAW,OAAO;AAEhD,MAAa,kBAAkB,OAI7B,SACA,SAAYC,iCACc,MAAMI,+BAAgBL,wCAAW,SAAS,OAAO;AAE7E,MAAa,wBAAwB,OAGnC,OACA,SAAYC,8BACZ,SAAS,UAET,MAAMK,qCAAsBN,wCAAW,OAAO,QAAQ,OAAO;AAE/D,MAAa,gBAAgB,OAC3B,OACA,SAAYC,8BACZ,SAAS,UACa,MAAMM,6BAAcP,wCAAW,OAAO,QAAQ,OAAO"}
1
+ {"version":3,"file":"blog.cjs","names":["getKeys","blogEntry","defaultLocale","getFiles","getFile","getFileMetadataRecord","getFileMetadata","getFileMetadataBySlug","getFileBySlug"],"sources":["../../src/blog.ts"],"sourcesContent":["import type {\n DeclaredLocales,\n LocalesValues,\n} from '@intlayer/types/module_augmentation';\nimport {\n defaultLocale,\n type FileMetadata,\n getFile,\n getFileBySlug,\n getFileMetadata,\n getFileMetadataBySlug,\n getFileMetadataRecord,\n getFiles,\n getKeys,\n} from './common';\nimport { blogEntry } from './generated/blog.entry';\n\nexport type BlogKey = keyof typeof blogEntry;\nexport type Blogs = Record<BlogKey, Record<LocalesValues, Promise<string>>>;\nexport type BlogMetadata = FileMetadata;\n\nexport const getBlogsKeys = (): (keyof typeof blogEntry)[] =>\n getKeys(blogEntry);\n\nexport const getBlogs = async <L extends LocalesValues = DeclaredLocales>(\n locale: L = defaultLocale as L\n): Promise<Record<BlogKey, string>> => await getFiles(blogEntry, locale);\n\nexport const getBlog = async <L extends LocalesValues = DeclaredLocales>(\n docName: BlogKey,\n locale: L = defaultLocale as L\n): Promise<string> => await getFile(blogEntry, docName, locale);\n\nexport const getBlogMetadataRecord = async <\n L extends LocalesValues = DeclaredLocales,\n>(\n locale: L = defaultLocale as L\n): Promise<Record<BlogKey, FileMetadata>> =>\n await getFileMetadataRecord(blogEntry, locale);\n\nexport const getBlogMetadata = async <\n D extends BlogKey,\n L extends LocalesValues = DeclaredLocales,\n>(\n docName: D,\n locale: L = defaultLocale as L\n): Promise<FileMetadata> => await getFileMetadata(blogEntry, docName, locale);\n\nexport const getBlogMetadataBySlug = async <\n L extends LocalesValues = DeclaredLocales,\n>(\n slugs: string | string[],\n locale: L = defaultLocale as L,\n strict = false\n): Promise<FileMetadata[]> =>\n await getFileMetadataBySlug(blogEntry, slugs, locale, strict);\n\nexport const getBlogBySlug = async <L extends LocalesValues = DeclaredLocales>(\n slugs: string | string[],\n locale: L = defaultLocale as L,\n strict = false\n): Promise<string[]> => await getFileBySlug(blogEntry, slugs, locale, strict);\n"],"mappings":";;;;;AAqBA,MAAa,qBACXA,uBAAQC,sCAAS;AAEnB,MAAa,WAAW,OACtB,SAAYC,iCACyB,MAAMC,wBAASF,wCAAW,MAAM;AAEvE,MAAa,UAAU,OACrB,SACA,SAAYC,iCACQ,MAAME,uBAAQH,wCAAW,SAAS,MAAM;AAE9D,MAAa,wBAAwB,OAGnC,SAAYC,iCAEZ,MAAMG,qCAAsBJ,wCAAW,MAAM;AAE/C,MAAa,kBAAkB,OAI7B,SACA,SAAYC,iCACc,MAAMI,+BAAgBL,wCAAW,SAAS,MAAM;AAE5E,MAAa,wBAAwB,OAGnC,OACA,SAAYC,8BACZ,SAAS,UAET,MAAMK,qCAAsBN,wCAAW,OAAO,QAAQ,MAAM;AAE9D,MAAa,gBAAgB,OAC3B,OACA,SAAYC,8BACZ,SAAS,UACa,MAAMM,6BAAcP,wCAAW,OAAO,QAAQ,MAAM"}
@@ -45,7 +45,8 @@ const formatMetadata = (docKey, file, locale = defaultLocale) => {
45
45
  };
46
46
  };
47
47
  const getFileMetadata = async (files, docKey, locale = defaultLocale) => {
48
- return formatMetadata(docKey, await getFile(files, docKey, locale), locale);
48
+ const file = await getFile(files, docKey, locale);
49
+ return formatMetadata(docKey, file, locale);
49
50
  };
50
51
  const getFileMetadataRecord = async (files, locale = defaultLocale) => {
51
52
  const filesEntries = (await Promise.allSettled(Object.entries(files).map(async ([key]) => {
@@ -1 +1 @@
1
- {"version":3,"file":"common.cjs","names":["Locales"],"sources":["../../src/common.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { getLocalizedUrl } from '@intlayer/core/localization';\nimport { getMarkdownMetadata } from '@intlayer/core/transpiler';\nimport * as Locales from '@intlayer/types/locales';\nimport type { LocalesValues } from '@intlayer/types/module_augmentation';\n\nexport const defaultLocale = Locales.ENGLISH;\n\nexport const GITHUB_URL_PREFIX =\n 'https://github.com/aymericzip/intlayer/blob/main/docs';\nexport const URL_PREFIX = 'https://intlayer.org/';\n\nexport const getKeys = <T extends Record<string, any>>(obj: T): (keyof T)[] =>\n Object.keys(obj) as (keyof T)[];\n\nexport const getFiles = async <\n F extends Record<`./${string}`, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n lang: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<string, string>> => {\n const filesEntries = await Promise.all(\n Object.entries(files)\n .map(([key, value]) => [key, value[lang as LocalesValues]])\n .map(async ([key, value]) => [key, await value])\n );\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult;\n};\n\nexport const getFile = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<string> => {\n const fileRecord = files[docKey];\n\n if (!fileRecord) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n const file = await files[docKey]?.[locale];\n\n if (!file) {\n const englishFile = await files[docKey]?.[defaultLocale as LocalesValues];\n\n if (!englishFile) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n return englishFile;\n }\n\n return file;\n};\n\nexport type FileMetadata = {\n docKey: string;\n url: string;\n relativeUrl: string;\n githubUrl: string;\n title: string;\n slugs: string[];\n description: string;\n keywords: string[];\n updatedAt: string;\n createdAt: string;\n author?: string;\n youtubeVideo?: string;\n applicationTemplate?: string;\n applicationShowcase?: string;\n history?: {\n version: string;\n date: string;\n changes: string;\n }[];\n};\n\nexport const formatMetadata = (\n docKey: string,\n file: string,\n locale: LocalesValues = defaultLocale as LocalesValues\n): FileMetadata => {\n const metadata = getMarkdownMetadata(file);\n\n const slugs = (metadata.slugs ?? []).map(String);\n const keywords = (metadata.keywords ?? []).map(String);\n\n const relativeUrl = join('/', ...slugs);\n\n const slicedDocKey = docKey.slice(1);\n\n // Normalise author: accept both a plain string handle (new format)\n // and a legacy object `{ github: '...' }` — always reduce to a plain string.\n const rawAuthor = metadata.author as\n | string\n | { name?: string; github?: string }\n | undefined;\n const author: string | undefined =\n typeof rawAuthor === 'string'\n ? rawAuthor || undefined\n : rawAuthor?.github || undefined;\n\n return {\n ...metadata,\n docKey,\n slugs,\n keywords,\n author,\n githubUrl: `${GITHUB_URL_PREFIX}${slicedDocKey}`.replace(\n '/en/',\n `/${locale}/`\n ),\n relativeUrl: getLocalizedUrl(relativeUrl, locale),\n url: getLocalizedUrl(join(URL_PREFIX, relativeUrl), locale),\n } as FileMetadata;\n};\n\nexport const getFileMetadata = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n R extends FileMetadata,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<R> => {\n const file = await getFile(files, docKey, locale);\n\n return formatMetadata(docKey as string, file, locale) as R;\n};\n\nexport const getFileMetadataRecord = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<keyof F, FileMetadata>> => {\n const results = await Promise.allSettled(\n Object.entries(files).map(async ([key]) => {\n const metadata = await getFileMetadata(files, key as keyof F, locale);\n return [key, metadata] as [string, FileMetadata];\n })\n );\n const filesEntries = results\n .filter(\n (r): r is PromiseFulfilledResult<[string, FileMetadata]> =>\n r.status === 'fulfilled'\n )\n .map((r) => r.value);\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult as Record<keyof F, FileMetadata>;\n};\n\nexport const getFileMetadataBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray: FileMetadata[] = Object.values(filesMetadata).filter(\n (fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n if (locale !== defaultLocale) {\n const localizedFileMetadata = await Promise.all(\n fileMetadataArray.map(\n async (fileMetadata) =>\n await getFileMetadata(files, fileMetadata.docKey, locale)\n )\n );\n\n return localizedFileMetadata;\n }\n\n return fileMetadataArray;\n};\n\nexport const getFileBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray = Object.values(filesMetadata).filter((fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n const fileList = await Promise.all(\n fileMetadataArray.map(async (fileMetadata) => {\n const file = await getFile(files, fileMetadata.docKey, locale);\n return file;\n })\n );\n\n return fileList;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"common.cjs","names":["Locales"],"sources":["../../src/common.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { getLocalizedUrl } from '@intlayer/core/localization';\nimport { getMarkdownMetadata } from '@intlayer/core/transpiler';\nimport * as Locales from '@intlayer/types/locales';\nimport type { LocalesValues } from '@intlayer/types/module_augmentation';\n\nexport const defaultLocale = Locales.ENGLISH;\n\nexport const GITHUB_URL_PREFIX =\n 'https://github.com/aymericzip/intlayer/blob/main/docs';\nexport const URL_PREFIX = 'https://intlayer.org/';\n\nexport const getKeys = <T extends Record<string, any>>(obj: T): (keyof T)[] =>\n Object.keys(obj) as (keyof T)[];\n\nexport const getFiles = async <\n F extends Record<`./${string}`, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n lang: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<string, string>> => {\n const filesEntries = await Promise.all(\n Object.entries(files)\n .map(([key, value]) => [key, value[lang as LocalesValues]])\n .map(async ([key, value]) => [key, await value])\n );\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult;\n};\n\nexport const getFile = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<string> => {\n const fileRecord = files[docKey];\n\n if (!fileRecord) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n const file = await files[docKey]?.[locale];\n\n if (!file) {\n const englishFile = await files[docKey]?.[defaultLocale as LocalesValues];\n\n if (!englishFile) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n return englishFile;\n }\n\n return file;\n};\n\nexport type FileMetadata = {\n docKey: string;\n url: string;\n relativeUrl: string;\n githubUrl: string;\n title: string;\n slugs: string[];\n description: string;\n keywords: string[];\n updatedAt: string;\n createdAt: string;\n author?: string;\n youtubeVideo?: string;\n applicationTemplate?: string;\n applicationShowcase?: string;\n history?: {\n version: string;\n date: string;\n changes: string;\n }[];\n};\n\nexport const formatMetadata = (\n docKey: string,\n file: string,\n locale: LocalesValues = defaultLocale as LocalesValues\n): FileMetadata => {\n const metadata = getMarkdownMetadata(file);\n\n const slugs = (metadata.slugs ?? []).map(String);\n const keywords = (metadata.keywords ?? []).map(String);\n\n const relativeUrl = join('/', ...slugs);\n\n const slicedDocKey = docKey.slice(1);\n\n // Normalise author: accept both a plain string handle (new format)\n // and a legacy object `{ github: '...' }` — always reduce to a plain string.\n const rawAuthor = metadata.author as\n | string\n | { name?: string; github?: string }\n | undefined;\n const author: string | undefined =\n typeof rawAuthor === 'string'\n ? rawAuthor || undefined\n : rawAuthor?.github || undefined;\n\n return {\n ...metadata,\n docKey,\n slugs,\n keywords,\n author,\n githubUrl: `${GITHUB_URL_PREFIX}${slicedDocKey}`.replace(\n '/en/',\n `/${locale}/`\n ),\n relativeUrl: getLocalizedUrl(relativeUrl, locale),\n url: getLocalizedUrl(join(URL_PREFIX, relativeUrl), locale),\n } as FileMetadata;\n};\n\nexport const getFileMetadata = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n R extends FileMetadata,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<R> => {\n const file = await getFile(files, docKey, locale);\n\n return formatMetadata(docKey as string, file, locale) as R;\n};\n\nexport const getFileMetadataRecord = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<keyof F, FileMetadata>> => {\n const results = await Promise.allSettled(\n Object.entries(files).map(async ([key]) => {\n const metadata = await getFileMetadata(files, key as keyof F, locale);\n return [key, metadata] as [string, FileMetadata];\n })\n );\n const filesEntries = results\n .filter(\n (r): r is PromiseFulfilledResult<[string, FileMetadata]> =>\n r.status === 'fulfilled'\n )\n .map((r) => r.value);\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult as Record<keyof F, FileMetadata>;\n};\n\nexport const getFileMetadataBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray: FileMetadata[] = Object.values(filesMetadata).filter(\n (fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n if (locale !== defaultLocale) {\n const localizedFileMetadata = await Promise.all(\n fileMetadataArray.map(\n async (fileMetadata) =>\n await getFileMetadata(files, fileMetadata.docKey, locale)\n )\n );\n\n return localizedFileMetadata;\n }\n\n return fileMetadataArray;\n};\n\nexport const getFileBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray = Object.values(filesMetadata).filter((fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n const fileList = await Promise.all(\n fileMetadataArray.map(async (fileMetadata) => {\n const file = await getFile(files, fileMetadata.docKey, locale);\n return file;\n })\n );\n\n return fileList;\n};\n"],"mappings":"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"}