@intlayer/docs 9.5.3 → 9.5.4-canary.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 (783) hide show
  1. package/README.md +8 -8
  2. package/blog/ar/history_of_i18n.md +54 -54
  3. package/blog/ar/how_to_pick_react_i18n_library.md +548 -0
  4. package/blog/ar/how_to_pick_solid_i18n_library.md +438 -0
  5. package/blog/ar/how_to_pick_svelte_i18n_library.md +454 -0
  6. package/blog/ar/how_to_pick_vue_i18n_library.md +442 -0
  7. package/blog/ar/is_i18next_outdated.md +5 -1
  8. package/blog/ar/is_next-intl_outdated.md +5 -1
  9. package/blog/ar/is_vue-i18n_outdated.md +7 -1
  10. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +8 -4
  11. package/blog/ar/per-component_vs_centralized_i18n.md +9 -4
  12. package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  13. package/blog/de/history_of_i18n.md +54 -54
  14. package/blog/de/how_to_pick_react_i18n_library.md +548 -0
  15. package/blog/de/how_to_pick_solid_i18n_library.md +451 -0
  16. package/blog/de/how_to_pick_svelte_i18n_library.md +454 -0
  17. package/blog/de/how_to_pick_vue_i18n_library.md +448 -0
  18. package/blog/de/is_i18next_outdated.md +5 -1
  19. package/blog/de/is_next-intl_outdated.md +5 -1
  20. package/blog/de/is_vue-i18n_outdated.md +7 -1
  21. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  22. package/blog/de/per-component_vs_centralized_i18n.md +9 -4
  23. package/blog/de/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  24. package/blog/en/history_of_i18n.md +54 -54
  25. package/blog/en/how_to_pick_react_i18n_library.md +542 -0
  26. package/blog/en/how_to_pick_solid_i18n_library.md +438 -0
  27. package/blog/en/how_to_pick_svelte_i18n_library.md +448 -0
  28. package/blog/en/how_to_pick_vue_i18n_library.md +442 -0
  29. package/blog/en/is_i18next_outdated.md +5 -1
  30. package/blog/en/is_next-intl_outdated.md +5 -1
  31. package/blog/en/is_vue-i18n_outdated.md +7 -1
  32. package/blog/en/list_i18n_technologies/frameworks/react-router.md +2 -3
  33. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  34. package/blog/en/per-component_vs_centralized_i18n.md +9 -4
  35. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  36. package/blog/en-GB/history_of_i18n.md +54 -54
  37. package/blog/en-GB/how_to_pick_react_i18n_library.md +542 -0
  38. package/blog/en-GB/how_to_pick_solid_i18n_library.md +438 -0
  39. package/blog/en-GB/how_to_pick_svelte_i18n_library.md +448 -0
  40. package/blog/en-GB/how_to_pick_vue_i18n_library.md +448 -0
  41. package/blog/en-GB/is_i18next_outdated.md +5 -1
  42. package/blog/en-GB/is_next-intl_outdated.md +5 -1
  43. package/blog/en-GB/is_vue-i18n_outdated.md +7 -1
  44. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  45. package/blog/en-GB/per-component_vs_centralized_i18n.md +9 -4
  46. package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  47. package/blog/es/history_of_i18n.md +54 -54
  48. package/blog/es/how_to_pick_react_i18n_library.md +542 -0
  49. package/blog/es/how_to_pick_solid_i18n_library.md +446 -0
  50. package/blog/es/how_to_pick_svelte_i18n_library.md +448 -0
  51. package/blog/es/how_to_pick_vue_i18n_library.md +442 -0
  52. package/blog/es/is_i18next_outdated.md +5 -1
  53. package/blog/es/is_next-intl_outdated.md +5 -1
  54. package/blog/es/is_vue-i18n_outdated.md +7 -1
  55. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  56. package/blog/es/per-component_vs_centralized_i18n.md +9 -4
  57. package/blog/es/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  58. package/blog/fr/history_of_i18n.md +54 -54
  59. package/blog/fr/how_to_pick_react_i18n_library.md +542 -0
  60. package/blog/fr/how_to_pick_solid_i18n_library.md +438 -0
  61. package/blog/fr/how_to_pick_svelte_i18n_library.md +448 -0
  62. package/blog/fr/how_to_pick_vue_i18n_library.md +442 -0
  63. package/blog/fr/is_i18next_outdated.md +5 -1
  64. package/blog/fr/is_next-intl_outdated.md +5 -1
  65. package/blog/fr/is_vue-i18n_outdated.md +7 -1
  66. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  67. package/blog/fr/per-component_vs_centralized_i18n.md +9 -4
  68. package/blog/fr/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  69. package/blog/hi/history_of_i18n.md +54 -54
  70. package/blog/hi/how_to_pick_react_i18n_library.md +548 -0
  71. package/blog/hi/how_to_pick_solid_i18n_library.md +451 -0
  72. package/blog/hi/how_to_pick_svelte_i18n_library.md +448 -0
  73. package/blog/hi/how_to_pick_vue_i18n_library.md +442 -0
  74. package/blog/hi/is_i18next_outdated.md +5 -1
  75. package/blog/hi/is_next-intl_outdated.md +5 -1
  76. package/blog/hi/is_vue-i18n_outdated.md +7 -1
  77. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +8 -4
  78. package/blog/hi/per-component_vs_centralized_i18n.md +9 -4
  79. package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  80. package/blog/id/history_of_i18n.md +54 -54
  81. package/blog/id/how_to_pick_react_i18n_library.md +548 -0
  82. package/blog/id/how_to_pick_solid_i18n_library.md +451 -0
  83. package/blog/id/how_to_pick_svelte_i18n_library.md +454 -0
  84. package/blog/id/how_to_pick_vue_i18n_library.md +442 -0
  85. package/blog/id/is_i18next_outdated.md +5 -1
  86. package/blog/id/is_next-intl_outdated.md +5 -1
  87. package/blog/id/is_vue-i18n_outdated.md +7 -1
  88. package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  89. package/blog/id/per-component_vs_centralized_i18n.md +9 -4
  90. package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  91. package/blog/it/history_of_i18n.md +54 -54
  92. package/blog/it/how_to_pick_react_i18n_library.md +549 -0
  93. package/blog/it/how_to_pick_solid_i18n_library.md +451 -0
  94. package/blog/it/how_to_pick_svelte_i18n_library.md +455 -0
  95. package/blog/it/how_to_pick_vue_i18n_library.md +449 -0
  96. package/blog/it/is_i18next_outdated.md +5 -1
  97. package/blog/it/is_next-intl_outdated.md +5 -1
  98. package/blog/it/is_vue-i18n_outdated.md +7 -1
  99. package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  100. package/blog/it/per-component_vs_centralized_i18n.md +9 -4
  101. package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  102. package/blog/ja/history_of_i18n.md +54 -54
  103. package/blog/ja/how_to_pick_react_i18n_library.md +542 -0
  104. package/blog/ja/how_to_pick_solid_i18n_library.md +451 -0
  105. package/blog/ja/how_to_pick_svelte_i18n_library.md +457 -0
  106. package/blog/ja/how_to_pick_vue_i18n_library.md +442 -0
  107. package/blog/ja/is_i18next_outdated.md +5 -1
  108. package/blog/ja/is_next-intl_outdated.md +5 -1
  109. package/blog/ja/is_vue-i18n_outdated.md +7 -1
  110. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  111. package/blog/ja/per-component_vs_centralized_i18n.md +9 -4
  112. package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  113. package/blog/ko/history_of_i18n.md +54 -54
  114. package/blog/ko/how_to_pick_react_i18n_library.md +548 -0
  115. package/blog/ko/how_to_pick_solid_i18n_library.md +451 -0
  116. package/blog/ko/how_to_pick_svelte_i18n_library.md +454 -0
  117. package/blog/ko/how_to_pick_vue_i18n_library.md +448 -0
  118. package/blog/ko/is_i18next_outdated.md +5 -1
  119. package/blog/ko/is_next-intl_outdated.md +5 -1
  120. package/blog/ko/is_vue-i18n_outdated.md +7 -1
  121. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  122. package/blog/ko/per-component_vs_centralized_i18n.md +9 -4
  123. package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  124. package/blog/pl/history_of_i18n.md +54 -54
  125. package/blog/pl/how_to_pick_react_i18n_library.md +549 -0
  126. package/blog/pl/how_to_pick_solid_i18n_library.md +438 -0
  127. package/blog/pl/how_to_pick_svelte_i18n_library.md +460 -0
  128. package/blog/pl/how_to_pick_vue_i18n_library.md +442 -0
  129. package/blog/pl/is_i18next_outdated.md +5 -1
  130. package/blog/pl/is_next-intl_outdated.md +5 -1
  131. package/blog/pl/is_vue-i18n_outdated.md +7 -1
  132. package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  133. package/blog/pl/per-component_vs_centralized_i18n.md +9 -4
  134. package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  135. package/blog/pt/history_of_i18n.md +54 -54
  136. package/blog/pt/how_to_pick_react_i18n_library.md +549 -0
  137. package/blog/pt/how_to_pick_solid_i18n_library.md +451 -0
  138. package/blog/pt/how_to_pick_svelte_i18n_library.md +454 -0
  139. package/blog/pt/how_to_pick_vue_i18n_library.md +448 -0
  140. package/blog/pt/is_i18next_outdated.md +5 -1
  141. package/blog/pt/is_next-intl_outdated.md +5 -1
  142. package/blog/pt/is_vue-i18n_outdated.md +7 -1
  143. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  144. package/blog/pt/per-component_vs_centralized_i18n.md +9 -4
  145. package/blog/pt/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  146. package/blog/ru/history_of_i18n.md +54 -54
  147. package/blog/ru/how_to_pick_react_i18n_library.md +553 -0
  148. package/blog/ru/how_to_pick_solid_i18n_library.md +451 -0
  149. package/blog/ru/how_to_pick_svelte_i18n_library.md +459 -0
  150. package/blog/ru/how_to_pick_vue_i18n_library.md +453 -0
  151. package/blog/ru/is_i18next_outdated.md +5 -1
  152. package/blog/ru/is_next-intl_outdated.md +5 -1
  153. package/blog/ru/is_vue-i18n_outdated.md +7 -1
  154. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +8 -4
  155. package/blog/ru/per-component_vs_centralized_i18n.md +9 -4
  156. package/blog/ru/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  157. package/blog/tr/history_of_i18n.md +54 -54
  158. package/blog/tr/how_to_pick_react_i18n_library.md +548 -0
  159. package/blog/tr/how_to_pick_solid_i18n_library.md +451 -0
  160. package/blog/tr/how_to_pick_svelte_i18n_library.md +454 -0
  161. package/blog/tr/how_to_pick_vue_i18n_library.md +448 -0
  162. package/blog/tr/is_i18next_outdated.md +5 -1
  163. package/blog/tr/is_next-intl_outdated.md +5 -1
  164. package/blog/tr/is_vue-i18n_outdated.md +7 -1
  165. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  166. package/blog/tr/per-component_vs_centralized_i18n.md +9 -4
  167. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  168. package/blog/uk/history_of_i18n.md +54 -54
  169. package/blog/uk/how_to_pick_react_i18n_library.md +542 -0
  170. package/blog/uk/how_to_pick_solid_i18n_library.md +451 -0
  171. package/blog/uk/how_to_pick_svelte_i18n_library.md +448 -0
  172. package/blog/uk/how_to_pick_vue_i18n_library.md +443 -0
  173. package/blog/uk/is_i18next_outdated.md +5 -1
  174. package/blog/uk/is_next-intl_outdated.md +5 -1
  175. package/blog/uk/is_vue-i18n_outdated.md +7 -1
  176. package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  177. package/blog/uk/per-component_vs_centralized_i18n.md +9 -4
  178. package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  179. package/blog/vi/history_of_i18n.md +54 -54
  180. package/blog/vi/how_to_pick_react_i18n_library.md +548 -0
  181. package/blog/vi/how_to_pick_solid_i18n_library.md +438 -0
  182. package/blog/vi/how_to_pick_svelte_i18n_library.md +448 -0
  183. package/blog/vi/how_to_pick_vue_i18n_library.md +442 -0
  184. package/blog/vi/is_i18next_outdated.md +5 -1
  185. package/blog/vi/is_next-intl_outdated.md +5 -1
  186. package/blog/vi/is_vue-i18n_outdated.md +7 -1
  187. package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  188. package/blog/vi/per-component_vs_centralized_i18n.md +9 -4
  189. package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  190. package/blog/zh/history_of_i18n.md +54 -54
  191. package/blog/zh/how_to_pick_react_i18n_library.md +548 -0
  192. package/blog/zh/how_to_pick_solid_i18n_library.md +451 -0
  193. package/blog/zh/how_to_pick_svelte_i18n_library.md +454 -0
  194. package/blog/zh/how_to_pick_vue_i18n_library.md +448 -0
  195. package/blog/zh/is_i18next_outdated.md +5 -1
  196. package/blog/zh/is_next-intl_outdated.md +5 -1
  197. package/blog/zh/is_vue-i18n_outdated.md +7 -1
  198. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  199. package/blog/zh/per-component_vs_centralized_i18n.md +9 -4
  200. package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  201. package/dist/cjs/generated/blog.entry.cjs +80 -0
  202. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  203. package/dist/cjs/index.cjs +1 -1
  204. package/dist/esm/generated/blog.entry.mjs +80 -0
  205. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  206. package/dist/esm/index.mjs +1 -1
  207. package/dist/types/generated/blog.entry.d.ts +4 -0
  208. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  209. package/docs/ar/bundle_optimization.md +5 -1
  210. package/docs/ar/how_works_intlayer.md +2 -2
  211. package/docs/ar/interest_of_intlayer.md +6 -6
  212. package/docs/ar/intlayer_CMS.md +1 -1
  213. package/docs/ar/intlayer_with_adonisjs.md +1 -1
  214. package/docs/ar/intlayer_with_analog.md +1 -1
  215. package/docs/ar/intlayer_with_angular_19.md +1 -1
  216. package/docs/ar/intlayer_with_angular_21.md +1 -1
  217. package/docs/ar/intlayer_with_astro.md +1 -1
  218. package/docs/ar/intlayer_with_astro_lit.md +1 -1
  219. package/docs/ar/intlayer_with_astro_preact.md +1 -1
  220. package/docs/ar/intlayer_with_astro_react.md +1 -1
  221. package/docs/ar/intlayer_with_astro_solid.md +1 -1
  222. package/docs/ar/intlayer_with_astro_svelte.md +1 -1
  223. package/docs/ar/intlayer_with_astro_vanilla.md +1 -1
  224. package/docs/ar/intlayer_with_astro_vue.md +1 -1
  225. package/docs/ar/intlayer_with_create_react_app.md +1 -1
  226. package/docs/ar/intlayer_with_express.md +1 -1
  227. package/docs/ar/intlayer_with_hono.md +1 -1
  228. package/docs/ar/intlayer_with_nestjs.md +1 -1
  229. package/docs/ar/intlayer_with_nextjs_14.md +1 -1
  230. package/docs/ar/intlayer_with_nextjs_15.md +1 -1
  231. package/docs/ar/intlayer_with_nextjs_16.md +1 -1
  232. package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
  233. package/docs/ar/intlayer_with_react_router_v7.md +1 -1
  234. package/docs/ar/intlayer_with_vite+preact.md +1 -1
  235. package/docs/ar/intlayer_with_vite+react.md +1 -1
  236. package/docs/ar/intlayer_with_vite+vue.md +1 -1
  237. package/docs/ar/introduction.md +0 -1
  238. package/docs/ar/readme.md +8 -8
  239. package/docs/bn/bundle_optimization.md +5 -1
  240. package/docs/bn/interest_of_intlayer.md +21 -21
  241. package/docs/bn/intlayer_CMS.md +1 -1
  242. package/docs/bn/intlayer_with_angular_21.md +1 -1
  243. package/docs/bn/intlayer_with_hono.md +1 -1
  244. package/docs/bn/introduction.md +0 -1
  245. package/docs/cs/bundle_optimization.md +5 -1
  246. package/docs/cs/interest_of_intlayer.md +6 -6
  247. package/docs/cs/intlayer_with_angular_21.md +1 -1
  248. package/docs/cs/intlayer_with_hono.md +1 -1
  249. package/docs/cs/introduction.md +0 -1
  250. package/docs/de/bundle_optimization.md +5 -1
  251. package/docs/de/how_works_intlayer.md +2 -2
  252. package/docs/de/interest_of_intlayer.md +6 -6
  253. package/docs/de/intlayer_CMS.md +1 -1
  254. package/docs/de/intlayer_with_adonisjs.md +1 -1
  255. package/docs/de/intlayer_with_analog.md +1 -1
  256. package/docs/de/intlayer_with_angular_19.md +1 -1
  257. package/docs/de/intlayer_with_angular_21.md +1 -1
  258. package/docs/de/intlayer_with_astro.md +1 -1
  259. package/docs/de/intlayer_with_astro_lit.md +1 -1
  260. package/docs/de/intlayer_with_astro_preact.md +1 -1
  261. package/docs/de/intlayer_with_astro_react.md +1 -1
  262. package/docs/de/intlayer_with_astro_solid.md +1 -1
  263. package/docs/de/intlayer_with_astro_svelte.md +1 -1
  264. package/docs/de/intlayer_with_astro_vanilla.md +1 -1
  265. package/docs/de/intlayer_with_astro_vue.md +1 -1
  266. package/docs/de/intlayer_with_create_react_app.md +1 -1
  267. package/docs/de/intlayer_with_express.md +1 -1
  268. package/docs/de/intlayer_with_hono.md +1 -1
  269. package/docs/de/intlayer_with_nestjs.md +1 -1
  270. package/docs/de/intlayer_with_nextjs_14.md +1 -1
  271. package/docs/de/intlayer_with_nextjs_15.md +1 -1
  272. package/docs/de/intlayer_with_nextjs_16.md +1 -1
  273. package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
  274. package/docs/de/intlayer_with_vite+preact.md +1 -1
  275. package/docs/de/intlayer_with_vite+react.md +1 -1
  276. package/docs/de/intlayer_with_vite+vue.md +1 -1
  277. package/docs/de/introduction.md +0 -1
  278. package/docs/de/readme.md +8 -8
  279. package/docs/en/bundle_optimization.md +5 -1
  280. package/docs/en/how_works_intlayer.md +2 -2
  281. package/docs/en/interest_of_intlayer.md +6 -6
  282. package/docs/en/intlayer_CMS.md +1 -1
  283. package/docs/en/intlayer_with_adonisjs.md +1 -1
  284. package/docs/en/intlayer_with_analog.md +1 -1
  285. package/docs/en/intlayer_with_angular_19.md +1 -1
  286. package/docs/en/intlayer_with_angular_21.md +1 -1
  287. package/docs/en/intlayer_with_astro.md +1 -1
  288. package/docs/en/intlayer_with_astro_lit.md +1 -1
  289. package/docs/en/intlayer_with_astro_preact.md +1 -1
  290. package/docs/en/intlayer_with_astro_react.md +1 -1
  291. package/docs/en/intlayer_with_astro_solid.md +1 -1
  292. package/docs/en/intlayer_with_astro_svelte.md +1 -1
  293. package/docs/en/intlayer_with_astro_vanilla.md +1 -1
  294. package/docs/en/intlayer_with_astro_vue.md +1 -1
  295. package/docs/en/intlayer_with_create_react_app.md +1 -1
  296. package/docs/en/intlayer_with_express.md +1 -1
  297. package/docs/en/intlayer_with_hono.md +1 -1
  298. package/docs/en/intlayer_with_nestjs.md +1 -1
  299. package/docs/en/intlayer_with_nextjs_14.md +1 -1
  300. package/docs/en/intlayer_with_nextjs_15.md +1 -1
  301. package/docs/en/intlayer_with_nextjs_16.md +1 -1
  302. package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
  303. package/docs/en/intlayer_with_vite+preact.md +1 -1
  304. package/docs/en/intlayer_with_vite+react.md +1 -1
  305. package/docs/en/intlayer_with_vite+vue.md +1 -1
  306. package/docs/en/introduction.md +0 -1
  307. package/docs/en/readme.md +8 -8
  308. package/docs/en-GB/bundle_optimization.md +5 -1
  309. package/docs/en-GB/how_works_intlayer.md +2 -2
  310. package/docs/en-GB/interest_of_intlayer.md +6 -6
  311. package/docs/en-GB/intlayer_CMS.md +1 -1
  312. package/docs/en-GB/intlayer_with_adonisjs.md +1 -1
  313. package/docs/en-GB/intlayer_with_analog.md +1 -1
  314. package/docs/en-GB/intlayer_with_angular_19.md +1 -1
  315. package/docs/en-GB/intlayer_with_angular_21.md +1 -1
  316. package/docs/en-GB/intlayer_with_astro.md +1 -1
  317. package/docs/en-GB/intlayer_with_astro_lit.md +1 -1
  318. package/docs/en-GB/intlayer_with_astro_preact.md +1 -1
  319. package/docs/en-GB/intlayer_with_astro_react.md +1 -1
  320. package/docs/en-GB/intlayer_with_astro_solid.md +1 -1
  321. package/docs/en-GB/intlayer_with_astro_svelte.md +1 -1
  322. package/docs/en-GB/intlayer_with_astro_vanilla.md +1 -1
  323. package/docs/en-GB/intlayer_with_astro_vue.md +1 -1
  324. package/docs/en-GB/intlayer_with_create_react_app.md +1 -1
  325. package/docs/en-GB/intlayer_with_express.md +1 -1
  326. package/docs/en-GB/intlayer_with_hono.md +1 -1
  327. package/docs/en-GB/intlayer_with_nestjs.md +1 -1
  328. package/docs/en-GB/intlayer_with_nextjs_14.md +1 -1
  329. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -1
  330. package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
  331. package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
  332. package/docs/en-GB/intlayer_with_vite+preact.md +1 -1
  333. package/docs/en-GB/intlayer_with_vite+react.md +1 -1
  334. package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
  335. package/docs/en-GB/introduction.md +0 -1
  336. package/docs/en-GB/readme.md +8 -8
  337. package/docs/es/bundle_optimization.md +5 -1
  338. package/docs/es/how_works_intlayer.md +2 -2
  339. package/docs/es/interest_of_intlayer.md +6 -6
  340. package/docs/es/intlayer_CMS.md +1 -1
  341. package/docs/es/intlayer_with_adonisjs.md +1 -1
  342. package/docs/es/intlayer_with_analog.md +1 -1
  343. package/docs/es/intlayer_with_angular_19.md +1 -1
  344. package/docs/es/intlayer_with_angular_21.md +1 -1
  345. package/docs/es/intlayer_with_astro.md +1 -1
  346. package/docs/es/intlayer_with_astro_lit.md +1 -1
  347. package/docs/es/intlayer_with_astro_preact.md +1 -1
  348. package/docs/es/intlayer_with_astro_react.md +1 -1
  349. package/docs/es/intlayer_with_astro_solid.md +1 -1
  350. package/docs/es/intlayer_with_astro_svelte.md +1 -1
  351. package/docs/es/intlayer_with_astro_vanilla.md +1 -1
  352. package/docs/es/intlayer_with_astro_vue.md +1 -1
  353. package/docs/es/intlayer_with_create_react_app.md +1 -1
  354. package/docs/es/intlayer_with_express.md +1 -1
  355. package/docs/es/intlayer_with_hono.md +1 -1
  356. package/docs/es/intlayer_with_nestjs.md +1 -1
  357. package/docs/es/intlayer_with_nextjs_14.md +1 -1
  358. package/docs/es/intlayer_with_nextjs_15.md +1 -1
  359. package/docs/es/intlayer_with_nextjs_16.md +1 -1
  360. package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
  361. package/docs/es/intlayer_with_vite+preact.md +1 -1
  362. package/docs/es/intlayer_with_vite+react.md +1 -1
  363. package/docs/es/intlayer_with_vite+vue.md +1 -1
  364. package/docs/es/introduction.md +0 -1
  365. package/docs/es/readme.md +8 -8
  366. package/docs/fr/bundle_optimization.md +5 -1
  367. package/docs/fr/how_works_intlayer.md +2 -2
  368. package/docs/fr/interest_of_intlayer.md +6 -6
  369. package/docs/fr/intlayer_CMS.md +1 -1
  370. package/docs/fr/intlayer_with_adonisjs.md +1 -1
  371. package/docs/fr/intlayer_with_analog.md +1 -1
  372. package/docs/fr/intlayer_with_angular_19.md +1 -1
  373. package/docs/fr/intlayer_with_angular_21.md +1 -1
  374. package/docs/fr/intlayer_with_astro.md +1 -1
  375. package/docs/fr/intlayer_with_astro_lit.md +1 -1
  376. package/docs/fr/intlayer_with_astro_preact.md +1 -1
  377. package/docs/fr/intlayer_with_astro_react.md +1 -1
  378. package/docs/fr/intlayer_with_astro_solid.md +1 -1
  379. package/docs/fr/intlayer_with_astro_svelte.md +1 -1
  380. package/docs/fr/intlayer_with_astro_vanilla.md +1 -1
  381. package/docs/fr/intlayer_with_astro_vue.md +1 -1
  382. package/docs/fr/intlayer_with_create_react_app.md +1 -1
  383. package/docs/fr/intlayer_with_express.md +1 -1
  384. package/docs/fr/intlayer_with_hono.md +1 -1
  385. package/docs/fr/intlayer_with_nestjs.md +1 -1
  386. package/docs/fr/intlayer_with_nextjs_14.md +1 -1
  387. package/docs/fr/intlayer_with_nextjs_15.md +1 -1
  388. package/docs/fr/intlayer_with_nextjs_16.md +1 -1
  389. package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
  390. package/docs/fr/intlayer_with_react_router_v7.md +2 -2
  391. package/docs/fr/intlayer_with_vite+preact.md +1 -1
  392. package/docs/fr/intlayer_with_vite+react.md +1 -1
  393. package/docs/fr/intlayer_with_vite+vue.md +1 -1
  394. package/docs/fr/introduction.md +0 -1
  395. package/docs/fr/readme.md +8 -8
  396. package/docs/hi/bundle_optimization.md +5 -1
  397. package/docs/hi/how_works_intlayer.md +2 -2
  398. package/docs/hi/interest_of_intlayer.md +6 -6
  399. package/docs/hi/intlayer_CMS.md +1 -1
  400. package/docs/hi/intlayer_with_adonisjs.md +1 -1
  401. package/docs/hi/intlayer_with_analog.md +1 -1
  402. package/docs/hi/intlayer_with_angular_19.md +1 -1
  403. package/docs/hi/intlayer_with_angular_21.md +1 -1
  404. package/docs/hi/intlayer_with_astro.md +1 -1
  405. package/docs/hi/intlayer_with_astro_lit.md +1 -1
  406. package/docs/hi/intlayer_with_astro_preact.md +1 -1
  407. package/docs/hi/intlayer_with_astro_react.md +1 -1
  408. package/docs/hi/intlayer_with_astro_solid.md +1 -1
  409. package/docs/hi/intlayer_with_astro_svelte.md +1 -1
  410. package/docs/hi/intlayer_with_astro_vanilla.md +1 -1
  411. package/docs/hi/intlayer_with_astro_vue.md +1 -1
  412. package/docs/hi/intlayer_with_create_react_app.md +1 -1
  413. package/docs/hi/intlayer_with_express.md +1 -1
  414. package/docs/hi/intlayer_with_hono.md +1 -1
  415. package/docs/hi/intlayer_with_nestjs.md +1 -1
  416. package/docs/hi/intlayer_with_nextjs_14.md +1 -1
  417. package/docs/hi/intlayer_with_nextjs_15.md +1 -1
  418. package/docs/hi/intlayer_with_nextjs_16.md +1 -1
  419. package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
  420. package/docs/hi/intlayer_with_react_router_v7.md +1 -1
  421. package/docs/hi/intlayer_with_vite+preact.md +1 -1
  422. package/docs/hi/intlayer_with_vite+react.md +1 -1
  423. package/docs/hi/intlayer_with_vite+vue.md +1 -1
  424. package/docs/hi/introduction.md +0 -1
  425. package/docs/hi/readme.md +8 -8
  426. package/docs/id/bundle_optimization.md +5 -1
  427. package/docs/id/how_works_intlayer.md +2 -2
  428. package/docs/id/interest_of_intlayer.md +6 -6
  429. package/docs/id/intlayer_CMS.md +1 -1
  430. package/docs/id/intlayer_with_adonisjs.md +1 -1
  431. package/docs/id/intlayer_with_analog.md +1 -1
  432. package/docs/id/intlayer_with_angular_19.md +1 -1
  433. package/docs/id/intlayer_with_angular_21.md +1 -1
  434. package/docs/id/intlayer_with_astro.md +1 -1
  435. package/docs/id/intlayer_with_astro_lit.md +1 -1
  436. package/docs/id/intlayer_with_astro_preact.md +1 -1
  437. package/docs/id/intlayer_with_astro_react.md +1 -1
  438. package/docs/id/intlayer_with_astro_solid.md +1 -1
  439. package/docs/id/intlayer_with_astro_svelte.md +1 -1
  440. package/docs/id/intlayer_with_astro_vanilla.md +1 -1
  441. package/docs/id/intlayer_with_astro_vue.md +1 -1
  442. package/docs/id/intlayer_with_create_react_app.md +1 -1
  443. package/docs/id/intlayer_with_express.md +1 -1
  444. package/docs/id/intlayer_with_hono.md +1 -1
  445. package/docs/id/intlayer_with_nestjs.md +1 -1
  446. package/docs/id/intlayer_with_nextjs_14.md +1 -1
  447. package/docs/id/intlayer_with_nextjs_15.md +1 -1
  448. package/docs/id/intlayer_with_nextjs_16.md +1 -1
  449. package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
  450. package/docs/id/intlayer_with_react_router_v7.md +1 -1
  451. package/docs/id/intlayer_with_vite+preact.md +1 -1
  452. package/docs/id/intlayer_with_vite+react.md +1 -1
  453. package/docs/id/intlayer_with_vite+vue.md +1 -1
  454. package/docs/id/introduction.md +0 -1
  455. package/docs/id/readme.md +8 -8
  456. package/docs/it/bundle_optimization.md +5 -1
  457. package/docs/it/how_works_intlayer.md +2 -2
  458. package/docs/it/interest_of_intlayer.md +6 -6
  459. package/docs/it/intlayer_CMS.md +1 -1
  460. package/docs/it/intlayer_with_adonisjs.md +1 -1
  461. package/docs/it/intlayer_with_analog.md +1 -1
  462. package/docs/it/intlayer_with_angular_19.md +1 -1
  463. package/docs/it/intlayer_with_angular_21.md +1 -1
  464. package/docs/it/intlayer_with_astro.md +1 -1
  465. package/docs/it/intlayer_with_astro_lit.md +1 -1
  466. package/docs/it/intlayer_with_astro_preact.md +1 -1
  467. package/docs/it/intlayer_with_astro_react.md +1 -1
  468. package/docs/it/intlayer_with_astro_solid.md +1 -1
  469. package/docs/it/intlayer_with_astro_svelte.md +1 -1
  470. package/docs/it/intlayer_with_astro_vanilla.md +1 -1
  471. package/docs/it/intlayer_with_astro_vue.md +1 -1
  472. package/docs/it/intlayer_with_create_react_app.md +1 -1
  473. package/docs/it/intlayer_with_express.md +1 -1
  474. package/docs/it/intlayer_with_hono.md +1 -1
  475. package/docs/it/intlayer_with_nestjs.md +1 -1
  476. package/docs/it/intlayer_with_nextjs_14.md +1 -1
  477. package/docs/it/intlayer_with_nextjs_15.md +1 -1
  478. package/docs/it/intlayer_with_nextjs_16.md +1 -1
  479. package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
  480. package/docs/it/intlayer_with_react_router_v7.md +2 -2
  481. package/docs/it/intlayer_with_vite+preact.md +1 -1
  482. package/docs/it/intlayer_with_vite+react.md +1 -1
  483. package/docs/it/intlayer_with_vite+vue.md +1 -1
  484. package/docs/it/introduction.md +0 -1
  485. package/docs/it/readme.md +8 -8
  486. package/docs/ja/bundle_optimization.md +5 -1
  487. package/docs/ja/how_works_intlayer.md +2 -2
  488. package/docs/ja/interest_of_intlayer.md +6 -6
  489. package/docs/ja/intlayer_CMS.md +1 -1
  490. package/docs/ja/intlayer_with_adonisjs.md +1 -1
  491. package/docs/ja/intlayer_with_analog.md +1 -1
  492. package/docs/ja/intlayer_with_angular_19.md +1 -1
  493. package/docs/ja/intlayer_with_angular_21.md +1 -1
  494. package/docs/ja/intlayer_with_astro.md +1 -1
  495. package/docs/ja/intlayer_with_astro_lit.md +1 -1
  496. package/docs/ja/intlayer_with_astro_preact.md +1 -1
  497. package/docs/ja/intlayer_with_astro_react.md +1 -1
  498. package/docs/ja/intlayer_with_astro_solid.md +1 -1
  499. package/docs/ja/intlayer_with_astro_svelte.md +1 -1
  500. package/docs/ja/intlayer_with_astro_vanilla.md +1 -1
  501. package/docs/ja/intlayer_with_astro_vue.md +1 -1
  502. package/docs/ja/intlayer_with_create_react_app.md +1 -1
  503. package/docs/ja/intlayer_with_express.md +1 -1
  504. package/docs/ja/intlayer_with_hono.md +1 -1
  505. package/docs/ja/intlayer_with_nestjs.md +1 -1
  506. package/docs/ja/intlayer_with_nextjs_14.md +1 -1
  507. package/docs/ja/intlayer_with_nextjs_15.md +1 -1
  508. package/docs/ja/intlayer_with_nextjs_16.md +1 -1
  509. package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
  510. package/docs/ja/intlayer_with_vite+preact.md +1 -1
  511. package/docs/ja/intlayer_with_vite+react.md +1 -1
  512. package/docs/ja/intlayer_with_vite+vue.md +1 -1
  513. package/docs/ja/introduction.md +0 -1
  514. package/docs/ja/readme.md +8 -8
  515. package/docs/ko/bundle_optimization.md +5 -1
  516. package/docs/ko/how_works_intlayer.md +2 -2
  517. package/docs/ko/interest_of_intlayer.md +6 -6
  518. package/docs/ko/intlayer_CMS.md +1 -1
  519. package/docs/ko/intlayer_with_adonisjs.md +1 -1
  520. package/docs/ko/intlayer_with_analog.md +1 -1
  521. package/docs/ko/intlayer_with_angular_19.md +1 -1
  522. package/docs/ko/intlayer_with_angular_21.md +1 -1
  523. package/docs/ko/intlayer_with_astro.md +1 -1
  524. package/docs/ko/intlayer_with_astro_lit.md +1 -1
  525. package/docs/ko/intlayer_with_astro_preact.md +1 -1
  526. package/docs/ko/intlayer_with_astro_react.md +1 -1
  527. package/docs/ko/intlayer_with_astro_solid.md +1 -1
  528. package/docs/ko/intlayer_with_astro_svelte.md +1 -1
  529. package/docs/ko/intlayer_with_astro_vanilla.md +1 -1
  530. package/docs/ko/intlayer_with_astro_vue.md +1 -1
  531. package/docs/ko/intlayer_with_create_react_app.md +1 -1
  532. package/docs/ko/intlayer_with_express.md +1 -1
  533. package/docs/ko/intlayer_with_hono.md +1 -1
  534. package/docs/ko/intlayer_with_nestjs.md +1 -1
  535. package/docs/ko/intlayer_with_nextjs_14.md +1 -1
  536. package/docs/ko/intlayer_with_nextjs_15.md +1 -1
  537. package/docs/ko/intlayer_with_nextjs_16.md +1 -1
  538. package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
  539. package/docs/ko/intlayer_with_react_router_v7.md +2 -2
  540. package/docs/ko/intlayer_with_vite+preact.md +1 -1
  541. package/docs/ko/intlayer_with_vite+react.md +1 -1
  542. package/docs/ko/intlayer_with_vite+vue.md +1 -1
  543. package/docs/ko/introduction.md +0 -1
  544. package/docs/ko/readme.md +8 -8
  545. package/docs/nl/bundle_optimization.md +5 -1
  546. package/docs/nl/interest_of_intlayer.md +6 -6
  547. package/docs/nl/intlayer_with_angular_21.md +1 -1
  548. package/docs/nl/intlayer_with_hono.md +1 -1
  549. package/docs/nl/introduction.md +0 -1
  550. package/docs/pl/bundle_optimization.md +5 -1
  551. package/docs/pl/how_works_intlayer.md +2 -2
  552. package/docs/pl/interest_of_intlayer.md +6 -6
  553. package/docs/pl/intlayer_CMS.md +1 -1
  554. package/docs/pl/intlayer_with_adonisjs.md +1 -1
  555. package/docs/pl/intlayer_with_analog.md +1 -1
  556. package/docs/pl/intlayer_with_angular_19.md +1 -1
  557. package/docs/pl/intlayer_with_angular_21.md +1 -1
  558. package/docs/pl/intlayer_with_astro.md +1 -1
  559. package/docs/pl/intlayer_with_astro_lit.md +1 -1
  560. package/docs/pl/intlayer_with_astro_preact.md +1 -1
  561. package/docs/pl/intlayer_with_astro_react.md +1 -1
  562. package/docs/pl/intlayer_with_astro_solid.md +1 -1
  563. package/docs/pl/intlayer_with_astro_svelte.md +1 -1
  564. package/docs/pl/intlayer_with_astro_vanilla.md +1 -1
  565. package/docs/pl/intlayer_with_astro_vue.md +1 -1
  566. package/docs/pl/intlayer_with_create_react_app.md +1 -1
  567. package/docs/pl/intlayer_with_express.md +1 -1
  568. package/docs/pl/intlayer_with_hono.md +1 -1
  569. package/docs/pl/intlayer_with_nestjs.md +1 -1
  570. package/docs/pl/intlayer_with_nextjs_14.md +1 -1
  571. package/docs/pl/intlayer_with_nextjs_15.md +1 -1
  572. package/docs/pl/intlayer_with_nextjs_16.md +1 -1
  573. package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
  574. package/docs/pl/intlayer_with_react_router_v7.md +2 -2
  575. package/docs/pl/intlayer_with_vite+preact.md +1 -1
  576. package/docs/pl/intlayer_with_vite+react.md +1 -1
  577. package/docs/pl/intlayer_with_vite+vue.md +1 -1
  578. package/docs/pl/introduction.md +0 -1
  579. package/docs/pl/readme.md +8 -8
  580. package/docs/pt/bundle_optimization.md +5 -1
  581. package/docs/pt/how_works_intlayer.md +2 -2
  582. package/docs/pt/interest_of_intlayer.md +6 -6
  583. package/docs/pt/intlayer_CMS.md +1 -1
  584. package/docs/pt/intlayer_with_adonisjs.md +1 -1
  585. package/docs/pt/intlayer_with_analog.md +1 -1
  586. package/docs/pt/intlayer_with_angular_19.md +1 -1
  587. package/docs/pt/intlayer_with_angular_21.md +1 -1
  588. package/docs/pt/intlayer_with_astro.md +1 -1
  589. package/docs/pt/intlayer_with_astro_lit.md +1 -1
  590. package/docs/pt/intlayer_with_astro_preact.md +1 -1
  591. package/docs/pt/intlayer_with_astro_react.md +1 -1
  592. package/docs/pt/intlayer_with_astro_solid.md +1 -1
  593. package/docs/pt/intlayer_with_astro_svelte.md +1 -1
  594. package/docs/pt/intlayer_with_astro_vanilla.md +1 -1
  595. package/docs/pt/intlayer_with_astro_vue.md +1 -1
  596. package/docs/pt/intlayer_with_create_react_app.md +1 -1
  597. package/docs/pt/intlayer_with_express.md +1 -1
  598. package/docs/pt/intlayer_with_hono.md +1 -1
  599. package/docs/pt/intlayer_with_nestjs.md +1 -1
  600. package/docs/pt/intlayer_with_nextjs_14.md +1 -1
  601. package/docs/pt/intlayer_with_nextjs_15.md +1 -1
  602. package/docs/pt/intlayer_with_nextjs_16.md +1 -1
  603. package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
  604. package/docs/pt/intlayer_with_react_router_v7.md +2 -2
  605. package/docs/pt/intlayer_with_vite+preact.md +1 -1
  606. package/docs/pt/intlayer_with_vite+react.md +1 -1
  607. package/docs/pt/intlayer_with_vite+vue.md +1 -1
  608. package/docs/pt/introduction.md +0 -1
  609. package/docs/pt/readme.md +8 -8
  610. package/docs/ru/bundle_optimization.md +5 -1
  611. package/docs/ru/how_works_intlayer.md +2 -2
  612. package/docs/ru/interest_of_intlayer.md +6 -6
  613. package/docs/ru/intlayer_CMS.md +1 -1
  614. package/docs/ru/intlayer_with_adonisjs.md +1 -1
  615. package/docs/ru/intlayer_with_analog.md +1 -1
  616. package/docs/ru/intlayer_with_angular_19.md +1 -1
  617. package/docs/ru/intlayer_with_angular_21.md +1 -1
  618. package/docs/ru/intlayer_with_astro.md +1 -1
  619. package/docs/ru/intlayer_with_astro_lit.md +1 -1
  620. package/docs/ru/intlayer_with_astro_preact.md +1 -1
  621. package/docs/ru/intlayer_with_astro_react.md +1 -1
  622. package/docs/ru/intlayer_with_astro_solid.md +1 -1
  623. package/docs/ru/intlayer_with_astro_svelte.md +1 -1
  624. package/docs/ru/intlayer_with_astro_vanilla.md +1 -1
  625. package/docs/ru/intlayer_with_astro_vue.md +1 -1
  626. package/docs/ru/intlayer_with_create_react_app.md +1 -1
  627. package/docs/ru/intlayer_with_express.md +1 -1
  628. package/docs/ru/intlayer_with_hono.md +1 -1
  629. package/docs/ru/intlayer_with_nestjs.md +1 -1
  630. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  631. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  632. package/docs/ru/intlayer_with_nextjs_16.md +1 -1
  633. package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
  634. package/docs/ru/intlayer_with_react_router_v7.md +2 -2
  635. package/docs/ru/intlayer_with_vite+preact.md +1 -1
  636. package/docs/ru/intlayer_with_vite+react.md +1 -1
  637. package/docs/ru/intlayer_with_vite+vue.md +1 -1
  638. package/docs/ru/introduction.md +0 -1
  639. package/docs/ru/readme.md +8 -8
  640. package/docs/tr/bundle_optimization.md +5 -1
  641. package/docs/tr/how_works_intlayer.md +2 -2
  642. package/docs/tr/interest_of_intlayer.md +6 -6
  643. package/docs/tr/intlayer_CMS.md +1 -1
  644. package/docs/tr/intlayer_with_adonisjs.md +1 -1
  645. package/docs/tr/intlayer_with_analog.md +1 -1
  646. package/docs/tr/intlayer_with_angular_19.md +1 -1
  647. package/docs/tr/intlayer_with_angular_21.md +1 -1
  648. package/docs/tr/intlayer_with_astro.md +1 -1
  649. package/docs/tr/intlayer_with_astro_lit.md +1 -1
  650. package/docs/tr/intlayer_with_astro_preact.md +1 -1
  651. package/docs/tr/intlayer_with_astro_react.md +1 -1
  652. package/docs/tr/intlayer_with_astro_solid.md +1 -1
  653. package/docs/tr/intlayer_with_astro_svelte.md +1 -1
  654. package/docs/tr/intlayer_with_astro_vanilla.md +1 -1
  655. package/docs/tr/intlayer_with_astro_vue.md +1 -1
  656. package/docs/tr/intlayer_with_create_react_app.md +1 -1
  657. package/docs/tr/intlayer_with_express.md +1 -1
  658. package/docs/tr/intlayer_with_hono.md +1 -1
  659. package/docs/tr/intlayer_with_nestjs.md +1 -1
  660. package/docs/tr/intlayer_with_nextjs_14.md +1 -1
  661. package/docs/tr/intlayer_with_nextjs_15.md +1 -1
  662. package/docs/tr/intlayer_with_nextjs_16.md +1 -1
  663. package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
  664. package/docs/tr/intlayer_with_react_router_v7.md +1 -1
  665. package/docs/tr/intlayer_with_vite+preact.md +1 -1
  666. package/docs/tr/intlayer_with_vite+react.md +1 -1
  667. package/docs/tr/intlayer_with_vite+vue.md +1 -1
  668. package/docs/tr/introduction.md +0 -1
  669. package/docs/tr/readme.md +8 -8
  670. package/docs/uk/bundle_optimization.md +5 -1
  671. package/docs/uk/how_works_intlayer.md +2 -2
  672. package/docs/uk/interest_of_intlayer.md +6 -6
  673. package/docs/uk/intlayer_CMS.md +1 -1
  674. package/docs/uk/intlayer_with_adonisjs.md +1 -1
  675. package/docs/uk/intlayer_with_analog.md +1 -1
  676. package/docs/uk/intlayer_with_angular_19.md +1 -1
  677. package/docs/uk/intlayer_with_angular_21.md +1 -1
  678. package/docs/uk/intlayer_with_astro.md +1 -1
  679. package/docs/uk/intlayer_with_astro_lit.md +1 -1
  680. package/docs/uk/intlayer_with_astro_preact.md +1 -1
  681. package/docs/uk/intlayer_with_astro_react.md +1 -1
  682. package/docs/uk/intlayer_with_astro_solid.md +1 -1
  683. package/docs/uk/intlayer_with_astro_svelte.md +1 -1
  684. package/docs/uk/intlayer_with_astro_vanilla.md +1 -1
  685. package/docs/uk/intlayer_with_astro_vue.md +1 -1
  686. package/docs/uk/intlayer_with_create_react_app.md +1 -1
  687. package/docs/uk/intlayer_with_express.md +1 -1
  688. package/docs/uk/intlayer_with_hono.md +1 -1
  689. package/docs/uk/intlayer_with_nestjs.md +1 -1
  690. package/docs/uk/intlayer_with_nextjs_14.md +1 -1
  691. package/docs/uk/intlayer_with_nextjs_15.md +1 -1
  692. package/docs/uk/intlayer_with_nextjs_16.md +1 -1
  693. package/docs/uk/intlayer_with_nextjs_page_router.md +1 -1
  694. package/docs/uk/intlayer_with_react_router_v7.md +1 -1
  695. package/docs/uk/intlayer_with_vite+preact.md +1 -1
  696. package/docs/uk/intlayer_with_vite+react.md +1 -1
  697. package/docs/uk/intlayer_with_vite+vue.md +1 -1
  698. package/docs/uk/introduction.md +0 -1
  699. package/docs/uk/readme.md +8 -8
  700. package/docs/ur/bundle_optimization.md +5 -1
  701. package/docs/ur/interest_of_intlayer.md +6 -6
  702. package/docs/ur/intlayer_with_angular_21.md +1 -1
  703. package/docs/ur/intlayer_with_hono.md +1 -1
  704. package/docs/ur/introduction.md +0 -1
  705. package/docs/vi/bundle_optimization.md +5 -1
  706. package/docs/vi/how_works_intlayer.md +2 -2
  707. package/docs/vi/interest_of_intlayer.md +6 -6
  708. package/docs/vi/intlayer_CMS.md +1 -1
  709. package/docs/vi/intlayer_with_adonisjs.md +1 -1
  710. package/docs/vi/intlayer_with_analog.md +1 -1
  711. package/docs/vi/intlayer_with_angular_19.md +1 -1
  712. package/docs/vi/intlayer_with_angular_21.md +1 -1
  713. package/docs/vi/intlayer_with_astro.md +1 -1
  714. package/docs/vi/intlayer_with_astro_lit.md +1 -1
  715. package/docs/vi/intlayer_with_astro_preact.md +1 -1
  716. package/docs/vi/intlayer_with_astro_react.md +1 -1
  717. package/docs/vi/intlayer_with_astro_solid.md +1 -1
  718. package/docs/vi/intlayer_with_astro_svelte.md +1 -1
  719. package/docs/vi/intlayer_with_astro_vanilla.md +1 -1
  720. package/docs/vi/intlayer_with_astro_vue.md +1 -1
  721. package/docs/vi/intlayer_with_create_react_app.md +1 -1
  722. package/docs/vi/intlayer_with_express.md +1 -1
  723. package/docs/vi/intlayer_with_hono.md +1 -1
  724. package/docs/vi/intlayer_with_nestjs.md +1 -1
  725. package/docs/vi/intlayer_with_nextjs_14.md +1 -1
  726. package/docs/vi/intlayer_with_nextjs_15.md +1 -1
  727. package/docs/vi/intlayer_with_nextjs_16.md +1 -1
  728. package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
  729. package/docs/vi/intlayer_with_vite+preact.md +1 -1
  730. package/docs/vi/intlayer_with_vite+react.md +1 -1
  731. package/docs/vi/intlayer_with_vite+vue.md +1 -1
  732. package/docs/vi/introduction.md +0 -1
  733. package/docs/vi/readme.md +8 -8
  734. package/docs/zh/bundle_optimization.md +5 -1
  735. package/docs/zh/how_works_intlayer.md +2 -2
  736. package/docs/zh/interest_of_intlayer.md +6 -6
  737. package/docs/zh/intlayer_CMS.md +1 -1
  738. package/docs/zh/intlayer_with_adonisjs.md +1 -1
  739. package/docs/zh/intlayer_with_analog.md +1 -1
  740. package/docs/zh/intlayer_with_angular_19.md +1 -1
  741. package/docs/zh/intlayer_with_angular_21.md +1 -1
  742. package/docs/zh/intlayer_with_astro.md +1 -1
  743. package/docs/zh/intlayer_with_astro_lit.md +1 -1
  744. package/docs/zh/intlayer_with_astro_preact.md +1 -1
  745. package/docs/zh/intlayer_with_astro_react.md +1 -1
  746. package/docs/zh/intlayer_with_astro_solid.md +1 -1
  747. package/docs/zh/intlayer_with_astro_svelte.md +1 -1
  748. package/docs/zh/intlayer_with_astro_vanilla.md +1 -1
  749. package/docs/zh/intlayer_with_astro_vue.md +1 -1
  750. package/docs/zh/intlayer_with_create_react_app.md +1 -1
  751. package/docs/zh/intlayer_with_express.md +1 -1
  752. package/docs/zh/intlayer_with_hono.md +1 -1
  753. package/docs/zh/intlayer_with_nestjs.md +1 -1
  754. package/docs/zh/intlayer_with_nextjs_14.md +1 -1
  755. package/docs/zh/intlayer_with_nextjs_15.md +1 -1
  756. package/docs/zh/intlayer_with_nextjs_16.md +1 -1
  757. package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
  758. package/docs/zh/intlayer_with_react_router_v7.md +2 -2
  759. package/docs/zh/intlayer_with_vite+preact.md +1 -1
  760. package/docs/zh/intlayer_with_vite+react.md +1 -1
  761. package/docs/zh/intlayer_with_vite+vue.md +1 -1
  762. package/docs/zh/introduction.md +0 -1
  763. package/docs/zh/readme.md +8 -8
  764. package/docs/zh-TW/bundle_optimization.md +5 -1
  765. package/docs/zh-TW/interest_of_intlayer.md +6 -6
  766. package/docs/zh-TW/intlayer_with_angular_21.md +1 -1
  767. package/docs/zh-TW/introduction.md +0 -1
  768. package/package.json +8 -7
  769. package/src/generated/blog.entry.ts +80 -0
  770. package/blog/en/___per-component_vs_centralized_i18n.md +0 -255
  771. package/blog/pl/___per-component_vs_centralized_i18n.md +0 -100
  772. package/docs/en/benchmark/___NOTE.md +0 -101
  773. package/docs/en/benchmark/___nextjs.md +0 -197
  774. package/docs/en/benchmark/___solid.md +0 -12
  775. package/docs/en/benchmark/___svelte.md +0 -16
  776. package/docs/en/benchmark/___tanstack.md +0 -190
  777. package/docs/en/benchmark/___vue.md +0 -7
  778. package/docs/pl/benchmark/___NOTE.md +0 -101
  779. package/docs/pl/benchmark/___nextjs.md +0 -198
  780. package/docs/pl/benchmark/___solid.md +0 -36
  781. package/docs/pl/benchmark/___svelte.md +0 -36
  782. package/docs/pl/benchmark/___tanstack.md +0 -36
  783. package/docs/pl/benchmark/___vue.md +0 -36
@@ -0,0 +1,549 @@
1
+ ---
2
+ createdAt: 2026-09-16
3
+ updatedAt: 2026-09-16
4
+ title: "Come scegliere la giusta libreria i18n per React nel 2026"
5
+ description: Una guida decisionale per l'internazionalizzazione in React. Quali domande porsi prima di confrontare react-i18next, react-intl, Lingui, use-intl, Paraglide e Intlayer, e cosa comporta ogni scelta in termini di bundle size, typing e manutenzione.
6
+ keywords:
7
+ - react i18n
8
+ - react internationalization
9
+ - internazionalizzazione react
10
+ - react-i18next
11
+ - react-intl
12
+ - Lingui
13
+ - use-intl
14
+ - Paraglide
15
+ - Intlayer
16
+ - confronto librerie i18n
17
+ slugs:
18
+ - blog
19
+ - how-to-pick-react-i18n-library
20
+ author: aymericzip
21
+ ---
22
+
23
+ # Come scegliere la giusta libreria i18n per React
24
+
25
+ React non include alcuna primitiva nativa per l'i18n. La libreria scelta al primo giorno determina come vengono archiviate le traduzioni, come arrivano nel bundle e quanto lavoro di manutenzione rimarrà a vostro carico per i prossimi anni. La maggior parte dei team sceglie in base alla popolarità, per poi scoprire i compromessi raggiunte le 2.000 chiavi.
26
+
27
+ Questa guida adotta l'approccio opposto: rispondete prima ad alcune domande sul vostro progetto, poi mappate le risposte sulle librerie più adatte. Si concentra su React puro (Vite, React Router, TanStack Start). Next.js ha vincoli specifici, trattati nel [confronto Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/next-i18next_vs_next-intl_vs_intlayer.md).
28
+
29
+ ![Ecosistema delle librerie i18n per React](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.webp?raw=true)
30
+
31
+ ## Indice
32
+
33
+ <TOC/>
34
+
35
+ ## Sei domande a cui rispondere prima di confrontare le librerie
36
+
37
+ Una tabella di funzionalità è inutile se non sapete quali aspetti contano per voi. Esaminate prima questi punti.
38
+
39
+ 1. **Come viene renderizzata l'applicazione?** Solo SPA, SSR con hydration o React Server Components. Gli hook basati su Context funzionano ovunque in una SPA. Con i RSC, un hook forza `"use client"` su ogni componente che renderizza testo, quindi avrete bisogno anche di un'API lato server.
40
+ 2. **Chi scrive le traduzioni?** Sviluppatori, un team interno che usa un TMS, un'agenzia che fornisce file ICU o una pipeline AI. Questo determina il formato del catalogo più di qualsiasi dettaglio di API.
41
+ 3. **Quante lingue (locales) e quante pagine?** Due lingue e cinque pagine possono permettersi di includere tutto nel bundle. Dieci lingue e cinquanta route no, e la strategia di caricamento diventa il costo principale.
42
+ 4. **Avete bisogno di types sulle chiavi?** Un errore di battitura in `t("checkout.totl")` compila senza problemi in qualsiasi libreria basata su chiavi a meno che non configuriate manualmente i types. Valutate se questo è accettabile.
43
+ 5. **Cosa contiene la stringa?** Testo semplice, plurali o frasi con un `<Link>` nel mezzo. I contenuti complessi (rich content) sono il punto in cui la maggior parte delle API diventa macchinosa.
44
+ 6. **Quanto durerà il progetto?** Un prototipo di tre mesi e un prodotto di cinque anni non richiedono la stessa quantità di build tooling.
45
+
46
+ Scrivete le risposte. Tutto ciò che segue fa riferimento ad esse.
47
+
48
+ ## Il panorama in un'unica panoramica
49
+
50
+ Quindici anni di i18n in JavaScript si riassumono in quattro ondate architetturali, e le librerie React che metterete a confronto provengono da ondate diverse.
51
+
52
+ ![Storia delle librerie i18n JavaScript](https://github.com/aymericzip/intlayer/blob/main/docs/assets/history_i18n.webp?raw=true)
53
+
54
+ <AccordionGroup>
55
+ <Accordion header="Dizionari a runtime (dal 2011 al 2017): i18next, react-intl">
56
+
57
+ Cataloghi JSON caricati in memoria, `t("a.b")` cercato a runtime, sintassi ICU o personalizzata parsata nel browser. Ecosistemi più ampi, runtime più pesanti, types opzionali (opt-in).
58
+
59
+ </Accordion>
60
+ <Accordion header="Macro a compile-time (dal 2018 al 2021): Lingui, typesafe-i18n">
61
+
62
+ Messaggi estratti durante la build, compilati in cataloghi compatti, argomenti tipizzati. Uno step di build aggiuntivo (`extract`, `compile`) in cambio di bundle più leggeri.
63
+
64
+ </Accordion>
65
+ <Accordion header="Server-first (dal 2022 al 2024): use-intl / next-intl">
66
+
67
+ Progettati attorno a SSR e Server Components. Rendering sul server, hydration limitata a ciò di cui il client ha bisogno. Sempre basati su chiavi e centralizzati.
68
+
69
+ </Accordion>
70
+ <Accordion header="Compiler e contenuti colocati (dal 2024 al 2026): Paraglide, Intlayer, wuchale">
71
+
72
+ I contenuti vengono compilati in funzioni tree-shakable o dizionari per componente. I types vengono generati automaticamente, le traduzioni mancanti bloccano la build e la traduzione AI si esegue da CLI.
73
+
74
+ </Accordion>
75
+ </AccordionGroup>
76
+
77
+ La [storia dell'i18n in JavaScript](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/history_of_i18n.md) descrive in dettaglio come ogni ondata ha risolto i problemi della precedente.
78
+
79
+ ## La decisione più importante: dove risiedono i contenuti e quando vengono caricati
80
+
81
+ Ogni libreria i18n per React ha la stessa struttura: uno store, un provider, un hook. Tutto ciò che il provider riceve finisce nel bundle client o nel payload di hydration. Le due scelte strutturali sono quindi:
82
+
83
+ - **Contenuto centralizzato o scoped.** Un unico `en.json` per tutta l'applicazione, oppure una dichiarazione per componente (o per namespace).
84
+ - **Import statico o dinamico.** Tutto incluso nel bundle all'avvio, oppure locale e route attivi caricati on demand.
85
+
86
+ Il grafico seguente stima il payload per un'applicazione teorica da 1 a 10 pagine, tradotta in 1 - 10 lingue, con circa 30 KB di testo per pagina.
87
+
88
+ ![Perdita teorica di contenuto per architettura](https://github.com/aymericzip/intlayer/blob/main/docs/assets/theorical_content_leakage.webp?raw=true)
89
+
90
+ Il contenuto centralizzato con import statici cresce su entrambi gli assi: 10 pagine per 10 lingue equivalgono a 300 KB di testo su ogni pagina. Gli import dinamici eliminano l'asse delle lingue. Lo scoping elimina l'asse delle pagine. Solo la combinazione di entrambi mantiene il payload costante.
91
+
92
+ Questa non è una proprietà della libreria in sé, ma una questione di disciplina. `react-i18next` può essere strutturato con namespace e backend lazy. `use-intl` può essere suddiviso per route. Ma nulla lo impone in modo vincolante, e un componente `<Button>` condiviso che richiede `t("common:cta")` rende silenziosamente `common` una dipendenza di ogni route. Il [benchmark](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/index.md) misura questo fenomeno come "leakage da altre route" e "leakage da altre lingue", ed è qui che si crea la maggior parte del divario tra le librerie.
93
+
94
+ Se la vostra risposta alla domanda 3 era "molte lingue, molte pagine", date a questa sezione più peso rispetto a qualsiasi preferenza di API. L'articolo [i18n per-component vs centralizzato](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/per-component_vs_centralized_i18n.md) approfondisce l'aspetto della manutenzione legato a questa scelta.
95
+
96
+ ## I candidati
97
+
98
+ Le dimensioni delle librerie provengono dal [benchmark TanStack Start](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/tanstack.md): provider più hook in un componente vuoto, dopo bundling, tree-shaking e minificazione, su 10 pagine e 10 lingue. I contenuti sono misurati separatamente.
99
+
100
+ | Libreria | Ondata | Modello dei contenuti | Type safety | Formato dei messaggi | Dimensione libreria |
101
+ | :---------------------- | :----------- | :------------------------------------ | :--------------------------------- | :---------------------------- | :----------------------------------------------- |
102
+ | `react-i18next` | Runtime | JSON centralizzato, namespace | 2/5 — Opt-in (`CustomTypeOptions`) | i18next (plurali a suff.) | ~18.4 kB |
103
+ | `react-intl` (FormatJS) | Runtime | JSON centralizzato, ICU | 2/5 — Opt-in (estrazione + union) | ICU | ~15.3 kB |
104
+ | `use-intl` | Server-first | JSON centralizzato, ICU | 2/5 — Opt-in (declaration merging) | ICU | ~14.1 kB |
105
+ | `@tolgee/react` | Runtime | Centralizzato, in-context editing | 1/5 — No | ICU | ~11.1 kB |
106
+ | Lingui | Macro | Testo sorgente nel codice, cat. comp. | 2/5 — Ottimo, dal compiler | ICU tramite macro | ~11.8 kB |
107
+ | Paraglide | Compiler | Progetto inlang, funzioni generate | 3.5/5 — Generati | Proprietario | Quasi zero (per il codice generato nel progetto) |
108
+ | Intlayer | Compiler | `.content.ts` per componente | 5/5 — Generati, attivi di default | Intlayer (+ ICU, i18next, PO) | ~5.0 kB |
109
+
110
+ > I dati rappresentano uno snapshot delle versioni utilizzate nel benchmark e variano con le nuove release. Eseguite il benchmark sulla vostra applicazione prima di basare la decisione solo sulle dimensioni.
111
+ > Type safety: 5/5 significa che chiavi, parametri e ogni locale vengono verificati senza configurazione manuale, inclusi formattatori di URL e helper.
112
+
113
+ Due aspetti che la tabella non mostra. `Paraglide` non include quasi alcuna libreria a runtime perché genera codice direttamente nella vostra repository, il che implica uno step di rigenerazione prima di ogni commit e possibili conflitti di merge sui file generati. `Intlayer` richiede un plugin per il bundler (`vite-intlayer` o equivalente), quindi non può funzionare in configurazioni prive di build step.
114
+
115
+ ## Abbinare le risposte a una libreria
116
+
117
+ <AccordionGroup>
118
+ <Accordion header="Prototipo, team ridotto, poche lingue">
119
+
120
+ Scegliete la soluzione più semplice e non sovradimensionate gli investimenti. `react-i18next` con un singolo file JSON per lingua è perfetto, e un decennio di risposte su Stack Overflow vi farà risparmiare tempo. Evitate i namespace finché non diventano strettamente necessari. Se il prototipo si trasforma in un prodotto, pianificate una migrazione verso contenuti scoped; l'[adattatore di compatibilità per react-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compat/react-i18next.md) rende la transizione incrementale.
121
+
122
+ </Accordion>
123
+ <Accordion header="Le traduzioni arrivano da un'agenzia o da un TMS che supporta ICU">
124
+
125
+ Il formato del catalogo è già stabilito. `react-intl` è nativo ICU e il tooling di estrazione di FormatJS è progettato proprio per questa pipeline. Anche `use-intl` supporta ICU. `react-i18next` richiede il plugin ICU, altrimenti impone le sue chiavi specifiche per i plurali. Il supporto ICU in Intlayer è ancora parziale, quindi se ricevete stringhe ICU oggi, consideratelo un fattore bloccante fino al rilascio completo.
126
+
127
+ </Accordion>
128
+ <Accordion header="Applicazione di grandi dimensioni, molte route, il budget del bundle è prioritario">
129
+
130
+ Privilegiate contenuti scoped e caricamento dinamico di default, non per convenzione. `Lingui` e `Paraglide` ottengono questo risultato tramite la compilazione. Intlayer lo realizza attraverso dichiarazioni per componente, e il compiler distribuisce solo ciò che una determinata route renderizza. Con `react-i18next` o `use-intl`, definite la strategia di namespace e lazy loading dal primo giorno e verificatela nelle code review, poiché il tooling non lo farà in automatico.
131
+
132
+ </Accordion>
133
+ <Accordion header="La type safety non è negoziabile">
134
+
135
+ Ogni libreria basata su chiavi può essere tipizzata, ma quasi nessuna lo è di default. Se non volete mantenere complesse declaration merging che devono reggere namespace caricati in lazy loading, scegliete una libreria in cui i types vengono generati direttamente dai contenuti: `Lingui`, `Paraglide` o Intlayer. L'articolo sul [rilevamento delle traduzioni mancanti](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/detecting_missing_translations.md) confronta cosa viene intercettato da ciascuna al momento della build.
136
+
137
+ </Accordion>
138
+ <Accordion header="Molti contenuti complessi: markdown, link interni a frasi, componenti specifici per lingua">
139
+
140
+ I nodi complessi sono il punto in cui l'uso di `t()` che restituisce una stringa non basta più. `react-i18next` e `Lingui` offrono `<Trans>`, `react-intl` ha i tag per rich text, tutti approcci più macchinosi rispetto alla gestione di stringhe semplici. I nodi di contenuto di Intlayer accettano direttamente JSX, markdown e oggetti nidificati, risultando più adatti se i contenuti vanno oltre le semplici etichette di interfaccia.
141
+
142
+ </Accordion>
143
+ <Accordion header="Le traduzioni saranno generate da AI e revisionate dagli sviluppatori">
144
+
145
+ In questo caso, un JSON centralizzato non è più un requisito, non essendoci un TMS verso cui esportare. Contenuti colocati abbinati a una CLI che completa le lingue mancanti rappresentano la via più rapida. Il comando `fill` di Intlayer si interfaccia direttamente con la vostra chiave API (OpenAI, Anthropic, Mistral, Gemini) e traduce solo ciò che è stato modificato. Paraglide e Tolgee offrono equivalenti hosted con piani a pagamento.
146
+
147
+ </Accordion>
148
+ <Accordion header="Possibile passaggio a Next.js App Router in futuro">
149
+
150
+ Il context di React non attraversa il confine tra server e client. Le librerie basate esclusivamente su hook lato client (`react-i18next`, `react-intl`) richiederanno un'API lato server parallela nel momento in cui adotterete RSC. `use-intl` (come `next-intl`) e Intlayer (come `next-intlayer`) supportano già questa separazione. Leggete l'[articolo sull'i18n in Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/list_i18n_technologies/frameworks/nextjs.md) prima di standardizzare un pattern.
151
+
152
+ </Accordion>
153
+ </AccordionGroup>
154
+
155
+ ## Dove ogni libreria mostra i suoi limiti
156
+
157
+ Limiti reali, poiché ogni opzione comporta dei compromessi.
158
+
159
+ - **`react-i18next`**: la più pesante del gruppo, formato proprietario per i plurali, configurazione dei types a carico dello sviluppatore, accumulo silenzioso di chiavi inutilizzate.
160
+ - **`react-intl`**: DX verbosa (`useIntl()` seguito da `formatMessage({ id })`), istanza globale legata a molti nodi.
161
+ - **`use-intl`**: semplice all'inizio, complessa da ottimizzare. La combinazione di namespace, caricamento dinamico e types rallenta notevolmente lo sviluppo.
162
+ - **`Lingui`**: step di build aggiuntivo con `extract` / `compile`, molteplici sintassi sovrapposte (`t()`, tagged template, `i18n.t()`, `<Trans>`) che disorientano sviluppatori e assistenti AI.
163
+ - **`Paraglide`**: file generati direttamente nel repository, tree-shaking non pienamente efficace nel benchmark React, e lettura della lingua dallo storage su ogni nodo invece che da uno store centralizzato.
164
+ - **`Tolgee`**: assenza di types sulle chiavi, onboarding più ripido, in-context editing come punto di forza principale.
165
+ - **`Intlayer`**: plugin di build obbligatorio, ecosistema più piccolo, supporto ICU parziale, contenuti distribuiti per progetto che richiedono tooling specifico per esportare un singolo JSON a un traduttore esterno.
166
+ - **`gt-react`, `lingo.dev`**: non consigliate nel benchmark: errori di quota in fase di build, vendor lock-in e problemi di reattività che richiedevano di forzare i re-render del provider.
167
+
168
+ ## Come si presenta ciascuna opzione nel codice
169
+
170
+ Lo stesso componente, un riepilogo del carrello con titolo e plurale, implementato con ciascun candidato. La parte rilevante non è il componente in sé, ma la collocazione dei contenuti e ciò che il type checker è in grado di verificare.
171
+
172
+ <Tabs defaultTab="react-i18next">
173
+ <Tab label="react-i18next" value="react-i18next">
174
+
175
+ <Tabs group="locale">
176
+ <Tab value="en" label="Inglese">
177
+
178
+ ```json fileName="public/locales/en/cart.json"
179
+ {
180
+ "title": "Your cart",
181
+ "items_one": "{{count}} item",
182
+ "items_other": "{{count}} items"
183
+ }
184
+ ```
185
+
186
+ </Tab>
187
+ <Tab value="fr" label="Francese">
188
+
189
+ ```json fileName="public/locales/fr/cart.json"
190
+ {
191
+ "title": "Votre panier",
192
+ "items_one": "{{count}} article",
193
+ "items_other": "{{count}} articles"
194
+ }
195
+ ```
196
+
197
+ </Tab>
198
+ <Tab value="es" label="Spagnolo">
199
+
200
+ ```json fileName="public/locales/es/cart.json"
201
+ {
202
+ "title": "Tu carrito",
203
+ "items_one": "{{count}} artículo",
204
+ "items_other": "{{count}} artículos"
205
+ }
206
+ ```
207
+
208
+ </Tab>
209
+ </Tabs>
210
+
211
+ ```tsx fileName="src/components/CartSummary.tsx"
212
+ import type { FC } from "react";
213
+ import { useTranslation } from "react-i18next";
214
+
215
+ export const CartSummary: FC<{ count: number }> = ({ count }) => {
216
+ const { t } = useTranslation("cart");
217
+
218
+ return (
219
+ <section>
220
+ <h2>{t("title")}</h2>
221
+ <p>{t("items", { count })}</p>
222
+ </section>
223
+ );
224
+ };
225
+ ```
226
+
227
+ I plurali sono chiavi con suffissi risolte tramite `Intl.PluralRules`. Il tipo di `t` è `(key: string) => string` a meno che non si dichiari `CustomTypeOptions`, quindi `t("titel")` compila senza errori.
228
+
229
+ </Tab>
230
+ <Tab label="react-intl" value="react-intl">
231
+
232
+ <Tabs group="locale">
233
+ <Tab value="en" label="Inglese">
234
+
235
+ ```json fileName="src/locales/en.json"
236
+ {
237
+ "cart.title": "Your cart",
238
+ "cart.items": "{count, plural, one {# item} other {# items}}"
239
+ }
240
+ ```
241
+
242
+ </Tab>
243
+ <Tab value="fr" label="Francese">
244
+
245
+ ```json fileName="src/locales/fr.json"
246
+ {
247
+ "cart.title": "Votre panier",
248
+ "cart.items": "{count, plural, one {# article} other {# articles}}"
249
+ }
250
+ ```
251
+
252
+ </Tab>
253
+ <Tab value="es" label="Spagnolo">
254
+
255
+ ```json fileName="src/locales/es.json"
256
+ {
257
+ "cart.title": "Tu carrito",
258
+ "cart.items": "{count, plural, one {# artículo} other {# artículos}}"
259
+ }
260
+ ```
261
+
262
+ </Tab>
263
+ </Tabs>
264
+
265
+ ```tsx fileName="src/components/CartSummary.tsx"
266
+ import type { FC } from "react";
267
+ import { FormattedMessage, useIntl } from "react-intl";
268
+
269
+ export const CartSummary: FC<{ count: number }> = ({ count }) => {
270
+ const intl = useIntl();
271
+
272
+ return (
273
+ <section>
274
+ <h2>
275
+ <FormattedMessage id="cart.title" />
276
+ </h2>
277
+ <p>{intl.formatMessage({ id: "cart.items" }, { count })}</p>
278
+ </section>
279
+ );
280
+ };
281
+ ```
282
+
283
+ ICU end-to-end, ovvero il formato esportato dalla maggior parte delle piattaforme TMS. I types su `id` derivano dallo step di estrazione di `formatjs` combinato con una union generata, non out-of-the-box.
284
+
285
+ </Tab>
286
+ <Tab label="use-intl" value="use-intl">
287
+
288
+ <Tabs group="locale">
289
+ <Tab value="en" label="Inglese">
290
+
291
+ ```json fileName="messages/en.json"
292
+ {
293
+ "Cart": {
294
+ "title": "Your cart",
295
+ "items": "{count, plural, one {# item} other {# items}}"
296
+ }
297
+ }
298
+ ```
299
+
300
+ </Tab>
301
+ <Tab value="fr" label="Francese">
302
+
303
+ ```json fileName="messages/fr.json"
304
+ {
305
+ "Cart": {
306
+ "title": "Votre panier",
307
+ "items": "{count, plural, one {# article} other {# articles}}"
308
+ }
309
+ }
310
+ ```
311
+
312
+ </Tab>
313
+ <Tab value="es" label="Spagnolo">
314
+
315
+ ```json fileName="messages/es.json"
316
+ {
317
+ "Cart": {
318
+ "title": "Tu carrito",
319
+ "items": "{count, plural, one {# artículo} other {# artículos}}"
320
+ }
321
+ }
322
+ ```
323
+
324
+ </Tab>
325
+ </Tabs>
326
+
327
+ ```tsx fileName="src/components/CartSummary.tsx"
328
+ import type { FC } from "react";
329
+ import { useTranslations } from "use-intl";
330
+
331
+ export const CartSummary: FC<{ count: number }> = ({ count }) => {
332
+ const t = useTranslations("Cart");
333
+
334
+ return (
335
+ <section>
336
+ <h2>{t("title")}</h2>
337
+ <p>{t("items", { count })}</p>
338
+ </section>
339
+ );
340
+ };
341
+ ```
342
+
343
+ Stessa impostazione di `next-intl` senza i binding specifici per Next.js. Le chiavi sono tipizzate non appena si estende `AppConfig` con il tipo dei messaggi; la suddivisione dei namespace è a carico dello sviluppatore.
344
+
345
+ </Tab>
346
+ <Tab label="Lingui" value="lingui">
347
+
348
+ ```po fileName="src/locales/fr/messages.po"
349
+ msgid "Your cart"
350
+ msgstr "Votre panier"
351
+
352
+ msgid "{count, plural, one {# item} other {# items}}"
353
+ msgstr "{count, plural, one {# article} other {# articles}}"
354
+ ```
355
+
356
+ ```tsx fileName="src/components/CartSummary.tsx"
357
+ import type { FC } from "react";
358
+ import { Plural, Trans } from "@lingui/react/macro";
359
+
360
+ export const CartSummary: FC<{ count: number }> = ({ count }) => (
361
+ <section>
362
+ <h2>
363
+ <Trans>Your cart</Trans>
364
+ </h2>
365
+ <p>
366
+ <Plural value={count} one="# item" other="# items" />
367
+ </p>
368
+ </section>
369
+ );
370
+ ```
371
+
372
+ La lingua sorgente risiede nel componente; le altre lingue si trovano nei file `.po` con ID con hash dopo `lingui extract`. Dimenticare di eseguire `extract` o `compile` fa ricadere silenziosamente l'applicazione sulla lingua di fallback (inglese).
373
+
374
+ </Tab>
375
+ <Tab label="Paraglide" value="paraglide">
376
+
377
+ <Tabs group="locale">
378
+ <Tab value="en" label="Inglese">
379
+
380
+ ```json fileName="messages/en.json"
381
+ {
382
+ "cart_title": "Your cart",
383
+ "cart_items": "{count} items"
384
+ }
385
+ ```
386
+
387
+ </Tab>
388
+ <Tab value="fr" label="Francese">
389
+
390
+ ```json fileName="messages/fr.json"
391
+ {
392
+ "cart_title": "Votre panier",
393
+ "cart_items": "{count} articles"
394
+ }
395
+ ```
396
+
397
+ </Tab>
398
+ <Tab value="es" label="Spagnolo">
399
+
400
+ ```json fileName="messages/es.json"
401
+ {
402
+ "cart_title": "Tu carrito",
403
+ "cart_items": "{count} artículos"
404
+ }
405
+ ```
406
+
407
+ </Tab>
408
+ </Tabs>
409
+
410
+ ```tsx fileName="src/components/CartSummary.tsx"
411
+ import type { FC } from "react";
412
+ import { m } from "../paraglide/messages.js";
413
+
414
+ export const CartSummary: FC<{ count: number }> = ({ count }) => (
415
+ <section>
416
+ <h2>{m.cart_title()}</h2>
417
+ <p>{m.cart_items({ count })}</p>
418
+ </section>
419
+ );
420
+ ```
421
+
422
+ Ogni messaggio è una funzione tipizzata generata, quindi una chiave mancante si traduce in un errore di importazione. La cartella `paraglide/` viene generata nel repository e rigenerata a ogni modifica.
423
+
424
+ </Tab>
425
+ <Tab label="Intlayer" value="intlayer">
426
+
427
+ ```ts fileName="src/components/cartSummary.content.ts"
428
+ import { plural, t, type Dictionary } from "intlayer";
429
+
430
+ const cartSummaryContent = {
431
+ key: "cart-summary",
432
+ content: {
433
+ title: t({
434
+ it: "Il tuo carrello",
435
+ en: "Your cart",
436
+ fr: "Votre panier",
437
+ es: "Tu carrito",
438
+ }),
439
+ items: t({
440
+ it: plural({ one: "{{count}} articolo", other: "{{count}} articoli" }),
441
+ en: plural({ one: "{{count}} item", other: "{{count}} items" }),
442
+ fr: plural({ one: "{{count}} article", other: "{{count}} articles" }),
443
+ es: plural({ one: "{{count}} articolo", other: "{{count}} artículos" }),
444
+ }),
445
+ },
446
+ } satisfies Dictionary;
447
+
448
+ export default cartSummaryContent;
449
+ ```
450
+
451
+ ```tsx fileName="src/components/CartSummary.tsx"
452
+ import type { FC } from "react";
453
+ import { useIntlayer } from "react-intlayer";
454
+
455
+ export const CartSummary: FC<{ count: number }> = ({ count }) => {
456
+ const { title, items } = useIntlayer("cart-summary");
457
+
458
+ return (
459
+ <section>
460
+ <h2>{title}</h2>
461
+ <p>{items(count)}</p>
462
+ </section>
463
+ );
464
+ };
465
+ ```
466
+
467
+ Tutte le lingue in un unico file accanto al componente. I types vengono generati in fase di build, garantendo l'autocompletamento di `title` e bloccando `tsc` in caso di errori di battitura senza necessità di declaration merging. Eliminando la cartella si eliminano anche le stringhe associate.
468
+
469
+ </Tab>
470
+ </Tabs>
471
+
472
+ Utilizzate già `react-i18next`, `react-intl` o `Lingui`? Gli adattatori di compatibilità ([react-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compat/react-i18next.md), [react-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compat/react-intl.md), [Lingui](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compat/lingui.md)) creano un alias per le importazioni a livello di bundler, consentendo all'API esistente di continuare a funzionare mentre migrate componente per componente. La [guida alla migrazione](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/migration_from_react-i18next_to_intlayer.md) illustra tutti i passaggi.
473
+
474
+ ## Prima di scegliere definitivamente
475
+
476
+ Una tabella riassuntiva illustra cosa offre una libreria oggi. I seguenti punti indicano come sarà gestirla nella quotidianità del progetto.
477
+
478
+ **Verificate l'attività del repository.**
479
+
480
+ Numero di commit, tempi di risposta alle issue e data dell'ultima minor release. Un'architettura solida senza un manutentore attivo si trasforma rapidamente in una migrazione forzata.
481
+
482
+ **Non basatevi unicamente sui download di npm.**
483
+
484
+ La libreria più scaricata è spesso quella rilasciata per prima, non necessariamente quella più adatta a una codebase React del 2026. I download misurano la storia, non la pertinenza tecnica attuale.
485
+
486
+ ![Tier list delle librerie i18n JavaScript](https://github.com/aymericzip/intlayer/blob/main/docs/assets/alphabet_rank_i18n_lib.webp?raw=true)
487
+
488
+ **Verificate chi finanzia i manutentori e qual è il loro modello di business.**
489
+
490
+ `i18next` è supportato da Locize. `next-intl` / `use-intl`, `vue-i18n`, `svelte-i18n` e Lingui sono supportati da Crowdin. Tolgee, Paraglide (inlang) e Intlayer gestiscono ciascuno la propria piattaforma. Un vendor i cui ricavi derivano dai servizi di traduzione hosted ha poco interesse a rendere la traduzione gratuita all'interno della vostra toolchain. Intlayer è l'unica del gruppo a offrire la traduzione con AI tramite CLI utilizzando la vostra chiave API personale, insieme a un CMS self-hostabile.
491
+
492
+ **È pronta per gli agenti AI?**
493
+
494
+ Gli agenti AI riscontrano ancora difficoltà con l'i18n: dimenticano lingue, inventano chiavi e mescolano sintassi di messaggi. La libreria fornisce [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/agent_skills.md) o un [server MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/mcp_server.md) affinché l'agente possa elencare, completare e testare i contenuti? Inoltre, il caricamento dei contenuti è ottimizzato per impostazione predefinita, o è necessario verificare namespace e lazy import a ogni release?
495
+
496
+ **Type safety integrata di default.**
497
+
498
+ Non "può essere tipizzata con configurazioni aggiuntive", ma "una chiave errata blocca `tsc` su un'installazione pulita". Verificate cosa accade con una chiave inesistente e con una lingua in cui manca una traduzione.
499
+
500
+ **Rilevamento dei contenuti inutilizzati.**
501
+
502
+ I cataloghi tendono solo a crescere nel tempo. La build di Intlayer elimina i campi inutilizzati e li segnala nei log (`build.purge`). Paraglide ottiene questo risultato a livello architetturale, poiché una funzione messaggio non invocata viene rimossa tramite tree-shaking. Tutte le altre soluzioni lasciano la pulizia a carico dello sviluppatore.
503
+
504
+ **Developer experience.**
505
+
506
+ Tempo necessario per configurare la prima stringa tradotta, presenza di un [LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/lsp.md) o di un'[estensione VS Code](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/vs_code_extension.md) che mostra la traduzione all'hover e porta direttamente alla dichiarazione, una [CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/index.md) per completamento, test e push, un [compilatore](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compiler.md) o estrattore che estrae le stringhe hard-coded dai componenti per non gestire ogni stringa chiave per chiave, e uno strumento per consentire a figure non tecniche di modificare i contenuti ([editor visuale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) o [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md)) senza aprire una pull request.
507
+
508
+ ## Domande frequenti
509
+
510
+ <FAQ>
511
+
512
+ <Question title="react-i18next è ancora una scelta valida nel 2026?">
513
+
514
+ Sì, per la maggior parte dei team. Vanta il più vasto ecosistema e la maggior quantità di soluzioni documentate online. I suoi costi sono concreti ma prevedibili: il runtime più pesante, un formato per i plurali personalizzato, oltre a type safety e scoping che richiedono configurazione e manutenzione manuali.
515
+
516
+ </Question>
517
+
518
+ <Question title="Ho davvero bisogno di una libreria basata su compiler?">
519
+
520
+ Solo se le dimensioni del bundle, i types generati o il controllo delle chiavi mancanti in fase di build rientrano tra i vostri requisiti essenziali. Per una piccola applicazione con due sole lingue, una libreria a runtime risulta più semplice. L'articolo [compiler vs i18n dichiarativo](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/compiler_vs_declarative_i18n.md) approfondisce i vantaggi dei compiler e i potenziali svantaggi.
521
+
522
+ </Question>
523
+
524
+ <Question title="Posso cambiare libreria in seguito senza riscrivere ogni componente?">
525
+
526
+ Parzialmente. Le librerie basate su chiavi condividono una struttura sufficientemente simile da consentire a un adattatore di compatibilità di mappare un'API sull'altra, che è il principio di funzionamento degli adattatori Intlayer. I formati dei messaggi (ICU vs i18next vs helper) non si convertono automaticamente, quindi plurali e interpolazioni saranno la parte da adattare manualmente.
527
+
528
+ </Question>
529
+
530
+ <Question title="La scelta della libreria influisce sulla SEO?">
531
+
532
+ Indirettamente. Ciò che i web crawler scansionano dipende dal routing, dai tag `hreflang`, dall'attributo `<html lang>` e dalla presenza del testo nell'HTML renderizzato lato server. Alcune librerie includono helper dedicati, la maggior parte lascia la gestione all'utente. Consultate la [guida hreflang per la SEO multilingue](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/hreflang_guide_multilingual_seo.md).
533
+
534
+ </Question>
535
+
536
+ </FAQ>
537
+
538
+ ## Per approfondire
539
+
540
+ - [Benchmark delle librerie i18n: bundle size, leakage e tempi di cambio lingua](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/index.md) e il [report TanStack Start](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/tanstack.md)
541
+ - [React i18n: come funziona il modello del provider e quali sono i costi](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/list_i18n_technologies/frameworks/react.md)
542
+ - [react-i18next vs react-intl vs Intlayer, funzionalità per funzionalità](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/react-i18next_vs_react-intl_vs_intlayer.md)
543
+ - [next-i18next vs next-intl vs Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/next-i18next_vs_next-intl_vs_intlayer.md)
544
+ - [La storia dell'i18n in JavaScript](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/history_of_i18n.md)
545
+ - [Compiler vs i18n dichiarativo](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/compiler_vs_declarative_i18n.md)
546
+ - [i18n per-component vs centralizzato](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/per-component_vs_centralized_i18n.md)
547
+ - [Come funziona l'ottimizzazione del bundle in fase di build](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/bundle_optimization.md)
548
+ - [Configurare l'i18n in un'app Vite + React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+react.md)
549
+ - La stessa guida per [Vue](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/how_to_pick_vue_i18n_library.md), [Svelte](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/how_to_pick_svelte_i18n_library.md) e [Solid](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/how_to_pick_solid_i18n_library.md)