@intlayer/docs 9.5.3 → 9.5.4

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,542 @@
1
+ ---
2
+ createdAt: 2026-09-16
3
+ updatedAt: 2026-09-16
4
+ title: "2026年に最適なReact i18nライブラリを選ぶ方法"
5
+ description: Reactの国際化(i18n)に関する意思決定ガイド。react-i18next、react-intl、Lingui、use-intl、Paraglide、Intlayerを比較する前に答えるべき質問と、バンドルサイズ、型安全性、メンテナンスコストにおける各選択肢のトレードオフを解説します。
6
+ keywords:
7
+ - react i18n
8
+ - react 国際化
9
+ - react-i18next
10
+ - react-intl
11
+ - Lingui
12
+ - use-intl
13
+ - Paraglide
14
+ - Intlayer
15
+ - i18n ライブラリ比較
16
+ slugs:
17
+ - blog
18
+ - how-to-pick-react-i18n-library
19
+ author: aymericzip
20
+ ---
21
+
22
+ # 最適なReact i18nライブラリを選ぶ方法
23
+
24
+ Reactには標準のi18nプリミティブが用意されていません。プロジェクトの初期段階でどのライブラリを選択するかによって、翻訳がどのように保存され、どのようにバンドルへ組み込まれ、今後数年間にわたってどれだけの作業負荷が開発者に残り続けるかが決まります。多くのチームは知名度だけでライブラリを選び、翻訳キーが2,000個に達した段階でそのトレードオフに気づくことになります。
25
+
26
+ 本ガイドでは逆のアプローチを取ります。まずプロジェクトに関するいくつかの質問に答え、その回答に合ったライブラリをマッピングしていきます。本記事はプレーンなReact(Vite、React Router、TanStack Start)に焦点を当てています。Next.jsには独自の制約があり、それについては[Next.jsの比較記事](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md)で解説しています。
27
+
28
+ ![React i18n library ecosystem](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.webp?raw=true)
29
+
30
+ ## 目次
31
+
32
+ <TOC/>
33
+
34
+ ## ライブラリを比較する前に答えるべき6つの質問
35
+
36
+ 自分にとってどの比較項目が重要なのかを知らなければ、機能比較表を見ても意味がありません。まずは以下の点を確認してください。
37
+
38
+ 1. **アプリはどのようにレンダリングされるか?** SPAのみか、ハイドレーションを伴うSSRか、それともReact Server Components(RSC)か。ContextベースのフックはSPAであればどこでも動作します。しかしRSCでは、フックを使用するとテキストをレンダリングするすべてのコンポーネントに`"use client"`を強制することになるため、サーバーサイドAPIも必要になります。
39
+ 2. **誰が翻訳を作成するか?** 開発者か、TMS(翻訳管理システム)を利用する社内チームか、ICUファイルを納品する翻訳会社か、それともAIパイプラインか。これはAPIの詳細以上にカタログのフォーマットを左右します。
40
+ 3. **ロケール数とページ数はどのくらいか?** 2つのロケールと5ページ程度であれば、すべてをまとめてバンドルに含めても問題ありません。しかし、10ロケールで50ルートある場合、それは不可能であり、読み込み戦略が最大のコスト要因になります。
41
+ 4. **キーの型安全性は必要か?** `t("checkout.totl")`のようなタイポは、自分で型を定義・接続しない限り、すべてのキーベースのライブラリでそのままコンパイルが通ってしまいます。それを許容できるかどうかを判断してください。
42
+ 5. **文字列に何が含まれるか?** プレーンテキストか、複数形か、それとも文章の途中に`<Link>`が含まれるようなリッチテキストか。リッチコンテンツは、多くのAPIが扱いづらくなるポイントです。
43
+ 6. **プロジェクトの運用期間はどのくらいか?** 3ヶ月のプロトタイプと5年間運用するプロダクトでは、必要となるビルドツールの充実度が異なります。
44
+
45
+ 回答を書き出してみてください。以下の内容はすべてこれらの回答に関連しています。
46
+
47
+ ## 1枚の図で見る全体像
48
+
49
+ JavaScript i18nの15年の歴史は4つのアーキテクチャの波に分けられ、比較対象となるReactライブラリはそれぞれ異なる世代に属しています。
50
+
51
+ ![History of JavaScript i18n libraries](https://github.com/aymericzip/intlayer/blob/main/docs/assets/history_i18n.webp?raw=true)
52
+
53
+ <AccordionGroup>
54
+ <Accordion header="ランタイム辞書(2011年〜2017年): i18next, react-intl">
55
+
56
+ JSONカタログをメモリにロードし、実行時に`t("a.b")`を検索し、ブラウザ内でICUや独自構文をパースします。最大のエコシステムを持ちますが、ランタイムが最も重く、型定義はオプトイン(追加設定が必要)です。
57
+
58
+ </Accordion>
59
+ <Accordion header="コンパイル時マクロ(2018年〜2021年): Lingui, typesafe-i18n">
60
+
61
+ ビルド時にメッセージを抽出し、コンパクトなカタログへコンパイルして引数を型付けします。バンドルサイズを削減できる反面、追加のビルドステップ(`extract`、`compile`)が必要です。
62
+
63
+ </Accordion>
64
+ <Accordion header="サーバーファースト(2022年〜2024年): use-intl / next-intl">
65
+
66
+ SSRおよびServer Componentsを考慮して設計されています。サーバー側でレンダリングし、クライアントが必要とするものだけをハイドレーションします。ただし、依然としてキーベースであり中央集約型です。
67
+
68
+ </Accordion>
69
+ <Accordion header="コンパイラーおよびコロケーションコンテンツ(2024年〜2026年): Paraglide, Intlayer, wuchale">
70
+
71
+ コンテンツをツリーシェイキング可能な関数またはコンポーネントごとの辞書にコンパイルします。型が自動生成され、翻訳漏れがあるとビルドが失敗し、CLIからAI翻訳を実行できます。
72
+
73
+ </Accordion>
74
+ </AccordionGroup>
75
+
76
+ [JavaScript i18nの歴史](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/history_of_i18n.md)では、それぞれの波が前の世代の課題をどのように解決したかを詳しく解説しています。
77
+
78
+ ## 最も重要な決定: コンテンツの配置場所と読み込みタイミング
79
+
80
+ すべてのReact i18nライブラリは、ストア、プロバイダー、フックという基本的に同じ構造を持っています。プロバイダーが受け取ったものは、最終的にクライアントバンドルまたはハイドレーションペイロードに含まれます。したがって、構造上の選択肢は次の2つです。
81
+
82
+ - **中央集約型(Centralized)か、スコープ付きコンテンツ(Scoped)か。** アプリ全体で1つの`en.json`を持つか、コンポーネントごと(または名前空間ごと)に1つの宣言を持つか。
83
+ - **静的インポート(Static)か、動的インポート(Dynamic)か。** 起動時にすべてをバンドルするか、アクティブなロケールとルートをオンデマンドで取得するか。
84
+
85
+ 下のグラフは、1〜10ページ、1〜10ロケールに翻訳され、1ページあたり約30 KBのテキストを持つ理論上のアプリにおけるペイロードの推定値です。
86
+
87
+ ![Theoretical content leakage by architecture](https://github.com/aymericzip/intlayer/blob/main/docs/assets/theorical_content_leakage.webp?raw=true)
88
+
89
+ 静的インポートを使用した中央集約型コンテンツは、両方の軸に比例して肥大化します。10ページ × 10ロケールの場合、すべてのページに300 KBのテキストが含まれることになります。動的インポートを採用するとロケール軸の無駄を排除できます。スコープ化を行うとページ軸の無駄を排除できます。この両方を組み合わせて初めて、ペイロードを常にフラットな状態に保つことができます。
90
+
91
+ これはライブラリ自体の特性というよりも、設計規律の問題です。`react-i18next`でも名前空間や遅延ロードバックエンドを使用してスコープ化が可能です。`use-intl`もルートごとに分割できます。しかし、それを強制する仕組みはなく、共通の`<Button>`が`t("common:cta")`を参照するだけで、`common`が静かにすべてのルートの依存関係になってしまいます。[ベンチマーク](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/benchmark/index.md)ではこれを「他ルートからのリーク」および「他ロケールからのリーク」として測定しており、これこそがライブラリ間の差の大部分を生み出しています。
92
+
93
+ 質問3への回答が「多数のロケール、多数のページ」であった場合、APIの好み以上にこのセクションを重視してください。[コンポーネント単位 vs 中央集約型 i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/per-component_vs_centralized_i18n.md)の記事では、この選択によるメンテナンス面の違いをさらに詳しく掘り下げています。
94
+
95
+ ## 候補となるライブラリ
96
+
97
+ ライブラリのサイズは[TanStack Startベンチマーク](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/benchmark/tanstack.md)に基づいています(空のコンポーネントにおけるプロバイダーとフック、バンドル・ツリーシェイキング・Minify後、10ページ・10ロケール)。コンテンツのサイズは別途測定されています。
98
+
99
+ | ライブラリ | 世代(Wave) | コンテンツモデル | 型安全性 | メッセージフォーマット | ライブラリサイズ |
100
+ | :---------------------- | :----------------- | :----------------------------------------------- | :-------------------------------------- | :---------------------------- | :----------------------------------------------- |
101
+ | `react-i18next` | ランタイム | 中央JSON、名前空間 | 2/5 — オプトイン(`CustomTypeOptions`) | i18next(サフィックス複数形) | 約18.4 kB |
102
+ | `react-intl` (FormatJS) | ランタイム | 中央JSON、ICU | 2/5 — オプトイン(抽出 + union) | ICU | 約15.3 kB |
103
+ | `use-intl` | サーバーファースト | 中央JSON、ICU | 2/5 — オプトイン(declaration merging) | ICU | 約14.1 kB |
104
+ | `@tolgee/react` | ランタイム | 中央集約、インコンテキスト編集 | 1/5 — なし | ICU | 約11.1 kB |
105
+ | Lingui | マクロ | コード内のソーステキスト、コンパイル済みカタログ | 2/5 — 良好(コンパイラーから) | マクロ経由のICU | 約11.8 kB |
106
+ | Paraglide | コンパイラー | inlangプロジェクト、生成された関数 | 3.5/5 — 自動生成 | 独自 | ほぼゼロ(コードベースに生成されるコードのため) |
107
+ | Intlayer | コンパイラー | コンポーネントごとの`.content.ts` | 5/5 — 自動生成、デフォルトで有効 | Intlayer (+ ICU, i18next, PO) | ~5.0 kB |
108
+
109
+ > 数値はベンチマーク実施時のバージョンに基づくスナップショットであり、リリースによって変動します。サイズだけで判断する前に、自身のアプリでベンチマークを実行してください。
110
+ > 型安全性:5/5は、URLフォーマッターやヘルパーを含め、キー・パラメータ・すべてのロケールが手動設定なしに検証されることを意味します。
111
+
112
+ この表に現れていない点が2つあります。`Paraglide`はコードをリポジトリ内に直接生成するためライブラリサイズがほぼゼロになりますが、コミット前ごとの再生成ステップが必要になり、生成ファイルでマージコンフリクトが発生しやすくなります。また、`Intlayer`はバンドラープラグイン(`vite-intlayer`など)を必須とするため、ビルドステップのない環境(no-build setup)では動作しません。
113
+
114
+ ## 回答に基づいたライブラリの選択
115
+
116
+ <AccordionGroup>
117
+ <Accordion header="プロトタイプ、少人数チーム、少ないロケール">
118
+
119
+ 過剰な投資は避け、最もシンプルに動くものを選択してください。ロケールごとに1つのJSONを使用する`react-i18next`で十分であり、過去10年間に蓄積されたStack Overflowの知見が開発時間を節約してくれます。必要になるまで名前空間の導入は見送りましょう。プロトタイプが正式なプロダクトに移行した場合は、スコープ付きコンテンツへの移行を検討してください。[react-i18next互換アダプター](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/compat/react-i18next.md)を利用すれば、段階的な移行が可能です。
120
+
121
+ </Accordion>
122
+ <Accordion header="翻訳がICU対応の翻訳会社またはTMSから提供される">
123
+
124
+ カタログのフォーマットはあらかじめ決まっています。`react-intl`はICUネイティブであり、FormatJSの抽出ツールはそのようなパイプライン向けに構築されています。`use-intl`もICUを読み込めます。`react-i18next`の場合はICUプラグインが必要となり、そうでない場合は独自の複数形キーを使用することになります。IntlayerのICUサポートはまだ部分的なため、現在ICU文字列を受け取るワークフローがある場合は、完全サポートされるまで待つのが無難です。
125
+
126
+ </Accordion>
127
+ <Accordion header="大規模アプリ、多数のルート、バンドルサイズの制限が厳しい">
128
+
129
+ 規約に頼るのではなく、デフォルトでスコープ付きコンテンツと動的ロードを提供するものを優先してください。`Lingui`や`Paraglide`はコンパイルによってこれを実現します。Intlayerはコンポーネントごとの宣言によって実現し、コンパイラーがそのルートでレンダリングされる内容のみを出力します。`react-i18next`や`use-intl`を採用する場合は、ツール側で強制されないため、初日から名前空間と遅延ロード戦略を設計し、コードレビューで徹底する必要があります。
130
+
131
+ </Accordion>
132
+ <Accordion header="型安全性が必須要件である">
133
+
134
+ キーベースのライブラリはすべて型付けが可能ですが、最初から型付けされているものはほとんどありません。遅延ロードされる名前空間に対応するためのdeclaration mergingの保守を避けたい場合は、コンテンツから型が自動生成されるライブラリ(`Lingui`、`Paraglide`、Intlayer)を選択してください。[翻訳漏れの検知に関する記事](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/detecting_missing_translations.md)では、ビルド時に各ライブラリが何を検出できるかを比較しています。
135
+
136
+ </Accordion>
137
+ <Accordion header="リッチコンテンツ(マークダウン、文中のリンク、ロケールごとのコンポーネント)が多い">
138
+
139
+ 文字列を返すだけの`t()`関数は、リッチノードの扱いで破綻しがちです。`react-i18next`や`Lingui`には`<Trans>`があり、`react-intl`にはリッチテキストタグがありますが、いずれもプレーンな文字列の場合と比べて記述が煩雑になります。IntlayerのコンテンツノードはJSX、マークダウン、ネストされたオブジェクトを直接受け取ることができるため、コンテンツが単なるUIラベルにとどまらない場合に最適です。
140
+
141
+ </Accordion>
142
+ <Accordion header="翻訳をAIで生成し、開発者がレビューする">
143
+
144
+ この場合、インポート先のTMSが存在しないため、中央集約型のJSONを用意する必要はありません。コロケーションされたコンテンツと、欠落しているロケールを補完するCLIを組み合わせるのが最短のルートです。Intlayerの`fill`コマンドは自身のAPIキー(OpenAI、Anthropic、Mistral、Gemini)を使用して実行され、変更された差分のみを翻訳します。ParaglideやTolgeeも、独自のプランでホスト型同等機能を提供しています。
145
+
146
+ </Accordion>
147
+ <Accordion header="将来的にNext.js App Routerへ移行する可能性がある">
148
+
149
+ Reactのコンテキストはサーバーとクライアントの境界を越えることができません。クライアントフックのみに依存するライブラリ(`react-i18next`、`react-intl`)は、RSCを採用する段階で並行して動作するサーバーAPIが必要になります。`use-intl`(`next-intl`として)やIntlayer(`next-intlayer`として)はすでにその分割に対応しています。標準パターンを決定する前に、[Next.js i18nの記事](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/list_i18n_technologies/frameworks/nextjs.md)を確認してください。
150
+
151
+ </Accordion>
152
+ </AccordionGroup>
153
+
154
+ ## 各ライブラリのデメリット・注意点
155
+
156
+ すべての選択肢に何らかのトレードオフが存在するため、率直な限界を挙げます。
157
+
158
+ - **`react-i18next`**: この中で最も重く、独自の複数形フォーマットを持ち、型定義の接続・保守は開発者の責任であり、使用されていないデッドキーが静かに蓄積されがちです。
159
+ - **`react-intl`**: 冗長な開発者体験(`useIntl()`を呼び出してから`formatMessage({ id })`を実行)、多数のノードと紐づくグローバルインスタンス。
160
+ - **`use-intl`**: 導入は簡単ですが最適化が困難です。名前空間、動的ロード、型定義を組み合わせると開発スピードが大幅に低下します。
161
+ - **`Lingui`**: 追加の`extract` / `compile`ビルドステップが必要で、重複する複数の構文(`t()`、タグ付きテンプレート、`i18n.t()`、`<Trans>`)が存在するため人間とAIアシスタントの双方が混乱しがちです。
162
+ - **`Paraglide`**: リポジトリ内にコードが自動生成され、Reactベンチマークではツリーシェイキングが有効に機能せず、ロケールはストアではなく各ノードでストレージから直接読み込まれます。
163
+ - **`Tolgee`**: キーの型定義がなく、導入の学習コストが高めです。インコンテキスト編集機能が主なセールスポイントです。
164
+ - **`Intlayer`**: ビルドプラグインが必須で、エコシステムは比較的小さく、ICUサポートは部分的です。設計上コンテンツがコードベース全体に分散しているため、翻訳者向けに単一のJSONとしてエクスポートするにはツールが必要です。
165
+ - **`gt-react`, `lingo.dev`**: ベンチマークでは非推奨と評価されました。ビルド時のクォータエラー、ベンダーロックイン、プロバイダーの再レンダリングを強制する必要があるリアクティビティの問題などが確認されています。
166
+
167
+ ## コードによる各選択肢の比較
168
+
169
+ タイトルと複数形を含む同じコンポーネント(カートの概要)を、各候補ライブラリで記述した例です。注目すべきはコンポーネント自体ではなく、コンテンツがどこに配置され、型チェッカーがそれをどのように認識するかという点です。
170
+
171
+ <Tabs defaultTab="react-i18next">
172
+ <Tab label="react-i18next" value="react-i18next">
173
+
174
+ <Tabs group="locale">
175
+ <Tab value="en" label="英語">
176
+
177
+ ```json fileName="public/locales/en/cart.json"
178
+ {
179
+ "title": "Your cart",
180
+ "items_one": "{{count}} item",
181
+ "items_other": "{{count}} items"
182
+ }
183
+ ```
184
+
185
+ </Tab>
186
+ <Tab value="fr" label="フランス語">
187
+
188
+ ```json fileName="public/locales/fr/cart.json"
189
+ {
190
+ "title": "Votre panier",
191
+ "items_one": "{{count}} article",
192
+ "items_other": "{{count}} articles"
193
+ }
194
+ ```
195
+
196
+ </Tab>
197
+ <Tab value="es" label="スペイン語">
198
+
199
+ ```json fileName="public/locales/es/cart.json"
200
+ {
201
+ "title": "Tu carrito",
202
+ "items_one": "{{count}} artículo",
203
+ "items_other": "{{count}} artículos"
204
+ }
205
+ ```
206
+
207
+ </Tab>
208
+ </Tabs>
209
+
210
+ ```tsx fileName="src/components/CartSummary.tsx"
211
+ import type { FC } from "react";
212
+ import { useTranslation } from "react-i18next";
213
+
214
+ export const CartSummary: FC<{ count: number }> = ({ count }) => {
215
+ const { t } = useTranslation("cart");
216
+
217
+ return (
218
+ <section>
219
+ <h2>{t("title")}</h2>
220
+ <p>{t("items", { count })}</p>
221
+ </section>
222
+ );
223
+ };
224
+ ```
225
+
226
+ 複数形は`Intl.PluralRules`を介して解決されるサフィックスキーです。`CustomTypeOptions`を宣言しない限り`t`は`(key: string) => string`となるため、`t("titel")`のようなタイポもコンパイルが通ってしまいます。
227
+
228
+ </Tab>
229
+ <Tab label="react-intl" value="react-intl">
230
+
231
+ <Tabs group="locale">
232
+ <Tab value="en" label="英語">
233
+
234
+ ```json fileName="src/locales/en.json"
235
+ {
236
+ "cart.title": "Your cart",
237
+ "cart.items": "{count, plural, one {# item} other {# items}}"
238
+ }
239
+ ```
240
+
241
+ </Tab>
242
+ <Tab value="fr" label="フランス語">
243
+
244
+ ```json fileName="src/locales/fr.json"
245
+ {
246
+ "cart.title": "Votre panier",
247
+ "cart.items": "{count, plural, one {# article} other {# articles}}"
248
+ }
249
+ ```
250
+
251
+ </Tab>
252
+ <Tab value="es" label="スペイン語">
253
+
254
+ ```json fileName="src/locales/es.json"
255
+ {
256
+ "cart.title": "Tu carrito",
257
+ "cart.items": "{count, plural, one {# artículo} other {# artículos}}"
258
+ }
259
+ ```
260
+
261
+ </Tab>
262
+ </Tabs>
263
+
264
+ ```tsx fileName="src/components/CartSummary.tsx"
265
+ import type { FC } from "react";
266
+ import { FormattedMessage, useIntl } from "react-intl";
267
+
268
+ export const CartSummary: FC<{ count: number }> = ({ count }) => {
269
+ const intl = useIntl();
270
+
271
+ return (
272
+ <section>
273
+ <h2>
274
+ <FormattedMessage id="cart.title" />
275
+ </h2>
276
+ <p>{intl.formatMessage({ id: "cart.items" }, { count })}</p>
277
+ </section>
278
+ );
279
+ };
280
+ ```
281
+
282
+ エンドツーエンドでICUを使用しており、これは多くのTMSプラットフォームがエクスポートする形式です。`id`の型安全性は`formatjs`の抽出ステップと生成されたunion型から得られるものであり、初期状態ですぐに使えるわけではありません。
283
+
284
+ </Tab>
285
+ <Tab label="use-intl" value="use-intl">
286
+
287
+ <Tabs group="locale">
288
+ <Tab value="en" label="英語">
289
+
290
+ ```json fileName="messages/en.json"
291
+ {
292
+ "Cart": {
293
+ "title": "Your cart",
294
+ "items": "{count, plural, one {# item} other {# items}}"
295
+ }
296
+ }
297
+ ```
298
+
299
+ </Tab>
300
+ <Tab value="fr" label="フランス語">
301
+
302
+ ```json fileName="messages/fr.json"
303
+ {
304
+ "Cart": {
305
+ "title": "Votre panier",
306
+ "items": "{count, plural, one {# article} other {# articles}}"
307
+ }
308
+ }
309
+ ```
310
+
311
+ </Tab>
312
+ <Tab value="es" label="スペイン語">
313
+
314
+ ```json fileName="messages/es.json"
315
+ {
316
+ "Cart": {
317
+ "title": "Tu carrito",
318
+ "items": "{count, plural, one {# artículo} other {# artículos}}"
319
+ }
320
+ }
321
+ ```
322
+
323
+ </Tab>
324
+ </Tabs>
325
+
326
+ ```tsx fileName="src/components/CartSummary.tsx"
327
+ import type { FC } from "react";
328
+ import { useTranslations } from "use-intl";
329
+
330
+ export const CartSummary: FC<{ count: number }> = ({ count }) => {
331
+ const t = useTranslations("Cart");
332
+
333
+ return (
334
+ <section>
335
+ <h2>{t("title")}</h2>
336
+ <p>{t("items", { count })}</p>
337
+ </section>
338
+ );
339
+ };
340
+ ```
341
+
342
+ Next.jsのバインディングがない点を除けば`next-intl`と同じ構造です。`AppConfig`をメッセージ型で拡張(augment)するとキーが型付けされます。名前空間の分割は開発者自身で行う必要があります。
343
+
344
+ </Tab>
345
+ <Tab label="Lingui" value="lingui">
346
+
347
+ ```po fileName="src/locales/fr/messages.po"
348
+ msgid "Your cart"
349
+ msgstr "Votre panier"
350
+
351
+ msgid "{count, plural, one {# item} other {# items}}"
352
+ msgstr "{count, plural, one {# article} other {# articles}}"
353
+ ```
354
+
355
+ ```tsx fileName="src/components/CartSummary.tsx"
356
+ import type { FC } from "react";
357
+ import { Plural, Trans } from "@lingui/react/macro";
358
+
359
+ export const CartSummary: FC<{ count: number }> = ({ count }) => (
360
+ <section>
361
+ <h2>
362
+ <Trans>Your cart</Trans>
363
+ </h2>
364
+ <p>
365
+ <Plural value={count} one="# item" other="# items" />
366
+ </p>
367
+ </section>
368
+ );
369
+ ```
370
+
371
+ ソース言語はコンポーネント内に直接記述され、その他のロケールは`lingui extract`実行後にハッシュ化されたIDを持つ`.po`ファイルに格納されます。`extract`または`compile`を忘れると、サイレントに英語へフォールバックされます。
372
+
373
+ </Tab>
374
+ <Tab label="Paraglide" value="paraglide">
375
+
376
+ <Tabs group="locale">
377
+ <Tab value="en" label="英語">
378
+
379
+ ```json fileName="messages/en.json"
380
+ {
381
+ "cart_title": "Your cart",
382
+ "cart_items": "{count} items"
383
+ }
384
+ ```
385
+
386
+ </Tab>
387
+ <Tab value="fr" label="フランス語">
388
+
389
+ ```json fileName="messages/fr.json"
390
+ {
391
+ "cart_title": "Votre panier",
392
+ "cart_items": "{count} articles"
393
+ }
394
+ ```
395
+
396
+ </Tab>
397
+ <Tab value="es" label="スペイン語">
398
+
399
+ ```json fileName="messages/es.json"
400
+ {
401
+ "cart_title": "Tu carrito",
402
+ "cart_items": "{count} artículos"
403
+ }
404
+ ```
405
+
406
+ </Tab>
407
+ </Tabs>
408
+
409
+ ```tsx fileName="src/components/CartSummary.tsx"
410
+ import type { FC } from "react";
411
+ import { m } from "../paraglide/messages.js";
412
+
413
+ export const CartSummary: FC<{ count: number }> = ({ count }) => (
414
+ <section>
415
+ <h2>{m.cart_title()}</h2>
416
+ <p>{m.cart_items({ count })}</p>
417
+ </section>
418
+ );
419
+ ```
420
+
421
+ すべてのメッセージが型付きの自動生成関数となるため、存在しないキーを参照するとインポートエラーになります。`paraglide/`フォルダーはリポジトリ内に生成され、変更のたびに再生成されます。
422
+
423
+ </Tab>
424
+ <Tab label="Intlayer" value="intlayer">
425
+
426
+ ```ts fileName="src/components/cartSummary.content.ts"
427
+ import { plural, t, type Dictionary } from "intlayer";
428
+
429
+ const cartSummaryContent = {
430
+ key: "cart-summary",
431
+ content: {
432
+ title: t({ en: "Your cart", fr: "Votre panier", es: "Tu carrito" }),
433
+ items: t({
434
+ en: plural({ one: "{{count}} item", other: "{{count}} items" }),
435
+ fr: plural({ one: "{{count}} article", other: "{{count}} articles" }),
436
+ es: plural({ one: "{{count}} artículo", other: "{{count}} artículos" }),
437
+ }),
438
+ },
439
+ } satisfies Dictionary;
440
+
441
+ export default cartSummaryContent;
442
+ ```
443
+
444
+ ```tsx fileName="src/components/CartSummary.tsx"
445
+ import type { FC } from "react";
446
+ import { useIntlayer } from "react-intlayer";
447
+
448
+ export const CartSummary: FC<{ count: number }> = ({ count }) => {
449
+ const { title, items } = useIntlayer("cart-summary");
450
+
451
+ return (
452
+ <section>
453
+ <h2>{title}</h2>
454
+ <p>{items(count)}</p>
455
+ </section>
456
+ );
457
+ };
458
+ ```
459
+
460
+ すべてのロケールがコンポーネントの隣にある1つのファイルに記述されます。ビルド時に型が自動生成されるため、`title`は自動補完され、タイポがあるとdeclaration mergingなしで`tsc`がエラーを検出します。コンポーネントフォルダーを削除すれば、対応する文字列も一緒に削除されます。
461
+
462
+ </Tab>
463
+ </Tabs>
464
+
465
+ すでに`react-i18next`、`react-intl`、または`Lingui`をお使いですか?互換アダプター([react-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/compat/react-i18next.md)、[react-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/compat/react-intl.md)、[Lingui](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/compat/lingui.md))はバンドラーレベルでインポートをエイリアス化するため、コンポーネント単位で移行を進めながら既存のAPIをそのまま動作させ続けることができます。その他の詳細については[マイグレーションガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/migration_from_react-i18next_to_intlayer.md)をご覧ください。
466
+
467
+ ## 採用を決める前に
468
+
469
+ 機能一覧表はライブラリが現在何ができるかを教えてくれますが、以下のポイントは実際にそのライブラリを運用し続けることがどのようなものかを教えてくれます。
470
+
471
+ **リポジトリのアクティビティを確認する。**
472
+
473
+ コミット頻度、Issueへの返信時間、直近のマイナーリリースが今年行われているかどうかを確認してください。メンテナーがいない優れた設計は、いずれ将来の移行作業を余儀なくされます。
474
+
475
+ **npmのダウンロード数だけで選ばない。**
476
+
477
+ 最もインストールされているライブラリは、最初にリリースされたものであり、必ずしも2026年のReactコードベースに適したものであるとは限りません。ダウンロード数は歴史の長さを示しているだけで、現在の適合度を示すものではありません。
478
+
479
+ ![Tier list of JavaScript i18n libraries](https://github.com/aymericzip/intlayer/blob/main/docs/assets/alphabet_rank_i18n_lib.webp?raw=true)
480
+
481
+ **メンテナーに誰が資金を提供し、何を販売しているかを確認する。**
482
+
483
+ `i18next`はLocizeが支援しています。`next-intl` / `use-intl`、`vue-i18n`、`svelte-i18n`、LinguiはCrowdinが支援しています。Tolgee、Paraglide(inlang)、Intlayerはそれぞれ独自のプラットフォームを運営しています。ホスト型翻訳サービスの提供を主な収益源とするベンダーは、自社のツールチェーン内で翻訳を完全に無料化するインセンティブがほとんどありません。Intlayerはこの中で唯一、開発者自身のAPIキーを使用してCLI経由でAI翻訳を実行でき、セルフホスト可能なCMSを提供しています。
484
+
485
+ **AIエージェントに対応しているか?**
486
+
487
+ AIエージェントは依然としてi18nに苦労しています(ロケールを忘れる、存在しないキーを作成する、メッセージ構文を混同するなど)。ライブラリが[Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/agent_skills.md)や[MCPサーバー](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/mcp_server.md)を提供しており、エージェントがコンテンツの一覧表示、自動補完、テストを実行できるようになっているか?また、コンテンツの読み込みはデフォルトで最適化されているか、それとも四半期ごとに誰かが名前空間や遅延インポートを見直す必要があるか?
488
+
489
+ **初期状態で型安全であるか。**
490
+
491
+ 「追加の設定を行えば型付けできる」ではなく、「新規インストール時に不正なキーを指定すると`tsc`が失敗する」かどうかを確認してください。存在しないキーを指定した場合や、翻訳が1つ欠落しているロケールがある場合に何が起こるかを検証してください。
492
+
493
+ **未使用コンテンツの検出。**
494
+
495
+ 翻訳カタログは肥大化する一方です。Intlayerのビルドは未使用のフィールドをパージ(削除)してログを出力します(`build.purge`)。Paraglideはアーキテクチャによってこれを実現し、呼び出されないメッセージ関数はツリーシェイキングされます。それ以外のライブラリでは、クリーンアップ作業は開発者自身に委ねられます。
496
+
497
+ **開発者体験(DX)。**
498
+
499
+ 最初の翻訳文字列が表示されるまでのセットアップ時間、ホバー時に翻訳を表示して宣言箇所へジャンプできる[LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/lsp.md)や[VS Code拡張機能](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/vs_code_extension.md)、補完・テスト・プッシュのための[CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/cli/index.md)、コンポーネント内のハードコードされた文字列を抽出してキーごとに管理する手間をなくす[コンパイラー](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/compiler.md)や抽出ツール、そして開発者以外でもプルリクエストなしでコンテンツを編集できる仕組み([ビジュアルエディター](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_visual_editor.md)や[CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_CMS.md))が用意されているかを確認してください。
500
+
501
+ ## よくある質問(FAQ)
502
+
503
+ <FAQ>
504
+
505
+ <Question title="2026年でもreact-i18nextは依然として無難な選択肢ですか?">
506
+
507
+ 多くのチームにとって依然として有効な選択肢です。最大のエコシステムを持ち、オンライン上に最も多くの解決策が存在します。そのコスト(最も重いランタイム、独自の複数形フォーマット、手動で設定・維持しなければならない型安全性とスコープ管理など)は無視できませんが、予測可能です。
508
+
509
+ </Question>
510
+
511
+ <Question title="コンパイラーベースのライブラリは必須ですか?">
512
+
513
+ バンドルサイズ、自動生成される型、またはビルド時の翻訳漏れチェックが要件に含まれている場合にのみ必要となります。2つのロケールを持つ小規模なアプリであれば、ランタイムライブラリの方がシンプルです。[コンパイラー vs 宣言的 i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/compiler_vs_declarative_i18n.md)の記事では、コンパイラーがもたらすメリットと注意すべき点について解説しています。
514
+
515
+ </Question>
516
+
517
+ <Question title="すべてのコンポーネントを書き直さずに後からライブラリを変更できますか?">
518
+
519
+ 部分的に可能です。キーベースのライブラリは共通の構造を持っているため、互換アダプターによってあるAPIを別のAPIへエイリアス変換できます(Intlayerのアダプターはこのように動作します)。メッセージフォーマット(ICU vs i18next vs ヘルパー)は自動変換されないため、複数形や変数の埋め込み(補間)部分は手動で修正する必要があります。
520
+
521
+ </Question>
522
+
523
+ <Question title="ライブラリの選択はSEOに影響しますか?">
524
+
525
+ 間接的に影響します。クローラーが認識する内容は、ルーティング、`hreflang`、`<html lang>`、およびテキストがサーバーレンダリングされたHTMLに含まれているかどうかによって決まります。一部のライブラリはこれらを補助するヘルパーを提供していますが、多くは開発者自身の実装に委ねられています。詳細は[hreflangガイド](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/hreflang_guide_multilingual_seo.md)をご覧ください。
526
+
527
+ </Question>
528
+
529
+ </FAQ>
530
+
531
+ ## さらに詳しく知るには
532
+
533
+ - [i18nライブラリ ベンチマーク: バンドルサイズ、リーク、ロケール切り替え時間](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/benchmark/index.md)および[TanStack Startレポート](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/benchmark/tanstack.md)
534
+ - [React i18n: プロバイダーモデルの仕組みとコスト](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/list_i18n_technologies/frameworks/react.md)
535
+ - [react-i18next vs react-intl vs Intlayerの機能別徹底比較](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md)
536
+ - [next-i18next vs next-intl vs Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md)
537
+ - [JavaScript i18nの歴史](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/history_of_i18n.md)
538
+ - [コンパイラー vs 宣言的 i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/compiler_vs_declarative_i18n.md)
539
+ - [コンポーネント単位 vs 中央集約型 i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/per-component_vs_centralized_i18n.md)
540
+ - [ビルド時におけるバンドル最適化の仕組み](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/bundle_optimization.md)
541
+ - [Vite + Reactアプリでのi18nセットアップ](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_with_vite+react.md)
542
+ - 各フレームワーク向けガイド: [Vue](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/how_to_pick_vue_i18n_library.md)、[Svelte](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/how_to_pick_svelte_i18n_library.md)、[Solid](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/how_to_pick_solid_i18n_library.md)