@intlayer/docs 9.1.3 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/blog/ar/index.md +1 -1
  2. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  3. package/blog/de/index.md +1 -1
  4. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  5. package/blog/en/index.md +1 -1
  6. package/blog/en-GB/index.md +1 -1
  7. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/es/index.md +1 -1
  9. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/fr/i18n_meaning.md +7 -1
  11. package/blog/fr/index.md +1 -1
  12. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  13. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  14. package/blog/hi/index.md +1 -1
  15. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  16. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  17. package/blog/id/index.md +1 -1
  18. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  19. package/blog/it/index.md +1 -1
  20. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/ja/index.md +1 -1
  22. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  23. package/blog/ko/index.md +1 -1
  24. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  25. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  26. package/blog/pl/index.md +1 -1
  27. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  28. package/blog/pt/index.md +1 -1
  29. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  30. package/blog/ru/index.md +1 -1
  31. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  32. package/blog/tr/intlayer_with_react-intl.md +3 -1
  33. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  34. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  35. package/blog/uk/index.md +1 -1
  36. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  37. package/blog/vi/index.md +1 -1
  38. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  39. package/blog/zh/index.md +1 -1
  40. package/blog/zh/intlayer_with_i18next.md +87 -28
  41. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  42. package/blog/zh/intlayer_with_next-intl.md +88 -28
  43. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  44. package/blog/zh/intlayer_with_react-intl.md +88 -27
  45. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  46. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  47. package/dist/cjs/common.cjs +24 -1
  48. package/dist/cjs/common.cjs.map +1 -1
  49. package/dist/cjs/generated/blog.entry.cjs +58 -31
  50. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  51. package/dist/cjs/generated/docs.entry.cjs +265 -218
  52. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  53. package/dist/cjs/generated/frequentQuestions.entry.cjs +48 -21
  54. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  55. package/dist/cjs/generated/legal.entry.cjs +33 -6
  56. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  57. package/dist/esm/common.mjs +24 -1
  58. package/dist/esm/common.mjs.map +1 -1
  59. package/dist/esm/generated/blog.entry.mjs +58 -31
  60. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  61. package/dist/esm/generated/docs.entry.mjs +265 -218
  62. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  63. package/dist/esm/generated/frequentQuestions.entry.mjs +48 -21
  64. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  65. package/dist/esm/generated/legal.entry.mjs +33 -6
  66. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  67. package/dist/types/common.d.ts.map +1 -1
  68. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  69. package/dist/types/generated/docs.entry.d.ts +1 -0
  70. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  71. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  72. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  73. package/docs/ar/analytics.md +222 -0
  74. package/docs/ar/autoFill.md +28 -9
  75. package/docs/ar/bundle_optimization.md +58 -25
  76. package/docs/ar/configuration.md +25 -8
  77. package/docs/ar/dictionary/file.md +3 -1
  78. package/docs/ar/dictionary/nesting.md +47 -30
  79. package/docs/ar/formatters.md +148 -193
  80. package/docs/ar/intlayer_CMS.md +152 -0
  81. package/docs/ar/intlayer_with_angular_21.md +9 -9
  82. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  83. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  84. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  85. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  86. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  87. package/docs/ar/live-sync.md +4 -0
  88. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  89. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  90. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  91. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  92. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  93. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  94. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  95. package/docs/ar/releases/v9.md +0 -37
  96. package/docs/ar/self_hosting.md +46 -49
  97. package/docs/bn/bundle_optimization.md +58 -25
  98. package/docs/bn/configuration.md +25 -8
  99. package/docs/bn/intlayer_with_angular_21.md +9 -9
  100. package/docs/cs/bundle_optimization.md +58 -25
  101. package/docs/cs/configuration.md +25 -8
  102. package/docs/cs/intlayer_with_angular_21.md +9 -9
  103. package/docs/de/analytics.md +222 -0
  104. package/docs/de/autoFill.md +28 -9
  105. package/docs/de/bundle_optimization.md +58 -25
  106. package/docs/de/configuration.md +25 -8
  107. package/docs/de/dictionary/file.md +3 -1
  108. package/docs/de/dictionary/nesting.md +47 -31
  109. package/docs/de/formatters.md +208 -334
  110. package/docs/de/intlayer_CMS.md +66 -15
  111. package/docs/de/intlayer_with_angular_21.md +9 -9
  112. package/docs/de/intlayer_with_nestjs.md +11 -7
  113. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  114. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  115. package/docs/de/intlayer_with_solid_start.md +1078 -0
  116. package/docs/de/intlayer_with_vite+vue.md +1 -3
  117. package/docs/de/live-sync.md +4 -0
  118. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  119. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  120. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  121. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  122. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  123. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  124. package/docs/de/releases/v9.md +0 -15
  125. package/docs/de/self_hosting.md +46 -50
  126. package/docs/en/bundle_optimization.md +51 -23
  127. package/docs/en/cli/doc-review.md +13 -2
  128. package/docs/en/configuration.md +24 -15
  129. package/docs/en/intlayer_with_angular_21.md +9 -9
  130. package/docs/en/intlayer_with_solid_start.md +1091 -0
  131. package/docs/en/intlayer_with_vite+solid.md +12 -0
  132. package/docs/en/live-sync.md +4 -0
  133. package/docs/en-GB/analytics.md +222 -0
  134. package/docs/en-GB/autoFill.md +26 -7
  135. package/docs/en-GB/bundle_optimization.md +58 -25
  136. package/docs/en-GB/configuration.md +25 -8
  137. package/docs/en-GB/dictionary/file.md +2 -0
  138. package/docs/en-GB/dictionary/nesting.md +64 -205
  139. package/docs/en-GB/formatters.md +146 -181
  140. package/docs/en-GB/intlayer_CMS.md +152 -0
  141. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  142. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  143. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  144. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  145. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  146. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  147. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  148. package/docs/en-GB/live-sync.md +4 -0
  149. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  150. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  151. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/en-GB/self_hosting.md +60 -49
  155. package/docs/es/analytics.md +222 -0
  156. package/docs/es/autoFill.md +28 -9
  157. package/docs/es/bundle_optimization.md +58 -25
  158. package/docs/es/configuration.md +24 -7
  159. package/docs/es/dictionary/file.md +3 -1
  160. package/docs/es/dictionary/nesting.md +47 -30
  161. package/docs/es/formatters.md +114 -168
  162. package/docs/es/intlayer_CMS.md +35 -10
  163. package/docs/es/intlayer_with_angular_21.md +9 -9
  164. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  165. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  166. package/docs/es/intlayer_with_solid_start.md +1078 -0
  167. package/docs/es/live-sync.md +4 -0
  168. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  169. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  170. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  171. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  172. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  173. package/docs/es/releases/v9.md +0 -15
  174. package/docs/es/self_hosting.md +46 -49
  175. package/docs/fr/analytics.md +222 -0
  176. package/docs/fr/autoFill.md +27 -8
  177. package/docs/fr/bundle_optimization.md +58 -25
  178. package/docs/fr/configuration.md +25 -8
  179. package/docs/fr/dictionary/file.md +2 -0
  180. package/docs/fr/dictionary/nesting.md +37 -184
  181. package/docs/fr/formatters.md +95 -236
  182. package/docs/fr/intlayer_CMS.md +66 -15
  183. package/docs/fr/intlayer_with_angular_21.md +9 -9
  184. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  185. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  186. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  187. package/docs/fr/live-sync.md +4 -0
  188. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  189. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  190. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  191. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  192. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  193. package/docs/fr/releases/v9.md +0 -15
  194. package/docs/fr/self_hosting.md +46 -49
  195. package/docs/hi/analytics.md +222 -0
  196. package/docs/hi/autoFill.md +28 -9
  197. package/docs/hi/bundle_optimization.md +58 -25
  198. package/docs/hi/configuration.md +25 -8
  199. package/docs/hi/dictionary/file.md +3 -1
  200. package/docs/hi/dictionary/nesting.md +47 -30
  201. package/docs/hi/formatters.md +233 -334
  202. package/docs/hi/how_works_intlayer.md +3 -1
  203. package/docs/hi/intlayer_CMS.md +152 -0
  204. package/docs/hi/intlayer_with_angular_21.md +9 -9
  205. package/docs/hi/intlayer_with_nestjs.md +11 -7
  206. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  207. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  208. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  209. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  210. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  211. package/docs/hi/intlayer_with_vite+react.md +48 -41
  212. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  213. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  214. package/docs/hi/live-sync.md +4 -0
  215. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  216. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  217. package/docs/hi/packages/next-intlayer/t.md +33 -1
  218. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  219. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  220. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  221. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  222. package/docs/hi/plugins/sync-json.md +9 -9
  223. package/docs/hi/releases/v9.md +0 -15
  224. package/docs/hi/self_hosting.md +38 -51
  225. package/docs/id/analytics.md +223 -0
  226. package/docs/id/bundle_optimization.md +58 -25
  227. package/docs/id/configuration.md +25 -8
  228. package/docs/id/dictionary/nesting.md +37 -184
  229. package/docs/id/formatters.md +208 -305
  230. package/docs/id/intlayer_CMS.md +164 -0
  231. package/docs/id/intlayer_with_angular_21.md +9 -9
  232. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  233. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  234. package/docs/id/intlayer_with_solid_start.md +1078 -0
  235. package/docs/id/live-sync.md +4 -0
  236. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  237. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  238. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  239. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  240. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  241. package/docs/id/releases/v9.md +12 -0
  242. package/docs/id/self_hosting.md +61 -50
  243. package/docs/it/analytics.md +222 -0
  244. package/docs/it/autoFill.md +27 -8
  245. package/docs/it/bundle_optimization.md +58 -25
  246. package/docs/it/configuration.md +25 -8
  247. package/docs/it/dictionary/file.md +3 -1
  248. package/docs/it/dictionary/nesting.md +47 -30
  249. package/docs/it/formatters.md +114 -168
  250. package/docs/it/intlayer_CMS.md +66 -15
  251. package/docs/it/intlayer_with_angular_21.md +9 -9
  252. package/docs/it/intlayer_with_nestjs.md +11 -7
  253. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/it/intlayer_with_solid_start.md +1078 -0
  256. package/docs/it/intlayer_with_vite+vue.md +1 -3
  257. package/docs/it/live-sync.md +4 -0
  258. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  259. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  260. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  261. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  264. package/docs/it/releases/v9.md +0 -15
  265. package/docs/it/self_hosting.md +60 -49
  266. package/docs/ja/analytics.md +222 -0
  267. package/docs/ja/autoFill.md +28 -9
  268. package/docs/ja/bundle_optimization.md +58 -25
  269. package/docs/ja/configuration.md +25 -8
  270. package/docs/ja/dictionary/content_file.md +15 -7
  271. package/docs/ja/dictionary/file.md +3 -1
  272. package/docs/ja/dictionary/nesting.md +47 -30
  273. package/docs/ja/formatters.md +133 -187
  274. package/docs/ja/intlayer_visual_editor.md +3 -1
  275. package/docs/ja/intlayer_with_angular_21.md +6 -6
  276. package/docs/ja/intlayer_with_nestjs.md +2 -12
  277. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  278. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  279. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  280. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  281. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  282. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  283. package/docs/ja/live-sync.md +4 -0
  284. package/docs/ja/mcp_server.md +3 -9
  285. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  286. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  287. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  288. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  289. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  290. package/docs/ja/releases/v9.md +12 -0
  291. package/docs/ja/self_hosting.md +46 -50
  292. package/docs/ko/analytics.md +222 -0
  293. package/docs/ko/autoFill.md +28 -9
  294. package/docs/ko/bundle_optimization.md +58 -25
  295. package/docs/ko/configuration.md +25 -8
  296. package/docs/ko/dictionary/file.md +3 -1
  297. package/docs/ko/dictionary/nesting.md +47 -30
  298. package/docs/ko/formatters.md +133 -187
  299. package/docs/ko/intlayer_with_angular_21.md +9 -9
  300. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  301. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  302. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  303. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  304. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  305. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  306. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  307. package/docs/ko/live-sync.md +4 -0
  308. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  309. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  310. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  311. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  312. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  313. package/docs/ko/releases/v9.md +12 -0
  314. package/docs/ko/self_hosting.md +60 -49
  315. package/docs/nl/bundle_optimization.md +58 -25
  316. package/docs/nl/configuration.md +25 -8
  317. package/docs/nl/intlayer_with_angular_21.md +9 -9
  318. package/docs/pl/analytics.md +220 -0
  319. package/docs/pl/bundle_optimization.md +58 -25
  320. package/docs/pl/configuration.md +25 -8
  321. package/docs/pl/dictionary/nesting.md +47 -30
  322. package/docs/pl/formatters.md +208 -305
  323. package/docs/pl/intlayer_CMS.md +152 -0
  324. package/docs/pl/intlayer_with_angular_21.md +9 -9
  325. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  326. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  327. package/docs/pl/live-sync.md +4 -0
  328. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  329. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  330. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  331. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  332. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  333. package/docs/pl/releases/v9.md +0 -15
  334. package/docs/pl/self_hosting.md +60 -49
  335. package/docs/pt/analytics.md +222 -0
  336. package/docs/pt/bundle_optimization.md +58 -24
  337. package/docs/pt/configuration.md +25 -8
  338. package/docs/pt/dictionary/file.md +3 -1
  339. package/docs/pt/dictionary/nesting.md +47 -30
  340. package/docs/pt/formatters.md +112 -168
  341. package/docs/pt/intlayer_CMS.md +66 -15
  342. package/docs/pt/intlayer_with_angular_21.md +9 -9
  343. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  344. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  345. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  346. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  347. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  348. package/docs/pt/live-sync.md +4 -0
  349. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  350. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  351. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  352. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  353. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  354. package/docs/pt/releases/v9.md +0 -15
  355. package/docs/pt/self_hosting.md +60 -49
  356. package/docs/ru/analytics.md +222 -0
  357. package/docs/ru/autoFill.md +27 -8
  358. package/docs/ru/bundle_optimization.md +58 -25
  359. package/docs/ru/configuration.md +25 -8
  360. package/docs/ru/dictionary/file.md +3 -1
  361. package/docs/ru/dictionary/nesting.md +64 -205
  362. package/docs/ru/formatters.md +108 -128
  363. package/docs/ru/intlayer_with_angular_21.md +9 -9
  364. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  365. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  366. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  367. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  368. package/docs/ru/live-sync.md +4 -0
  369. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  370. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  371. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  372. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  373. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  374. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  375. package/docs/ru/releases/v9.md +0 -15
  376. package/docs/ru/self_hosting.md +60 -49
  377. package/docs/tr/analytics.md +222 -0
  378. package/docs/tr/autoFill.md +28 -9
  379. package/docs/tr/bundle_optimization.md +58 -25
  380. package/docs/tr/configuration.md +25 -8
  381. package/docs/tr/dictionary/file.md +2 -0
  382. package/docs/tr/dictionary/nesting.md +47 -30
  383. package/docs/tr/formatters.md +144 -190
  384. package/docs/tr/intlayer_CMS.md +152 -0
  385. package/docs/tr/intlayer_with_angular_21.md +9 -9
  386. package/docs/tr/intlayer_with_nestjs.md +2 -12
  387. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  388. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  389. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  390. package/docs/tr/live-sync.md +4 -0
  391. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  392. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  393. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  394. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  395. package/docs/tr/self_hosting.md +47 -50
  396. package/docs/uk/analytics.md +222 -0
  397. package/docs/uk/bundle_optimization.md +58 -25
  398. package/docs/uk/configuration.md +25 -8
  399. package/docs/uk/dictionary/nesting.md +47 -30
  400. package/docs/uk/formatters.md +128 -185
  401. package/docs/uk/intlayer_CMS.md +152 -0
  402. package/docs/uk/intlayer_with_angular_21.md +9 -9
  403. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  404. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  405. package/docs/uk/live-sync.md +4 -0
  406. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  407. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  408. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  409. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  410. package/docs/uk/releases/v9.md +0 -15
  411. package/docs/uk/self_hosting.md +60 -50
  412. package/docs/ur/bundle_optimization.md +58 -25
  413. package/docs/ur/configuration.md +25 -8
  414. package/docs/ur/intlayer_with_angular_21.md +9 -9
  415. package/docs/vi/analytics.md +222 -0
  416. package/docs/vi/bundle_optimization.md +58 -25
  417. package/docs/vi/configuration.md +24 -8
  418. package/docs/vi/dictionary/nesting.md +37 -184
  419. package/docs/vi/formatters.md +208 -309
  420. package/docs/vi/intlayer_CMS.md +164 -0
  421. package/docs/vi/intlayer_with_angular_21.md +9 -9
  422. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  423. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  424. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  425. package/docs/vi/live-sync.md +4 -0
  426. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  427. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  428. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  429. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  430. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  431. package/docs/vi/plugins/sync-json.md +6 -6
  432. package/docs/vi/releases/v9.md +12 -0
  433. package/docs/vi/self_hosting.md +61 -50
  434. package/docs/zh/CI_CD.md +4 -0
  435. package/docs/zh/analytics.md +222 -0
  436. package/docs/zh/autoFill.md +28 -9
  437. package/docs/zh/bundle_optimization.md +58 -25
  438. package/docs/zh/configuration.md +24 -8
  439. package/docs/zh/dictionary/file.md +2 -0
  440. package/docs/zh/dictionary/nesting.md +47 -30
  441. package/docs/zh/formatters.md +140 -188
  442. package/docs/zh/intlayer_CMS.md +164 -0
  443. package/docs/zh/intlayer_with_analog.md +193 -3
  444. package/docs/zh/intlayer_with_angular_19.md +272 -3
  445. package/docs/zh/intlayer_with_angular_21.md +7 -7
  446. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  447. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  448. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  449. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  450. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  451. package/docs/zh/intlayer_with_nuxt.md +182 -7
  452. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  453. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  454. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  455. package/docs/zh/intlayer_with_storybook.md +260 -3
  456. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  457. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  458. package/docs/zh/intlayer_with_tanstack.md +731 -20
  459. package/docs/zh/intlayer_with_vanilla.md +314 -4
  460. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  461. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  462. package/docs/zh/intlayer_with_vite+react.md +324 -45
  463. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  464. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  465. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  466. package/docs/zh/live-sync.md +4 -0
  467. package/docs/zh/mcp_server.md +3 -9
  468. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  469. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  470. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  471. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  472. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  473. package/docs/zh/releases/v9.md +12 -0
  474. package/docs/zh/self_hosting.md +60 -50
  475. package/docs/zh-TW/bundle_optimization.md +58 -25
  476. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  477. package/package.json +7 -7
  478. package/src/common.ts +39 -2
  479. package/src/generated/blog.entry.ts +66 -34
  480. package/src/generated/docs.entry.ts +273 -221
  481. package/src/generated/frequentQuestions.entry.ts +56 -24
  482. package/src/generated/legal.entry.ts +41 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/docs",
3
- "version": "9.1.3",
3
+ "version": "9.3.0",
4
4
  "private": false,
5
5
  "description": "Intlayer documentation",
6
6
  "keywords": [
@@ -73,14 +73,14 @@
73
73
  "watch": "webpack --config ./webpack.config.ts --watch"
74
74
  },
75
75
  "dependencies": {
76
- "@intlayer/config": "9.1.3",
77
- "@intlayer/core": "9.1.3",
78
- "@intlayer/types": "9.1.3"
76
+ "@intlayer/config": "9.3.0",
77
+ "@intlayer/core": "9.3.0",
78
+ "@intlayer/types": "9.3.0"
79
79
  },
80
80
  "devDependencies": {
81
- "@intlayer/api": "9.1.3",
82
- "@intlayer/cli": "9.1.3",
83
- "@types/node": "26.1.2",
81
+ "@intlayer/api": "9.3.0",
82
+ "@intlayer/cli": "9.3.0",
83
+ "@types/node": "26.2.0",
84
84
  "@utils/ts-config": "1.0.4",
85
85
  "@utils/ts-config-types": "1.0.4",
86
86
  "@utils/tsdown-config": "1.0.4",
package/src/common.ts CHANGED
@@ -131,11 +131,25 @@ export const getFileMetadata = async <
131
131
  return formatMetadata(docKey as string, file, locale) as R;
132
132
  };
133
133
 
134
- export const getFileMetadataRecord = async <
134
+ /**
135
+ * Per-locale metadata records, keyed by the entry map they were built from.
136
+ *
137
+ * Building a record parses the frontmatter of every document of a category, and
138
+ * callers such as {@link getFileMetadataBySlug} need the whole record just to
139
+ * resolve a single slug — which a static site generator repeats for every page
140
+ * it renders. Documents are read once per process anyway (each entry caches its
141
+ * own read), so the derived metadata is equally safe to keep.
142
+ */
143
+ const fileMetadataRecordCache = new WeakMap<
144
+ Record<string, unknown>,
145
+ Map<LocalesValues, Promise<Record<string, FileMetadata>>>
146
+ >();
147
+
148
+ const buildFileMetadataRecord = async <
135
149
  F extends Record<string, Record<LocalesValues, Promise<string>>>,
136
150
  >(
137
151
  files: F,
138
- locale: LocalesValues = defaultLocale as LocalesValues
152
+ locale: LocalesValues
139
153
  ): Promise<Record<keyof F, FileMetadata>> => {
140
154
  const results = await Promise.allSettled(
141
155
  Object.entries(files).map(async ([key]) => {
@@ -153,6 +167,29 @@ export const getFileMetadataRecord = async <
153
167
  return filesResult as Record<keyof F, FileMetadata>;
154
168
  };
155
169
 
170
+ export const getFileMetadataRecord = async <
171
+ F extends Record<string, Record<LocalesValues, Promise<string>>>,
172
+ >(
173
+ files: F,
174
+ locale: LocalesValues = defaultLocale as LocalesValues
175
+ ): Promise<Record<keyof F, FileMetadata>> => {
176
+ let localeCache = fileMetadataRecordCache.get(files);
177
+
178
+ if (!localeCache) {
179
+ localeCache = new Map();
180
+ fileMetadataRecordCache.set(files, localeCache);
181
+ }
182
+
183
+ let record = localeCache.get(locale);
184
+
185
+ if (!record) {
186
+ record = buildFileMetadataRecord(files, locale);
187
+ localeCache.set(locale, record);
188
+ }
189
+
190
+ return (await record) as Record<keyof F, FileMetadata>;
191
+ };
192
+
156
193
  export const getFileMetadataBySlug = async <
157
194
  F extends Record<string, Record<LocalesValues, Promise<string>>>,
158
195
  >(
@@ -32,35 +32,67 @@ try {
32
32
  }
33
33
  }
34
34
 
35
- const readLocale = (
35
+ /**
36
+ * Reads a document, preferring the requested locale and falling back to English.
37
+ */
38
+ const readLocaleFile = async (
36
39
  relativeAfterLocale: string,
37
40
  locale: LocalesValues
38
41
  ): Promise<string> => {
39
42
  const target1 = join(baseDir, `./blog/${locale}/${relativeAfterLocale}`);
40
43
  if (existsSync(target1)) {
41
- return readFile(target1, 'utf8');
44
+ return await readFile(target1, 'utf8');
42
45
  }
43
46
  const target2 = join(baseDir, `./blog/en/${relativeAfterLocale}`);
44
47
  if (existsSync(target2)) {
45
- return readFile(target2, 'utf8');
48
+ return await readFile(target2, 'utf8');
46
49
  }
47
50
 
48
- return Promise.reject(
49
- new Error(
50
- `[docs] File not found: ${relativeAfterLocale} - locale: ${locale} - path: ${target1} - path: ${target2}`
51
- )
51
+ throw new Error(
52
+ `[docs] File not found: ${relativeAfterLocale} - locale: ${locale} - path: ${target1} - path: ${target2}`
52
53
  );
53
54
  };
54
55
 
56
+ /**
57
+ * Builds a lazy, awaitable handle over a document.
58
+ *
59
+ * The entry map below holds one handle per document *per locale*, so reading
60
+ * eagerly would pull every markdown file of every locale into memory as soon as
61
+ * this module is imported — hundreds of megabytes, duplicated in every
62
+ * prerender worker, for the handful of documents a page actually renders.
63
+ *
64
+ * The returned value is a thenable rather than a promise: consumers only ever
65
+ * `await` it, and `await` triggers `then`, so the file is read on first use and
66
+ * the resulting promise is cached for subsequent reads.
67
+ */
68
+ const readLocale = (
69
+ relativeAfterLocale: string,
70
+ locale: LocalesValues
71
+ ): Promise<string> => {
72
+ let pendingRead: Promise<string> | undefined;
73
+
74
+ const read = (): Promise<string> => {
75
+ pendingRead ??= readLocaleFile(relativeAfterLocale, locale);
76
+ return pendingRead;
77
+ };
78
+
79
+ return {
80
+ // biome-ignore lint/suspicious/noThenProperty: the thenable is intentional — `await` is what triggers the lazy read.
81
+ then: (onFulfilled, onRejected) => read().then(onFulfilled, onRejected),
82
+ catch: (onRejected) => read().catch(onRejected),
83
+ finally: (onFinally) => read().finally(onFinally),
84
+ } as Promise<string>;
85
+ };
86
+
55
87
  export const blogEntry = {
56
88
  './blog/en/compiler_vs_declarative_i18n.md': {
57
89
  en: readLocale('compiler_vs_declarative_i18n.md', 'en'),
90
+ es: readLocale('compiler_vs_declarative_i18n.md', 'es'),
58
91
  ru: readLocale('compiler_vs_declarative_i18n.md', 'ru'),
59
92
  ja: readLocale('compiler_vs_declarative_i18n.md', 'ja'),
60
93
  fr: readLocale('compiler_vs_declarative_i18n.md', 'fr'),
61
94
  ko: readLocale('compiler_vs_declarative_i18n.md', 'ko'),
62
95
  zh: readLocale('compiler_vs_declarative_i18n.md', 'zh'),
63
- es: readLocale('compiler_vs_declarative_i18n.md', 'es'),
64
96
  de: readLocale('compiler_vs_declarative_i18n.md', 'de'),
65
97
  ar: readLocale('compiler_vs_declarative_i18n.md', 'ar'),
66
98
  it: readLocale('compiler_vs_declarative_i18n.md', 'it'),
@@ -75,12 +107,12 @@ export const blogEntry = {
75
107
  } as unknown as Record<LocalesValues, Promise<string>>,
76
108
  './blog/en/i18n_meaning.md': {
77
109
  en: readLocale('i18n_meaning.md', 'en'),
110
+ es: readLocale('i18n_meaning.md', 'es'),
78
111
  ru: readLocale('i18n_meaning.md', 'ru'),
79
112
  ja: readLocale('i18n_meaning.md', 'ja'),
80
113
  fr: readLocale('i18n_meaning.md', 'fr'),
81
114
  ko: readLocale('i18n_meaning.md', 'ko'),
82
115
  zh: readLocale('i18n_meaning.md', 'zh'),
83
- es: readLocale('i18n_meaning.md', 'es'),
84
116
  de: readLocale('i18n_meaning.md', 'de'),
85
117
  ar: readLocale('i18n_meaning.md', 'ar'),
86
118
  it: readLocale('i18n_meaning.md', 'it'),
@@ -95,12 +127,12 @@ export const blogEntry = {
95
127
  } as unknown as Record<LocalesValues, Promise<string>>,
96
128
  './blog/en/i18n_using_next-i18next.md': {
97
129
  en: readLocale('i18n_using_next-i18next.md', 'en'),
130
+ es: readLocale('i18n_using_next-i18next.md', 'es'),
98
131
  ru: readLocale('i18n_using_next-i18next.md', 'ru'),
99
132
  ja: readLocale('i18n_using_next-i18next.md', 'ja'),
100
133
  fr: readLocale('i18n_using_next-i18next.md', 'fr'),
101
134
  ko: readLocale('i18n_using_next-i18next.md', 'ko'),
102
135
  zh: readLocale('i18n_using_next-i18next.md', 'zh'),
103
- es: readLocale('i18n_using_next-i18next.md', 'es'),
104
136
  de: readLocale('i18n_using_next-i18next.md', 'de'),
105
137
  ar: readLocale('i18n_using_next-i18next.md', 'ar'),
106
138
  it: readLocale('i18n_using_next-i18next.md', 'it'),
@@ -115,12 +147,12 @@ export const blogEntry = {
115
147
  } as unknown as Record<LocalesValues, Promise<string>>,
116
148
  './blog/en/i18n_using_next-intl.md': {
117
149
  en: readLocale('i18n_using_next-intl.md', 'en'),
150
+ es: readLocale('i18n_using_next-intl.md', 'es'),
118
151
  ru: readLocale('i18n_using_next-intl.md', 'ru'),
119
152
  ja: readLocale('i18n_using_next-intl.md', 'ja'),
120
153
  fr: readLocale('i18n_using_next-intl.md', 'fr'),
121
154
  ko: readLocale('i18n_using_next-intl.md', 'ko'),
122
155
  zh: readLocale('i18n_using_next-intl.md', 'zh'),
123
- es: readLocale('i18n_using_next-intl.md', 'es'),
124
156
  de: readLocale('i18n_using_next-intl.md', 'de'),
125
157
  ar: readLocale('i18n_using_next-intl.md', 'ar'),
126
158
  it: readLocale('i18n_using_next-intl.md', 'it'),
@@ -135,12 +167,12 @@ export const blogEntry = {
135
167
  } as unknown as Record<LocalesValues, Promise<string>>,
136
168
  './blog/en/index.md': {
137
169
  en: readLocale('index.md', 'en'),
170
+ es: readLocale('index.md', 'es'),
138
171
  ru: readLocale('index.md', 'ru'),
139
172
  ja: readLocale('index.md', 'ja'),
140
173
  fr: readLocale('index.md', 'fr'),
141
174
  ko: readLocale('index.md', 'ko'),
142
175
  zh: readLocale('index.md', 'zh'),
143
- es: readLocale('index.md', 'es'),
144
176
  de: readLocale('index.md', 'de'),
145
177
  ar: readLocale('index.md', 'ar'),
146
178
  it: readLocale('index.md', 'it'),
@@ -155,12 +187,12 @@ export const blogEntry = {
155
187
  } as unknown as Record<LocalesValues, Promise<string>>,
156
188
  './blog/en/internationalization_and_SEO.md': {
157
189
  en: readLocale('internationalization_and_SEO.md', 'en'),
190
+ es: readLocale('internationalization_and_SEO.md', 'es'),
158
191
  ru: readLocale('internationalization_and_SEO.md', 'ru'),
159
192
  ja: readLocale('internationalization_and_SEO.md', 'ja'),
160
193
  fr: readLocale('internationalization_and_SEO.md', 'fr'),
161
194
  ko: readLocale('internationalization_and_SEO.md', 'ko'),
162
195
  zh: readLocale('internationalization_and_SEO.md', 'zh'),
163
- es: readLocale('internationalization_and_SEO.md', 'es'),
164
196
  de: readLocale('internationalization_and_SEO.md', 'de'),
165
197
  ar: readLocale('internationalization_and_SEO.md', 'ar'),
166
198
  it: readLocale('internationalization_and_SEO.md', 'it'),
@@ -175,12 +207,12 @@ export const blogEntry = {
175
207
  } as unknown as Record<LocalesValues, Promise<string>>,
176
208
  './blog/en/intlayer_with_i18next.md': {
177
209
  en: readLocale('intlayer_with_i18next.md', 'en'),
210
+ es: readLocale('intlayer_with_i18next.md', 'es'),
178
211
  ru: readLocale('intlayer_with_i18next.md', 'ru'),
179
212
  ja: readLocale('intlayer_with_i18next.md', 'ja'),
180
213
  fr: readLocale('intlayer_with_i18next.md', 'fr'),
181
214
  ko: readLocale('intlayer_with_i18next.md', 'ko'),
182
215
  zh: readLocale('intlayer_with_i18next.md', 'zh'),
183
- es: readLocale('intlayer_with_i18next.md', 'es'),
184
216
  de: readLocale('intlayer_with_i18next.md', 'de'),
185
217
  ar: readLocale('intlayer_with_i18next.md', 'ar'),
186
218
  it: readLocale('intlayer_with_i18next.md', 'it'),
@@ -195,12 +227,12 @@ export const blogEntry = {
195
227
  } as unknown as Record<LocalesValues, Promise<string>>,
196
228
  './blog/en/intlayer_with_next-i18next.md': {
197
229
  en: readLocale('intlayer_with_next-i18next.md', 'en'),
230
+ es: readLocale('intlayer_with_next-i18next.md', 'es'),
198
231
  ru: readLocale('intlayer_with_next-i18next.md', 'ru'),
199
232
  ja: readLocale('intlayer_with_next-i18next.md', 'ja'),
200
233
  fr: readLocale('intlayer_with_next-i18next.md', 'fr'),
201
234
  ko: readLocale('intlayer_with_next-i18next.md', 'ko'),
202
235
  zh: readLocale('intlayer_with_next-i18next.md', 'zh'),
203
- es: readLocale('intlayer_with_next-i18next.md', 'es'),
204
236
  de: readLocale('intlayer_with_next-i18next.md', 'de'),
205
237
  ar: readLocale('intlayer_with_next-i18next.md', 'ar'),
206
238
  it: readLocale('intlayer_with_next-i18next.md', 'it'),
@@ -215,12 +247,12 @@ export const blogEntry = {
215
247
  } as unknown as Record<LocalesValues, Promise<string>>,
216
248
  './blog/en/intlayer_with_next-intl.md': {
217
249
  en: readLocale('intlayer_with_next-intl.md', 'en'),
250
+ es: readLocale('intlayer_with_next-intl.md', 'es'),
218
251
  ru: readLocale('intlayer_with_next-intl.md', 'ru'),
219
252
  ja: readLocale('intlayer_with_next-intl.md', 'ja'),
220
253
  fr: readLocale('intlayer_with_next-intl.md', 'fr'),
221
254
  ko: readLocale('intlayer_with_next-intl.md', 'ko'),
222
255
  zh: readLocale('intlayer_with_next-intl.md', 'zh'),
223
- es: readLocale('intlayer_with_next-intl.md', 'es'),
224
256
  de: readLocale('intlayer_with_next-intl.md', 'de'),
225
257
  ar: readLocale('intlayer_with_next-intl.md', 'ar'),
226
258
  it: readLocale('intlayer_with_next-intl.md', 'it'),
@@ -235,12 +267,12 @@ export const blogEntry = {
235
267
  } as unknown as Record<LocalesValues, Promise<string>>,
236
268
  './blog/en/intlayer_with_react-i18next.md': {
237
269
  en: readLocale('intlayer_with_react-i18next.md', 'en'),
270
+ es: readLocale('intlayer_with_react-i18next.md', 'es'),
238
271
  ru: readLocale('intlayer_with_react-i18next.md', 'ru'),
239
272
  ja: readLocale('intlayer_with_react-i18next.md', 'ja'),
240
273
  fr: readLocale('intlayer_with_react-i18next.md', 'fr'),
241
274
  ko: readLocale('intlayer_with_react-i18next.md', 'ko'),
242
275
  zh: readLocale('intlayer_with_react-i18next.md', 'zh'),
243
- es: readLocale('intlayer_with_react-i18next.md', 'es'),
244
276
  de: readLocale('intlayer_with_react-i18next.md', 'de'),
245
277
  ar: readLocale('intlayer_with_react-i18next.md', 'ar'),
246
278
  it: readLocale('intlayer_with_react-i18next.md', 'it'),
@@ -255,12 +287,12 @@ export const blogEntry = {
255
287
  } as unknown as Record<LocalesValues, Promise<string>>,
256
288
  './blog/en/intlayer_with_react-intl.md': {
257
289
  en: readLocale('intlayer_with_react-intl.md', 'en'),
290
+ es: readLocale('intlayer_with_react-intl.md', 'es'),
258
291
  ru: readLocale('intlayer_with_react-intl.md', 'ru'),
259
292
  ja: readLocale('intlayer_with_react-intl.md', 'ja'),
260
293
  fr: readLocale('intlayer_with_react-intl.md', 'fr'),
261
294
  ko: readLocale('intlayer_with_react-intl.md', 'ko'),
262
295
  zh: readLocale('intlayer_with_react-intl.md', 'zh'),
263
- es: readLocale('intlayer_with_react-intl.md', 'es'),
264
296
  de: readLocale('intlayer_with_react-intl.md', 'de'),
265
297
  ar: readLocale('intlayer_with_react-intl.md', 'ar'),
266
298
  it: readLocale('intlayer_with_react-intl.md', 'it'),
@@ -275,12 +307,12 @@ export const blogEntry = {
275
307
  } as unknown as Record<LocalesValues, Promise<string>>,
276
308
  './blog/en/intlayer_with_vue-i18n.md': {
277
309
  en: readLocale('intlayer_with_vue-i18n.md', 'en'),
310
+ es: readLocale('intlayer_with_vue-i18n.md', 'es'),
278
311
  ru: readLocale('intlayer_with_vue-i18n.md', 'ru'),
279
312
  ja: readLocale('intlayer_with_vue-i18n.md', 'ja'),
280
313
  fr: readLocale('intlayer_with_vue-i18n.md', 'fr'),
281
314
  ko: readLocale('intlayer_with_vue-i18n.md', 'ko'),
282
315
  zh: readLocale('intlayer_with_vue-i18n.md', 'zh'),
283
- es: readLocale('intlayer_with_vue-i18n.md', 'es'),
284
316
  de: readLocale('intlayer_with_vue-i18n.md', 'de'),
285
317
  ar: readLocale('intlayer_with_vue-i18n.md', 'ar'),
286
318
  it: readLocale('intlayer_with_vue-i18n.md', 'it'),
@@ -295,12 +327,12 @@ export const blogEntry = {
295
327
  } as unknown as Record<LocalesValues, Promise<string>>,
296
328
  './blog/en/l10n_platform_alternative/Lokalise.md': {
297
329
  en: readLocale('l10n_platform_alternative/Lokalise.md', 'en'),
330
+ es: readLocale('l10n_platform_alternative/Lokalise.md', 'es'),
298
331
  ru: readLocale('l10n_platform_alternative/Lokalise.md', 'ru'),
299
332
  ja: readLocale('l10n_platform_alternative/Lokalise.md', 'ja'),
300
333
  fr: readLocale('l10n_platform_alternative/Lokalise.md', 'fr'),
301
334
  ko: readLocale('l10n_platform_alternative/Lokalise.md', 'ko'),
302
335
  zh: readLocale('l10n_platform_alternative/Lokalise.md', 'zh'),
303
- es: readLocale('l10n_platform_alternative/Lokalise.md', 'es'),
304
336
  de: readLocale('l10n_platform_alternative/Lokalise.md', 'de'),
305
337
  ar: readLocale('l10n_platform_alternative/Lokalise.md', 'ar'),
306
338
  it: readLocale('l10n_platform_alternative/Lokalise.md', 'it'),
@@ -315,12 +347,12 @@ export const blogEntry = {
315
347
  } as unknown as Record<LocalesValues, Promise<string>>,
316
348
  './blog/en/l10n_platform_alternative/crowdin.md': {
317
349
  en: readLocale('l10n_platform_alternative/crowdin.md', 'en'),
350
+ es: readLocale('l10n_platform_alternative/crowdin.md', 'es'),
318
351
  ru: readLocale('l10n_platform_alternative/crowdin.md', 'ru'),
319
352
  ja: readLocale('l10n_platform_alternative/crowdin.md', 'ja'),
320
353
  fr: readLocale('l10n_platform_alternative/crowdin.md', 'fr'),
321
354
  ko: readLocale('l10n_platform_alternative/crowdin.md', 'ko'),
322
355
  zh: readLocale('l10n_platform_alternative/crowdin.md', 'zh'),
323
- es: readLocale('l10n_platform_alternative/crowdin.md', 'es'),
324
356
  de: readLocale('l10n_platform_alternative/crowdin.md', 'de'),
325
357
  ar: readLocale('l10n_platform_alternative/crowdin.md', 'ar'),
326
358
  it: readLocale('l10n_platform_alternative/crowdin.md', 'it'),
@@ -335,12 +367,12 @@ export const blogEntry = {
335
367
  } as unknown as Record<LocalesValues, Promise<string>>,
336
368
  './blog/en/l10n_platform_alternative/phrase.md': {
337
369
  en: readLocale('l10n_platform_alternative/phrase.md', 'en'),
370
+ es: readLocale('l10n_platform_alternative/phrase.md', 'es'),
338
371
  ru: readLocale('l10n_platform_alternative/phrase.md', 'ru'),
339
372
  ja: readLocale('l10n_platform_alternative/phrase.md', 'ja'),
340
373
  fr: readLocale('l10n_platform_alternative/phrase.md', 'fr'),
341
374
  ko: readLocale('l10n_platform_alternative/phrase.md', 'ko'),
342
375
  zh: readLocale('l10n_platform_alternative/phrase.md', 'zh'),
343
- es: readLocale('l10n_platform_alternative/phrase.md', 'es'),
344
376
  de: readLocale('l10n_platform_alternative/phrase.md', 'de'),
345
377
  ar: readLocale('l10n_platform_alternative/phrase.md', 'ar'),
346
378
  it: readLocale('l10n_platform_alternative/phrase.md', 'it'),
@@ -355,12 +387,12 @@ export const blogEntry = {
355
387
  } as unknown as Record<LocalesValues, Promise<string>>,
356
388
  './blog/en/list_i18n_technologies/frameworks/angular.md': {
357
389
  en: readLocale('list_i18n_technologies/frameworks/angular.md', 'en'),
390
+ es: readLocale('list_i18n_technologies/frameworks/angular.md', 'es'),
358
391
  ru: readLocale('list_i18n_technologies/frameworks/angular.md', 'ru'),
359
392
  ja: readLocale('list_i18n_technologies/frameworks/angular.md', 'ja'),
360
393
  fr: readLocale('list_i18n_technologies/frameworks/angular.md', 'fr'),
361
394
  ko: readLocale('list_i18n_technologies/frameworks/angular.md', 'ko'),
362
395
  zh: readLocale('list_i18n_technologies/frameworks/angular.md', 'zh'),
363
- es: readLocale('list_i18n_technologies/frameworks/angular.md', 'es'),
364
396
  de: readLocale('list_i18n_technologies/frameworks/angular.md', 'de'),
365
397
  ar: readLocale('list_i18n_technologies/frameworks/angular.md', 'ar'),
366
398
  it: readLocale('list_i18n_technologies/frameworks/angular.md', 'it'),
@@ -378,12 +410,12 @@ export const blogEntry = {
378
410
  } as unknown as Record<LocalesValues, Promise<string>>,
379
411
  './blog/en/list_i18n_technologies/frameworks/react-native.md': {
380
412
  en: readLocale('list_i18n_technologies/frameworks/react-native.md', 'en'),
413
+ es: readLocale('list_i18n_technologies/frameworks/react-native.md', 'es'),
381
414
  ru: readLocale('list_i18n_technologies/frameworks/react-native.md', 'ru'),
382
415
  ja: readLocale('list_i18n_technologies/frameworks/react-native.md', 'ja'),
383
416
  fr: readLocale('list_i18n_technologies/frameworks/react-native.md', 'fr'),
384
417
  ko: readLocale('list_i18n_technologies/frameworks/react-native.md', 'ko'),
385
418
  zh: readLocale('list_i18n_technologies/frameworks/react-native.md', 'zh'),
386
- es: readLocale('list_i18n_technologies/frameworks/react-native.md', 'es'),
387
419
  de: readLocale('list_i18n_technologies/frameworks/react-native.md', 'de'),
388
420
  ar: readLocale('list_i18n_technologies/frameworks/react-native.md', 'ar'),
389
421
  it: readLocale('list_i18n_technologies/frameworks/react-native.md', 'it'),
@@ -401,12 +433,12 @@ export const blogEntry = {
401
433
  } as unknown as Record<LocalesValues, Promise<string>>,
402
434
  './blog/en/list_i18n_technologies/frameworks/react.md': {
403
435
  en: readLocale('list_i18n_technologies/frameworks/react.md', 'en'),
436
+ es: readLocale('list_i18n_technologies/frameworks/react.md', 'es'),
404
437
  ru: readLocale('list_i18n_technologies/frameworks/react.md', 'ru'),
405
438
  ja: readLocale('list_i18n_technologies/frameworks/react.md', 'ja'),
406
439
  fr: readLocale('list_i18n_technologies/frameworks/react.md', 'fr'),
407
440
  ko: readLocale('list_i18n_technologies/frameworks/react.md', 'ko'),
408
441
  zh: readLocale('list_i18n_technologies/frameworks/react.md', 'zh'),
409
- es: readLocale('list_i18n_technologies/frameworks/react.md', 'es'),
410
442
  de: readLocale('list_i18n_technologies/frameworks/react.md', 'de'),
411
443
  ar: readLocale('list_i18n_technologies/frameworks/react.md', 'ar'),
412
444
  it: readLocale('list_i18n_technologies/frameworks/react.md', 'it'),
@@ -421,12 +453,12 @@ export const blogEntry = {
421
453
  } as unknown as Record<LocalesValues, Promise<string>>,
422
454
  './blog/en/list_i18n_technologies/frameworks/svelte.md': {
423
455
  en: readLocale('list_i18n_technologies/frameworks/svelte.md', 'en'),
456
+ es: readLocale('list_i18n_technologies/frameworks/svelte.md', 'es'),
424
457
  ru: readLocale('list_i18n_technologies/frameworks/svelte.md', 'ru'),
425
458
  ja: readLocale('list_i18n_technologies/frameworks/svelte.md', 'ja'),
426
459
  fr: readLocale('list_i18n_technologies/frameworks/svelte.md', 'fr'),
427
460
  ko: readLocale('list_i18n_technologies/frameworks/svelte.md', 'ko'),
428
461
  zh: readLocale('list_i18n_technologies/frameworks/svelte.md', 'zh'),
429
- es: readLocale('list_i18n_technologies/frameworks/svelte.md', 'es'),
430
462
  de: readLocale('list_i18n_technologies/frameworks/svelte.md', 'de'),
431
463
  ar: readLocale('list_i18n_technologies/frameworks/svelte.md', 'ar'),
432
464
  it: readLocale('list_i18n_technologies/frameworks/svelte.md', 'it'),
@@ -441,12 +473,12 @@ export const blogEntry = {
441
473
  } as unknown as Record<LocalesValues, Promise<string>>,
442
474
  './blog/en/list_i18n_technologies/frameworks/vue.md': {
443
475
  en: readLocale('list_i18n_technologies/frameworks/vue.md', 'en'),
476
+ es: readLocale('list_i18n_technologies/frameworks/vue.md', 'es'),
444
477
  ru: readLocale('list_i18n_technologies/frameworks/vue.md', 'ru'),
445
478
  ja: readLocale('list_i18n_technologies/frameworks/vue.md', 'ja'),
446
479
  fr: readLocale('list_i18n_technologies/frameworks/vue.md', 'fr'),
447
480
  ko: readLocale('list_i18n_technologies/frameworks/vue.md', 'ko'),
448
481
  zh: readLocale('list_i18n_technologies/frameworks/vue.md', 'zh'),
449
- es: readLocale('list_i18n_technologies/frameworks/vue.md', 'es'),
450
482
  de: readLocale('list_i18n_technologies/frameworks/vue.md', 'de'),
451
483
  ar: readLocale('list_i18n_technologies/frameworks/vue.md', 'ar'),
452
484
  it: readLocale('list_i18n_technologies/frameworks/vue.md', 'it'),
@@ -461,12 +493,12 @@ export const blogEntry = {
461
493
  } as unknown as Record<LocalesValues, Promise<string>>,
462
494
  './blog/en/next-i18next_vs_next-intl_vs_intlayer.md': {
463
495
  en: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'en'),
496
+ es: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'es'),
464
497
  ru: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'ru'),
465
498
  ja: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'ja'),
466
499
  fr: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'fr'),
467
500
  ko: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'ko'),
468
501
  zh: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'zh'),
469
- es: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'es'),
470
502
  de: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'de'),
471
503
  ar: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'ar'),
472
504
  it: readLocale('next-i18next_vs_next-intl_vs_intlayer.md', 'it'),
@@ -481,12 +513,12 @@ export const blogEntry = {
481
513
  } as unknown as Record<LocalesValues, Promise<string>>,
482
514
  './blog/en/nextjs-multilingual-seo-comparison.md': {
483
515
  en: readLocale('nextjs-multilingual-seo-comparison.md', 'en'),
516
+ es: readLocale('nextjs-multilingual-seo-comparison.md', 'es'),
484
517
  ru: readLocale('nextjs-multilingual-seo-comparison.md', 'ru'),
485
518
  ja: readLocale('nextjs-multilingual-seo-comparison.md', 'ja'),
486
519
  fr: readLocale('nextjs-multilingual-seo-comparison.md', 'fr'),
487
520
  ko: readLocale('nextjs-multilingual-seo-comparison.md', 'ko'),
488
521
  zh: readLocale('nextjs-multilingual-seo-comparison.md', 'zh'),
489
- es: readLocale('nextjs-multilingual-seo-comparison.md', 'es'),
490
522
  de: readLocale('nextjs-multilingual-seo-comparison.md', 'de'),
491
523
  ar: readLocale('nextjs-multilingual-seo-comparison.md', 'ar'),
492
524
  it: readLocale('nextjs-multilingual-seo-comparison.md', 'it'),
@@ -501,12 +533,12 @@ export const blogEntry = {
501
533
  } as unknown as Record<LocalesValues, Promise<string>>,
502
534
  './blog/en/per-component_vs_centralized_i18n.md': {
503
535
  en: readLocale('per-component_vs_centralized_i18n.md', 'en'),
536
+ es: readLocale('per-component_vs_centralized_i18n.md', 'es'),
504
537
  ru: readLocale('per-component_vs_centralized_i18n.md', 'ru'),
505
538
  ja: readLocale('per-component_vs_centralized_i18n.md', 'ja'),
506
539
  fr: readLocale('per-component_vs_centralized_i18n.md', 'fr'),
507
540
  ko: readLocale('per-component_vs_centralized_i18n.md', 'ko'),
508
541
  zh: readLocale('per-component_vs_centralized_i18n.md', 'zh'),
509
- es: readLocale('per-component_vs_centralized_i18n.md', 'es'),
510
542
  de: readLocale('per-component_vs_centralized_i18n.md', 'de'),
511
543
  ar: readLocale('per-component_vs_centralized_i18n.md', 'ar'),
512
544
  it: readLocale('per-component_vs_centralized_i18n.md', 'it'),
@@ -521,12 +553,12 @@ export const blogEntry = {
521
553
  } as unknown as Record<LocalesValues, Promise<string>>,
522
554
  './blog/en/rag_powered_documentation_assistant.md': {
523
555
  en: readLocale('rag_powered_documentation_assistant.md', 'en'),
556
+ es: readLocale('rag_powered_documentation_assistant.md', 'es'),
524
557
  ru: readLocale('rag_powered_documentation_assistant.md', 'ru'),
525
558
  ja: readLocale('rag_powered_documentation_assistant.md', 'ja'),
526
559
  fr: readLocale('rag_powered_documentation_assistant.md', 'fr'),
527
560
  ko: readLocale('rag_powered_documentation_assistant.md', 'ko'),
528
561
  zh: readLocale('rag_powered_documentation_assistant.md', 'zh'),
529
- es: readLocale('rag_powered_documentation_assistant.md', 'es'),
530
562
  de: readLocale('rag_powered_documentation_assistant.md', 'de'),
531
563
  ar: readLocale('rag_powered_documentation_assistant.md', 'ar'),
532
564
  it: readLocale('rag_powered_documentation_assistant.md', 'it'),
@@ -541,12 +573,12 @@ export const blogEntry = {
541
573
  } as unknown as Record<LocalesValues, Promise<string>>,
542
574
  './blog/en/react-i18next_vs_react-intl_vs_intlayer.md': {
543
575
  en: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'en'),
576
+ es: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'es'),
544
577
  ru: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'ru'),
545
578
  ja: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'ja'),
546
579
  fr: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'fr'),
547
580
  ko: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'ko'),
548
581
  zh: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'zh'),
549
- es: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'es'),
550
582
  de: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'de'),
551
583
  ar: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'ar'),
552
584
  it: readLocale('react-i18next_vs_react-intl_vs_intlayer.md', 'it'),
@@ -561,12 +593,12 @@ export const blogEntry = {
561
593
  } as unknown as Record<LocalesValues, Promise<string>>,
562
594
  './blog/en/vue-i18n_vs_intlayer.md': {
563
595
  en: readLocale('vue-i18n_vs_intlayer.md', 'en'),
596
+ es: readLocale('vue-i18n_vs_intlayer.md', 'es'),
564
597
  ru: readLocale('vue-i18n_vs_intlayer.md', 'ru'),
565
598
  ja: readLocale('vue-i18n_vs_intlayer.md', 'ja'),
566
599
  fr: readLocale('vue-i18n_vs_intlayer.md', 'fr'),
567
600
  ko: readLocale('vue-i18n_vs_intlayer.md', 'ko'),
568
601
  zh: readLocale('vue-i18n_vs_intlayer.md', 'zh'),
569
- es: readLocale('vue-i18n_vs_intlayer.md', 'es'),
570
602
  de: readLocale('vue-i18n_vs_intlayer.md', 'de'),
571
603
  ar: readLocale('vue-i18n_vs_intlayer.md', 'ar'),
572
604
  it: readLocale('vue-i18n_vs_intlayer.md', 'it'),
@@ -581,12 +613,12 @@ export const blogEntry = {
581
613
  } as unknown as Record<LocalesValues, Promise<string>>,
582
614
  './blog/en/what_is_internationalization.md': {
583
615
  en: readLocale('what_is_internationalization.md', 'en'),
616
+ es: readLocale('what_is_internationalization.md', 'es'),
584
617
  ru: readLocale('what_is_internationalization.md', 'ru'),
585
618
  ja: readLocale('what_is_internationalization.md', 'ja'),
586
619
  fr: readLocale('what_is_internationalization.md', 'fr'),
587
620
  ko: readLocale('what_is_internationalization.md', 'ko'),
588
621
  zh: readLocale('what_is_internationalization.md', 'zh'),
589
- es: readLocale('what_is_internationalization.md', 'es'),
590
622
  de: readLocale('what_is_internationalization.md', 'de'),
591
623
  ar: readLocale('what_is_internationalization.md', 'ar'),
592
624
  it: readLocale('what_is_internationalization.md', 'it'),