@intlayer/docs 9.5.2 → 9.5.3

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 (384) hide show
  1. package/README.md +1 -1
  2. package/blog/ar/i18next_vs_intlayer-i18next.md +327 -0
  3. package/blog/ar/i18next_vs_intlayer.md +445 -0
  4. package/blog/ar/is_i18next_outdated.md +1 -1
  5. package/blog/ar/is_next-intl_outdated.md +1 -1
  6. package/blog/ar/is_vue-i18n_outdated.md +1 -1
  7. package/blog/ar/lingui_vs_intlayer-lingui.md +304 -0
  8. package/blog/ar/lingui_vs_intlayer.md +381 -0
  9. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  10. package/blog/ar/next-intl_vs_intlayer-next-intl.md +309 -0
  11. package/blog/ar/next-intl_vs_intlayer.md +397 -0
  12. package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  13. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +286 -0
  14. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +0 -0
  15. package/blog/de/i18next_vs_intlayer-i18next.md +327 -0
  16. package/blog/de/i18next_vs_intlayer.md +445 -0
  17. package/blog/de/is_i18next_outdated.md +1 -1
  18. package/blog/de/is_next-intl_outdated.md +1 -1
  19. package/blog/de/is_vue-i18n_outdated.md +1 -1
  20. package/blog/de/lingui_vs_intlayer-lingui.md +304 -0
  21. package/blog/de/lingui_vs_intlayer.md +381 -0
  22. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  23. package/blog/de/next-intl_vs_intlayer-next-intl.md +309 -0
  24. package/blog/de/next-intl_vs_intlayer.md +415 -0
  25. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  26. package/blog/de/vue-i18n_vs_intlayer_benchmark.md +355 -0
  27. package/blog/en/i18next_vs_intlayer-i18next.md +327 -0
  28. package/blog/en/i18next_vs_intlayer.md +445 -0
  29. package/blog/en/is_i18next_outdated.md +1 -1
  30. package/blog/en/is_next-intl_outdated.md +1 -1
  31. package/blog/en/is_vue-i18n_outdated.md +1 -1
  32. package/blog/en/lingui_vs_intlayer-lingui.md +304 -0
  33. package/blog/en/lingui_vs_intlayer.md +381 -0
  34. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  35. package/blog/en/next-intl_vs_intlayer-next-intl.md +309 -0
  36. package/blog/en/next-intl_vs_intlayer.md +415 -0
  37. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  38. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  39. package/blog/en/vue-i18n_vs_intlayer.md +1 -1
  40. package/blog/en/vue-i18n_vs_intlayer_benchmark.md +361 -0
  41. package/blog/en-GB/i18next_vs_intlayer-i18next.md +327 -0
  42. package/blog/en-GB/i18next_vs_intlayer.md +445 -0
  43. package/blog/en-GB/is_i18next_outdated.md +1 -1
  44. package/blog/en-GB/is_next-intl_outdated.md +1 -1
  45. package/blog/en-GB/is_vue-i18n_outdated.md +1 -1
  46. package/blog/en-GB/lingui_vs_intlayer-lingui.md +304 -0
  47. package/blog/en-GB/lingui_vs_intlayer.md +381 -0
  48. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  49. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +309 -0
  50. package/blog/en-GB/next-intl_vs_intlayer.md +415 -0
  51. package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  52. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  53. package/blog/en-GB/vue-i18n_vs_intlayer.md +1 -1
  54. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +245 -0
  55. package/blog/es/i18next_vs_intlayer-i18next.md +327 -0
  56. package/blog/es/i18next_vs_intlayer.md +445 -0
  57. package/blog/es/is_i18next_outdated.md +1 -1
  58. package/blog/es/is_next-intl_outdated.md +1 -1
  59. package/blog/es/is_vue-i18n_outdated.md +1 -1
  60. package/blog/es/lingui_vs_intlayer-lingui.md +304 -0
  61. package/blog/es/lingui_vs_intlayer.md +381 -0
  62. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  63. package/blog/es/next-intl_vs_intlayer-next-intl.md +309 -0
  64. package/blog/es/next-intl_vs_intlayer.md +417 -0
  65. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  66. package/blog/es/vue-i18n_vs_intlayer_benchmark.md +363 -0
  67. package/blog/fr/i18next_vs_intlayer-i18next.md +327 -0
  68. package/blog/fr/i18next_vs_intlayer.md +445 -0
  69. package/blog/fr/is_i18next_outdated.md +1 -1
  70. package/blog/fr/is_next-intl_outdated.md +1 -1
  71. package/blog/fr/is_vue-i18n_outdated.md +1 -1
  72. package/blog/fr/lingui_vs_intlayer-lingui.md +304 -0
  73. package/blog/fr/lingui_vs_intlayer.md +381 -0
  74. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  75. package/blog/fr/next-intl_vs_intlayer-next-intl.md +309 -0
  76. package/blog/fr/next-intl_vs_intlayer.md +417 -0
  77. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +287 -0
  78. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +39 -0
  79. package/blog/hi/i18next_vs_intlayer-i18next.md +327 -0
  80. package/blog/hi/i18next_vs_intlayer.md +445 -0
  81. package/blog/hi/is_i18next_outdated.md +1 -1
  82. package/blog/hi/is_next-intl_outdated.md +1 -1
  83. package/blog/hi/is_vue-i18n_outdated.md +1 -1
  84. package/blog/hi/lingui_vs_intlayer-lingui.md +304 -0
  85. package/blog/hi/lingui_vs_intlayer.md +381 -0
  86. package/blog/hi/next-intl_vs_intlayer-next-intl.md +309 -0
  87. package/blog/hi/next-intl_vs_intlayer.md +397 -0
  88. package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  89. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  90. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +0 -0
  91. package/blog/id/i18next_vs_intlayer-i18next.md +327 -0
  92. package/blog/id/i18next_vs_intlayer.md +445 -0
  93. package/blog/id/is_i18next_outdated.md +1 -1
  94. package/blog/id/is_next-intl_outdated.md +1 -1
  95. package/blog/id/is_vue-i18n_outdated.md +1 -1
  96. package/blog/id/lingui_vs_intlayer-lingui.md +304 -0
  97. package/blog/id/lingui_vs_intlayer.md +381 -0
  98. package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  99. package/blog/id/next-intl_vs_intlayer-next-intl.md +310 -0
  100. package/blog/id/next-intl_vs_intlayer.md +397 -0
  101. package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  102. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +36 -0
  103. package/blog/id/vue-i18n_vs_intlayer.md +1 -1
  104. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +41 -0
  105. package/blog/it/i18next_vs_intlayer-i18next.md +327 -0
  106. package/blog/it/i18next_vs_intlayer.md +445 -0
  107. package/blog/it/is_i18next_outdated.md +1 -1
  108. package/blog/it/is_next-intl_outdated.md +1 -1
  109. package/blog/it/is_vue-i18n_outdated.md +1 -1
  110. package/blog/it/lingui_vs_intlayer-lingui.md +304 -0
  111. package/blog/it/lingui_vs_intlayer.md +381 -0
  112. package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  113. package/blog/it/next-intl_vs_intlayer-next-intl.md +309 -0
  114. package/blog/it/next-intl_vs_intlayer.md +418 -0
  115. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  116. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +34 -0
  117. package/blog/ja/i18next_vs_intlayer-i18next.md +327 -0
  118. package/blog/ja/i18next_vs_intlayer.md +447 -0
  119. package/blog/ja/is_i18next_outdated.md +1 -1
  120. package/blog/ja/is_next-intl_outdated.md +1 -1
  121. package/blog/ja/is_vue-i18n_outdated.md +1 -1
  122. package/blog/ja/lingui_vs_intlayer-lingui.md +304 -0
  123. package/blog/ja/lingui_vs_intlayer.md +381 -0
  124. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  125. package/blog/ja/next-intl_vs_intlayer-next-intl.md +310 -0
  126. package/blog/ja/next-intl_vs_intlayer.md +422 -0
  127. package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  128. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  129. package/blog/ja/vue-i18n_vs_intlayer.md +1 -1
  130. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +0 -0
  131. package/blog/ko/i18next_vs_intlayer-i18next.md +327 -0
  132. package/blog/ko/i18next_vs_intlayer.md +447 -0
  133. package/blog/ko/is_i18next_outdated.md +1 -1
  134. package/blog/ko/is_next-intl_outdated.md +1 -1
  135. package/blog/ko/is_vue-i18n_outdated.md +1 -1
  136. package/blog/ko/lingui_vs_intlayer-lingui.md +304 -0
  137. package/blog/ko/lingui_vs_intlayer.md +381 -0
  138. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  139. package/blog/ko/next-intl_vs_intlayer-next-intl.md +309 -0
  140. package/blog/ko/next-intl_vs_intlayer.md +397 -0
  141. package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  142. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  143. package/blog/ko/vue-i18n_vs_intlayer.md +1 -1
  144. package/blog/ko/vue-i18n_vs_intlayer_benchmark.md +366 -0
  145. package/blog/pl/i18next_vs_intlayer-i18next.md +327 -0
  146. package/blog/pl/i18next_vs_intlayer.md +445 -0
  147. package/blog/pl/is_i18next_outdated.md +1 -1
  148. package/blog/pl/is_next-intl_outdated.md +1 -1
  149. package/blog/pl/is_vue-i18n_outdated.md +1 -1
  150. package/blog/pl/lingui_vs_intlayer-lingui.md +304 -0
  151. package/blog/pl/lingui_vs_intlayer.md +381 -0
  152. package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  153. package/blog/pl/next-intl_vs_intlayer-next-intl.md +309 -0
  154. package/blog/pl/next-intl_vs_intlayer.md +397 -0
  155. package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  156. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +289 -0
  157. package/blog/pl/vue-i18n_vs_intlayer.md +1 -1
  158. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +0 -0
  159. package/blog/pt/i18next_vs_intlayer-i18next.md +327 -0
  160. package/blog/pt/i18next_vs_intlayer.md +445 -0
  161. package/blog/pt/is_i18next_outdated.md +1 -1
  162. package/blog/pt/is_next-intl_outdated.md +1 -1
  163. package/blog/pt/is_vue-i18n_outdated.md +1 -1
  164. package/blog/pt/lingui_vs_intlayer-lingui.md +304 -0
  165. package/blog/pt/lingui_vs_intlayer.md +381 -0
  166. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  167. package/blog/pt/next-intl_vs_intlayer-next-intl.md +309 -0
  168. package/blog/pt/next-intl_vs_intlayer.md +411 -0
  169. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  170. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +0 -0
  171. package/blog/ru/i18next_vs_intlayer-i18next.md +327 -0
  172. package/blog/ru/i18next_vs_intlayer.md +445 -0
  173. package/blog/ru/is_i18next_outdated.md +1 -1
  174. package/blog/ru/is_next-intl_outdated.md +1 -1
  175. package/blog/ru/is_vue-i18n_outdated.md +1 -1
  176. package/blog/ru/lingui_vs_intlayer-lingui.md +304 -0
  177. package/blog/ru/lingui_vs_intlayer.md +381 -0
  178. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  179. package/blog/ru/next-intl_vs_intlayer-next-intl.md +309 -0
  180. package/blog/ru/next-intl_vs_intlayer.md +417 -0
  181. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  182. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +54 -0
  183. package/blog/tr/i18next_vs_intlayer-i18next.md +327 -0
  184. package/blog/tr/i18next_vs_intlayer.md +445 -0
  185. package/blog/tr/is_i18next_outdated.md +1 -1
  186. package/blog/tr/is_next-intl_outdated.md +1 -1
  187. package/blog/tr/is_vue-i18n_outdated.md +1 -1
  188. package/blog/tr/lingui_vs_intlayer-lingui.md +304 -0
  189. package/blog/tr/lingui_vs_intlayer.md +381 -0
  190. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  191. package/blog/tr/next-intl_vs_intlayer-next-intl.md +309 -0
  192. package/blog/tr/next-intl_vs_intlayer.md +397 -0
  193. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  194. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  195. package/blog/tr/vue-i18n_vs_intlayer.md +1 -1
  196. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +0 -0
  197. package/blog/uk/i18next_vs_intlayer-i18next.md +327 -0
  198. package/blog/uk/i18next_vs_intlayer.md +445 -0
  199. package/blog/uk/is_i18next_outdated.md +1 -1
  200. package/blog/uk/is_next-intl_outdated.md +1 -1
  201. package/blog/uk/is_vue-i18n_outdated.md +1 -1
  202. package/blog/uk/lingui_vs_intlayer-lingui.md +304 -0
  203. package/blog/uk/lingui_vs_intlayer.md +381 -0
  204. package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  205. package/blog/uk/next-intl_vs_intlayer-next-intl.md +309 -0
  206. package/blog/uk/next-intl_vs_intlayer.md +397 -0
  207. package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  208. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +270 -0
  209. package/blog/uk/vue-i18n_vs_intlayer.md +1 -1
  210. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +0 -0
  211. package/blog/vi/i18next_vs_intlayer-i18next.md +327 -0
  212. package/blog/vi/i18next_vs_intlayer.md +445 -0
  213. package/blog/vi/is_i18next_outdated.md +1 -1
  214. package/blog/vi/is_next-intl_outdated.md +1 -1
  215. package/blog/vi/is_vue-i18n_outdated.md +1 -1
  216. package/blog/vi/lingui_vs_intlayer-lingui.md +304 -0
  217. package/blog/vi/lingui_vs_intlayer.md +381 -0
  218. package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  219. package/blog/vi/next-intl_vs_intlayer-next-intl.md +309 -0
  220. package/blog/vi/next-intl_vs_intlayer.md +397 -0
  221. package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  222. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  223. package/blog/vi/vue-i18n_vs_intlayer.md +1 -1
  224. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +0 -0
  225. package/blog/zh/i18next_vs_intlayer-i18next.md +327 -0
  226. package/blog/zh/i18next_vs_intlayer.md +445 -0
  227. package/blog/zh/is_i18next_outdated.md +1 -1
  228. package/blog/zh/is_next-intl_outdated.md +1 -1
  229. package/blog/zh/is_vue-i18n_outdated.md +1 -1
  230. package/blog/zh/lingui_vs_intlayer-lingui.md +304 -0
  231. package/blog/zh/lingui_vs_intlayer.md +381 -0
  232. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  233. package/blog/zh/next-intl_vs_intlayer-next-intl.md +309 -0
  234. package/blog/zh/next-intl_vs_intlayer.md +422 -0
  235. package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
  236. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  237. package/blog/zh/vue-i18n_vs_intlayer.md +1 -1
  238. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +30 -0
  239. package/dist/cjs/generated/blog.entry.cjs +160 -0
  240. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  241. package/dist/cjs/generated/frequentQuestions.entry.cjs +20 -0
  242. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  243. package/dist/esm/generated/blog.entry.mjs +160 -0
  244. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  245. package/dist/esm/generated/frequentQuestions.entry.mjs +20 -0
  246. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  247. package/dist/types/generated/blog.entry.d.ts +8 -0
  248. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  249. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
  250. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  251. package/docs/ar/benchmark/nextjs.md +1 -1
  252. package/docs/ar/benchmark/solid.md +1 -1
  253. package/docs/ar/benchmark/svelte.md +1 -1
  254. package/docs/ar/benchmark/tanstack.md +1 -1
  255. package/docs/ar/benchmark/vue.md +1 -1
  256. package/docs/ar/interest_of_intlayer.md +1 -1
  257. package/docs/bn/interest_of_intlayer.md +1 -1
  258. package/docs/cs/interest_of_intlayer.md +1 -1
  259. package/docs/de/benchmark/nextjs.md +1 -1
  260. package/docs/de/benchmark/solid.md +1 -1
  261. package/docs/de/benchmark/svelte.md +1 -1
  262. package/docs/de/benchmark/tanstack.md +1 -1
  263. package/docs/de/benchmark/vue.md +1 -1
  264. package/docs/de/interest_of_intlayer.md +1 -1
  265. package/docs/en/benchmark/nextjs.md +1 -1
  266. package/docs/en/benchmark/solid.md +1 -1
  267. package/docs/en/benchmark/svelte.md +1 -1
  268. package/docs/en/benchmark/tanstack.md +1 -1
  269. package/docs/en/benchmark/vue.md +1 -1
  270. package/docs/en/interest_of_intlayer.md +1 -1
  271. package/docs/en-GB/benchmark/nextjs.md +1 -1
  272. package/docs/en-GB/benchmark/solid.md +1 -1
  273. package/docs/en-GB/benchmark/svelte.md +1 -1
  274. package/docs/en-GB/benchmark/tanstack.md +1 -1
  275. package/docs/en-GB/benchmark/vue.md +1 -1
  276. package/docs/en-GB/interest_of_intlayer.md +1 -1
  277. package/docs/es/benchmark/nextjs.md +1 -1
  278. package/docs/es/benchmark/solid.md +1 -1
  279. package/docs/es/benchmark/svelte.md +1 -1
  280. package/docs/es/benchmark/tanstack.md +1 -1
  281. package/docs/es/benchmark/vue.md +1 -1
  282. package/docs/es/interest_of_intlayer.md +1 -1
  283. package/docs/fr/benchmark/nextjs.md +1 -1
  284. package/docs/fr/benchmark/solid.md +1 -1
  285. package/docs/fr/benchmark/svelte.md +1 -1
  286. package/docs/fr/benchmark/tanstack.md +1 -1
  287. package/docs/fr/benchmark/vue.md +1 -1
  288. package/docs/fr/interest_of_intlayer.md +1 -1
  289. package/docs/hi/benchmark/nextjs.md +1 -1
  290. package/docs/hi/benchmark/solid.md +1 -1
  291. package/docs/hi/benchmark/svelte.md +1 -1
  292. package/docs/hi/benchmark/tanstack.md +1 -1
  293. package/docs/hi/benchmark/vue.md +1 -1
  294. package/docs/hi/interest_of_intlayer.md +1 -1
  295. package/docs/id/benchmark/nextjs.md +1 -1
  296. package/docs/id/benchmark/solid.md +1 -1
  297. package/docs/id/benchmark/svelte.md +1 -1
  298. package/docs/id/benchmark/tanstack.md +1 -1
  299. package/docs/id/benchmark/vue.md +1 -1
  300. package/docs/id/interest_of_intlayer.md +1 -1
  301. package/docs/it/benchmark/nextjs.md +1 -1
  302. package/docs/it/benchmark/solid.md +1 -1
  303. package/docs/it/benchmark/svelte.md +1 -1
  304. package/docs/it/benchmark/tanstack.md +1 -1
  305. package/docs/it/benchmark/vue.md +1 -1
  306. package/docs/it/interest_of_intlayer.md +1 -1
  307. package/docs/ja/benchmark/nextjs.md +1 -1
  308. package/docs/ja/benchmark/solid.md +1 -1
  309. package/docs/ja/benchmark/svelte.md +1 -1
  310. package/docs/ja/benchmark/tanstack.md +1 -1
  311. package/docs/ja/benchmark/vue.md +1 -1
  312. package/docs/ja/interest_of_intlayer.md +1 -1
  313. package/docs/ko/benchmark/nextjs.md +1 -1
  314. package/docs/ko/benchmark/solid.md +1 -1
  315. package/docs/ko/benchmark/svelte.md +1 -1
  316. package/docs/ko/benchmark/tanstack.md +1 -1
  317. package/docs/ko/benchmark/vue.md +1 -1
  318. package/docs/ko/interest_of_intlayer.md +1 -1
  319. package/docs/nl/interest_of_intlayer.md +1 -1
  320. package/docs/pl/benchmark/nextjs.md +1 -1
  321. package/docs/pl/benchmark/solid.md +1 -1
  322. package/docs/pl/benchmark/svelte.md +1 -1
  323. package/docs/pl/benchmark/tanstack.md +1 -1
  324. package/docs/pl/benchmark/vue.md +1 -1
  325. package/docs/pl/interest_of_intlayer.md +1 -1
  326. package/docs/pt/benchmark/nextjs.md +1 -1
  327. package/docs/pt/benchmark/solid.md +1 -1
  328. package/docs/pt/benchmark/svelte.md +1 -1
  329. package/docs/pt/benchmark/tanstack.md +1 -1
  330. package/docs/pt/benchmark/vue.md +1 -1
  331. package/docs/pt/interest_of_intlayer.md +1 -1
  332. package/docs/ru/benchmark/nextjs.md +1 -1
  333. package/docs/ru/benchmark/solid.md +1 -1
  334. package/docs/ru/benchmark/svelte.md +1 -1
  335. package/docs/ru/benchmark/tanstack.md +1 -1
  336. package/docs/ru/benchmark/vue.md +1 -1
  337. package/docs/ru/interest_of_intlayer.md +1 -1
  338. package/docs/tr/benchmark/nextjs.md +1 -1
  339. package/docs/tr/benchmark/solid.md +1 -1
  340. package/docs/tr/benchmark/svelte.md +1 -1
  341. package/docs/tr/benchmark/tanstack.md +1 -1
  342. package/docs/tr/benchmark/vue.md +1 -1
  343. package/docs/tr/interest_of_intlayer.md +1 -1
  344. package/docs/uk/benchmark/nextjs.md +1 -1
  345. package/docs/uk/benchmark/solid.md +1 -1
  346. package/docs/uk/benchmark/svelte.md +1 -1
  347. package/docs/uk/benchmark/tanstack.md +1 -1
  348. package/docs/uk/benchmark/vue.md +1 -1
  349. package/docs/uk/interest_of_intlayer.md +1 -1
  350. package/docs/ur/interest_of_intlayer.md +1 -1
  351. package/docs/vi/benchmark/nextjs.md +1 -1
  352. package/docs/vi/benchmark/solid.md +1 -1
  353. package/docs/vi/benchmark/svelte.md +1 -1
  354. package/docs/vi/benchmark/tanstack.md +1 -1
  355. package/docs/vi/benchmark/vue.md +1 -1
  356. package/docs/vi/interest_of_intlayer.md +1 -1
  357. package/docs/zh/benchmark/nextjs.md +1 -1
  358. package/docs/zh/benchmark/solid.md +1 -1
  359. package/docs/zh/benchmark/svelte.md +1 -1
  360. package/docs/zh/benchmark/tanstack.md +1 -1
  361. package/docs/zh/benchmark/vue.md +1 -1
  362. package/docs/zh/interest_of_intlayer.md +1 -1
  363. package/docs/zh-TW/interest_of_intlayer.md +1 -1
  364. package/frequent_questions/ar/claude_code_token_consumption.md +152 -0
  365. package/frequent_questions/de/claude_code_token_consumption.md +152 -0
  366. package/frequent_questions/en/claude_code_token_consumption.md +152 -0
  367. package/frequent_questions/en-GB/claude_code_token_consumption.md +152 -0
  368. package/frequent_questions/es/claude_code_token_consumption.md +152 -0
  369. package/frequent_questions/fr/claude_code_token_consumption.md +152 -0
  370. package/frequent_questions/hi/claude_code_token_consumption.md +152 -0
  371. package/frequent_questions/id/claude_code_token_consumption.md +152 -0
  372. package/frequent_questions/it/claude_code_token_consumption.md +152 -0
  373. package/frequent_questions/ja/claude_code_token_consumption.md +152 -0
  374. package/frequent_questions/ko/claude_code_token_consumption.md +152 -0
  375. package/frequent_questions/pl/claude_code_token_consumption.md +152 -0
  376. package/frequent_questions/pt/claude_code_token_consumption.md +152 -0
  377. package/frequent_questions/ru/claude_code_token_consumption.md +152 -0
  378. package/frequent_questions/tr/claude_code_token_consumption.md +152 -0
  379. package/frequent_questions/uk/claude_code_token_consumption.md +152 -0
  380. package/frequent_questions/vi/claude_code_token_consumption.md +152 -0
  381. package/frequent_questions/zh/claude_code_token_consumption.md +152 -0
  382. package/package.json +6 -6
  383. package/src/generated/blog.entry.ts +160 -0
  384. package/src/generated/frequentQuestions.entry.ts +20 -0
@@ -0,0 +1,327 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: "i18next बनाम @intlayer/i18next: समान API, पूरी तरह भिन्न बंडल"
5
+ description: "क्या बदलता है जब एक React या Next.js ऐप अपने i18next, react-i18next और next-i18next कॉल्स को बरकरार रखता है लेकिन उन्हें @intlayer/i18next एडेप्टर के माध्यम से प्रस्तुत करता है। समान कोड पर मापा गया प्रति-पेज JavaScript आकार, घटक आकार, सामग्री लीकेज और हाइड्रेशन।"
6
+ keywords:
7
+ - i18next
8
+ - react-i18next
9
+ - next-i18next
10
+ - "@intlayer/i18next"
11
+ - "@intlayer/react-i18next"
12
+ - "@intlayer/next-i18next"
13
+ - Intlayer
14
+ - अनुकूलता एडेप्टर
15
+ - माइग्रेशन
16
+ - अंतर्राष्ट्रीयकरण
17
+ - i18n
18
+ - बेंचमार्क
19
+ - बंडल आकार
20
+ - ब्लॉग
21
+ - Next.js
22
+ - React
23
+ slugs:
24
+ - blog
25
+ - i18next-vs-intlayer-i18next
26
+ author: aymericzip
27
+ ---
28
+
29
+ # i18next बनाम @intlayer/i18next | समान API, पूरी तरह भिन्न बंडल
30
+
31
+ `@intlayer/i18next`, `@intlayer/react-i18next` और `@intlayer/next-i18next` अनुकूलता (compat) एडेप्टर हैं। वे उसी `i18next` API को प्रदर्शित करते हैं जिसका उपयोग आपका कोड पहले से कर रहा है (`useTranslation`, `t()`, `<Trans>`, `i18n.changeLanguage()`, `getFixedT`, `serverSideTranslations`...) और इसे Intlayer द्वारा संकलित शब्दकोशों से प्रस्तुत करते हैं। घटक नहीं बदलते; केवल उनके नीचे का रनटाइम बदलता है।
32
+
33
+ यह लेख एक ही Next.js एप्लिकेशन पर उस प्रतिस्थापन को मापता है, जिसे एक बार `next-i18next` के साथ और एक बार `@intlayer/next-i18next` के साथ बनाया गया है। आंकड़े [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom) से लिए गए हैं। लाइब्रेरी के रूप में `i18next` और Intlayer की तुलना के लिए, [i18next बनाम Intlayer](https://intlayer.org/hi/blog/i18next-vs-intlayer) पढ़ें। यह लेख इस बात पर केंद्रित है कि जब आप अपने कोड को वैसे ही रखते हैं जैसा वह है, तो एडेप्टर क्या बदलता है।
34
+
35
+ <TOC/>
36
+
37
+ > **संक्षेप में (tl;dr)**: उसी Next.js ऐप पर, `next-i18next` को `@intlayer/next-i18next` से बदलने पर प्रति-पेज JavaScript का आकार gzip में **218.5 KB से घटकर 150.7 KB** हो गया (प्राथमिक सेटअप में) और इसने पूरी तरह से अनुकूलित `next-i18next` सेटअप (163.4 KB) को **12.7 KB** से पीछे छोड़ दिया। औसत घटक **78.5 KB से घटकर 9.7 KB** हो गया, बाहरी-पेज स्ट्रिंग लीकेज **~90% से घटकर 0%** हो गया, हाइड्रेशन का समय **15.6 ms से घटकर 11.3 ms** हो गया, और रनटाइम **19.7 KB से घटकर 9.4 KB** हो गया। किसी भी घटक को संपादित नहीं किया गया; केवल एक प्रोवाइडर फ़ाइल बदली गई। `i18next` प्लगइन्स (बैकएंड, भाषा संसूचक) स्वीकार किए जाते हैं लेकिन वे कुछ नहीं करते, क्योंकि रनटाइम पर लोड करने या पता लगाने के लिए कुछ नहीं बचता है।
38
+
39
+ ## `@intlayer/i18next` क्या है
40
+
41
+ `i18next` एक रनटाइम है। `i18n.init({ resources })` या कोई बैकएंड प्लगइन `locales/{lng}/{ns}.json` को एक ग्लोबल इंस्टेंस में लोड करता है; `useTranslation("about")` घटक को इससे जोड़ता है; `t("title")` रेंडर समय पर कुंजी की खोज करता है। नेमस्पेस, लेज़ी लोडिंग, प्रति-पेज नेमस्पेस सूचियाँ और टाइप सुरक्षा को कॉन्फ़िगर और प्रबंधित करना आपकी ज़िम्मेदारी होती है।
42
+
43
+ एडेप्टर API को बनाए रखते हैं और ग्लोबल इंस्टेंस को प्रतिस्थापित करते हैं:
44
+
45
+ 1. **आयात उपनामकरण (Import aliasing)।** `@intlayer/next-i18next/plugin` का `createNextI18nPlugin()` (या `withI18next`) `withIntlayer` को लपेटता है और Webpack / Turbopack उपनाम जोड़ता है ताकि `next-i18next`, `react-i18next` और `i18next` अपने समकक्ष `@intlayer/*` पैकेजों पर हल हो सकें। Vite पर, `@intlayer/react-i18next/plugin` से `reactI18nextVitePlugin()` यही कार्य करता है। किसी भी आयात का नाम बदलने की आवश्यकता नहीं होती।
46
+ 2. **JSON एकमात्र सत्य स्रोत के रूप में।** `syncJSON` प्लगइन आपकी मौजूदा `locales/{lng}/{ns}.json` फ़ाइलों को `format: "i18next"` के साथ पढ़ता है (ताकि `{{name}}`, `$t()` नेस्टिंग, `_one` / `_other` और संदर्भ प्रत्यय ठीक से पार्स हों) और जब CLI या CMS उन्हें अपडेट करता है तो अनुवाद वापस लिखता है।
47
+ 3. **कॉल-साइट बाइंडिंग।** Intlayer अनुकूलन पास `useTranslation("about")` को एक ऐसे कॉल में फिर से लिखता है जो सीधे सक्रिय लोकेल में `about` शब्दकोश प्राप्त करता है। घटक ग्लोबल स्टोर तक पहुंचना बंद कर देता है।
48
+
49
+ ```tsx fileName="components/About.tsx"
50
+ // आपका कोड, अपरिवर्तित
51
+ import { useTranslation } from "react-i18next";
52
+
53
+ const About = () => {
54
+ const { t } = useTranslation("about");
55
+ return <h1>{t("title")}</h1>;
56
+ };
57
+ ```
58
+
59
+ ```tsx fileName="कंपाइलर क्या उत्सर्जित करता है (सरलीकृत)"
60
+ import _dicHash_about from "../.intlayer/dictionaries/about.mjs";
61
+ import { useDictionary as useTranslation } from "@intlayer/react-i18next";
62
+
63
+ const About = () => {
64
+ const { t } = useTranslation(_dicHash_about);
65
+ return <h1>{t("title")}</h1>;
66
+ };
67
+ ```
68
+
69
+ यह पुनर्लेखन ही नीचे दिए गए घटक-आकार और पेज-लीकेज स्तंभों को बेहतर बनाता है।
70
+
71
+ ## एडेप्टर क्या रखते हैं, क्या अनदेखा करते हैं और क्या प्रतिस्थापित नहीं कर सकते
72
+
73
+ | `i18next` API | `@intlayer/*` के साथ |
74
+ | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
75
+ | `useTranslation("ns")`, `useTranslation("ns", { keyPrefix })` | ✅ बरकरार। बिल्ड समय पर `ns` शब्दकोश से बाध्य; आपकी सामग्री के अनुसार टाइप किया गया |
76
+ | `t("key", { name })`, `{{interpolation}}`, `$t(key)` नेस्टिंग | ✅ बरकरार |
77
+ | `key_one` / `key_other` बहुवचन, `key_male` संदर्भ, `returnObjects` | ✅ बरकरार। बहुवचनों का मूल्यांकन `Intl.PluralRules` से किया जाता है |
78
+ | `components`, क्रमांकित टैग `<1>...</1>`, `values` के साथ `<Trans>` | ✅ बरकरार |
79
+ | `withTranslation`, `Translation`, `I18nContext` | ✅ बरकरार |
80
+ | `i18n.changeLanguage()`, `i18n.language`, `i18n.dir()`, `on("languageChanged")` | ✅ बरकरार। `changeLanguage` Intlayer के लोकेल को चलाता है |
81
+ | `getFixedT(lng, ns, keyPrefix)`, `i18n.exists()`, `hasLoadedNamespace()` | ✅ बरकरार |
82
+ | `i18n.use(Backend).use(LanguageDetector).init({...})` | ⚠️ `use()` प्लगइन के `init` को कॉल करता है और समाप्त होता है; बैकएंड और डिटेक्टरों के पास लोड करने या खोजने के लिए कुछ नहीं है |
83
+ | `init({ resources })`, `addResourceBundle()` | ⚠️ `resources` को देव चेतावनी के साथ **अनदेखा** किया जाता है; बंडल लाभ प्राप्त करने के लिए JSON आयात हटाएं |
84
+ | `I18nextProvider i18n={i18n}` | ⚠️ एक `IntlayerProvider` प्रस्तुत करता है; `i18n` प्रॉप को अनदेखा किया जाता है। App Router पर, लोकेल पास करें (नीचे देखें) |
85
+ | `serverSideTranslations(locale, ["common"])` (next-i18next) | ⚠️ अपेक्षित आकार लौटाता है और कुछ भी लोड नहीं करता है। रखना सुरक्षित, हटाना सुरक्षित |
86
+ | `appWithTranslation(App)` (next-i18next) | ✅ बरकरार |
87
+ | `next-i18next.config.js` | ⚠️ पढ़ा नहीं जाता। लोकेल `intlayer.config.ts` से आते हैं |
88
+ | बिना नेमस्पेस के `useTranslation()` | ✅ पूरी फ़ाइल के `translation` शब्दकोश के विरुद्ध काम करता है (`splitKeys: false`) |
89
+
90
+ ## बेंचमार्क
91
+
92
+ ### क्या मापा गया था
93
+
94
+ [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom) सुइट प्रत्येक सेटअप के साथ **समान एप्लिकेशन** बनाता है: **10 पेज** (होम, अबाउट, ब्लॉग, करियर, संपर्क, एफएक्यू, मूल्य निर्धारण, उत्पाद, सेटिंग्स, टीम), **10 लोकेल** (`en`, `fr`, `es`, `de`, `it`, `pt`, `zh`, `ja`, `ko`, `ru`), समान घटक और समान सामग्री। पेजों को `en` और `fr` में मापा जाता है।
95
+
96
+ `next-i18next` को चार लोडिंग रणनीतियों में बनाया गया था, प्रत्येक लोकेल के JSON को `resources` में आयात करने (`static`) से लेकर प्रति रूट एक नेमस्पेस तक, जिसे बैकएंड के माध्यम से लोड किया गया था (`scoped-dynamic`)। एडेप्टर को **प्राथमिक सेटअप के समान घटकों** पर बनाया गया था, जिसमें केवल `next.config.ts`, `intlayer.config.ts` और प्रोवाइडर फ़ाइल बदली गई थी। इसमें कोई मैन्युअल "scoped" संस्करण नहीं है: कंपाइलर प्रति घटक सामग्री को स्वचालित रूप से सीमित करता है।
97
+
98
+ प्रत्येक बिल्ड के लिए, परीक्षण रिकॉर्ड करता है:
99
+
100
+ - **लाइब्रेरी आकार**: एक खाली घटक का gzip आकार जो केवल i18n लाइब्रेरी आयात करता है।
101
+ - **पेज JS**: सभी पेजों और लोकेलों में औसत रूप से प्रति पेज डाउनलोड किया गया gzip जावास्क्रिप्ट।
102
+ - **लोकेल लीकेज %**: डाउनलोड किए गए JS में अनुवादित स्ट्रिंग्स का हिस्सा जो उस लोकेल से संबंधित है जिसे उपयोगकर्ता **नहीं** देख रहा है।
103
+ - **पेज लीकेज %**: डाउनलोड किए गए JS में अनुवादित स्ट्रिंग्स का हिस्सा जो उस पेज से संबंधित है जिस पर उपयोगकर्ता **नहीं** है।
104
+ - **घटक औसत**: अलगाव में संकलित प्रत्येक घटक का औसत gzip आकार।
105
+ - **E2E प्रतिक्रियाशीलता**: एक नया लोकेल चुनने और DOM में `html[lang]` अपडेट होने के बीच का वास्तविक समय (Playwright, 5 पुनरावृत्तियां)।
106
+ - **हाइड्रेशन**: React हाइड्रेशन चरण की अवधि।
107
+
108
+ > नीचे दिए गए आंकड़े **12-09-2026** के परीक्षण से आते हैं, जिसमें `next-i18next` 16.3.0 (`react-i18next` 17.0.13, `i18next` 26.4.2) और `@intlayer/next-i18next` 9.5.1 शामिल हैं। परीक्षण एप्लिकेशन जानबूझकर छोटा रखा गया है, इसलिए लीकेज प्रतिशत एक **पैटर्न** का वर्णन करते हैं: वे आपकी सामग्री के साथ बढ़ते हैं जबकि रनटाइम लागत स्थिर रहती है।
109
+
110
+ ### Next.js पर परिणाम
111
+
112
+ | सेटअप | रणनीति | लाइब्रेरी आकार (gz) | पेज JS औसत (gz) | लोकेल लीकेज | पेज लीकेज | घटक औसत (gz) | E2E प्रतिक्रियाशीलता | हाइड्रेशन |
113
+ | ---------------------------- | -------------- | ------------------: | --------------: | ----------: | --------: | -----------: | -------------------: | ----------: |
114
+ | **base** (बिना i18n) | - | 0.0 KB | 141.0 KB | 0.0% | 0.0% | 0.9 KB | 13.4 ms | 11.8 ms |
115
+ | `next-i18next` | static | 19.7 KB | 218.5 KB | 0.0% | 89.8% | 78.5 KB | 16.4 ms | 15.6 ms |
116
+ | `next-i18next` | dynamic | 19.7 KB | 169.5 KB | 50.0% | 89.8% | 26.1 KB | 15.4 ms | 27.7 ms |
117
+ | `next-i18next` | scoped-static | 19.7 KB | 220.1 KB | 0.0% | 89.8% | 78.9 KB | 16.4 ms | 14.7 ms |
118
+ | `next-i18next` | scoped-dynamic | 19.7 KB | 163.4 KB | 0.0% | 0.0% | 27.1 KB | 15.9 ms | 15.1 ms |
119
+ | **`@intlayer/next-i18next`** | static | **9.4 KB** | **150.7 KB** | **0.0%** | **0.0%** | **9.7 KB** | **10.7 ms** | **11.3 ms** |
120
+ | **`@intlayer/next-i18next`** | dynamic | **9.4 KB** | **150.7 KB** | **0.0%** | **0.0%** | **9.7 KB** | **11.9 ms** | **10.6 ms** |
121
+ | `next-intlayer` (मूल) | static | 5.5 KB | 141.3 KB | 0.0% | 0.0% | 8.5 KB | 15.5 ms | 16.9 ms |
122
+ | `next-intlayer` (मूल) | dynamic | 5.5 KB | 141.3 KB | 0.0% | 0.0% | 6.9 KB | 15.3 ms | 15.9 ms |
123
+
124
+ **इसे कैसे समझें**
125
+
126
+ - **प्राथमिक सेटअप से प्रति पेज 68 KB कम।** `resources: { en, fr, ... }` हर पेज पर हर लोकेल और हर नेमस्पेस भेजता है: **218.5 KB**। समान घटकों का एडेप्टर बिल्ड **150.7 KB** पर आता है। यह `next-i18next` के सर्वश्रेष्ठ कॉन्फ़िगरेशन (163.4 KB) को भी 12.7 KB से हराता है, क्योंकि अकेले `i18next` रनटाइम का वजन 19.7 KB है जबकि एडेप्टर का केवल 9.4 KB है।
127
+ - **बिना किसी घटक को छुए लीकेज 0% हो जाता है।** पूरी तरह से विभाजित सेटअप को छोड़कर प्रत्येक `next-i18next` सेटअप बाहरी पेजों की लगभग 90% स्ट्रिंग्स भेजता है। `dynamic` पंक्ति वास्तव में दिखती स्थिति से बदतर है: यह पेज लीकेज को कहीं भी कम नहीं करती और **50% लोकेल लीकेज** जोड़ती है, क्योंकि प्रति-लोकेल बैकएंड अभी भी संपूर्ण `translation` नेमस्पेस को खींचता है। एडेप्टर मूल कोड से 0% / 0% तक पहुंचता है।
128
+ - **घटक: 8 गुना छोटे।** अलगाव में संकलित एक `useTranslation()` घटक इनलाइन `resources` के साथ औसत **78.5 KB** और बैकएंड के साथ **26-27 KB** होता है, क्योंकि `t` ग्लोबल स्टोर से बंधा होता है। एडेप्टर के साथ यह औसतन **9.7 KB** हो जाता है।
129
+ - **तेज़ हाइड्रेशन और भाषा बदलना।** हाइड्रेशन 15.6 ms से घटकर **11.3 ms** हो जाता है (और `dynamic` सेटअप में 27.7 ms से, जहाँ बैकएंड फ़ेच महत्वपूर्ण पथ पर स्थित होता है)। लोकेल बदलना 15-16 ms से घटकर **11-12 ms** हो जाता है।
130
+ - **एडेप्टर मूल रनटाइम नहीं है।** `next-intlayer` बेस ऐप से केवल +0.3 KB अधिक यानी **141.3 KB** पर पहुंचता है। एडेप्टर Intlayer के कोर के ऊपर `i18next` API सतह (इंटरपोलेशन, बहुवचन और संदर्भ प्रत्यय समाधान, `<Trans>` टैग पार्सिंग) रखता है: 9.4 KB और मूल की तुलना में प्रति पेज +9.4 KB। यह एक पुल है, अंतिम गंतव्य नहीं।
131
+
132
+ > Vite / TanStack Start पर `react-i18next` एडेप्टर इस परीक्षण का हिस्सा नहीं था। TanStack Start पर `react-i18next` बेसलाइन [i18next बनाम Intlayer](https://intlayer.org/hi/blog/i18next-vs-intlayer) में देखी जा सकती है।
133
+
134
+ ## संख्याएँ क्यों बदलती हैं
135
+
136
+ `components/` में कुछ भी नहीं बदला, इसलिए लाभ इस बात से आता है कि `useTranslation` किससे बंधा है।
137
+
138
+ **`i18next` के साथ**, बाइंडिंग ग्लोबल इंस्टेंस होती है। इसमें जो कुछ भी लोड किया गया था (`static` में सभी लोकेल, `dynamic` में सक्रिय लोकेल का पूरा नेमस्पेस) वह `useTranslation()` को कॉल करने वाले प्रत्येक घटक से सुलभ होता है। बंडलर इंस्टेंस में रखी गई सीमा से नीचे कोड को विभाजित नहीं कर सकता है, और रनटाइम यह नहीं जान सकता कि कोई घटक किन कुंजियों की मांग करेगा।
139
+
140
+ ```bash
141
+ .
142
+ ├── next-i18next.config.js
143
+ ├── public/locales
144
+ │ ├── en/translation.json # प्रत्येक पेज की स्ट्रिंग्स
145
+ │ └── fr/translation.json
146
+ ├── i18n/i18n.ts # i18n.use(initReactI18next).init({ resources })
147
+ └── components
148
+ ├── AppProviders.tsx # <I18nextProvider i18n={i18n}>
149
+ └── About.tsx # useTranslation(); t("about.title")
150
+ ```
151
+
152
+ **`@intlayer/next-i18next` के साथ**, बाइंडिंग सीधे शब्दकोश होती है। `syncJSON` प्रत्येक नेमस्पेस फ़ाइल को एक शब्दकोश में बदल देता है; अनुकूलन पास घटक को वह शब्दकोश सौंपता है जिसे वह निर्दिष्ट करता है, एक ऐसे आयात के रूप में जिसे बंडलर ट्रैक कर सकता है और प्रति पेज और प्रति लोकेल विभाजित कर सकता है।
153
+
154
+ ```bash
155
+ .
156
+ ├── intlayer.config.ts # syncJSON({ format: "i18next", source: ... })
157
+ ├── public/locales
158
+ │ ├── en/translation.json # अपरिवर्तित, अभी भी सत्य का स्रोत
159
+ │ └── fr/translation.json
160
+ ├── .intlayer/ # जनरेट किया गया: प्रति नेमस्पेस, प्रति लोकेल एक शब्दकोश
161
+ └── components
162
+ ├── AppProviders.tsx # <IntlayerClientProvider locale={locale}>
163
+ └── About.tsx # useTranslation(); t("about.title") ← अपरिवर्तित
164
+ ```
165
+
166
+ `i18n/i18n.ts` और इसका `resources` आयात बेकार कोड बन जाते हैं। यही 68 KB की बचत है।
167
+
168
+ ## तीन चरणों में माइग्रेशन
169
+
170
+ <Steps>
171
+ <Step number={1} title="इंस्टॉल करें">
172
+
173
+ ```bash packageManager="npm"
174
+ npx intlayer init --interactive
175
+ ```
176
+
177
+ ```bash packageManager="pnpm"
178
+ pnpm dlx intlayer init --interactive
179
+ ```
180
+
181
+ ```bash packageManager="yarn"
182
+ yarn dlx intlayer init --interactive
183
+ ```
184
+
185
+ ```bash packageManager="bun"
186
+ bunx intlayer init --interactive
187
+ ```
188
+
189
+ कमांड `i18next` / `react-i18next` / `next-i18next` का पता लगाता है, `intlayer`, फ्रेमवर्क पैकेज (`next-intlayer` या `react-intlayer`), मेल खाने वाला `@intlayer/*` एडेप्टर और `@intlayer/sync-json-plugin` स्थापित करता है, और `intlayer.config.ts` को प्री-फ़िल करता है। मूल पैकेजों को स्थापित रखें: वे पीयर निर्भरता के रूप में कार्य करते हैं और प्रकार प्रदान करते हैं।
190
+
191
+ </Step>
192
+ <Step number={2} title="Intlayer को अपनी लोकेल फ़ाइलों पर निर्देशित करें">
193
+
194
+ ```ts fileName="intlayer.config.ts"
195
+ import { Locales, type IntlayerConfig } from "intlayer";
196
+ import { syncJSON } from "@intlayer/sync-json-plugin";
197
+
198
+ const config: IntlayerConfig = {
199
+ internationalization: {
200
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
201
+ defaultLocale: Locales.ENGLISH,
202
+ },
203
+ dictionary: {
204
+ importMode: "dynamic",
205
+ format: "i18next",
206
+ },
207
+ plugins: [
208
+ syncJSON({
209
+ // i18next बोली: {{name}}, $t(key), key_one / key_other, key_male
210
+ format: "i18next",
211
+ // प्रति नेमस्पेस एक फ़ाइल: `useTranslation("about")` → about.json
212
+ source: ({ locale, key }) => `./public/locales/${locale}/${key}.json`,
213
+ location: "public/locales",
214
+ }),
215
+ ],
216
+ };
217
+
218
+ export default config;
219
+ ```
220
+
221
+ यदि आपके पास प्रति लोकेल केवल एक `translation.json` है (i18next का डिफ़ॉल्ट नेमस्पेस), तो `splitKeys: false` सेट करें ताकि पूरी फ़ाइल एक शब्दकोश बनी रहे और सामान्य `useTranslation()` काम करता रहे।
222
+
223
+ </Step>
224
+ <Step number={3} title="प्लगइन जोड़ें">
225
+
226
+ <Tabs>
227
+ <Tab label="Next.js">
228
+
229
+ ```ts fileName="next.config.ts"
230
+ import type { NextConfig } from "next";
231
+ import { withI18next } from "@intlayer/next-i18next/plugin";
232
+
233
+ const nextConfig: NextConfig = {};
234
+
235
+ export default withI18next(nextConfig);
236
+ ```
237
+
238
+ App Router पर, क्लाइंट घटक `[locale]` सेगमेंट से अपना लोकेल प्राप्त करते हैं। एडेप्टर का `I18nextProvider` कोई लोकेल नहीं लेता है, इसलिए इसे अपनी प्रोवाइडर फ़ाइल में एक बार बदलें:
239
+
240
+ ```tsx fileName="components/AppProviders.tsx"
241
+ "use client";
242
+
243
+ import { IntlayerClientProvider } from "next-intlayer";
244
+ import type { LocalesValues } from "intlayer";
245
+
246
+ export const AppProviders = ({
247
+ locale,
248
+ children,
249
+ }: {
250
+ locale: LocalesValues;
251
+ children: React.ReactNode;
252
+ }) => (
253
+ <IntlayerClientProvider locale={locale}>{children}</IntlayerClientProvider>
254
+ );
255
+ ```
256
+
257
+ इसके नीचे का प्रत्येक घटक अभी भी सामान्य रूप से `useTranslation()` को कॉल करता है।
258
+
259
+ </Tab>
260
+ <Tab label="Vite / TanStack Start">
261
+
262
+ ```ts fileName="vite.config.ts"
263
+ import { defineConfig } from "vite";
264
+ import react from "@vitejs/plugin-react";
265
+ import { reactI18nextVitePlugin } from "@intlayer/react-i18next/plugin";
266
+
267
+ export default defineConfig({
268
+ plugins: [react(), reactI18nextVitePlugin()],
269
+ });
270
+ ```
271
+
272
+ `reactI18nextVitePlugin()` `vite-intlayer` को लपेटता है और `react-i18next` तथा `i18next` को उपनाम देता है। गैर-React प्रोजेक्ट के लिए, `@intlayer/i18next/plugin` से `i18nextVitePlugin()` अकेले `i18next` को उपनाम देता है।
273
+
274
+ </Tab>
275
+ </Tabs>
276
+
277
+ </Step>
278
+ </Steps>
279
+
280
+ ### इसके बाद आप क्या हटा सकते हैं
281
+
282
+ | फ़ाइल / पैटर्न | क्यों |
283
+ | ------------------------------------------------------ | ---------------------------------------------------------------------- |
284
+ | `resources: { en, fr, ... }` और JSON आयात | एडेप्टर द्वारा अनदेखा किया गया। यहीं पर 68 KB की बचत थी |
285
+ | `i18next-http-backend`, `i18next-resources-to-backend` | रनटाइम पर लाने के लिए कुछ नहीं बचा |
286
+ | `i18next-browser-languagedetector` | लोकेल का पता लगाना Intlayer के रूटिंग कॉन्फ़िगरेशन द्वारा किया जाता है |
287
+ | `getStaticProps` में `serverSideTranslations()` | एक खाली संरचना लौटाता है; रखना हानिरहित, हटाना सुरक्षित |
288
+ | `next-i18next.config.js` | पढ़ा नहीं जाता। लोकेल `intlayer.config.ts` में रहते हैं |
289
+ | प्रति-पेज `ns: [...]` सूचियाँ | कंपाइलर प्रति घटक नेमस्पेस चुनता है |
290
+
291
+ ### बाइट्स से परे आपको क्या लाभ मिलते हैं
292
+
293
+ - **टाइप की गई कुंजियाँ।** `useTranslation("about")` को संकलित `about` शब्दकोश के विरुद्ध टाइप किया गया है; `t("does.not.exist")` एक स्ट्रिंग लौटाने के बजाय एक TypeScript त्रुटि देता है।
294
+ - **`npx intlayer test`** किसी भी लोकेल में गायब कुंजी पर CI को रोक देता है। **`npx intlayer fill`** आपकी अपनी प्रदाता कुंजी (OpenAI, Anthropic, Mistral, Gemini...) के साथ गायब कुंजियों का अनुवाद करता है और उन्हें `locales/{lng}/{ns}.json` में वापस लिखता है।
295
+ - **विजुअल एडिटर और CMS** उसी JSON पर काम करते हैं, इसलिए अनुवादक UI के माध्यम से संपादन करते हैं और फ़ाइलें Git में अपडेट हो जाती हैं।
296
+ - **`.content.ts` में क्रमिक स्थानांतरण।** कोई भी घटक एक समर्पित सामग्री फ़ाइल के साथ `useTranslation("about")` से `useIntlayer("about")` पर स्विच कर सकता है। JSON और `.content.ts` शब्दकोश एक साथ शांतिपूर्वक काम करते हैं।
297
+
298
+ ## शुरू करने से पहले जानने योग्य सीमाएँ
299
+
300
+ - **बैकएंड और डिटेक्टर निष्क्रिय हैं।** `i18n.use(HttpBackend)` केवल प्लगइन के `init` को कॉल करता है और कुछ नहीं। यदि आपका ऐप अनुरोध के समय CMS से अनुवाद प्राप्त करने पर निर्भर करता था, तो वह प्रवाह चला गया है; इसके बजाय Intlayer के CMS या `intlayer pull` / `push` कमांड का उपयोग करें।
301
+ - **`resources` को अनदेखा किया जाता है, मर्ज नहीं किया जाता।** कुछ अन्य एडेप्टर के विपरीत, `@intlayer/i18next` इनलाइन `resources` का उपयोग फ़ॉलबैक के रूप में नहीं करता है। प्रत्येक कुंजी सिंक किए गए शब्दकोशों में मौजूद होनी चाहिए, जिसे `intlayer test` सत्यापित करता है।
302
+ - **App Router को प्रोवाइडर संपादन की आवश्यकता है।** केवल एक फ़ाइल, जैसा कि ऊपर दिखाया गया है। `appWithTranslation` वाले Pages Router को किसी चीज़ की आवश्यकता नहीं है।
303
+ - **`next-i18next.config.js` पढ़ा नहीं जाता है।** `localePath`, `fallbackLng`, `reloadOnPrerender` का कोई प्रभाव नहीं पड़ता; लोकेल और फ़ॉलबैक `intlayer.config.ts` से आते हैं।
304
+ - **एडेप्टर मुफ़्त नहीं है।** `next-intlayer` की तुलना में 9.4 KB रनटाइम और प्रति पेज +9.4 KB अतिरिक्त लगता है। जब प्रत्येक घटक `useIntlayer` पर चला जाए, तो इसे हटा दें।
305
+
306
+ ## कब किसका उपयोग करें?
307
+
308
+ - **`i18next` पर बने रहें** यदि आपका ऐप रनटाइम बैकएंड (अनुरोध के समय CMS द्वारा दिए जाने वाले अनुवाद), प्लगइन पारिस्थितिकी तंत्र, या गैर-React लक्ष्य पर निर्भर करता है जिसे एडेप्टर कवर नहीं करते हैं।
309
+ - **`@intlayer/*` का उपयोग करें** यदि आप `react-i18next` / `next-i18next` पर हैं और बिना किसी पुनर्लेखन के 68 KB की बचत, 8 गुना छोटे घटक, 0% लीकेज, टाइप की गई कुंजियाँ और CI जाँच चाहते हैं। यह मौजूदा `i18next` कोडबेस के लिए सबसे उत्तम प्रवेश बिंदु है।
310
+ - **मूल रनटाइम (`next-intlayer` / `react-intlayer`) पर जाएँ** नई परियोजनाओं के लिए, या जब एडेप्टर अपना काम पूरा कर ले। यह तीनों में सबसे हल्का है (5.5 KB, प्रति पेज +0.3 KB) और सिंक्रोनस सर्वर घटकों और प्रति-घटक `.content.ts` फ़ाइलों का समर्थन करता है।
311
+
312
+ ## संबंधित तुलनाएं
313
+
314
+ - [i18next बनाम Intlayer](https://intlayer.org/hi/blog/i18next-vs-intlayer) (लाइब्रेरी तुलना, समान बेंचमार्क)
315
+ - [next-intl बनाम @intlayer/next-intl](https://intlayer.org/hi/blog/next-intl-vs-intlayer-next-intl) (समान एडेप्टर श्रृंखला)
316
+ - [Lingui बनाम @intlayer/lingui](https://intlayer.org/hi/blog/lingui-vs-intlayer-lingui) (समान एडेप्टर श्रृंखला)
317
+ - [vue-i18n बनाम @intlayer/vue-i18n](https://intlayer.org/hi/blog/vue-i18n-vs-intlayer-vue-i18n) (समान एडेप्टर श्रृंखला)
318
+ - माइग्रेशन गाइड: [i18next](https://intlayer.org/hi/doc/migration/i18next), [react-i18next](https://intlayer.org/hi/doc/migration/react-i18next), [next-i18next](https://intlayer.org/hi/doc/migration/next-i18next)
319
+ - अनुकूलता एडेप्टर संदर्भ: [i18next](https://intlayer.org/hi/doc/compatibility/i18next), [react-i18next](https://intlayer.org/hi/doc/compatibility/react-i18next), [next-i18next](https://intlayer.org/hi/doc/compatibility/next-i18next)
320
+
321
+ ## निष्कर्ष
322
+
323
+ `i18next` इस बेंचमार्क में सबसे भारी रनटाइम है, और एडेप्टर आपको इसके API को छोड़ने के लिए कहे बिना इसके अधिकांश भार को हटा देते हैं। उसी Next.js ऐप पर जो प्राथमिक सेटअप की तुलना में **प्रति पेज 68 KB कम**, हाथ से अनुकूलित सर्वोत्तम सेटअप से **12.7 KB कम**, **8 गुना छोटे घटक**, **0% लीकेज** और **4 ms तेज़ हाइड्रेशन** प्रदान करता है, वह भी केवल एक कॉन्फ़िग फ़ाइल, एक प्लगइन लाइन और एक प्रोवाइडर संपादन के साथ।
324
+
325
+ सभी परीक्षण डेटा, ऐप और स्क्रिप्ट [Benchmark Bloom रिपॉजिटरी](https://github.com/intlayer-org/benchmark-bloom) में उपलब्ध हैं।
326
+
327
+ अधिक जानकारी के लिए [Intlayer क्यों?](https://intlayer.org/hi/doc/why) दस्तावेज़ देखें।