@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: Cómo limitar el consumo de tokens de Claude Code para generar traducciones
5
+ description: Por qué traducir con Claude Code consume tokens innecesariamente, qué hace Intlayer en su lugar (filtra claves traducidas, fragmenta JSON, traduce markdown bloque por bloque) y cómo reutilizar tu suscripción a Claude con claude setup-token.
6
+ keywords:
7
+ - claude code
8
+ - tokens
9
+ - consumo de tokens
10
+ - setup-token
11
+ - i18n
12
+ - internacionalización
13
+ - traducción
14
+ - fill
15
+ - mcp
16
+ - agente
17
+ slugs:
18
+ - frequent-questions
19
+ - claude-code-token-consumption
20
+ author: aymericzip
21
+ ---
22
+
23
+ # Cómo limitar el consumo de tokens de Claude Code para generar traducciones
24
+
25
+ ## Descripción del problema
26
+
27
+ Pedirle a Claude Code (o a cualquier agente de desarrollo) que traduzca tu contenido es la forma más costosa de hacerlo. En cada ejecución, el agente debe:
28
+
29
+ - Cargar el archivo JSON o de contenido completo en su contexto, incluso las claves que ya están traducidas.
30
+ - Buscar en los archivos relacionados para identificar dónde reside el contenido y cómo está estructurado.
31
+ - Determinar qué locales faltan y deben generarse.
32
+ - Releer tus instrucciones personalizadas en cada ocasión ("transforma las URLs de este modo", "mantén el nombre de la marca en inglés", "utiliza un tono informal").
33
+ - Reescribir el archivo completo, incluidas las partes que no cambiaron.
34
+
35
+ Todo esto se reenvía en cada turno, por lo que el coste aumenta según `tamaño del contenido × número de locales × número de turnos`, y cualquier desviación en el formato o las claves debe corregirse a mano.
36
+
37
+ ## Qué hace Intlayer en su lugar
38
+
39
+ La ventaja de Intlayer es que realiza este trabajo fuera del agente, mediante un pipeline especialmente diseñado para la traducción:
40
+
41
+ - **Filtra las traducciones existentes** para limitar el consumo de tokens. Las claves ya traducidas en tu JSON se descartan, y solo se envían al modelo las faltantes.
42
+ - **Traduce markdown bloque por bloque.** Para la documentación, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/doc-translate.md) y [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/doc-review.md) comparan cada bloque con el documento base y omiten los bloques ya traducidos o sin cambios.
43
+ - **Fragmenta tu JSON (chunking)** si es demasiado grande, manteniéndose en la zona óptima de la ventana de contexto.
44
+ - **Aplana y reconstruye tu JSON** para optimizar el consumo de tokens.
45
+ - **Inserta prompts personalizados** para reglas específicas de tu marca y estilo (`applicationContext`, `--custom-instructions`), de forma que los escribes una sola vez en lugar de repetirlos en cada conversación.
46
+ - **Valida la estructura** para garantizar la coherencia y evitar desviaciones de claves, preservando el formato (markdown, HTML, inserciones, plurales).
47
+ - **Implementa gestión de reintentos (retry)** cuando la salida presenta un formato incorrecto.
48
+ - **Pone en cola y paraleliza solicitudes** entre archivos, fragmentos y locales para acelerar el proceso.
49
+
50
+ Nada de esto pasa por el contexto del agente. La regla básica: deja que el agente decida **qué** internacionalizar, y deja que Intlayer se encargue de la tarea repetitiva.
51
+
52
+ ## Solución
53
+
54
+ ### 1. Delegar la extracción a `intlayer extract`
55
+
56
+ En lugar de pedirle al agente que reescriba cada componente a mano, haz que ejecute el comando [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/extract.md). Este traslada las cadenas fijas a un archivo `.content` junto al componente sin cargar todo el archivo en el contexto del agente.
57
+
58
+ ```bash
59
+ npx intlayer extract --file src/components/Header.tsx
60
+ ```
61
+
62
+ ### 2. Delegar la traducción a `intlayer fill`
63
+
64
+ Nunca le pidas al agente que traduzca. El comando [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/fill.md) aplica el pipeline descrito: solo envía las claves faltantes, las fragmenta, procesa los locales en paralelo y escribe el resultado de nuevo en tus archivos de contenido.
65
+
66
+ ```bash
67
+ npx intlayer fill
68
+ ```
69
+
70
+ Algunos flags permiten mantener la ejecución acotada:
71
+
72
+ - `--git-diff` (o `--uncommitted`) procesa únicamente los diccionarios modificados en la rama actual.
73
+ - `--file` o `--keys` apunta a archivos de contenido específicos.
74
+ - `--output-locales fr es` limita la ejecución a los locales que realmente necesitas ahora.
75
+ - `--skip-metadata` omite la generación de título, descripción y etiquetas.
76
+ - `--data-serialization toon` envía una carga útil más compacta al modelo (menos tokens, salida ligeramente menos predecible).
77
+
78
+ ```bash
79
+ npx intlayer fill --git-diff --output-locales fr es --skip-metadata
80
+ ```
81
+
82
+ ### 3. Traducir markdown con `doc translate` y `doc review`
83
+
84
+ Pedirle a un agente que traduzca un archivo `.md` implica pegar el documento entero, para cada locale, en cada cambio. Los comandos [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/doc-translate.md) y [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/doc-review.md) operan en su lugar bloque por bloque.
85
+
86
+ Utiliza `doc translate` cuando el archivo traducido aún no exista. Fragmenta el markdown, lo traduce en paralelo y escribe los archivos de destino:
87
+
88
+ ```bash
89
+ npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
90
+ ```
91
+
92
+ Utiliza `doc review` cuando el archivo traducido ya exista. Compara cada bloque con el documento base, omite los bloques ya traducidos o sin cambios, y solo envía los divergentes:
93
+
94
+ ```bash
95
+ npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
96
+ ```
97
+
98
+ Ambos comandos aceptan tus reglas una sola vez, sin necesidad de repetirlas en cada 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
+ Dos modos de `doc review` resultan prácticos cuando el agente necesita intervenir sin requerir llamadas de IA por parte de Intlayer:
105
+
106
+ - `--mode report` muestra los bloques que requieren atención junto con sus números de línea, de modo que el agente solo toque esos bloques.
107
+ - `--mode synthesis` reporta únicamente qué documentos están al día y cuáles tienen bloques pendientes de edición.
108
+
109
+ ```bash
110
+ npx intlayer doc review --mode report --locales fr
111
+ ```
112
+
113
+ ### 4. Permitir que el agente llame a la CLI mediante el servidor MCP
114
+
115
+ Con el [servidor MCP de Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/mcp_server.md), el agente responde basándose en la documentación actualizada y ejecuta `intlayer fill` o `intlayer doc review` por sí mismo en vez de reimplementar la lógica en la conversación.
116
+
117
+ ```bash
118
+ claude mcp add intlayer npx -y @intlayer/mcp
119
+ ```
120
+
121
+ Instalar las [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/agent_skills.md) con `npx intlayer init skills` también evita que el agente adivine la API de Intlayer y vuelva a leer la documentación en cada tarea.
122
+
123
+ ### 5. Reutilizar tu suscripción de Claude con `claude setup-token`
124
+
125
+ Ejecutar la configuración de i18n en una sesión interactiva de Claude Code conserva todo el historial de la conversación en el contexto. Traslada ese trabajo pesado a una sesión corta en modo headless.
126
+
127
+ Genera un token de larga duración a partir de tu suscripción de Claude:
128
+
129
+ ```bash
130
+ claude setup-token
131
+ ```
132
+
133
+ Guárdalo como `CLAUDE_CODE_OAUTH_TOKEN` (en un archivo `.env` o en los secretos de tu CI) y luego reutilízalo en una sesión puntual que ejecute los comandos de 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
+ La sesión solo contendrá ese prompt y la salida del comando, evitando todo el historial previo. El mismo token funciona en la [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) para ejecutar `intlayer fill` en cada pull request.
140
+
141
+ > El token emitido por `claude setup-token` autentica únicamente a Claude Code. No se puede utilizar como clave de API de Anthropic en `ai.apiKey`. Para la traducción propiamente dicha, `intlayer fill` utiliza tu [cuenta de Intlayer](https://app.intlayer.org) (plan gratuito incluido) o tu propia clave de proveedor configurada en [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/configuration.md#ai-configuration).
142
+
143
+ ## Resumen
144
+
145
+ | Tarea | Quién la realiza | Tokens en el contexto del agente |
146
+ | ----------------------------- | ---------------------------- | -------------------------------- |
147
+ | Decidir qué internacionalizar | Claude Code | Bajo |
148
+ | Extraer cadenas | `intlayer extract` | Ninguno |
149
+ | Traducir contenido | `intlayer fill` | Ninguno |
150
+ | Traducir documentación | `intlayer doc translate` | Ninguno |
151
+ | Actualizar documentación | `intlayer doc review` | Ninguno |
152
+ | Ejecutar los comandos | Claude Code en modo headless | Prompt + salida del comando |
@@ -0,0 +1,152 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: Comment limiter la consommation de tokens de Claude Code pour générer des traductions
5
+ description: Pourquoi traduire avec Claude Code consomme inutilement des tokens, ce qu'Intlayer fait à la place (filtre les clés traduites, découpe le JSON, traduit le markdown bloc par bloc), et comment réutiliser votre abonnement Claude avec claude setup-token.
6
+ keywords:
7
+ - claude code
8
+ - tokens
9
+ - consommation de tokens
10
+ - setup-token
11
+ - i18n
12
+ - internationalisation
13
+ - traduction
14
+ - fill
15
+ - mcp
16
+ - agent
17
+ slugs:
18
+ - frequent-questions
19
+ - claude-code-token-consumption
20
+ author: aymericzip
21
+ ---
22
+
23
+ # Comment limiter la consommation de tokens de Claude Code pour générer des traductions
24
+
25
+ ## Description du problème
26
+
27
+ Demander à Claude Code (ou à tout agent de code) de traduire votre contenu est la façon la plus coûteuse de procéder. À chaque exécution, l'agent doit :
28
+
29
+ - Charger l'intégralité du fichier JSON ou de contenu dans son contexte, même les clés déjà traduites.
30
+ - Parcourir les fichiers associés pour déterminer où se trouve le contenu et comment il est structuré.
31
+ - Identifier quelles locales sont manquantes et doivent être générées.
32
+ - Relire vos instructions personnalisées à chaque fois ("transformer les URLs de cette façon", "conserver le nom de marque en anglais", "utiliser le tutoiement").
33
+ - Réécrire l'ensemble du fichier, y compris les parties qui n'ont pas changé.
34
+
35
+ Tout cela est réémis à chaque tour, ce qui fait croître le coût selon `taille du contenu × nombre de locales × nombre de tours`, et tout écart de formatage ou de clé doit être vérifié manuellement.
36
+
37
+ ## Ce qu'Intlayer fait à la place
38
+
39
+ L'intérêt d'Intlayer est d'effectuer ce travail en dehors de l'agent, avec un pipeline spécialement conçu pour la traduction :
40
+
41
+ - **Filtre les traductions existantes** pour limiter l'utilisation de tokens. Les clés déjà traduites dans votre JSON sont ignorées, et seules les clés manquantes sont envoyées au modèle.
42
+ - **Traduit le markdown bloc par bloc.** Pour la documentation, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/cli/doc-translate.md) et [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/cli/doc-review.md) comparent chaque bloc avec le document de base et ignorent les blocs déjà traduits ou inchangés.
43
+ - **Découpe votre JSON (chunking)** s'il est trop volumineux, afin de rester dans la partie optimale de la fenêtre de contexte.
44
+ - **Aplatit et reconstruit votre JSON** pour optimiser la consommation de tokens.
45
+ - **Insère des prompts personnalisés** pour les règles spécifiques liées à votre marque et à votre terminologie (`applicationContext`, `--custom-instructions`), vous permettant ainsi de les écrire une seule fois au lieu de les répéter à chaque conversation.
46
+ - **Valide la structure** pour garantir la cohérence, prévenir la dérive des clés, et préserver le formatage (markdown, HTML, insertions, pluriels).
47
+ - **Gère les nouvelles tentatives (retry)** lorsque la réponse est malformée.
48
+ - **Met en file d'attente et踟 parallélise les requêtes** sur les fichiers, les morceaux et les locales pour augmenter la vitesse.
49
+
50
+ Rien de tout cela ne transite par le contexte de l'agent. La règle d'or : laissez l'agent décider **quoi** internationaliser, et laissez Intlayer se charger du travail répétitif.
51
+
52
+ ## Solution
53
+
54
+ ### 1. Déléguer l'extraction à `intlayer extract`
55
+
56
+ Au lieu de demander à l'agent de réécrire chaque composant à la main, laissez-le exécuter la commande [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/cli/extract.md). Elle déplace les chaînes codées en dur vers un fichier `.content` à côté du composant sans charger tout le fichier dans le contexte de l'agent.
57
+
58
+ ```bash
59
+ npx intlayer extract --file src/components/Header.tsx
60
+ ```
61
+
62
+ ### 2. Déléguer la traduction à `intlayer fill`
63
+
64
+ Ne demandez jamais à l'agent de traduire. La commande [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/cli/fill.md) applique le pipeline décrit ci-dessus : elle n'envoie que les clés manquantes, les découpe en morceaux, traite les locales en parallèle et réécrit le résultat dans vos fichiers de contenu.
65
+
66
+ ```bash
67
+ npx intlayer fill
68
+ ```
69
+
70
+ Quelques options permettent de restreindre l'exécution :
71
+
72
+ - `--git-diff` (ou `--uncommitted`) traite uniquement les dictionnaires modifiés dans la branche actuelle.
73
+ - `--file` ou `--keys` cible des fichiers de contenu spécifiques.
74
+ - `--output-locales fr es` restreint l'exécution aux locales dont vous avez réellement besoin pour le moment.
75
+ - `--skip-metadata` ignore la génération du titre, de la description et des tags.
76
+ - `--data-serialization toon` transmet une charge utile plus compacte au modèle (moins de tokens, sortie légèrement moins prévisible).
77
+
78
+ ```bash
79
+ npx intlayer fill --git-diff --output-locales fr es --skip-metadata
80
+ ```
81
+
82
+ ### 3. Traduire le markdown avec `doc translate` et `doc review`
83
+
84
+ Demander à un agent de traduire un fichier `.md` oblige à coller le document complet, pour chaque locale, à chaque modification. Les commandes [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/cli/doc-translate.md) et [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/cli/doc-review.md) opèrent plutôt bloc par bloc.
85
+
86
+ Utilisez `doc translate` lorsque le fichier traduit n'existe pas encore. Elle découpe le markdown, le traduit en parallèle et écrit les fichiers cibles :
87
+
88
+ ```bash
89
+ npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
90
+ ```
91
+
92
+ Utilisez `doc review` lorsque le fichier traduit existe déjà. Elle compare chaque bloc au document de base, ignore les blocs déjà traduits ou inchangés, et n'envoie que les blocs divergents :
93
+
94
+ ```bash
95
+ npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
96
+ ```
97
+
98
+ Les deux commandes acceptent vos règles une seule fois, au lieu de les répéter dans chaque invite :
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
+ Deux modes de `doc review` sont utiles lorsque l'agent doit rester dans la boucle sans aucun appel IA de la part d'Intlayer :
105
+
106
+ - `--mode report` affiche les blocs nécessitant une attention avec les numéros de ligne, afin que l'agent ne modifie que ces blocs.
107
+ - `--mode synthesis` affiche uniquement les documents qui sont à jour et ceux qui contiennent encore des blocs à modifier.
108
+
109
+ ```bash
110
+ npx intlayer doc review --mode report --locales fr
111
+ ```
112
+
113
+ ### 4. Laisser l'agent appeler le CLI via le serveur MCP
114
+
115
+ Grâce au [serveur MCP Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/mcp_server.md), l'agent s'appuie sur la documentation à jour et exécute lui-même `intlayer fill` ou `intlayer doc review` au lieu de réimplémenter la logique dans la conversation.
116
+
117
+ ```bash
118
+ claude mcp add intlayer npx -y @intlayer/mcp
119
+ ```
120
+
121
+ Installer les [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/agent_skills.md) avec `npx intlayer init skills` évite également à l'agent de deviner l'API Intlayer et de relire la documentation à chaque tâche.
122
+
123
+ ### 5. Réutiliser votre abonnement Claude avec `claude setup-token`
124
+
125
+ Exécuter la configuration i18n dans votre session interactive Claude Code conserve tout l'historique de la conversation dans le contexte. Déplacez plutôt cette charge vers une courte session headless.
126
+
127
+ Générez un token longue durée depuis votre abonnement Claude :
128
+
129
+ ```bash
130
+ claude setup-token
131
+ ```
132
+
133
+ Enregistrez-le en tant que `CLAUDE_CODE_OAUTH_TOKEN` (dans un fichier `.env` ou dans les secrets de votre CI), puis réutilisez-le pour une session unique qui exécute les commandes 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
+ La session ne contient que ce prompt et la sortie de la commande, sans tout l'historique de votre conversation. Le même token fonctionne dans la [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) pour exécuter `intlayer fill` sur chaque pull request.
140
+
141
+ > Le token généré par `claude setup-token` authentifie uniquement Claude Code. Il ne peut pas être utilisé comme clé API Anthropic dans `ai.apiKey`. Pour la traduction elle-même, `intlayer fill` utilise votre [compte Intlayer](https://app.intlayer.org) (offre gratuite incluse) ou votre propre clé de fournisseur configurée dans [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/configuration.md#ai-configuration).
142
+
143
+ ## Résumé
144
+
145
+ | Tâche | Responsable | Tokens dans le contexte de l'agent |
146
+ | ------------------------------ | ---------------------------- | ---------------------------------- |
147
+ | Décider quoi internationaliser | Claude Code | Faible |
148
+ | Extraire les chaînes | `intlayer extract` | Aucun |
149
+ | Traduire le contenu | `intlayer fill` | Aucun |
150
+ | Traduire la documentation | `intlayer doc translate` | Aucun |
151
+ | Mettre à jour la documentation | `intlayer doc review` | Aucun |
152
+ | Exécuter les commandes | Claude Code en mode headless | Prompt + sortie de la commande |
@@ -0,0 +1,152 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: अनुवाद उत्पन्न करने के लिए Claude Code के टोकन उपभोग को कैसे सीमित करें
5
+ description: "Claude Code से अनुवाद कराने में टोकन क्यों अत्यधिक खर्च होते हैं, Intlayer इसके बजाय क्या करता है (अनुवादित कुंजियों को फ़िल्टर करना, JSON के टुकड़े करना, ब्लॉक-दर-ब्लॉक markdown का अनुवाद करना), और claude setup-token के साथ अपने Claude सब्सक्रिप्शन का पुन: उपयोग कैसे करें।"
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 के टोकन उपभोग को कैसे सीमित करें
24
+
25
+ ## समस्या का विवरण
26
+
27
+ Claude Code (या किसी भी कोडिंग एजेंट) से अपनी सामग्री का अनुवाद करने के लिए कहना सबसे महंगा तरीका है। प्रत्येक निष्पादन के दौरान, एजेंट को:
28
+
29
+ - पहले से अनुवादित कुंजियों सहित संपूर्ण JSON या सामग्री फ़ाइल को अपने संदर्भ (context) में लोड करना पड़ता है।
30
+ - सामग्री कहाँ स्थित है और इसकी संरचना कैसी है, यह समझने के लिए संबंधित फ़ाइलों को खोजना पड़ता है।
31
+ - यह पता लगाना पड़ता है कि कौन से लोकेल अनुपलब्ध हैं और उन्हें उत्पन्न करने की आवश्यकता है।
32
+ - आपके कस्टम निर्देशों को हर बार फिर से पढ़ना पड़ता है ("URL को इस तरह बदलें", "ब्रांड नाम अंग्रेजी में रखें", "अनौपचारिक रूप का उपयोग करें")।
33
+ - उन हिस्सों सहित पूरी फ़ाइल को फिर से लिखना पड़ता है जिनमें कोई बदलाव नहीं हुआ था।
34
+
35
+ यह सब प्रत्येक संवाद चक्र में फिर से भेजा जाता है, जिससे लागत `सामग्री का आकार × लोकेल की संख्या × चक्रों की संख्या` के अनुपात में बढ़ती है, और फ़ॉर्मेटिंग या कुंजियों में किसी भी अंतर को मैन्युअल रूप से ठीक करना पड़ता है।
36
+
37
+ ## Intlayer इसके बजाय क्या करता है
38
+
39
+ Intlayer की सबसे बड़ी विशेषता यह है कि यह कार्य अनुवाद के लिए विशेष रूप से निर्मित पाइपलाइन के साथ एजेंट के बाहर किया जाता है:
40
+
41
+ - **मौजूदा अनुवादों को फ़िल्टर करता है** ताकि टोकन का उपयोग सीमित रहे। आपके JSON में पहले से अनुवादित कुंजियों को हटा दिया जाता है, और केवल अनुपलब्ध कुंजियों को मॉडल को भेजा जाता है।
42
+ - **Markdown का ब्लॉक-दर-ब्लॉक अनुवाद करता है।** प्रलेखन के लिए, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/doc-translate.md) और [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/doc-review.md) प्रत्येक ब्लॉक की तुलना मूल दस्तावेज़ से करते हैं और उन ब्लॉकों को छोड़ देते हैं जो पहले से अनुवादित या अपरिवर्तित हैं।
43
+ - **यदि आपका JSON बहुत बड़ा है तो उसके टुकड़े (chunking) करता है**, ताकि संदर्भ विंडो के सबसे उपयुक्त भाग में रहा जा सके।
44
+ - **टोकन खपत को अनुकूलित करने के लिए आपके JSON को समतल (flatten) और पुनर्गठित करता है**।
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/hi/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/hi/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. `doc translate` और `doc review` के साथ markdown का अनुवाद करें
83
+
84
+ किसी एजेंट से `.md` फ़ाइल का अनुवाद करने के लिए कहने का अर्थ है प्रत्येक परिवर्तन पर, प्रत्येक लोकेल के लिए पूरा दस्तावेज़ चिपकाना। इसके विपरीत [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/doc-translate.md) और [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/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 से किसी भी AI कॉल के बिना प्रक्रिया में शामिल रहने की आवश्यकता होती है:
105
+
106
+ - `--mode report` उन ब्लॉकों को लाइन नंबर के साथ लॉग करता है जिन पर ध्यान देने की आवश्यकता है, ताकि एजेंट केवल उन्हीं ब्लॉकों को छुए।
107
+ - `--mode synthesis` केवल यह लॉग करता है कि कौन से दस्तावेज़ अद्यतित हैं और किसमें अभी भी संपादित करने के लिए ब्लॉक बाकी हैं।
108
+
109
+ ```bash
110
+ npx intlayer doc review --mode report --locales fr
111
+ ```
112
+
113
+ ### 4. एजेंट को MCP सर्वर के माध्यम से CLI कॉल करने दें
114
+
115
+ [Intlayer MCP सर्वर](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/mcp_server.md) के साथ, एजेंट वर्तमान प्रलेखन के आधार पर उत्तर देता है और बातचीत में इसे फिर से लागू करने के बजाय सीधे `intlayer fill` या `intlayer doc review` चलाता है।
116
+
117
+ ```bash
118
+ claude mcp add intlayer npx -y @intlayer/mcp
119
+ ```
120
+
121
+ `npx intlayer init skills` के साथ [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/agent_skills.md) स्थापित करने से एजेंट को Intlayer API का अनुमान लगाने और प्रत्येक कार्य पर प्रलेखन को फिर से पढ़ने से भी रोका जा सकता है।
122
+
123
+ ### 5. `claude setup-token` के साथ अपने Claude सब्सक्रिप्शन का पुन: उपयोग करें
124
+
125
+ अपने इंटरैक्टिव Claude Code सत्र में i18n सेटअप चलाने से बातचीत का पूरा इतिहास संदर्भ में बना रहता है। भारी कार्यों को इसके बजाय एक संक्षिप्त हेडलेस (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
+ यह सत्र केवल उस प्रॉम्प्ट और कमांड आउटपुट को वहन करेगा, न कि आपकी पूरी बातचीत को। यही टोकन प्रत्येक पुल अनुरोध पर `intlayer fill` चलाने के लिए [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) में काम करता है।
140
+
141
+ > `claude setup-token` द्वारा जारी टोकन केवल Claude Code को प्रमाणित करता है। इसका उपयोग `ai.apiKey` में Anthropic API कुंजी के रूप में नहीं किया जा सकता है। अनुवाद के लिए, `intlayer fill` आपके [Intlayer खाते](https://app.intlayer.org) (मुफ्त स्तर शामिल) या [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/configuration.md#ai-configuration) में कॉन्फ़िगर की गई आपकी अपनी प्रदाता कुंजी का उपयोग करता है।
142
+
143
+ ## सारांश
144
+
145
+ | कार्य | कौन करता है | एजेंट संदर्भ में टोकन |
146
+ | ---------------------------------- | ------------------------ | ------------------------ |
147
+ | क्या स्थानीयकृत करना है यह तय करना | Claude Code | कम |
148
+ | स्ट्रिंग्स निकालना | `intlayer extract` | कोई नहीं |
149
+ | सामग्री का अनुवाद करना | `intlayer fill` | कोई नहीं |
150
+ | प्रलेखन का अनुवाद करना | `intlayer doc translate` | कोई नहीं |
151
+ | प्रलेखन अद्यतन करना | `intlayer doc review` | कोई नहीं |
152
+ | कमांड चलाना | हेडलेस Claude Code | प्रॉम्प्ट + कमांड आउटपुट |
@@ -0,0 +1,152 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: Cara membatasi konsumsi token Claude Code untuk menghasilkan terjemahan
5
+ description: Mengapa menerjemahkan dengan Claude Code menghabiskan banyak token, apa yang dilakukan Intlayer sebagai gantinya (memfilter kunci yang diterjemahkan, memotong JSON, menerjemahkan markdown blok demi blok), dan cara menggunakan kembali langganan Claude Anda dengan claude setup-token.
6
+ keywords:
7
+ - claude code
8
+ - tokens
9
+ - konsumsi token
10
+ - setup-token
11
+ - i18n
12
+ - internasionalisasi
13
+ - terjemahan
14
+ - fill
15
+ - mcp
16
+ - agen
17
+ slugs:
18
+ - frequent-questions
19
+ - claude-code-token-consumption
20
+ author: aymericzip
21
+ ---
22
+
23
+ # Cara membatasi konsumsi token Claude Code untuk menghasilkan terjemahan
24
+
25
+ ## Deskripsi Masalah
26
+
27
+ Meminta Claude Code (atau agen pengodean apa pun) untuk menerjemahkan konten Anda adalah metode yang paling boros biaya. Untuk setiap eksekusi, agen harus:
28
+
29
+ - Memuat seluruh file JSON atau file konten ke dalam konteksnya, bahkan kunci yang sudah diterjemahkan.
30
+ - Mencari file terkait untuk memahami letak konten dan bagaimana strukturnya disusun.
31
+ - Menentukan locale mana yang belum ada dan perlu dibuat.
32
+ - Membaca ulang instruksi khusus Anda setiap saat ("ubah URL dengan cara ini", "biarkan nama merek dalam bahasa Inggris", "gunakan nada santai").
33
+ - Menulis ulang seluruh file, termasuk bagian yang tidak mengalami perubahan.
34
+
35
+ Semua itu dikirim ulang pada setiap giliran percakapan, sehingga biaya melonjak seiring `ukuran konten × jumlah locale × jumlah giliran`, dan setiap inkonsistensi format maupun kunci harus diperiksa secara manual.
36
+
37
+ ## Apa yang dilakukan Intlayer sebagai gantinya
38
+
39
+ Kelebihan Intlayer adalah menjalankan pekerjaan tersebut di luar agen melalui alur kerja (pipeline) yang dirancang khusus untuk penerjemahan:
40
+
41
+ - **Memfilter terjemahan yang sudah ada** untuk menekan penggunaan token. Kunci yang sudah diterjemahkan di dalam JSON Anda akan disaring, dan hanya kunci yang belum ada yang dikirim ke model.
42
+ - **Menerjemahkan markdown blok demi blok.** Untuk dokumentasi, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/doc-translate.md) dan [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/doc-review.md) membandingkan setiap blok dengan dokumen dasar dan melewati blok yang sudah diterjemahkan atau tidak berubah.
43
+ - **Memotong JSON (chunking)** jika ukurannya terlalu besar agar tetap berada di rentang konteks yang optimal.
44
+ - **Meratakan dan menyusun ulang JSON** guna mengoptimalkan konsumsi token.
45
+ - **Menyisipkan prompt khusus** untuk aturan tertentu terkait merek dan terminologi Anda (`applicationContext`, `--custom-instructions`), sehingga Anda hanya menuliskannya satu kali tanpa perlu mengulanginya di setiap percakapan.
46
+ - **Memvalidasi struktur** untuk menjamin konsistensi dan mencegah pergeseran kunci, serta mempertahankan format (markdown, HTML, tag sisipan, bentuk jamak).
47
+ - **Menerapkan manajemen percobaan ulang (retry)** apabila format output tidak valid.
48
+ - **Mengantrekan dan memparalelkan permintaan** lintas file, potongan teks, dan locale untuk meningkatkan kecepatan.
49
+
50
+ Semua proses ini tidak melewati konteks agen. Aturan praktisnya: biarkan agen memutuskan **apa** yang perlu diinternasionalisasi, dan biarkan Intlayer menangani pekerjaan berulang tersebut.
51
+
52
+ ## Solusi
53
+
54
+ ### 1. Delegasikan ekstraksi ke `intlayer extract`
55
+
56
+ Alih-alih meminta agen menulis ulang setiap komponen secara manual, biarkan agen menjalankan perintah [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/extract.md). Perintah ini memindahkan string statis ke dalam file `.content` di samping komponen tanpa memuat seluruh file ke dalam konteks agen.
57
+
58
+ ```bash
59
+ npx intlayer extract --file src/components/Header.tsx
60
+ ```
61
+
62
+ ### 2. Delegasikan penerjemahan ke `intlayer fill`
63
+
64
+ Jangan pernah meminta agen untuk menerjemahkan secara langsung. Perintah [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/fill.md) menerapkan alur kerja di atas: hanya mengirimkan kunci yang belum diterjemahkan, membaginya ke dalam beberapa potongan, memproses locale secara paralel, dan menuliskan hasilnya kembali ke file konten Anda.
65
+
66
+ ```bash
67
+ npx intlayer fill
68
+ ```
69
+
70
+ Beberapa opsi flag membantu mempersempit ruang lingkup eksekusi:
71
+
72
+ - `--git-diff` (atau `--uncommitted`) hanya memproses kamus yang dimodifikasi pada branch saat ini.
73
+ - `--file` atau `--keys` menargetkan file konten tertentu.
74
+ - `--output-locales fr es` membatasi eksekusi hanya untuk locale yang benar-benar Anda butuhkan saat ini.
75
+ - `--skip-metadata` melewati pembuatan judul, deskripsi, dan tag.
76
+ - `--data-serialization toon` mengirimkan payload yang lebih ringkas ke model (mengurangi token, hasil sedikit kurang konsisten).
77
+
78
+ ```bash
79
+ npx intlayer fill --git-diff --output-locales fr es --skip-metadata
80
+ ```
81
+
82
+ ### 3. Terjemahkan markdown dengan `doc translate` dan `doc review`
83
+
84
+ Meminta agen menerjemahkan file `.md` berarti menempelkan seluruh dokumen, untuk setiap locale, pada setiap perubahan. Sebaliknya, perintah [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/doc-translate.md) dan [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/doc-review.md) bekerja blok demi blok.
85
+
86
+ Gunakan `doc translate` ketika file hasil terjemahan belum ada. Perintah ini memotong markdown, menerjemahkannya secara paralel, dan menulis file tujuan:
87
+
88
+ ```bash
89
+ npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
90
+ ```
91
+
92
+ Gunakan `doc review` ketika file terjemahan sudah ada. Perintah ini membandingkan setiap blok dengan dokumen dasar, melewati blok yang sudah diterjemahkan atau tidak berubah, dan hanya mengirimkan blok yang berbeda:
93
+
94
+ ```bash
95
+ npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
96
+ ```
97
+
98
+ Kedua perintah ini menerima aturan Anda satu kali saja, sehingga Anda tidak perlu mengulanginya di setiap 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
+ Dua mode pada `doc review` sangat berguna saat agen tetap harus dilibatkan tanpa memicu panggilan AI dari Intlayer:
105
+
106
+ - `--mode report` mencatat blok-blok yang memerlukan penyesuaian lengkap dengan nomor baris, sehingga agen hanya mengubah blok tersebut.
107
+ - `--mode synthesis` hanya melaporkan dokumen mana yang sudah diperbarui dan dokumen mana yang masih memiliki blok untuk diedit.
108
+
109
+ ```bash
110
+ npx intlayer doc review --mode report --locales fr
111
+ ```
112
+
113
+ ### 4. Biarkan agen memanggil CLI melalui server MCP
114
+
115
+ Dengan [server MCP Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/mcp_server.md), agen menjawab berdasarkan dokumentasi terbaru dan menjalankan `intlayer fill` atau `intlayer doc review` secara langsung alih-alih mengimplementasikan kembali logika tersebut di dalam percakapan.
116
+
117
+ ```bash
118
+ claude mcp add intlayer npx -y @intlayer/mcp
119
+ ```
120
+
121
+ Memasang [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/agent_skills.md) melalui `npx intlayer init skills` juga mencegah agen menebak-nebak API Intlayer dan membaca ulang dokumentasi di setiap tugas.
122
+
123
+ ### 5. Gunakan kembali langganan Claude Anda dengan `claude setup-token`
124
+
125
+ Menjalankan penyiapan i18n di dalam sesi Claude Code interaktif akan menumpuk seluruh riwayat percakapan dalam konteks. Alihkan tugas berat tersebut ke sesi headless yang singkat.
126
+
127
+ Buat token berdurasi panjang dari langganan Claude Anda:
128
+
129
+ ```bash
130
+ claude setup-token
131
+ ```
132
+
133
+ Simpan token ini sebagai `CLAUDE_CODE_OAUTH_TOKEN` (di dalam file `.env` atau secret CI Anda), lalu gunakan kembali untuk sesi sekali jalan yang mengeksekusi perintah 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
+ Sesi tersebut hanya memuat prompt dan output perintah tanpa menyertakan riwayat percakapan sebelumnya. Token yang sama juga berfungsi pada [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) untuk menjalankan `intlayer fill` di setiap pull request.
140
+
141
+ > Token yang dibuat oleh `claude setup-token` hanya mengautentikasi Claude Code. Token ini tidak dapat digunakan sebagai kunci API Anthropic di `ai.apiKey`. Untuk proses penerjemahannya sendiri, `intlayer fill` menggunakan [akun Intlayer](https://app.intlayer.org) Anda (termasuk paket gratis) atau kunci penyedia Anda sendiri yang dikonfigurasi pada [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/configuration.md#ai-configuration).
142
+
143
+ ## Ringkasan
144
+
145
+ | Tugas | Pelaksana | Token dalam konteks agen |
146
+ | ------------------------------------- | ------------------------ | ------------------------ |
147
+ | Menentukan apa yang akan dilokalisasi | Claude Code | Rendah |
148
+ | Mengekstrak string | `intlayer extract` | Tidak ada |
149
+ | Menerjemahkan konten | `intlayer fill` | Tidak ada |
150
+ | Menerjemahkan dokumentasi | `intlayer doc translate` | Tidak ada |
151
+ | Memperbarui dokumentasi | `intlayer doc review` | Tidak ada |
152
+ | Menjalankan perintah | Headless Claude Code | Prompt + output perintah |