@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,152 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: كيفية تقليل استهلاك رموز Claude Code (Tokens) لتوليد الترجمات
5
+ description: لماذا يستهلك استخدام Claude Code للترجمة الكثير من الرموز، وماذا يقدم Intlayer بدلاً من ذلك (تصفية المفاتيح المترجمة، تقسيم JSON، ترجمة markdown كتلة بكتلة)، وكيفية إعادة استخدام اشتراك Claude عبر claude setup-token.
6
+ keywords:
7
+ - claude code
8
+ - tokens
9
+ - استهلاك الرموز
10
+ - setup-token
11
+ - i18n
12
+ - تدويل
13
+ - ترجمة
14
+ - fill
15
+ - mcp
16
+ - وكيل
17
+ slugs:
18
+ - frequent-questions
19
+ - claude-code-token-consumption
20
+ author: aymericzip
21
+ ---
22
+
23
+ # كيفية تقليل استهلاك رموز Claude Code (Tokens) لتوليد الترجمات
24
+
25
+ ## وصف المشكلة
26
+
27
+ يُعد الطلب من Claude Code (أو أي وكيل برمجي) ترجمة محتواك الطريقة الأكثر تكلفة على الإطلاق. ففي كل تشغيل، يضطر الوكيل إلى:
28
+
29
+ - تحميل ملف JSON أو ملف المحتوى كاملاً في سياقه، حتى المفاتيح المترجمة بالفعل.
30
+ - البحث في الملفات المرتبطة لمعرفة مكان المحتوى وطريقة تنظيمه.
31
+ - استنتاج اللغات الناقصة التي ينبغي توليدها.
32
+ - إعادة قراءة تعليماتك المخصصة في كل مرة ("تحويل الروابط بهذا الشكل"، "الإبقاء على اسم العلامة التجارية بالإنجليزية"، "استخدام الصيغة غير الرسمية").
33
+ - إعادة كتابة الملف بأكمله، بما في ذلك الأجزاء التي لم تتغير.
34
+
35
+ يتم إعادة إرسال كل هذا مع كل جولة محادثة، مما يؤدي إلى تضخم التكلفة وفق معادلة `حجم المحتوى × عدد اللغات × عدد الجولات`، بالإضافة إلى ضرورة اكتشاف أي خلل في التنسيق أو المفاتيح يدوياً.
36
+
37
+ ## ماذا يقدم Intlayer بدلاً من ذلك
38
+
39
+ تكمن فائدة Intlayer في إنجاز هذا العمل خارج سياق الوكيل، عبر خط معالجة مبني خصيصاً للترجمة:
40
+
41
+ - **تصفية الترجمات الموجودة مسبقاً** للحد من استهلاك الرموز (Tokens). يتم استبعاد المفاتيح المترجمة بالفعل في ملف JSON، وإرسال المفاتيح الناقصة فقط إلى النموذج.
42
+ - **ترجمة ملفات markdown كتلة بكتلة.** بالنسبة للتوثيق، يقارن الأمران [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/doc-translate.md) و [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/doc-review.md) كل كتلة مع المستند الأساسي ويتجاوزان الكتل المترجمة مسبقاً أو غير المعدلة.
43
+ - **تقسيم ملفات JSON إلى أجزاء (Chunks)** إذا كانت كبيرة جداً، لضمان البقاء في النطاق الأمثل لنافذة السياق.
44
+ - **تسطيح وإعادة بناء ملفات JSON** لتحسين استهلاك الرموز.
45
+ - **إدراج مطالبات مخصصة** للقواعد المحددة لعلامتك التجارية وصياغتك (`applicationContext`، `--custom-instructions`)، لتكتبها مرة واحدة بدلاً من تكرارها في كل محادثة.
46
+ - **التحقق من صحة البنية** لضمان الاتساق ومنع انحراف المفاتيح، مع الحفاظ على التنسيق الأصلي (markdown، HTML، الإدراجات، صيغ الجمع).
47
+ - **إدارة إعادة المحاولة (Retry)** في حال كان الناتج غير منسق بشكل سليم.
48
+ - **جدولة الطلبات ومعالجتها بالتوازي** عبر الملفات والكتل واللغات لزيادة سرعة التنفيذ.
49
+
50
+ لا يمر أي من هذا عبر سياق الوكيل. القاعدة الأساسية: دع الوكيل يقرر **ماذا** ينبغي تدويله، ودع Intlayer يتكفل بالمهام المتكررة.
51
+
52
+ ## الحل
53
+
54
+ ### 1. إسناد الاستخراج إلى `intlayer extract`
55
+
56
+ بدلاً من مطالبة الوكيل بإعادة كتابة كل مكوّن يدوياً، دعه ينفذ الأمر [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/extract.md). يقوم هذا الأمر بنقل النصوص الثابتة إلى ملف `.content` بجانب المكوّن دون تحميل الملف كاملاً في سياق الوكيل.
57
+
58
+ ```bash
59
+ npx intlayer extract --file src/components/Header.tsx
60
+ ```
61
+
62
+ ### 2. إسناد الترجمة إلى `intlayer fill`
63
+
64
+ تجنب تماماً مطالبة الوكيل بالترجمة المباشرة. يقوم الأمر [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/fill.md) بتطبيق خط المعالجة المذكور: يرسل المفاتيح الناقصة فقط، ويقسمها إلى أجزاء، ويعالج اللغات بالتوازي، ويكتب النتائج مباشرة داخل ملفات المحتوى الخاصة بك.
65
+
66
+ ```bash
67
+ npx intlayer fill
68
+ ```
69
+
70
+ تساعد بعض الخيارات في تقليص نطاق التشغيل:
71
+
72
+ - `--git-diff` (أو `--uncommitted`) يعالج القواميس التي تم تعديلها في الفرع الحالي فقط.
73
+ - `--file` أو `--keys` يستهدف ملفات محتوى محددة.
74
+ - `--output-locales fr es` يقصر التشغيل على اللغات التي تحتاج إليها بالفعل الآن.
75
+ - `--skip-metadata` يتخطى توليد العنوان والوصف والوسوم.
76
+ - `--data-serialization toon` يرسل حمولة بيانات أكثر إيجازاً للنموذج (رموز أقل، مع تباين طفيف في الإخراج).
77
+
78
+ ```bash
79
+ npx intlayer fill --git-diff --output-locales fr es --skip-metadata
80
+ ```
81
+
82
+ ### 3. ترجمة markdown عبر `doc translate` و `doc review`
83
+
84
+ مطالبة الوكيل بترجمة ملف `.md` يعني لصق المستند بالكامل، لكل لغة، عند كل تعديل. في المقابل، يعمل الأمران [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/doc-translate.md) و [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/doc-review.md) كتلة بكتلة.
85
+
86
+ استخدم `doc translate` عندما لا يكون الملف المترجم موجوداً بعد. يقوم بتقسيم markdown وترجمته بالتوازي وكتابة الملفات الهدف:
87
+
88
+ ```bash
89
+ npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
90
+ ```
91
+
92
+ استخدم `doc review` عندما يكون الملف المترجم موجوداً بالفعل. يقارن كل كتلة مع المستند الأساسي، ويتخطى الكتل المترجمة أو غير المتغيرة، ويرسل الكتل المختلفة فقط:
93
+
94
+ ```bash
95
+ npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
96
+ ```
97
+
98
+ يقبل كلا الأمرين القواعد الخاصة بك مرة واحدة، دون الحاجة لتكرارها في كل موجه:
99
+
100
+ ```bash
101
+ npx intlayer doc translate --custom-instructions "Do not translate URLs. Keep the markdown structure and the code blocks untouched."
102
+ ```
103
+
104
+ هناك وضعان في `doc review` مفيدان عندما يحتاج الوكيل للبقاء في حلقة العمل، دون إجراء أي اتصال بالذكاء الاصطناعي من جانب Intlayer:
105
+
106
+ - `--mode report` يسجل الكتل التي تحتاج إلى مراجعة مع أرقام الأسطر، حتى يعدل الوكيل هذه الكتل فقط.
107
+ - `--mode synthesis` يوضح فقط المستندات المحدثة وتلك التي لا تزال تحتوي على كتل بحاجة للتعديل.
108
+
109
+ ```bash
110
+ npx intlayer doc review --mode report --locales fr
111
+ ```
112
+
113
+ ### 4. تمكين الوكيل من استدعاء واجهة الأوامر CLI عبر خادم MCP
114
+
115
+ باستخدام [خادم Intlayer MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/mcp_server.md)، يجيب الوكيل اعتماداً على أحدث التوثيقات ويشغل `intlayer fill` أو `intlayer doc review` بنفسه بدلاً من إعادة كتابة المنطق في المحادثة.
116
+
117
+ ```bash
118
+ claude mcp add intlayer npx -y @intlayer/mcp
119
+ ```
120
+
121
+ كما أن تثبيت [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/agent_skills.md) عبر `npx intlayer init skills` يمنع الوكيل من تخمين واجهة برمجة تطبيقات Intlayer وإعادة قراءة التوثيق عند كل مهمة.
122
+
123
+ ### 5. إعادة استخدام اشتراك Claude عبر `claude setup-token`
124
+
125
+ يؤدي تشغيل إعداد التدويل (i18n) في جلسة Claude Code التفاعلية إلى الاحتفاظ بسجل المحادثة بأكمله في السياق. انقل هذه المعالجة الثقيلة إلى جلسة headless سريعة ومستقلة.
126
+
127
+ قم بتوليد رمز طويل الأمد من اشتراك Claude الخاص بك:
128
+
129
+ ```bash
130
+ claude setup-token
131
+ ```
132
+
133
+ احفظه كـ `CLAUDE_CODE_OAUTH_TOKEN` (في ملف `.env` أو ضمن أسرار CI)، ثم أعد استخدامه لجلسة تشغيل أحادية تنفذ أوامر Intlayer:
134
+
135
+ ```bash
136
+ CLAUDE_CODE_OAUTH_TOKEN=... claude -p "Run npx intlayer extract on src/components, then npx intlayer fill --uncommitted"
137
+ ```
138
+
139
+ تقتصر هذه الجلسة على ذلك الموجه ومخرجات الأمر فقط، دون حمل سجل محادثتك السابق. يعمل نفس الرمز في [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) لتشغيل `intlayer fill` عند كل طلب سحب (Pull Request).
140
+
141
+ > الرمز الصادر عن `claude setup-token` يوثق Claude Code فقط. ولا يمكن استخدامه كمفتاح Anthropic API في `ai.apiKey`. بالنسبة للترجمة نفسها، يستخدم `intlayer fill` [حساب Intlayer](https://app.intlayer.org) الخاص بك (الخطة المجانية مشمولة) أو مفتاح المزود الخاص بك المكوّن في [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/configuration.md#ai-configuration).
142
+
143
+ ## الملخص
144
+
145
+ | المهمة | المسؤول عنها | الرموز (Tokens) في سياق الوكيل |
146
+ | --------------------- | ------------------------ | ------------------------------ |
147
+ | تحديد ما ينبغي تعريبه | Claude Code | منخفض |
148
+ | استخراج النصوص | `intlayer extract` | لا شيء |
149
+ | ترجمة المحتوى | `intlayer fill` | لا شيء |
150
+ | ترجمة التوثيق | `intlayer doc translate` | لا شيء |
151
+ | تحديث التوثيق | `intlayer doc review` | لا شيء |
152
+ | تشغيل الأوامر | Headless Claude Code | الموجه + مخرجات الأمر |
@@ -0,0 +1,152 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: Wie man den Token-Verbrauch von Claude Code bei Übersetzungen begrenzt
5
+ description: Warum das Übersetzen mit Claude Code Tokens verbrennt, was Intlayer stattdessen tut (bereits übersetzte Schlüssel filtern, JSON aufteilen, Markdown blockweise übersetzen) und wie Sie Ihr Claude-Abonnement mit claude setup-token wiederverwenden.
6
+ keywords:
7
+ - claude code
8
+ - tokens
9
+ - token-verbrauch
10
+ - setup-token
11
+ - i18n
12
+ - internationalisierung
13
+ - übersetzung
14
+ - fill
15
+ - mcp
16
+ - agent
17
+ slugs:
18
+ - frequent-questions
19
+ - claude-code-token-consumption
20
+ author: aymericzip
21
+ ---
22
+
23
+ # Wie man den Token-Verbrauch von Claude Code bei Übersetzungen begrenzt
24
+
25
+ ## Problembeschreibung
26
+
27
+ Claude Code (oder jeden anderen Programmier-Agenten) mit der Übersetzung Ihrer Inhalte zu beauftragen, ist der teuerste Weg. Bei jedem Durchlauf muss der Agent:
28
+
29
+ - Die gesamte JSON- oder Inhaltsdatei in seinen Kontext laden, selbst die Schlüssel, die bereits übersetzt sind.
30
+ - Die zugehörigen Dateien durchsuchen, um herauszufinden, wo sich der Inhalt befindet und wie er strukturiert ist.
31
+ - Ermitteln, welche Locales fehlen und generiert werden müssen.
32
+ - Ihre benutzerdefinierten Anweisungen jedes Mal erneut lesen ("URLs auf diese Weise anpassen", "Markennamen auf Englisch belassen", "Du-Form verwenden").
33
+ - Die gesamte Datei neu schreiben, einschließlich der Teile, die sich nicht geändert haben.
34
+
35
+ All das wird bei jedem Durchlauf erneut übermittelt, sodass die Kosten mit `Größe des Inhalts × Anzahl der Locales × Anzahl der Durchläufe` ansteigen, und jede Abweichung bei Formatierung oder Schlüsseln muss manuell überprüft werden.
36
+
37
+ ## Was Intlayer stattdessen tut
38
+
39
+ Der Vorteil von Intlayer besteht darin, diese Arbeit außerhalb des Agenten mit einer speziell für Übersetzungen entwickelten Pipeline zu erledigen:
40
+
41
+ - **Filtert bestehende Übersetzungen**, um den Token-Verbrauch zu begrenzen. Bereits übersetzte Schlüssel in Ihrem JSON werden entfernt und nur die fehlenden an das Modell gesendet.
42
+ - **Übersetzt Markdown blockweise.** Für die Dokumentation vergleichen [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/doc-translate.md) und [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/doc-review.md) jeden Block mit dem Basisdokument und überspringen Blöcke, die bereits übersetzt oder unverändert sind.
43
+ - **Teilt Ihr JSON in Chunks auf**, falls es zu groß ist, um im optimalen Bereich des Kontextfensters zu bleiben.
44
+ - **Flacht Ihr JSON ab und rekonstruiert es**, um den Token-Verbrauch zu optimieren.
45
+ - **Fügt benutzerdefinierte Prompts ein** für spezifische Regeln bezüglich Marke und Wording (`applicationContext`, `--custom-instructions`), sodass Sie diese einmal schreiben, anstatt sie in jeder Konversation zu wiederholen.
46
+ - **Validiert die Struktur**, um Konsistenz zu gewährleisten und Schlüssel-Drift zu verhindern, und bewahrt Formatierungen (Markdown, HTML, Einfügungen, Pluralformen).
47
+ - **Implementiert Wiederholungsversuche (Retry-Management)**, wenn die Ausgabe fehlerhaft ist.
48
+ - **Reiht Anfragen ein und parallelisiert sie** über Dateien, Abschnitte und Locales hinweg, um die Geschwindigkeit zu maximieren.
49
+
50
+ Nichts davon belastet den Kontext des Agenten. Die Faustregel: Lassen Sie den Agenten entscheiden, **was** internationalisiert werden soll, und überlassen Sie Intlayer die wiederkehrende Arbeit.
51
+
52
+ ## Lösung
53
+
54
+ ### 1. Extraktion an `intlayer extract` delegieren
55
+
56
+ Anstatt den Agenten jede Komponente manuell umschreiben zu lassen, lassen Sie ihn den Befehl [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/extract.md) ausführen. Dieser verschiebt hartcodierte Zeichenketten in eine `.content`-Datei neben der Komponente, ohne die gesamte Datei in den Kontext des Agenten zu laden.
57
+
58
+ ```bash
59
+ npx intlayer extract --file src/components/Header.tsx
60
+ ```
61
+
62
+ ### 2. Übersetzung an `intlayer fill` delegieren
63
+
64
+ Bitten Sie den Agenten niemals direkt zu übersetzen. Der Befehl [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/fill.md) wendet die oben beschriebene Pipeline an: Er sendet nur die fehlenden Schlüssel, teilt sie auf, verarbeitet die Locales parallel und schreibt das Ergebnis direkt in Ihre Inhaltsdateien zurück.
65
+
66
+ ```bash
67
+ npx intlayer fill
68
+ ```
69
+
70
+ Einige Flags halten den Durchlauf schlank:
71
+
72
+ - `--git-diff` (oder `--uncommitted`) verarbeitet nur die im aktuellen Branch geänderten Wörterbücher.
73
+ - `--file` oder `--keys` zielt auf bestimmte Inhaltsdateien ab.
74
+ - `--output-locales fr es` beschränkt den Durchlauf auf die Locales, die Sie aktuell wirklich benötigen.
75
+ - `--skip-metadata` überspringt die Generierung von Titel, Beschreibung und Tags.
76
+ - `--data-serialization toon` sendet eine kompaktere Nutzlast an das Modell (weniger Tokens, leicht weniger vorhersehbare Ausgabe).
77
+
78
+ ```bash
79
+ npx intlayer fill --git-diff --output-locales fr es --skip-metadata
80
+ ```
81
+
82
+ ### 3. Markdown mit `doc translate` und `doc review` übersetzen
83
+
84
+ Einen Agenten mit der Übersetzung einer `.md`-Datei zu beauftragen bedeutet, das gesamte Dokument für jedes Locale bei jeder Änderung einzufügen. Die Befehle [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/doc-translate.md) und [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/doc-review.md) arbeiten stattdessen blockweise.
85
+
86
+ Verwenden Sie `doc translate`, wenn die übersetzte Datei noch nicht existiert. Der Befehl teilt das Markdown auf, übersetzt es parallel und erstellt die Zieldateien:
87
+
88
+ ```bash
89
+ npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
90
+ ```
91
+
92
+ Verwenden Sie `doc review`, wenn die übersetzte Datei bereits existiert. Der Befehl vergleicht jeden Block mit dem Basisdokument, überspringt Blöcke, die bereits übersetzt oder unverändert sind, und sendet nur die abweichenden Blöcke:
93
+
94
+ ```bash
95
+ npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
96
+ ```
97
+
98
+ Beide Befehle übernehmen Ihre Regeln einmalig, anstatt sie in jedem Prompt wiederholen zu müssen:
99
+
100
+ ```bash
101
+ npx intlayer doc translate --custom-instructions "Do not translate URLs. Keep the markdown structure and the code blocks untouched."
102
+ ```
103
+
104
+ Zwei Modi von `doc review` sind nützlich, wenn der Agent ohne KI-Aufrufe seitens Intlayer eingebunden bleiben soll:
105
+
106
+ - `--mode report` gibt die Blöcke aus, die Aufmerksamkeit erfordern, samt Zeilennummern, sodass der Agent nur diese Blöcke bearbeitet.
107
+ - `--mode synthesis` gibt lediglich an, welche Dokumente aktuell sind und welche noch bearbeitbare Blöcke enthalten.
108
+
109
+ ```bash
110
+ npx intlayer doc review --mode report --locales fr
111
+ ```
112
+
113
+ ### 4. Den Agenten die CLI über den MCP-Server aufrufen lassen
114
+
115
+ Mit dem [Intlayer MCP-Server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/mcp_server.md) antwortet der Agent auf Basis der aktuellen Dokumentation und führt `intlayer fill` oder `intlayer doc review` selbst aus, anstatt die Logik in der Konversation neu zu implementieren.
116
+
117
+ ```bash
118
+ claude mcp add intlayer npx -y @intlayer/mcp
119
+ ```
120
+
121
+ Die Installation der [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/agent_skills.md) mit `npx intlayer init skills` verhindert zudem, dass der Agent die Intlayer-API erraten und die Dokumentation bei jeder Aufgabe neu lesen muss.
122
+
123
+ ### 5. Das Claude-Abonnement mit `claude setup-token` wiederverwenden
124
+
125
+ Das Einrichten von i18n in Ihrer interaktiven Claude Code-Sitzung behält den gesamten Konversationsverlauf im Kontext. Verlagern Sie diese arbeitsintensive Aufgabe stattdessen in eine kurze Headless-Sitzung.
126
+
127
+ Generieren Sie ein langlebiges Token aus Ihrem Claude-Abonnement:
128
+
129
+ ```bash
130
+ claude setup-token
131
+ ```
132
+
133
+ Speichern Sie es als `CLAUDE_CODE_OAUTH_TOKEN` (in einer `.env`-Datei oder in Ihren CI-Secrets) und nutzen Sie es für eine einmalige Sitzung, die die Intlayer-Befehle ausführt:
134
+
135
+ ```bash
136
+ CLAUDE_CODE_OAUTH_TOKEN=... claude -p "Run npx intlayer extract on src/components, then npx intlayer fill --uncommitted"
137
+ ```
138
+
139
+ Die Sitzung enthält lediglich diesen Prompt und die Ausgabe des Befehls, nicht Ihre gesamte Konversation. Dasselbe Token funktioniert auch in der [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action), um `intlayer fill` bei jedem Pull Request auszuführen.
140
+
141
+ > Das von `claude setup-token` ausgegebene Token authentifiziert ausschließlich Claude Code. Es kann nicht als Anthropic-API-Schlüssel in `ai.apiKey` verwendet werden. Für die eigentliche Übersetzung nutzt `intlayer fill` Ihr [Intlayer-Konto](https://app.intlayer.org) (kostenloser Tarif enthalten) oder Ihren eigenen in [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md#ai-configuration) konfigurierten Provider-Schlüssel.
142
+
143
+ ## Zusammenfassung
144
+
145
+ | Aufgabe | Wer führt sie aus | Tokens im Kontext des Agenten |
146
+ | --------------------------------- | ------------------------ | ----------------------------- |
147
+ | Entscheiden, was lokalisiert wird | Claude Code | Gering |
148
+ | Zeichenketten extrahieren | `intlayer extract` | Keine |
149
+ | Inhalte übersetzen | `intlayer fill` | Keine |
150
+ | Dokumentation übersetzen | `intlayer doc translate` | Keine |
151
+ | Dokumentation aktualisieren | `intlayer doc review` | Keine |
152
+ | Befehle ausführen | Headless Claude Code | Prompt + Befehlsausgabe |
@@ -0,0 +1,152 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: How to limit Claude Code token consumption to generate translations
5
+ description: Why translating with Claude Code burns tokens, what Intlayer does instead (filters translated keys, chunks JSON, translates markdown block by block), and how to reuse your Claude subscription with claude setup-token.
6
+ keywords:
7
+ - claude code
8
+ - tokens
9
+ - token consumption
10
+ - setup-token
11
+ - i18n
12
+ - internationalization
13
+ - translation
14
+ - fill
15
+ - mcp
16
+ - agent
17
+ slugs:
18
+ - frequent-questions
19
+ - claude-code-token-consumption
20
+ author: aymericzip
21
+ ---
22
+
23
+ # How to limit Claude Code token consumption to generate translations
24
+
25
+ ## Problem Description
26
+
27
+ Asking Claude Code (or any coding agent) to translate your content is the most expensive way to do it. For each run, the agent has to:
28
+
29
+ - Load the complete JSON or content file into its context, even the keys that are already translated.
30
+ - Search the related files to figure out where the content lives and how it is structured.
31
+ - Work out which locales are missing and should be generated.
32
+ - Re-read your custom instructions every time ("transform URLs this way", "keep the brand name in English", "use the informal form").
33
+ - Rewrite the whole file, including the parts that did not change.
34
+
35
+ All of that is re-sent on every turn, so the cost grows with `size of the content × number of locales × number of turns`, and any drift in formatting or keys has to be caught by hand.
36
+
37
+ ## What Intlayer does instead
38
+
39
+ The interest of Intlayer is to do that work outside the agent, with a pipeline built for translation:
40
+
41
+ - **Filters existing translations** to limit token usage. Keys already translated in your JSON are stripped out, and only the missing ones are sent to the model.
42
+ - **Translates markdown block by block.** For documentation, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/doc-translate.md) and [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/doc-review.md) compare each block with the base document and skip the blocks that are already translated or unchanged.
43
+ - **Chunks your JSON** if it is too large, to stay in the best part of the context window.
44
+ - **Flattens and reconstructs your JSON** to optimize token consumption.
45
+ - **Inserts custom prompts** for specific rules regarding your brand and wording (`applicationContext`, `--custom-instructions`), so you write them once instead of repeating them in every conversation.
46
+ - **Validates the structure** to ensure consistency and prevent key drift, and preserves formatting (markdown, HTML, insertions, plurals).
47
+ - **Implements retry management** when the output is malformed.
48
+ - **Queues and parallelizes requests** across files, chunks and locales to increase speed.
49
+
50
+ None of that goes through the agent's context. The rule of thumb: let the agent decide **what** to internationalize, and let Intlayer do the repetitive work.
51
+
52
+ ## Solution
53
+
54
+ ### 1. Delegate extraction to `intlayer extract`
55
+
56
+ Instead of asking the agent to rewrite each component by hand, let it run the [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/extract.md) command. It moves hard-coded strings into a `.content` file next to the component without loading the whole file into the agent's context.
57
+
58
+ ```bash
59
+ npx intlayer extract --file src/components/Header.tsx
60
+ ```
61
+
62
+ ### 2. Delegate translation to `intlayer fill`
63
+
64
+ Never ask the agent to translate. The [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/fill.md) command applies the pipeline above: it only sends the missing keys, chunks them, runs the locales in parallel and writes the result back into your content files.
65
+
66
+ ```bash
67
+ npx intlayer fill
68
+ ```
69
+
70
+ A few flags keep the run small:
71
+
72
+ - `--git-diff` (or `--uncommitted`) only processes the dictionaries changed in the current branch.
73
+ - `--file` or `--keys` targets specific content files.
74
+ - `--output-locales fr es` limits the run to the locales you actually need now.
75
+ - `--skip-metadata` skips title, description and tags generation.
76
+ - `--data-serialization toon` sends a more compact payload to the model (fewer tokens, slightly less consistent output).
77
+
78
+ ```bash
79
+ npx intlayer fill --git-diff --output-locales fr es --skip-metadata
80
+ ```
81
+
82
+ ### 3. Translate markdown with `doc translate` and `doc review`
83
+
84
+ Asking an agent to translate a `.md` file means pasting the whole document, for every locale, on every change. The [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/doc-translate.md) and [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/doc-review.md) commands work block by block instead.
85
+
86
+ Use `doc translate` when the translated file does not exist yet. It chunks the markdown, translates it in parallel and writes the target files:
87
+
88
+ ```bash
89
+ npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
90
+ ```
91
+
92
+ Use `doc review` when the translated file already exists. It compares each block with the base document, skips the blocks that are already translated or unchanged, and only sends the diverging ones:
93
+
94
+ ```bash
95
+ npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
96
+ ```
97
+
98
+ Both commands accept your rules once, instead of you repeating them in every prompt:
99
+
100
+ ```bash
101
+ npx intlayer doc translate --custom-instructions "Do not translate URLs. Keep the markdown structure and the code blocks untouched."
102
+ ```
103
+
104
+ Two modes of `doc review` are useful when the agent still needs to be in the loop, without any AI call from Intlayer:
105
+
106
+ - `--mode report` logs the blocks that need attention, with line numbers, so the agent only touches those blocks.
107
+ - `--mode synthesis` only logs which documents are up to date and which still have blocks to edit.
108
+
109
+ ```bash
110
+ npx intlayer doc review --mode report --locales fr
111
+ ```
112
+
113
+ ### 4. Let the agent call the CLI through the MCP server
114
+
115
+ With the [Intlayer MCP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/mcp_server.md), the agent answers from the current documentation and runs `intlayer fill` or `intlayer doc review` itself instead of re-implementing it in the conversation.
116
+
117
+ ```bash
118
+ claude mcp add intlayer npx -y @intlayer/mcp
119
+ ```
120
+
121
+ Installing the [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/agent_skills.md) with `npx intlayer init skills` also stops the agent from guessing the Intlayer API and re-reading the docs on every task.
122
+
123
+ ### 5. Reuse your Claude subscription with `claude setup-token`
124
+
125
+ Running the i18n setup in your interactive Claude Code session keeps the whole conversation history in context. Move the heavy lifting to a short headless session instead.
126
+
127
+ Generate a long-lived token from your Claude subscription:
128
+
129
+ ```bash
130
+ claude setup-token
131
+ ```
132
+
133
+ Store it as `CLAUDE_CODE_OAUTH_TOKEN` (in a `.env` file or your CI secrets), then reuse it for a one-shot session that runs the Intlayer commands:
134
+
135
+ ```bash
136
+ CLAUDE_CODE_OAUTH_TOKEN=... claude -p "Run npx intlayer extract on src/components, then npx intlayer fill --uncommitted"
137
+ ```
138
+
139
+ The session only carries that prompt and the command output, not your whole conversation. The same token works in the [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) to run `intlayer fill` on every pull request.
140
+
141
+ > The token issued by `claude setup-token` authenticates Claude Code only. It cannot be used as an Anthropic API key in `ai.apiKey`. For the translation itself, `intlayer fill` uses your [Intlayer account](https://app.intlayer.org) (free tier included) or your own provider key configured in [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md#ai-configuration).
142
+
143
+ ## Summary
144
+
145
+ | Task | Who does it | Tokens in the agent context |
146
+ | ----------------------- | ------------------------ | --------------------------- |
147
+ | Decide what to localize | Claude Code | Low |
148
+ | Extract strings | `intlayer extract` | None |
149
+ | Translate content | `intlayer fill` | None |
150
+ | Translate documentation | `intlayer doc translate` | None |
151
+ | Update documentation | `intlayer doc review` | None |
152
+ | Run the commands | Headless Claude Code | Prompt + command output |
@@ -0,0 +1,152 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: How to limit Claude Code token consumption to generate translations
5
+ description: Why translating with Claude Code burns tokens, what Intlayer does instead (filters translated keys, chunks JSON, translates markdown block by block), and how to reuse your Claude subscription with claude setup-token.
6
+ keywords:
7
+ - claude code
8
+ - tokens
9
+ - token consumption
10
+ - setup-token
11
+ - i18n
12
+ - internationalisation
13
+ - translation
14
+ - fill
15
+ - mcp
16
+ - agent
17
+ slugs:
18
+ - frequent-questions
19
+ - claude-code-token-consumption
20
+ author: aymericzip
21
+ ---
22
+
23
+ # How to limit Claude Code token consumption to generate translations
24
+
25
+ ## Problem Description
26
+
27
+ Asking Claude Code (or any coding agent) to translate your content is the most expensive way to do it. For each run, the agent has to:
28
+
29
+ - Load the complete JSON or content file into its context, even the keys that are already translated.
30
+ - Search the related files to figure out where the content lives and how it is structured.
31
+ - Work out which locales are missing and should be generated.
32
+ - Re-read your custom instructions every time ("transform URLs this way", "keep the brand name in English", "use the informal form").
33
+ - Rewrite the whole file, including the parts that did not change.
34
+
35
+ All of that is re-sent on every turn, so the cost grows with `size of the content × number of locales × number of turns`, and any drift in formatting or keys has to be caught by hand.
36
+
37
+ ## What Intlayer does instead
38
+
39
+ The interest of Intlayer is to do that work outside the agent, with a pipeline built for translation:
40
+
41
+ - **Filters existing translations** to limit token usage. Keys already translated in your JSON are stripped out, and only the missing ones are sent to the model.
42
+ - **Translates markdown block by block.** For documentation, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/doc-translate.md) and [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/doc-review.md) compare each block with the base document and skip the blocks that are already translated or unchanged.
43
+ - **Chunks your JSON** if it is too large, to stay in the best part of the context window.
44
+ - **Flattens and reconstructs your JSON** to optimise token consumption.
45
+ - **Inserts custom prompts** for specific rules regarding your brand and wording (`applicationContext`, `--custom-instructions`), so you write them once instead of repeating them in every conversation.
46
+ - **Validates the structure** to ensure consistency and prevent key drift, and preserves formatting (markdown, HTML, insertions, plurals).
47
+ - **Implements retry management** when the output is malformed.
48
+ - **Queues and parallelises requests** across files, chunks and locales to increase speed.
49
+
50
+ None of that goes through the agent's context. The rule of thumb: let the agent decide **what** to internationalise, and let Intlayer do the repetitive work.
51
+
52
+ ## Solution
53
+
54
+ ### 1. Delegate extraction to `intlayer extract`
55
+
56
+ Instead of asking the agent to rewrite each component by hand, let it run the [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/extract.md) command. It moves hard-coded strings into a `.content` file next to the component without loading the whole file into the agent's context.
57
+
58
+ ```bash
59
+ npx intlayer extract --file src/components/Header.tsx
60
+ ```
61
+
62
+ ### 2. Delegate translation to `intlayer fill`
63
+
64
+ Never ask the agent to translate. The [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/fill.md) command applies the pipeline above: it only sends the missing keys, chunks them, runs the locales in parallel and writes the result back into your content files.
65
+
66
+ ```bash
67
+ npx intlayer fill
68
+ ```
69
+
70
+ A few flags keep the run small:
71
+
72
+ - `--git-diff` (or `--uncommitted`) only processes the dictionaries changed in the current branch.
73
+ - `--file` or `--keys` targets specific content files.
74
+ - `--output-locales fr es` limits the run to the locales you actually need now.
75
+ - `--skip-metadata` skips title, description and tags generation.
76
+ - `--data-serialization toon` sends a more compact payload to the model (fewer tokens, slightly less consistent output).
77
+
78
+ ```bash
79
+ npx intlayer fill --git-diff --output-locales fr es --skip-metadata
80
+ ```
81
+
82
+ ### 3. Translate markdown with `doc translate` and `doc review`
83
+
84
+ Asking an agent to translate a `.md` file means pasting the whole document, for every locale, on every change. The [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/doc-translate.md) and [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/doc-review.md) commands work block by block instead.
85
+
86
+ Use `doc translate` when the translated file does not exist yet. It chunks the markdown, translates it in parallel and writes the target files:
87
+
88
+ ```bash
89
+ npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
90
+ ```
91
+
92
+ Use `doc review` when the translated file already exists. It compares each block with the base document, skips the blocks that are already translated or unchanged, and only sends the diverging ones:
93
+
94
+ ```bash
95
+ npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
96
+ ```
97
+
98
+ Both commands accept your rules once, instead of you repeating them in every prompt:
99
+
100
+ ```bash
101
+ npx intlayer doc translate --custom-instructions "Do not translate URLs. Keep the markdown structure and the code blocks untouched."
102
+ ```
103
+
104
+ Two modes of `doc review` are useful when the agent still needs to be in the loop, without any AI call from Intlayer:
105
+
106
+ - `--mode report` logs the blocks that need attention, with line numbers, so the agent only touches those blocks.
107
+ - `--mode synthesis` only logs which documents are up to date and which still have blocks to edit.
108
+
109
+ ```bash
110
+ npx intlayer doc review --mode report --locales fr
111
+ ```
112
+
113
+ ### 4. Let the agent call the CLI through the MCP server
114
+
115
+ With the [Intlayer MCP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/mcp_server.md), the agent answers from the current documentation and runs `intlayer fill` or `intlayer doc review` itself instead of re-implementing it in the conversation.
116
+
117
+ ```bash
118
+ claude mcp add intlayer npx -y @intlayer/mcp
119
+ ```
120
+
121
+ Installing the [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/agent_skills.md) with `npx intlayer init skills` also stops the agent from guessing the Intlayer API and re-reading the docs on every task.
122
+
123
+ ### 5. Reuse your Claude subscription with `claude setup-token`
124
+
125
+ Running the i18n setup in your interactive Claude Code session keeps the whole conversation history in context. Move the heavy lifting to a short headless session instead.
126
+
127
+ Generate a long-lived token from your Claude subscription:
128
+
129
+ ```bash
130
+ claude setup-token
131
+ ```
132
+
133
+ Store it as `CLAUDE_CODE_OAUTH_TOKEN` (in a `.env` file or your CI secrets), then reuse it for a one-shot session that runs the Intlayer commands:
134
+
135
+ ```bash
136
+ CLAUDE_CODE_OAUTH_TOKEN=... claude -p "Run npx intlayer extract on src/components, then npx intlayer fill --uncommitted"
137
+ ```
138
+
139
+ The session only carries that prompt and the command output, not your whole conversation. The same token works in the [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) to run `intlayer fill` on every pull request.
140
+
141
+ > The token issued by `claude setup-token` authenticates Claude Code only. It cannot be used as an Anthropic API key in `ai.apiKey`. For the translation itself, `intlayer fill` uses your [Intlayer account](https://app.intlayer.org) (free tier included) or your own provider key configured in [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/configuration.md#ai-configuration).
142
+
143
+ ## Summary
144
+
145
+ | Task | Who does it | Tokens in the agent context |
146
+ | ----------------------- | ------------------------ | --------------------------- |
147
+ | Decide what to localise | Claude Code | Low |
148
+ | Extract strings | `intlayer extract` | None |
149
+ | Translate content | `intlayer fill` | None |
150
+ | Translate documentation | `intlayer doc translate` | None |
151
+ | Update documentation | `intlayer doc review` | None |
152
+ | Run the commands | Headless Claude Code | Prompt + command output |