@intlayer/docs 9.5.2 → 9.5.4-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/blog/ar/history_of_i18n.md +54 -54
- package/blog/ar/how_to_pick_react_i18n_library.md +548 -0
- package/blog/ar/how_to_pick_solid_i18n_library.md +438 -0
- package/blog/ar/how_to_pick_svelte_i18n_library.md +454 -0
- package/blog/ar/how_to_pick_vue_i18n_library.md +442 -0
- package/blog/ar/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/ar/i18next_vs_intlayer.md +445 -0
- package/blog/ar/is_i18next_outdated.md +6 -2
- package/blog/ar/is_next-intl_outdated.md +6 -2
- package/blog/ar/is_vue-i18n_outdated.md +8 -2
- package/blog/ar/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/ar/lingui_vs_intlayer.md +381 -0
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/ar/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/ar/next-intl_vs_intlayer.md +397 -0
- package/blog/ar/per-component_vs_centralized_i18n.md +9 -4
- package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +286 -0
- package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/de/history_of_i18n.md +54 -54
- package/blog/de/how_to_pick_react_i18n_library.md +548 -0
- package/blog/de/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/de/how_to_pick_svelte_i18n_library.md +454 -0
- package/blog/de/how_to_pick_vue_i18n_library.md +448 -0
- package/blog/de/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/de/i18next_vs_intlayer.md +445 -0
- package/blog/de/is_i18next_outdated.md +6 -2
- package/blog/de/is_next-intl_outdated.md +6 -2
- package/blog/de/is_vue-i18n_outdated.md +8 -2
- package/blog/de/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/de/lingui_vs_intlayer.md +381 -0
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/de/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/de/next-intl_vs_intlayer.md +415 -0
- package/blog/de/per-component_vs_centralized_i18n.md +9 -4
- package/blog/de/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/de/vue-i18n_vs_intlayer_benchmark.md +355 -0
- package/blog/en/history_of_i18n.md +54 -54
- package/blog/en/how_to_pick_react_i18n_library.md +542 -0
- package/blog/en/how_to_pick_solid_i18n_library.md +438 -0
- package/blog/en/how_to_pick_svelte_i18n_library.md +448 -0
- package/blog/en/how_to_pick_vue_i18n_library.md +442 -0
- package/blog/en/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/en/i18next_vs_intlayer.md +445 -0
- package/blog/en/is_i18next_outdated.md +6 -2
- package/blog/en/is_next-intl_outdated.md +6 -2
- package/blog/en/is_vue-i18n_outdated.md +8 -2
- package/blog/en/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/en/lingui_vs_intlayer.md +381 -0
- package/blog/en/list_i18n_technologies/frameworks/react-router.md +2 -3
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/en/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/en/next-intl_vs_intlayer.md +415 -0
- package/blog/en/per-component_vs_centralized_i18n.md +9 -4
- package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/en/vue-i18n_vs_intlayer.md +1 -1
- package/blog/en/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/en-GB/history_of_i18n.md +54 -54
- package/blog/en-GB/how_to_pick_react_i18n_library.md +542 -0
- package/blog/en-GB/how_to_pick_solid_i18n_library.md +438 -0
- package/blog/en-GB/how_to_pick_svelte_i18n_library.md +448 -0
- package/blog/en-GB/how_to_pick_vue_i18n_library.md +448 -0
- package/blog/en-GB/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/en-GB/i18next_vs_intlayer.md +445 -0
- package/blog/en-GB/is_i18next_outdated.md +6 -2
- package/blog/en-GB/is_next-intl_outdated.md +6 -2
- package/blog/en-GB/is_vue-i18n_outdated.md +8 -2
- package/blog/en-GB/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/en-GB/lingui_vs_intlayer.md +381 -0
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/en-GB/next-intl_vs_intlayer.md +415 -0
- package/blog/en-GB/per-component_vs_centralized_i18n.md +9 -4
- package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/en-GB/vue-i18n_vs_intlayer.md +1 -1
- package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +245 -0
- package/blog/es/history_of_i18n.md +54 -54
- package/blog/es/how_to_pick_react_i18n_library.md +542 -0
- package/blog/es/how_to_pick_solid_i18n_library.md +446 -0
- package/blog/es/how_to_pick_svelte_i18n_library.md +448 -0
- package/blog/es/how_to_pick_vue_i18n_library.md +442 -0
- package/blog/es/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/es/i18next_vs_intlayer.md +445 -0
- package/blog/es/is_i18next_outdated.md +6 -2
- package/blog/es/is_next-intl_outdated.md +6 -2
- package/blog/es/is_vue-i18n_outdated.md +8 -2
- package/blog/es/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/es/lingui_vs_intlayer.md +381 -0
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/es/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/es/next-intl_vs_intlayer.md +417 -0
- package/blog/es/per-component_vs_centralized_i18n.md +9 -4
- package/blog/es/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/es/vue-i18n_vs_intlayer_benchmark.md +363 -0
- package/blog/fr/history_of_i18n.md +54 -54
- package/blog/fr/how_to_pick_react_i18n_library.md +542 -0
- package/blog/fr/how_to_pick_solid_i18n_library.md +438 -0
- package/blog/fr/how_to_pick_svelte_i18n_library.md +448 -0
- package/blog/fr/how_to_pick_vue_i18n_library.md +442 -0
- package/blog/fr/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/fr/i18next_vs_intlayer.md +445 -0
- package/blog/fr/is_i18next_outdated.md +6 -2
- package/blog/fr/is_next-intl_outdated.md +6 -2
- package/blog/fr/is_vue-i18n_outdated.md +8 -2
- package/blog/fr/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/fr/lingui_vs_intlayer.md +381 -0
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/fr/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/fr/next-intl_vs_intlayer.md +417 -0
- package/blog/fr/per-component_vs_centralized_i18n.md +9 -4
- package/blog/fr/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +287 -0
- package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +39 -0
- package/blog/hi/history_of_i18n.md +54 -54
- package/blog/hi/how_to_pick_react_i18n_library.md +548 -0
- package/blog/hi/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/hi/how_to_pick_svelte_i18n_library.md +448 -0
- package/blog/hi/how_to_pick_vue_i18n_library.md +442 -0
- package/blog/hi/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/hi/i18next_vs_intlayer.md +445 -0
- package/blog/hi/is_i18next_outdated.md +6 -2
- package/blog/hi/is_next-intl_outdated.md +6 -2
- package/blog/hi/is_vue-i18n_outdated.md +8 -2
- package/blog/hi/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/hi/lingui_vs_intlayer.md +381 -0
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +8 -4
- package/blog/hi/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/hi/next-intl_vs_intlayer.md +397 -0
- package/blog/hi/per-component_vs_centralized_i18n.md +9 -4
- package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/id/history_of_i18n.md +54 -54
- package/blog/id/how_to_pick_react_i18n_library.md +548 -0
- package/blog/id/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/id/how_to_pick_svelte_i18n_library.md +454 -0
- package/blog/id/how_to_pick_vue_i18n_library.md +442 -0
- package/blog/id/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/id/i18next_vs_intlayer.md +445 -0
- package/blog/id/is_i18next_outdated.md +6 -2
- package/blog/id/is_next-intl_outdated.md +6 -2
- package/blog/id/is_vue-i18n_outdated.md +8 -2
- package/blog/id/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/id/lingui_vs_intlayer.md +381 -0
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/id/next-intl_vs_intlayer-next-intl.md +310 -0
- package/blog/id/next-intl_vs_intlayer.md +397 -0
- package/blog/id/per-component_vs_centralized_i18n.md +9 -4
- package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +36 -0
- package/blog/id/vue-i18n_vs_intlayer.md +1 -1
- package/blog/id/vue-i18n_vs_intlayer_benchmark.md +41 -0
- package/blog/it/history_of_i18n.md +54 -54
- package/blog/it/how_to_pick_react_i18n_library.md +549 -0
- package/blog/it/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/it/how_to_pick_svelte_i18n_library.md +455 -0
- package/blog/it/how_to_pick_vue_i18n_library.md +449 -0
- package/blog/it/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/it/i18next_vs_intlayer.md +445 -0
- package/blog/it/is_i18next_outdated.md +6 -2
- package/blog/it/is_next-intl_outdated.md +6 -2
- package/blog/it/is_vue-i18n_outdated.md +8 -2
- package/blog/it/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/it/lingui_vs_intlayer.md +381 -0
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/it/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/it/next-intl_vs_intlayer.md +418 -0
- package/blog/it/per-component_vs_centralized_i18n.md +9 -4
- package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/it/vue-i18n_vs_intlayer_benchmark.md +34 -0
- package/blog/ja/history_of_i18n.md +54 -54
- package/blog/ja/how_to_pick_react_i18n_library.md +542 -0
- package/blog/ja/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/ja/how_to_pick_svelte_i18n_library.md +457 -0
- package/blog/ja/how_to_pick_vue_i18n_library.md +442 -0
- package/blog/ja/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/ja/i18next_vs_intlayer.md +447 -0
- package/blog/ja/is_i18next_outdated.md +6 -2
- package/blog/ja/is_next-intl_outdated.md +6 -2
- package/blog/ja/is_vue-i18n_outdated.md +8 -2
- package/blog/ja/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/ja/lingui_vs_intlayer.md +381 -0
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/ja/next-intl_vs_intlayer-next-intl.md +310 -0
- package/blog/ja/next-intl_vs_intlayer.md +422 -0
- package/blog/ja/per-component_vs_centralized_i18n.md +9 -4
- package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/ja/vue-i18n_vs_intlayer.md +1 -1
- package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/ko/history_of_i18n.md +54 -54
- package/blog/ko/how_to_pick_react_i18n_library.md +548 -0
- package/blog/ko/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/ko/how_to_pick_svelte_i18n_library.md +454 -0
- package/blog/ko/how_to_pick_vue_i18n_library.md +448 -0
- package/blog/ko/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/ko/i18next_vs_intlayer.md +447 -0
- package/blog/ko/is_i18next_outdated.md +6 -2
- package/blog/ko/is_next-intl_outdated.md +6 -2
- package/blog/ko/is_vue-i18n_outdated.md +8 -2
- package/blog/ko/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/ko/lingui_vs_intlayer.md +381 -0
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/ko/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/ko/next-intl_vs_intlayer.md +397 -0
- package/blog/ko/per-component_vs_centralized_i18n.md +9 -4
- package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/ko/vue-i18n_vs_intlayer.md +1 -1
- package/blog/ko/vue-i18n_vs_intlayer_benchmark.md +366 -0
- package/blog/pl/history_of_i18n.md +54 -54
- package/blog/pl/how_to_pick_react_i18n_library.md +549 -0
- package/blog/pl/how_to_pick_solid_i18n_library.md +438 -0
- package/blog/pl/how_to_pick_svelte_i18n_library.md +460 -0
- package/blog/pl/how_to_pick_vue_i18n_library.md +442 -0
- package/blog/pl/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/pl/i18next_vs_intlayer.md +445 -0
- package/blog/pl/is_i18next_outdated.md +6 -2
- package/blog/pl/is_next-intl_outdated.md +6 -2
- package/blog/pl/is_vue-i18n_outdated.md +8 -2
- package/blog/pl/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/pl/lingui_vs_intlayer.md +381 -0
- package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/pl/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/pl/next-intl_vs_intlayer.md +397 -0
- package/blog/pl/per-component_vs_centralized_i18n.md +9 -4
- package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +289 -0
- package/blog/pl/vue-i18n_vs_intlayer.md +1 -1
- package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/pt/history_of_i18n.md +54 -54
- package/blog/pt/how_to_pick_react_i18n_library.md +549 -0
- package/blog/pt/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/pt/how_to_pick_svelte_i18n_library.md +454 -0
- package/blog/pt/how_to_pick_vue_i18n_library.md +448 -0
- package/blog/pt/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/pt/i18next_vs_intlayer.md +445 -0
- package/blog/pt/is_i18next_outdated.md +6 -2
- package/blog/pt/is_next-intl_outdated.md +6 -2
- package/blog/pt/is_vue-i18n_outdated.md +8 -2
- package/blog/pt/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/pt/lingui_vs_intlayer.md +381 -0
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/pt/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/pt/next-intl_vs_intlayer.md +411 -0
- package/blog/pt/per-component_vs_centralized_i18n.md +9 -4
- package/blog/pt/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/ru/history_of_i18n.md +54 -54
- package/blog/ru/how_to_pick_react_i18n_library.md +553 -0
- package/blog/ru/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/ru/how_to_pick_svelte_i18n_library.md +459 -0
- package/blog/ru/how_to_pick_vue_i18n_library.md +453 -0
- package/blog/ru/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/ru/i18next_vs_intlayer.md +445 -0
- package/blog/ru/is_i18next_outdated.md +6 -2
- package/blog/ru/is_next-intl_outdated.md +6 -2
- package/blog/ru/is_vue-i18n_outdated.md +8 -2
- package/blog/ru/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/ru/lingui_vs_intlayer.md +381 -0
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/ru/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/ru/next-intl_vs_intlayer.md +417 -0
- package/blog/ru/per-component_vs_centralized_i18n.md +9 -4
- package/blog/ru/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +54 -0
- package/blog/tr/history_of_i18n.md +54 -54
- package/blog/tr/how_to_pick_react_i18n_library.md +548 -0
- package/blog/tr/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/tr/how_to_pick_svelte_i18n_library.md +454 -0
- package/blog/tr/how_to_pick_vue_i18n_library.md +448 -0
- package/blog/tr/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/tr/i18next_vs_intlayer.md +445 -0
- package/blog/tr/is_i18next_outdated.md +6 -2
- package/blog/tr/is_next-intl_outdated.md +6 -2
- package/blog/tr/is_vue-i18n_outdated.md +8 -2
- package/blog/tr/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/tr/lingui_vs_intlayer.md +381 -0
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/tr/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/tr/next-intl_vs_intlayer.md +397 -0
- package/blog/tr/per-component_vs_centralized_i18n.md +9 -4
- package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/tr/vue-i18n_vs_intlayer.md +1 -1
- package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/uk/history_of_i18n.md +54 -54
- package/blog/uk/how_to_pick_react_i18n_library.md +542 -0
- package/blog/uk/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/uk/how_to_pick_svelte_i18n_library.md +448 -0
- package/blog/uk/how_to_pick_vue_i18n_library.md +443 -0
- package/blog/uk/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/uk/i18next_vs_intlayer.md +445 -0
- package/blog/uk/is_i18next_outdated.md +6 -2
- package/blog/uk/is_next-intl_outdated.md +6 -2
- package/blog/uk/is_vue-i18n_outdated.md +8 -2
- package/blog/uk/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/uk/lingui_vs_intlayer.md +381 -0
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/uk/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/uk/next-intl_vs_intlayer.md +397 -0
- package/blog/uk/per-component_vs_centralized_i18n.md +9 -4
- package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +270 -0
- package/blog/uk/vue-i18n_vs_intlayer.md +1 -1
- package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/vi/history_of_i18n.md +54 -54
- package/blog/vi/how_to_pick_react_i18n_library.md +548 -0
- package/blog/vi/how_to_pick_solid_i18n_library.md +438 -0
- package/blog/vi/how_to_pick_svelte_i18n_library.md +448 -0
- package/blog/vi/how_to_pick_vue_i18n_library.md +442 -0
- package/blog/vi/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/vi/i18next_vs_intlayer.md +445 -0
- package/blog/vi/is_i18next_outdated.md +6 -2
- package/blog/vi/is_next-intl_outdated.md +6 -2
- package/blog/vi/is_vue-i18n_outdated.md +8 -2
- package/blog/vi/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/vi/lingui_vs_intlayer.md +381 -0
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/vi/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/vi/next-intl_vs_intlayer.md +397 -0
- package/blog/vi/per-component_vs_centralized_i18n.md +9 -4
- package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/vi/vue-i18n_vs_intlayer.md +1 -1
- package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/zh/history_of_i18n.md +54 -54
- package/blog/zh/how_to_pick_react_i18n_library.md +548 -0
- package/blog/zh/how_to_pick_solid_i18n_library.md +451 -0
- package/blog/zh/how_to_pick_svelte_i18n_library.md +454 -0
- package/blog/zh/how_to_pick_vue_i18n_library.md +448 -0
- package/blog/zh/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/zh/i18next_vs_intlayer.md +445 -0
- package/blog/zh/is_i18next_outdated.md +6 -2
- package/blog/zh/is_next-intl_outdated.md +6 -2
- package/blog/zh/is_vue-i18n_outdated.md +8 -2
- package/blog/zh/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/zh/lingui_vs_intlayer.md +381 -0
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
- package/blog/zh/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/zh/next-intl_vs_intlayer.md +422 -0
- package/blog/zh/per-component_vs_centralized_i18n.md +9 -4
- package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
- package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/zh/vue-i18n_vs_intlayer.md +1 -1
- package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +30 -0
- package/dist/cjs/generated/blog.entry.cjs +240 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +20 -0
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/generated/blog.entry.mjs +240 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +20 -0
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/types/generated/blog.entry.d.ts +12 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/docs/ar/benchmark/nextjs.md +1 -1
- package/docs/ar/benchmark/solid.md +1 -1
- package/docs/ar/benchmark/svelte.md +1 -1
- package/docs/ar/benchmark/tanstack.md +1 -1
- package/docs/ar/benchmark/vue.md +1 -1
- package/docs/ar/bundle_optimization.md +5 -1
- package/docs/ar/how_works_intlayer.md +2 -2
- package/docs/ar/interest_of_intlayer.md +7 -7
- package/docs/ar/intlayer_CMS.md +1 -1
- package/docs/ar/intlayer_with_adonisjs.md +1 -1
- package/docs/ar/intlayer_with_analog.md +1 -1
- package/docs/ar/intlayer_with_angular_19.md +1 -1
- package/docs/ar/intlayer_with_angular_21.md +1 -1
- package/docs/ar/intlayer_with_astro.md +1 -1
- package/docs/ar/intlayer_with_astro_lit.md +1 -1
- package/docs/ar/intlayer_with_astro_preact.md +1 -1
- package/docs/ar/intlayer_with_astro_react.md +1 -1
- package/docs/ar/intlayer_with_astro_solid.md +1 -1
- package/docs/ar/intlayer_with_astro_svelte.md +1 -1
- package/docs/ar/intlayer_with_astro_vanilla.md +1 -1
- package/docs/ar/intlayer_with_astro_vue.md +1 -1
- package/docs/ar/intlayer_with_create_react_app.md +1 -1
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_hono.md +1 -1
- package/docs/ar/intlayer_with_nestjs.md +1 -1
- package/docs/ar/intlayer_with_nextjs_14.md +1 -1
- package/docs/ar/intlayer_with_nextjs_15.md +1 -1
- package/docs/ar/intlayer_with_nextjs_16.md +1 -1
- package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7.md +1 -1
- package/docs/ar/intlayer_with_vite+preact.md +1 -1
- package/docs/ar/intlayer_with_vite+react.md +1 -1
- package/docs/ar/intlayer_with_vite+vue.md +1 -1
- package/docs/ar/introduction.md +0 -1
- package/docs/ar/readme.md +8 -8
- package/docs/bn/bundle_optimization.md +5 -1
- package/docs/bn/interest_of_intlayer.md +22 -22
- package/docs/bn/intlayer_CMS.md +1 -1
- package/docs/bn/intlayer_with_angular_21.md +1 -1
- package/docs/bn/intlayer_with_hono.md +1 -1
- package/docs/bn/introduction.md +0 -1
- package/docs/cs/bundle_optimization.md +5 -1
- package/docs/cs/interest_of_intlayer.md +7 -7
- package/docs/cs/intlayer_with_angular_21.md +1 -1
- package/docs/cs/intlayer_with_hono.md +1 -1
- package/docs/cs/introduction.md +0 -1
- package/docs/de/benchmark/nextjs.md +1 -1
- package/docs/de/benchmark/solid.md +1 -1
- package/docs/de/benchmark/svelte.md +1 -1
- package/docs/de/benchmark/tanstack.md +1 -1
- package/docs/de/benchmark/vue.md +1 -1
- package/docs/de/bundle_optimization.md +5 -1
- package/docs/de/how_works_intlayer.md +2 -2
- package/docs/de/interest_of_intlayer.md +7 -7
- package/docs/de/intlayer_CMS.md +1 -1
- package/docs/de/intlayer_with_adonisjs.md +1 -1
- package/docs/de/intlayer_with_analog.md +1 -1
- package/docs/de/intlayer_with_angular_19.md +1 -1
- package/docs/de/intlayer_with_angular_21.md +1 -1
- package/docs/de/intlayer_with_astro.md +1 -1
- package/docs/de/intlayer_with_astro_lit.md +1 -1
- package/docs/de/intlayer_with_astro_preact.md +1 -1
- package/docs/de/intlayer_with_astro_react.md +1 -1
- package/docs/de/intlayer_with_astro_solid.md +1 -1
- package/docs/de/intlayer_with_astro_svelte.md +1 -1
- package/docs/de/intlayer_with_astro_vanilla.md +1 -1
- package/docs/de/intlayer_with_astro_vue.md +1 -1
- package/docs/de/intlayer_with_create_react_app.md +1 -1
- package/docs/de/intlayer_with_express.md +1 -1
- package/docs/de/intlayer_with_hono.md +1 -1
- package/docs/de/intlayer_with_nestjs.md +1 -1
- package/docs/de/intlayer_with_nextjs_14.md +1 -1
- package/docs/de/intlayer_with_nextjs_15.md +1 -1
- package/docs/de/intlayer_with_nextjs_16.md +1 -1
- package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/de/intlayer_with_vite+preact.md +1 -1
- package/docs/de/intlayer_with_vite+react.md +1 -1
- package/docs/de/intlayer_with_vite+vue.md +1 -1
- package/docs/de/introduction.md +0 -1
- package/docs/de/readme.md +8 -8
- package/docs/en/benchmark/nextjs.md +1 -1
- package/docs/en/benchmark/solid.md +1 -1
- package/docs/en/benchmark/svelte.md +1 -1
- package/docs/en/benchmark/tanstack.md +1 -1
- package/docs/en/benchmark/vue.md +1 -1
- package/docs/en/bundle_optimization.md +5 -1
- package/docs/en/how_works_intlayer.md +2 -2
- package/docs/en/interest_of_intlayer.md +7 -7
- package/docs/en/intlayer_CMS.md +1 -1
- package/docs/en/intlayer_with_adonisjs.md +1 -1
- package/docs/en/intlayer_with_analog.md +1 -1
- package/docs/en/intlayer_with_angular_19.md +1 -1
- package/docs/en/intlayer_with_angular_21.md +1 -1
- package/docs/en/intlayer_with_astro.md +1 -1
- package/docs/en/intlayer_with_astro_lit.md +1 -1
- package/docs/en/intlayer_with_astro_preact.md +1 -1
- package/docs/en/intlayer_with_astro_react.md +1 -1
- package/docs/en/intlayer_with_astro_solid.md +1 -1
- package/docs/en/intlayer_with_astro_svelte.md +1 -1
- package/docs/en/intlayer_with_astro_vanilla.md +1 -1
- package/docs/en/intlayer_with_astro_vue.md +1 -1
- package/docs/en/intlayer_with_create_react_app.md +1 -1
- package/docs/en/intlayer_with_express.md +1 -1
- package/docs/en/intlayer_with_hono.md +1 -1
- package/docs/en/intlayer_with_nestjs.md +1 -1
- package/docs/en/intlayer_with_nextjs_14.md +1 -1
- package/docs/en/intlayer_with_nextjs_15.md +1 -1
- package/docs/en/intlayer_with_nextjs_16.md +1 -1
- package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en/intlayer_with_vite+preact.md +1 -1
- package/docs/en/intlayer_with_vite+react.md +1 -1
- package/docs/en/intlayer_with_vite+vue.md +1 -1
- package/docs/en/introduction.md +0 -1
- package/docs/en/readme.md +8 -8
- package/docs/en-GB/benchmark/nextjs.md +1 -1
- package/docs/en-GB/benchmark/solid.md +1 -1
- package/docs/en-GB/benchmark/svelte.md +1 -1
- package/docs/en-GB/benchmark/tanstack.md +1 -1
- package/docs/en-GB/benchmark/vue.md +1 -1
- package/docs/en-GB/bundle_optimization.md +5 -1
- package/docs/en-GB/how_works_intlayer.md +2 -2
- package/docs/en-GB/interest_of_intlayer.md +7 -7
- package/docs/en-GB/intlayer_CMS.md +1 -1
- package/docs/en-GB/intlayer_with_adonisjs.md +1 -1
- package/docs/en-GB/intlayer_with_analog.md +1 -1
- package/docs/en-GB/intlayer_with_angular_19.md +1 -1
- package/docs/en-GB/intlayer_with_angular_21.md +1 -1
- package/docs/en-GB/intlayer_with_astro.md +1 -1
- package/docs/en-GB/intlayer_with_astro_lit.md +1 -1
- package/docs/en-GB/intlayer_with_astro_preact.md +1 -1
- package/docs/en-GB/intlayer_with_astro_react.md +1 -1
- package/docs/en-GB/intlayer_with_astro_solid.md +1 -1
- package/docs/en-GB/intlayer_with_astro_svelte.md +1 -1
- package/docs/en-GB/intlayer_with_astro_vanilla.md +1 -1
- package/docs/en-GB/intlayer_with_astro_vue.md +1 -1
- package/docs/en-GB/intlayer_with_create_react_app.md +1 -1
- package/docs/en-GB/intlayer_with_express.md +1 -1
- package/docs/en-GB/intlayer_with_hono.md +1 -1
- package/docs/en-GB/intlayer_with_nestjs.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_14.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_15.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en-GB/intlayer_with_vite+preact.md +1 -1
- package/docs/en-GB/intlayer_with_vite+react.md +1 -1
- package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
- package/docs/en-GB/introduction.md +0 -1
- package/docs/en-GB/readme.md +8 -8
- package/docs/es/benchmark/nextjs.md +1 -1
- package/docs/es/benchmark/solid.md +1 -1
- package/docs/es/benchmark/svelte.md +1 -1
- package/docs/es/benchmark/tanstack.md +1 -1
- package/docs/es/benchmark/vue.md +1 -1
- package/docs/es/bundle_optimization.md +5 -1
- package/docs/es/how_works_intlayer.md +2 -2
- package/docs/es/interest_of_intlayer.md +7 -7
- package/docs/es/intlayer_CMS.md +1 -1
- package/docs/es/intlayer_with_adonisjs.md +1 -1
- package/docs/es/intlayer_with_analog.md +1 -1
- package/docs/es/intlayer_with_angular_19.md +1 -1
- package/docs/es/intlayer_with_angular_21.md +1 -1
- package/docs/es/intlayer_with_astro.md +1 -1
- package/docs/es/intlayer_with_astro_lit.md +1 -1
- package/docs/es/intlayer_with_astro_preact.md +1 -1
- package/docs/es/intlayer_with_astro_react.md +1 -1
- package/docs/es/intlayer_with_astro_solid.md +1 -1
- package/docs/es/intlayer_with_astro_svelte.md +1 -1
- package/docs/es/intlayer_with_astro_vanilla.md +1 -1
- package/docs/es/intlayer_with_astro_vue.md +1 -1
- package/docs/es/intlayer_with_create_react_app.md +1 -1
- package/docs/es/intlayer_with_express.md +1 -1
- package/docs/es/intlayer_with_hono.md +1 -1
- package/docs/es/intlayer_with_nestjs.md +1 -1
- package/docs/es/intlayer_with_nextjs_14.md +1 -1
- package/docs/es/intlayer_with_nextjs_15.md +1 -1
- package/docs/es/intlayer_with_nextjs_16.md +1 -1
- package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/es/intlayer_with_vite+preact.md +1 -1
- package/docs/es/intlayer_with_vite+react.md +1 -1
- package/docs/es/intlayer_with_vite+vue.md +1 -1
- package/docs/es/introduction.md +0 -1
- package/docs/es/readme.md +8 -8
- package/docs/fr/benchmark/nextjs.md +1 -1
- package/docs/fr/benchmark/solid.md +1 -1
- package/docs/fr/benchmark/svelte.md +1 -1
- package/docs/fr/benchmark/tanstack.md +1 -1
- package/docs/fr/benchmark/vue.md +1 -1
- package/docs/fr/bundle_optimization.md +5 -1
- package/docs/fr/how_works_intlayer.md +2 -2
- package/docs/fr/interest_of_intlayer.md +7 -7
- package/docs/fr/intlayer_CMS.md +1 -1
- package/docs/fr/intlayer_with_adonisjs.md +1 -1
- package/docs/fr/intlayer_with_analog.md +1 -1
- package/docs/fr/intlayer_with_angular_19.md +1 -1
- package/docs/fr/intlayer_with_angular_21.md +1 -1
- package/docs/fr/intlayer_with_astro.md +1 -1
- package/docs/fr/intlayer_with_astro_lit.md +1 -1
- package/docs/fr/intlayer_with_astro_preact.md +1 -1
- package/docs/fr/intlayer_with_astro_react.md +1 -1
- package/docs/fr/intlayer_with_astro_solid.md +1 -1
- package/docs/fr/intlayer_with_astro_svelte.md +1 -1
- package/docs/fr/intlayer_with_astro_vanilla.md +1 -1
- package/docs/fr/intlayer_with_astro_vue.md +1 -1
- package/docs/fr/intlayer_with_create_react_app.md +1 -1
- package/docs/fr/intlayer_with_express.md +1 -1
- package/docs/fr/intlayer_with_hono.md +1 -1
- package/docs/fr/intlayer_with_nestjs.md +1 -1
- package/docs/fr/intlayer_with_nextjs_14.md +1 -1
- package/docs/fr/intlayer_with_nextjs_15.md +1 -1
- package/docs/fr/intlayer_with_nextjs_16.md +1 -1
- package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/fr/intlayer_with_react_router_v7.md +2 -2
- package/docs/fr/intlayer_with_vite+preact.md +1 -1
- package/docs/fr/intlayer_with_vite+react.md +1 -1
- package/docs/fr/intlayer_with_vite+vue.md +1 -1
- package/docs/fr/introduction.md +0 -1
- package/docs/fr/readme.md +8 -8
- package/docs/hi/benchmark/nextjs.md +1 -1
- package/docs/hi/benchmark/solid.md +1 -1
- package/docs/hi/benchmark/svelte.md +1 -1
- package/docs/hi/benchmark/tanstack.md +1 -1
- package/docs/hi/benchmark/vue.md +1 -1
- package/docs/hi/bundle_optimization.md +5 -1
- package/docs/hi/how_works_intlayer.md +2 -2
- package/docs/hi/interest_of_intlayer.md +7 -7
- package/docs/hi/intlayer_CMS.md +1 -1
- package/docs/hi/intlayer_with_adonisjs.md +1 -1
- package/docs/hi/intlayer_with_analog.md +1 -1
- package/docs/hi/intlayer_with_angular_19.md +1 -1
- package/docs/hi/intlayer_with_angular_21.md +1 -1
- package/docs/hi/intlayer_with_astro.md +1 -1
- package/docs/hi/intlayer_with_astro_lit.md +1 -1
- package/docs/hi/intlayer_with_astro_preact.md +1 -1
- package/docs/hi/intlayer_with_astro_react.md +1 -1
- package/docs/hi/intlayer_with_astro_solid.md +1 -1
- package/docs/hi/intlayer_with_astro_svelte.md +1 -1
- package/docs/hi/intlayer_with_astro_vanilla.md +1 -1
- package/docs/hi/intlayer_with_astro_vue.md +1 -1
- package/docs/hi/intlayer_with_create_react_app.md +1 -1
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_hono.md +1 -1
- package/docs/hi/intlayer_with_nestjs.md +1 -1
- package/docs/hi/intlayer_with_nextjs_14.md +1 -1
- package/docs/hi/intlayer_with_nextjs_15.md +1 -1
- package/docs/hi/intlayer_with_nextjs_16.md +1 -1
- package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7.md +1 -1
- package/docs/hi/intlayer_with_vite+preact.md +1 -1
- package/docs/hi/intlayer_with_vite+react.md +1 -1
- package/docs/hi/intlayer_with_vite+vue.md +1 -1
- package/docs/hi/introduction.md +0 -1
- package/docs/hi/readme.md +8 -8
- package/docs/id/benchmark/nextjs.md +1 -1
- package/docs/id/benchmark/solid.md +1 -1
- package/docs/id/benchmark/svelte.md +1 -1
- package/docs/id/benchmark/tanstack.md +1 -1
- package/docs/id/benchmark/vue.md +1 -1
- package/docs/id/bundle_optimization.md +5 -1
- package/docs/id/how_works_intlayer.md +2 -2
- package/docs/id/interest_of_intlayer.md +7 -7
- package/docs/id/intlayer_CMS.md +1 -1
- package/docs/id/intlayer_with_adonisjs.md +1 -1
- package/docs/id/intlayer_with_analog.md +1 -1
- package/docs/id/intlayer_with_angular_19.md +1 -1
- package/docs/id/intlayer_with_angular_21.md +1 -1
- package/docs/id/intlayer_with_astro.md +1 -1
- package/docs/id/intlayer_with_astro_lit.md +1 -1
- package/docs/id/intlayer_with_astro_preact.md +1 -1
- package/docs/id/intlayer_with_astro_react.md +1 -1
- package/docs/id/intlayer_with_astro_solid.md +1 -1
- package/docs/id/intlayer_with_astro_svelte.md +1 -1
- package/docs/id/intlayer_with_astro_vanilla.md +1 -1
- package/docs/id/intlayer_with_astro_vue.md +1 -1
- package/docs/id/intlayer_with_create_react_app.md +1 -1
- package/docs/id/intlayer_with_express.md +1 -1
- package/docs/id/intlayer_with_hono.md +1 -1
- package/docs/id/intlayer_with_nestjs.md +1 -1
- package/docs/id/intlayer_with_nextjs_14.md +1 -1
- package/docs/id/intlayer_with_nextjs_15.md +1 -1
- package/docs/id/intlayer_with_nextjs_16.md +1 -1
- package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/id/intlayer_with_react_router_v7.md +1 -1
- package/docs/id/intlayer_with_vite+preact.md +1 -1
- package/docs/id/intlayer_with_vite+react.md +1 -1
- package/docs/id/intlayer_with_vite+vue.md +1 -1
- package/docs/id/introduction.md +0 -1
- package/docs/id/readme.md +8 -8
- package/docs/it/benchmark/nextjs.md +1 -1
- package/docs/it/benchmark/solid.md +1 -1
- package/docs/it/benchmark/svelte.md +1 -1
- package/docs/it/benchmark/tanstack.md +1 -1
- package/docs/it/benchmark/vue.md +1 -1
- package/docs/it/bundle_optimization.md +5 -1
- package/docs/it/how_works_intlayer.md +2 -2
- package/docs/it/interest_of_intlayer.md +7 -7
- package/docs/it/intlayer_CMS.md +1 -1
- package/docs/it/intlayer_with_adonisjs.md +1 -1
- package/docs/it/intlayer_with_analog.md +1 -1
- package/docs/it/intlayer_with_angular_19.md +1 -1
- package/docs/it/intlayer_with_angular_21.md +1 -1
- package/docs/it/intlayer_with_astro.md +1 -1
- package/docs/it/intlayer_with_astro_lit.md +1 -1
- package/docs/it/intlayer_with_astro_preact.md +1 -1
- package/docs/it/intlayer_with_astro_react.md +1 -1
- package/docs/it/intlayer_with_astro_solid.md +1 -1
- package/docs/it/intlayer_with_astro_svelte.md +1 -1
- package/docs/it/intlayer_with_astro_vanilla.md +1 -1
- package/docs/it/intlayer_with_astro_vue.md +1 -1
- package/docs/it/intlayer_with_create_react_app.md +1 -1
- package/docs/it/intlayer_with_express.md +1 -1
- package/docs/it/intlayer_with_hono.md +1 -1
- package/docs/it/intlayer_with_nestjs.md +1 -1
- package/docs/it/intlayer_with_nextjs_14.md +1 -1
- package/docs/it/intlayer_with_nextjs_15.md +1 -1
- package/docs/it/intlayer_with_nextjs_16.md +1 -1
- package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/it/intlayer_with_react_router_v7.md +2 -2
- package/docs/it/intlayer_with_vite+preact.md +1 -1
- package/docs/it/intlayer_with_vite+react.md +1 -1
- package/docs/it/intlayer_with_vite+vue.md +1 -1
- package/docs/it/introduction.md +0 -1
- package/docs/it/readme.md +8 -8
- package/docs/ja/benchmark/nextjs.md +1 -1
- package/docs/ja/benchmark/solid.md +1 -1
- package/docs/ja/benchmark/svelte.md +1 -1
- package/docs/ja/benchmark/tanstack.md +1 -1
- package/docs/ja/benchmark/vue.md +1 -1
- package/docs/ja/bundle_optimization.md +5 -1
- package/docs/ja/how_works_intlayer.md +2 -2
- package/docs/ja/interest_of_intlayer.md +7 -7
- package/docs/ja/intlayer_CMS.md +1 -1
- package/docs/ja/intlayer_with_adonisjs.md +1 -1
- package/docs/ja/intlayer_with_analog.md +1 -1
- package/docs/ja/intlayer_with_angular_19.md +1 -1
- package/docs/ja/intlayer_with_angular_21.md +1 -1
- package/docs/ja/intlayer_with_astro.md +1 -1
- package/docs/ja/intlayer_with_astro_lit.md +1 -1
- package/docs/ja/intlayer_with_astro_preact.md +1 -1
- package/docs/ja/intlayer_with_astro_react.md +1 -1
- package/docs/ja/intlayer_with_astro_solid.md +1 -1
- package/docs/ja/intlayer_with_astro_svelte.md +1 -1
- package/docs/ja/intlayer_with_astro_vanilla.md +1 -1
- package/docs/ja/intlayer_with_astro_vue.md +1 -1
- package/docs/ja/intlayer_with_create_react_app.md +1 -1
- package/docs/ja/intlayer_with_express.md +1 -1
- package/docs/ja/intlayer_with_hono.md +1 -1
- package/docs/ja/intlayer_with_nestjs.md +1 -1
- package/docs/ja/intlayer_with_nextjs_14.md +1 -1
- package/docs/ja/intlayer_with_nextjs_15.md +1 -1
- package/docs/ja/intlayer_with_nextjs_16.md +1 -1
- package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ja/intlayer_with_vite+preact.md +1 -1
- package/docs/ja/intlayer_with_vite+react.md +1 -1
- package/docs/ja/intlayer_with_vite+vue.md +1 -1
- package/docs/ja/introduction.md +0 -1
- package/docs/ja/readme.md +8 -8
- package/docs/ko/benchmark/nextjs.md +1 -1
- package/docs/ko/benchmark/solid.md +1 -1
- package/docs/ko/benchmark/svelte.md +1 -1
- package/docs/ko/benchmark/tanstack.md +1 -1
- package/docs/ko/benchmark/vue.md +1 -1
- package/docs/ko/bundle_optimization.md +5 -1
- package/docs/ko/how_works_intlayer.md +2 -2
- package/docs/ko/interest_of_intlayer.md +7 -7
- package/docs/ko/intlayer_CMS.md +1 -1
- package/docs/ko/intlayer_with_adonisjs.md +1 -1
- package/docs/ko/intlayer_with_analog.md +1 -1
- package/docs/ko/intlayer_with_angular_19.md +1 -1
- package/docs/ko/intlayer_with_angular_21.md +1 -1
- package/docs/ko/intlayer_with_astro.md +1 -1
- package/docs/ko/intlayer_with_astro_lit.md +1 -1
- package/docs/ko/intlayer_with_astro_preact.md +1 -1
- package/docs/ko/intlayer_with_astro_react.md +1 -1
- package/docs/ko/intlayer_with_astro_solid.md +1 -1
- package/docs/ko/intlayer_with_astro_svelte.md +1 -1
- package/docs/ko/intlayer_with_astro_vanilla.md +1 -1
- package/docs/ko/intlayer_with_astro_vue.md +1 -1
- package/docs/ko/intlayer_with_create_react_app.md +1 -1
- package/docs/ko/intlayer_with_express.md +1 -1
- package/docs/ko/intlayer_with_hono.md +1 -1
- package/docs/ko/intlayer_with_nestjs.md +1 -1
- package/docs/ko/intlayer_with_nextjs_14.md +1 -1
- package/docs/ko/intlayer_with_nextjs_15.md +1 -1
- package/docs/ko/intlayer_with_nextjs_16.md +1 -1
- package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ko/intlayer_with_react_router_v7.md +2 -2
- package/docs/ko/intlayer_with_vite+preact.md +1 -1
- package/docs/ko/intlayer_with_vite+react.md +1 -1
- package/docs/ko/intlayer_with_vite+vue.md +1 -1
- package/docs/ko/introduction.md +0 -1
- package/docs/ko/readme.md +8 -8
- package/docs/nl/bundle_optimization.md +5 -1
- package/docs/nl/interest_of_intlayer.md +7 -7
- package/docs/nl/intlayer_with_angular_21.md +1 -1
- package/docs/nl/intlayer_with_hono.md +1 -1
- package/docs/nl/introduction.md +0 -1
- package/docs/pl/benchmark/nextjs.md +1 -1
- package/docs/pl/benchmark/solid.md +1 -1
- package/docs/pl/benchmark/svelte.md +1 -1
- package/docs/pl/benchmark/tanstack.md +1 -1
- package/docs/pl/benchmark/vue.md +1 -1
- package/docs/pl/bundle_optimization.md +5 -1
- package/docs/pl/how_works_intlayer.md +2 -2
- package/docs/pl/interest_of_intlayer.md +7 -7
- package/docs/pl/intlayer_CMS.md +1 -1
- package/docs/pl/intlayer_with_adonisjs.md +1 -1
- package/docs/pl/intlayer_with_analog.md +1 -1
- package/docs/pl/intlayer_with_angular_19.md +1 -1
- package/docs/pl/intlayer_with_angular_21.md +1 -1
- package/docs/pl/intlayer_with_astro.md +1 -1
- package/docs/pl/intlayer_with_astro_lit.md +1 -1
- package/docs/pl/intlayer_with_astro_preact.md +1 -1
- package/docs/pl/intlayer_with_astro_react.md +1 -1
- package/docs/pl/intlayer_with_astro_solid.md +1 -1
- package/docs/pl/intlayer_with_astro_svelte.md +1 -1
- package/docs/pl/intlayer_with_astro_vanilla.md +1 -1
- package/docs/pl/intlayer_with_astro_vue.md +1 -1
- package/docs/pl/intlayer_with_create_react_app.md +1 -1
- package/docs/pl/intlayer_with_express.md +1 -1
- package/docs/pl/intlayer_with_hono.md +1 -1
- package/docs/pl/intlayer_with_nestjs.md +1 -1
- package/docs/pl/intlayer_with_nextjs_14.md +1 -1
- package/docs/pl/intlayer_with_nextjs_15.md +1 -1
- package/docs/pl/intlayer_with_nextjs_16.md +1 -1
- package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pl/intlayer_with_react_router_v7.md +2 -2
- package/docs/pl/intlayer_with_vite+preact.md +1 -1
- package/docs/pl/intlayer_with_vite+react.md +1 -1
- package/docs/pl/intlayer_with_vite+vue.md +1 -1
- package/docs/pl/introduction.md +0 -1
- package/docs/pl/readme.md +8 -8
- package/docs/pt/benchmark/nextjs.md +1 -1
- package/docs/pt/benchmark/solid.md +1 -1
- package/docs/pt/benchmark/svelte.md +1 -1
- package/docs/pt/benchmark/tanstack.md +1 -1
- package/docs/pt/benchmark/vue.md +1 -1
- package/docs/pt/bundle_optimization.md +5 -1
- package/docs/pt/how_works_intlayer.md +2 -2
- package/docs/pt/interest_of_intlayer.md +7 -7
- package/docs/pt/intlayer_CMS.md +1 -1
- package/docs/pt/intlayer_with_adonisjs.md +1 -1
- package/docs/pt/intlayer_with_analog.md +1 -1
- package/docs/pt/intlayer_with_angular_19.md +1 -1
- package/docs/pt/intlayer_with_angular_21.md +1 -1
- package/docs/pt/intlayer_with_astro.md +1 -1
- package/docs/pt/intlayer_with_astro_lit.md +1 -1
- package/docs/pt/intlayer_with_astro_preact.md +1 -1
- package/docs/pt/intlayer_with_astro_react.md +1 -1
- package/docs/pt/intlayer_with_astro_solid.md +1 -1
- package/docs/pt/intlayer_with_astro_svelte.md +1 -1
- package/docs/pt/intlayer_with_astro_vanilla.md +1 -1
- package/docs/pt/intlayer_with_astro_vue.md +1 -1
- package/docs/pt/intlayer_with_create_react_app.md +1 -1
- package/docs/pt/intlayer_with_express.md +1 -1
- package/docs/pt/intlayer_with_hono.md +1 -1
- package/docs/pt/intlayer_with_nestjs.md +1 -1
- package/docs/pt/intlayer_with_nextjs_14.md +1 -1
- package/docs/pt/intlayer_with_nextjs_15.md +1 -1
- package/docs/pt/intlayer_with_nextjs_16.md +1 -1
- package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pt/intlayer_with_react_router_v7.md +2 -2
- package/docs/pt/intlayer_with_vite+preact.md +1 -1
- package/docs/pt/intlayer_with_vite+react.md +1 -1
- package/docs/pt/intlayer_with_vite+vue.md +1 -1
- package/docs/pt/introduction.md +0 -1
- package/docs/pt/readme.md +8 -8
- package/docs/ru/benchmark/nextjs.md +1 -1
- package/docs/ru/benchmark/solid.md +1 -1
- package/docs/ru/benchmark/svelte.md +1 -1
- package/docs/ru/benchmark/tanstack.md +1 -1
- package/docs/ru/benchmark/vue.md +1 -1
- package/docs/ru/bundle_optimization.md +5 -1
- package/docs/ru/how_works_intlayer.md +2 -2
- package/docs/ru/interest_of_intlayer.md +7 -7
- package/docs/ru/intlayer_CMS.md +1 -1
- package/docs/ru/intlayer_with_adonisjs.md +1 -1
- package/docs/ru/intlayer_with_analog.md +1 -1
- package/docs/ru/intlayer_with_angular_19.md +1 -1
- package/docs/ru/intlayer_with_angular_21.md +1 -1
- package/docs/ru/intlayer_with_astro.md +1 -1
- package/docs/ru/intlayer_with_astro_lit.md +1 -1
- package/docs/ru/intlayer_with_astro_preact.md +1 -1
- package/docs/ru/intlayer_with_astro_react.md +1 -1
- package/docs/ru/intlayer_with_astro_solid.md +1 -1
- package/docs/ru/intlayer_with_astro_svelte.md +1 -1
- package/docs/ru/intlayer_with_astro_vanilla.md +1 -1
- package/docs/ru/intlayer_with_astro_vue.md +1 -1
- package/docs/ru/intlayer_with_create_react_app.md +1 -1
- package/docs/ru/intlayer_with_express.md +1 -1
- package/docs/ru/intlayer_with_hono.md +1 -1
- package/docs/ru/intlayer_with_nestjs.md +1 -1
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_nextjs_16.md +1 -1
- package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ru/intlayer_with_react_router_v7.md +2 -2
- package/docs/ru/intlayer_with_vite+preact.md +1 -1
- package/docs/ru/intlayer_with_vite+react.md +1 -1
- package/docs/ru/intlayer_with_vite+vue.md +1 -1
- package/docs/ru/introduction.md +0 -1
- package/docs/ru/readme.md +8 -8
- package/docs/tr/benchmark/nextjs.md +1 -1
- package/docs/tr/benchmark/solid.md +1 -1
- package/docs/tr/benchmark/svelte.md +1 -1
- package/docs/tr/benchmark/tanstack.md +1 -1
- package/docs/tr/benchmark/vue.md +1 -1
- package/docs/tr/bundle_optimization.md +5 -1
- package/docs/tr/how_works_intlayer.md +2 -2
- package/docs/tr/interest_of_intlayer.md +7 -7
- package/docs/tr/intlayer_CMS.md +1 -1
- package/docs/tr/intlayer_with_adonisjs.md +1 -1
- package/docs/tr/intlayer_with_analog.md +1 -1
- package/docs/tr/intlayer_with_angular_19.md +1 -1
- package/docs/tr/intlayer_with_angular_21.md +1 -1
- package/docs/tr/intlayer_with_astro.md +1 -1
- package/docs/tr/intlayer_with_astro_lit.md +1 -1
- package/docs/tr/intlayer_with_astro_preact.md +1 -1
- package/docs/tr/intlayer_with_astro_react.md +1 -1
- package/docs/tr/intlayer_with_astro_solid.md +1 -1
- package/docs/tr/intlayer_with_astro_svelte.md +1 -1
- package/docs/tr/intlayer_with_astro_vanilla.md +1 -1
- package/docs/tr/intlayer_with_astro_vue.md +1 -1
- package/docs/tr/intlayer_with_create_react_app.md +1 -1
- package/docs/tr/intlayer_with_express.md +1 -1
- package/docs/tr/intlayer_with_hono.md +1 -1
- package/docs/tr/intlayer_with_nestjs.md +1 -1
- package/docs/tr/intlayer_with_nextjs_14.md +1 -1
- package/docs/tr/intlayer_with_nextjs_15.md +1 -1
- package/docs/tr/intlayer_with_nextjs_16.md +1 -1
- package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/tr/intlayer_with_react_router_v7.md +1 -1
- package/docs/tr/intlayer_with_vite+preact.md +1 -1
- package/docs/tr/intlayer_with_vite+react.md +1 -1
- package/docs/tr/intlayer_with_vite+vue.md +1 -1
- package/docs/tr/introduction.md +0 -1
- package/docs/tr/readme.md +8 -8
- package/docs/uk/benchmark/nextjs.md +1 -1
- package/docs/uk/benchmark/solid.md +1 -1
- package/docs/uk/benchmark/svelte.md +1 -1
- package/docs/uk/benchmark/tanstack.md +1 -1
- package/docs/uk/benchmark/vue.md +1 -1
- package/docs/uk/bundle_optimization.md +5 -1
- package/docs/uk/how_works_intlayer.md +2 -2
- package/docs/uk/interest_of_intlayer.md +7 -7
- package/docs/uk/intlayer_CMS.md +1 -1
- package/docs/uk/intlayer_with_adonisjs.md +1 -1
- package/docs/uk/intlayer_with_analog.md +1 -1
- package/docs/uk/intlayer_with_angular_19.md +1 -1
- package/docs/uk/intlayer_with_angular_21.md +1 -1
- package/docs/uk/intlayer_with_astro.md +1 -1
- package/docs/uk/intlayer_with_astro_lit.md +1 -1
- package/docs/uk/intlayer_with_astro_preact.md +1 -1
- package/docs/uk/intlayer_with_astro_react.md +1 -1
- package/docs/uk/intlayer_with_astro_solid.md +1 -1
- package/docs/uk/intlayer_with_astro_svelte.md +1 -1
- package/docs/uk/intlayer_with_astro_vanilla.md +1 -1
- package/docs/uk/intlayer_with_astro_vue.md +1 -1
- package/docs/uk/intlayer_with_create_react_app.md +1 -1
- package/docs/uk/intlayer_with_express.md +1 -1
- package/docs/uk/intlayer_with_hono.md +1 -1
- package/docs/uk/intlayer_with_nestjs.md +1 -1
- package/docs/uk/intlayer_with_nextjs_14.md +1 -1
- package/docs/uk/intlayer_with_nextjs_15.md +1 -1
- package/docs/uk/intlayer_with_nextjs_16.md +1 -1
- package/docs/uk/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/uk/intlayer_with_react_router_v7.md +1 -1
- package/docs/uk/intlayer_with_vite+preact.md +1 -1
- package/docs/uk/intlayer_with_vite+react.md +1 -1
- package/docs/uk/intlayer_with_vite+vue.md +1 -1
- package/docs/uk/introduction.md +0 -1
- package/docs/uk/readme.md +8 -8
- package/docs/ur/bundle_optimization.md +5 -1
- package/docs/ur/interest_of_intlayer.md +7 -7
- package/docs/ur/intlayer_with_angular_21.md +1 -1
- package/docs/ur/intlayer_with_hono.md +1 -1
- package/docs/ur/introduction.md +0 -1
- package/docs/vi/benchmark/nextjs.md +1 -1
- package/docs/vi/benchmark/solid.md +1 -1
- package/docs/vi/benchmark/svelte.md +1 -1
- package/docs/vi/benchmark/tanstack.md +1 -1
- package/docs/vi/benchmark/vue.md +1 -1
- package/docs/vi/bundle_optimization.md +5 -1
- package/docs/vi/how_works_intlayer.md +2 -2
- package/docs/vi/interest_of_intlayer.md +7 -7
- package/docs/vi/intlayer_CMS.md +1 -1
- package/docs/vi/intlayer_with_adonisjs.md +1 -1
- package/docs/vi/intlayer_with_analog.md +1 -1
- package/docs/vi/intlayer_with_angular_19.md +1 -1
- package/docs/vi/intlayer_with_angular_21.md +1 -1
- package/docs/vi/intlayer_with_astro.md +1 -1
- package/docs/vi/intlayer_with_astro_lit.md +1 -1
- package/docs/vi/intlayer_with_astro_preact.md +1 -1
- package/docs/vi/intlayer_with_astro_react.md +1 -1
- package/docs/vi/intlayer_with_astro_solid.md +1 -1
- package/docs/vi/intlayer_with_astro_svelte.md +1 -1
- package/docs/vi/intlayer_with_astro_vanilla.md +1 -1
- package/docs/vi/intlayer_with_astro_vue.md +1 -1
- package/docs/vi/intlayer_with_create_react_app.md +1 -1
- package/docs/vi/intlayer_with_express.md +1 -1
- package/docs/vi/intlayer_with_hono.md +1 -1
- package/docs/vi/intlayer_with_nestjs.md +1 -1
- package/docs/vi/intlayer_with_nextjs_14.md +1 -1
- package/docs/vi/intlayer_with_nextjs_15.md +1 -1
- package/docs/vi/intlayer_with_nextjs_16.md +1 -1
- package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/vi/intlayer_with_vite+preact.md +1 -1
- package/docs/vi/intlayer_with_vite+react.md +1 -1
- package/docs/vi/intlayer_with_vite+vue.md +1 -1
- package/docs/vi/introduction.md +0 -1
- package/docs/vi/readme.md +8 -8
- package/docs/zh/benchmark/nextjs.md +1 -1
- package/docs/zh/benchmark/solid.md +1 -1
- package/docs/zh/benchmark/svelte.md +1 -1
- package/docs/zh/benchmark/tanstack.md +1 -1
- package/docs/zh/benchmark/vue.md +1 -1
- package/docs/zh/bundle_optimization.md +5 -1
- package/docs/zh/how_works_intlayer.md +2 -2
- package/docs/zh/interest_of_intlayer.md +7 -7
- package/docs/zh/intlayer_CMS.md +1 -1
- package/docs/zh/intlayer_with_adonisjs.md +1 -1
- package/docs/zh/intlayer_with_analog.md +1 -1
- package/docs/zh/intlayer_with_angular_19.md +1 -1
- package/docs/zh/intlayer_with_angular_21.md +1 -1
- package/docs/zh/intlayer_with_astro.md +1 -1
- package/docs/zh/intlayer_with_astro_lit.md +1 -1
- package/docs/zh/intlayer_with_astro_preact.md +1 -1
- package/docs/zh/intlayer_with_astro_react.md +1 -1
- package/docs/zh/intlayer_with_astro_solid.md +1 -1
- package/docs/zh/intlayer_with_astro_svelte.md +1 -1
- package/docs/zh/intlayer_with_astro_vanilla.md +1 -1
- package/docs/zh/intlayer_with_astro_vue.md +1 -1
- package/docs/zh/intlayer_with_create_react_app.md +1 -1
- package/docs/zh/intlayer_with_express.md +1 -1
- package/docs/zh/intlayer_with_hono.md +1 -1
- package/docs/zh/intlayer_with_nestjs.md +1 -1
- package/docs/zh/intlayer_with_nextjs_14.md +1 -1
- package/docs/zh/intlayer_with_nextjs_15.md +1 -1
- package/docs/zh/intlayer_with_nextjs_16.md +1 -1
- package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7.md +2 -2
- package/docs/zh/intlayer_with_vite+preact.md +1 -1
- package/docs/zh/intlayer_with_vite+react.md +1 -1
- package/docs/zh/intlayer_with_vite+vue.md +1 -1
- package/docs/zh/introduction.md +0 -1
- package/docs/zh/readme.md +8 -8
- package/docs/zh-TW/bundle_optimization.md +5 -1
- package/docs/zh-TW/interest_of_intlayer.md +7 -7
- package/docs/zh-TW/intlayer_with_angular_21.md +1 -1
- package/docs/zh-TW/introduction.md +0 -1
- package/frequent_questions/ar/claude_code_token_consumption.md +152 -0
- package/frequent_questions/de/claude_code_token_consumption.md +152 -0
- package/frequent_questions/en/claude_code_token_consumption.md +152 -0
- package/frequent_questions/en-GB/claude_code_token_consumption.md +152 -0
- package/frequent_questions/es/claude_code_token_consumption.md +152 -0
- package/frequent_questions/fr/claude_code_token_consumption.md +152 -0
- package/frequent_questions/hi/claude_code_token_consumption.md +152 -0
- package/frequent_questions/id/claude_code_token_consumption.md +152 -0
- package/frequent_questions/it/claude_code_token_consumption.md +152 -0
- package/frequent_questions/ja/claude_code_token_consumption.md +152 -0
- package/frequent_questions/ko/claude_code_token_consumption.md +152 -0
- package/frequent_questions/pl/claude_code_token_consumption.md +152 -0
- package/frequent_questions/pt/claude_code_token_consumption.md +152 -0
- package/frequent_questions/ru/claude_code_token_consumption.md +152 -0
- package/frequent_questions/tr/claude_code_token_consumption.md +152 -0
- package/frequent_questions/uk/claude_code_token_consumption.md +152 -0
- package/frequent_questions/vi/claude_code_token_consumption.md +152 -0
- package/frequent_questions/zh/claude_code_token_consumption.md +152 -0
- package/package.json +8 -7
- package/src/generated/blog.entry.ts +240 -0
- package/src/generated/frequentQuestions.entry.ts +20 -0
- package/blog/en/___per-component_vs_centralized_i18n.md +0 -255
- package/blog/pl/___per-component_vs_centralized_i18n.md +0 -100
- package/docs/en/benchmark/___NOTE.md +0 -101
- package/docs/en/benchmark/___nextjs.md +0 -197
- package/docs/en/benchmark/___solid.md +0 -12
- package/docs/en/benchmark/___svelte.md +0 -16
- package/docs/en/benchmark/___tanstack.md +0 -190
- package/docs/en/benchmark/___vue.md +0 -7
- package/docs/pl/benchmark/___NOTE.md +0 -101
- package/docs/pl/benchmark/___nextjs.md +0 -198
- package/docs/pl/benchmark/___solid.md +0 -36
- package/docs/pl/benchmark/___svelte.md +0 -36
- package/docs/pl/benchmark/___tanstack.md +0 -36
- package/docs/pl/benchmark/___vue.md +0 -36
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-13
|
|
3
|
+
updatedAt: 2026-09-13
|
|
4
|
+
title: Çeviri üretirken Claude Code token tüketimi nasıl sınırlandırılır
|
|
5
|
+
description: Claude Code ile çeviri yapmanın neden aşırı token harcadığı, Intlayer'ın bunun yerine ne yaptığı (çevrilmiş anahtarları filtreler, JSON'u parçalar, markdown'ı blok blok çevirir) ve claude setup-token ile Claude aboneliğinizi nasıl yeniden kullanabileceğiniz.
|
|
6
|
+
keywords:
|
|
7
|
+
- claude code
|
|
8
|
+
- tokens
|
|
9
|
+
- token tüketimi
|
|
10
|
+
- setup-token
|
|
11
|
+
- i18n
|
|
12
|
+
- uluslararasılaştırma
|
|
13
|
+
- çeviri
|
|
14
|
+
- fill
|
|
15
|
+
- mcp
|
|
16
|
+
- ajan
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- claude-code-token-consumption
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Çeviri üretirken Claude Code token tüketimi nasıl sınırlandırılır
|
|
24
|
+
|
|
25
|
+
## Sorun Açıklaması
|
|
26
|
+
|
|
27
|
+
Claude Code'dan (veya herhangi bir kodlama ajanından) içeriğinizi çevirmesini istemek, bu işi yapmanın en maliyetli yoludur. Her çalıştırmada ajanın şunları yapması gerekir:
|
|
28
|
+
|
|
29
|
+
- Zaten çevrilmiş anahtarlar dahil olmak üzere tüm JSON veya içerik dosyasını bağlamına yüklemek.
|
|
30
|
+
- İçeriğin nerede bulunduğunu ve nasıl yapılandırıldığını anlamak için ilgili dosyaları aramak.
|
|
31
|
+
- Hangi dillerin eksik olduğunu ve oluşturulması gerektiğini belirlemek.
|
|
32
|
+
- Özel talimatlarınızı her seferinde yeniden okumak ("URL'leri şu şekilde dönüştür", "marka adını İngilizce bırak", "samimi bir dil kullan").
|
|
33
|
+
- Değişmeyen kısımlar dahil olmak üzere tüm dosyayı baştan yazmak.
|
|
34
|
+
|
|
35
|
+
Tüm bunlar her turda yeniden gönderilir, bu nedenle maliyet `içerik boyutu × dil sayısı × tur sayısı` formülüyle katlanarak artar ve biçimlendirme veya anahtarlardaki herhangi bir kaymanın manuel olarak düzeltilmesi gerekir.
|
|
36
|
+
|
|
37
|
+
## Intlayer bunun yerine ne yapar
|
|
38
|
+
|
|
39
|
+
Intlayer'ın temel avantajı, bu işi ajanın dışında, çeviri için özel olarak oluşturulmuş bir işlem hattıyla (pipeline) gerçekleştirmesidir:
|
|
40
|
+
|
|
41
|
+
- **Mevcut çevirileri filtreler** ve token kullanımını sınırlar. JSON'unuzda zaten çevrilmiş olan anahtarlar ayıklanır ve modele yalnızca eksik olanlar gönderilir.
|
|
42
|
+
- **Markdown'ı blok blok çevirir.** Belgeler için [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/doc-translate.md) ve [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/doc-review.md) komutları, her bloğu temel belgeyle karşılaştırır ve zaten çevrilmiş veya değişmemiş blokları atlar.
|
|
43
|
+
- **JSON'unuz çok büyükse parçalara (chunk) ayırır**, böylece bağlam penceresinin en verimli aralığında kalınmasını sağlar.
|
|
44
|
+
- **JSON'unuzu düzleştirir ve yeniden yapılandırır**, bu sayede token tüketimini optimize eder.
|
|
45
|
+
- **Özel komut istemleri ekler**, böylece markanız ve terminolojinizle ilgili özel kuralları (`applicationContext`, `--custom-instructions`) her sohbette tekrarlamak yerine yalnızca bir kez tanımlarsınız.
|
|
46
|
+
- **Yapıyı doğrular**, tutarlılığı garanti altına alır, anahtar kaymalarını önler ve biçimlendirmeyi (markdown, HTML, eklemeler, çoğullar) korur.
|
|
47
|
+
- **Yeniden deneme (retry) yönetimi uygular**, böylece çıktı hatalı olduğunda süreci otomatik olarak toparlar.
|
|
48
|
+
- **İstekleri sıraya alır ve paralelleştirir**, dosyalar, parçalar ve diller arasında işlem hızını artırır.
|
|
49
|
+
|
|
50
|
+
Bunların hiçbiri ajanın bağlamından geçmez. Temel kural: neyin uluslararasılaştırılacağına ajanın karar vermesini sağlayın, tekrarlayan rutin işleri ise Intlayer'a bırakın.
|
|
51
|
+
|
|
52
|
+
## Çözüm
|
|
53
|
+
|
|
54
|
+
### 1. Ayıklama işlemini `intlayer extract` komutuna devredin
|
|
55
|
+
|
|
56
|
+
Ajanın her bileşeni elle yeniden yazmasını istemek yerine [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/extract.md) komutunu çalıştırmasını sağlayın. Bu komut, tüm dosyayı ajanın bağlamına yüklemeden sabit kodlanmış metinleri bileşenin yanındaki bir `.content` dosyasına taşır.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx intlayer extract --file src/components/Header.tsx
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 2. Çeviri işlemini `intlayer fill` komutuna devredin
|
|
63
|
+
|
|
64
|
+
Ajanın doğrudan çeviri yapmasını asla istemeyin. [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/fill.md) komutu yukarıdaki işlem hattını uygular: yalnızca eksik anahtarları gönderir, bunları parçalara ayırır, dilleri paralel olarak çalıştırır ve sonucu içerik dosyalarınıza geri yazar.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx intlayer fill
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Birkaç bayrak işlemi sınırlandırmanızı sağlar:
|
|
71
|
+
|
|
72
|
+
- `--git-diff` (veya `--uncommitted`) yalnızca geçerli daldaki değiştirilmiş sözlükleri işler.
|
|
73
|
+
- `--file` veya `--keys` belirli içerik dosyalarını hedefler.
|
|
74
|
+
- `--output-locales fr es` çalışmayı yalnızca şu anda gerçekten ihtiyacınız olan dillerle sınırlandırır.
|
|
75
|
+
- `--skip-metadata` başlık, açıklama ve etiket oluşturmayı atlar.
|
|
76
|
+
- `--data-serialization toon` modele daha kompakt bir veri yükü gönderir (daha az token, biraz daha az öngörülebilir çıktı).
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx intlayer fill --git-diff --output-locales fr es --skip-metadata
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. Markdown'ı `doc translate` ve `doc review` ile çevirin
|
|
83
|
+
|
|
84
|
+
Bir ajandan `.md` dosyasını çevirmesini istemek, her değişiklikte ve her dil için tüm belgenin yapıştırılması anlamına gelir. Buna karşılık [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/doc-translate.md) ve [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/doc-review.md) komutları blok blok çalışır.
|
|
85
|
+
|
|
86
|
+
Çevrilmiş dosya henüz mevcut olmadığında `doc translate` kullanın. Markdown'ı parçalara böler, paralel olarak çevirir ve hedef dosyaları yazar:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Çevrilmiş dosya zaten mevcut olduğunda `doc review` kullanın. Her bloğu temel belgeyle karşılaştırır, zaten çevrilmiş veya değişmemiş blokları atlar ve yalnızca farklılık gösteren blokları gönderir:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Her iki komut da kurallarınızı her istemde tekrarlamak yerine tek bir seferde kabul eder:
|
|
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
|
+
Intlayer tarafında herhangi bir yapay zeka çağrısı olmadan ajanın döngüde kalması gerektiğinde `doc review` komutunun iki modu oldukça kullanışlıdır:
|
|
105
|
+
|
|
106
|
+
- `--mode report` müdahale gerektiren blokları satır numaralarıyla birlikte günlüğe kaydeder, böylece ajan yalnızca bu blokları düzenler.
|
|
107
|
+
- `--mode synthesis` yalnızca hangi belgelerin güncel olduğunu ve hangilerinde düzenlenecek blok kaldığını raporlar.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx intlayer doc review --mode report --locales fr
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 4. Ajanın CLI'ı MCP sunucusu üzerinden çağırmasını sağlayın
|
|
114
|
+
|
|
115
|
+
[Intlayer MCP sunucusu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/mcp_server.md) sayesinde ajan güncel belgelere dayanarak yanıt verir ve konuşma içinde mantığı yeniden üretmek yerine `intlayer fill` veya `intlayer doc review` komutlarını doğrudan kendisi çalıştırır.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
claude mcp add intlayer npx -y @intlayer/mcp
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
`npx intlayer init skills` ile [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/agent_skills.md) kurulumunu yapmak, ajanın Intlayer API'sini tahmin etmesini ve her görevde belgeleri tekrar okumasını da engeller.
|
|
122
|
+
|
|
123
|
+
### 5. Claude aboneliğinizi `claude setup-token` ile yeniden kullanın
|
|
124
|
+
|
|
125
|
+
Etkileşimli Claude Code oturumunuzda i18n kurulumunu çalıştırmak, tüm konuşma geçmişini bağlamda tutar. Bunun yerine yoğun iş yükünü kısa ve gözetimsiz (headless) bir oturuma taşıyın.
|
|
126
|
+
|
|
127
|
+
Claude aboneliğinizden uzun ömürlü bir token oluşturun:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
claude setup-token
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Bunu `CLAUDE_CODE_OAUTH_TOKEN` olarak kaydedin (bir `.env` dosyasında veya CI sırlarınızda), ardından Intlayer komutlarını çalıştıran tek seferlik bir oturum için yeniden kullanın:
|
|
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
|
+
Oturum, önceki konuşma geçmişinizi taşımadan yalnızca bu komut istemini ve komut çıktısını barındırır. Aynı token, her çekme isteğinde (Pull Request) `intlayer fill` çalıştırmak için [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) içinde de çalışır.
|
|
140
|
+
|
|
141
|
+
> `claude setup-token` tarafından verilen token yalnızca Claude Code kimliğini doğrular. `ai.apiKey` içinde bir Anthropic API anahtarı olarak kullanılamaz. Çevirinin kendisi için `intlayer fill`, [Intlayer hesabınızı](https://app.intlayer.org) (ücretsiz plan dahildir) veya [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md#ai-configuration) içinde yapılandırılan kendi sağlayıcı anahtarınızı kullanır.
|
|
142
|
+
|
|
143
|
+
## Özet
|
|
144
|
+
|
|
145
|
+
| Görev | Kim yapar | Ajan bağlamındaki tokenlar |
|
|
146
|
+
| --------------------------------------- | ------------------------ | -------------------------- |
|
|
147
|
+
| Neyin yerelleştirileceğine karar vermek | Claude Code | Düşük |
|
|
148
|
+
| Dizeleri ayıklamak | `intlayer extract` | Yok |
|
|
149
|
+
| İçeriği çevirmek | `intlayer fill` | Yok |
|
|
150
|
+
| Belgeleri çevirmek | `intlayer doc translate` | Yok |
|
|
151
|
+
| Belgeleri güncellemek | `intlayer doc review` | Yok |
|
|
152
|
+
| Komutları çalıştırmak | Headless Claude Code | İstem + komut çıktısı |
|
|
@@ -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 за допомогою 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 під час генерації перекладів
|
|
24
|
+
|
|
25
|
+
## Опис проблеми
|
|
26
|
+
|
|
27
|
+
Звернення до Claude Code (або будь-якого іншого кодинг-агента) для перекладу вашого контенту є найдорожчим способом. Під час кожного запуску агент змушений:
|
|
28
|
+
|
|
29
|
+
- Завантажувати повний файл JSON або файл контенту у свій контекст, навіть ті ключі, які вже перекладені.
|
|
30
|
+
- Шукати пов'язані файли, щоб зрозуміти, де розташований контент та як він структурований.
|
|
31
|
+
- Визначати, які локалі відсутні та мають бути згенеровані.
|
|
32
|
+
- Щоразу наново зчитувати ваші користувацькі інструкції ("перетворювати URL-адреси саме так", "залишати назву бренду англійською", "використовувати звернення на ти").
|
|
33
|
+
- Переписувати весь файл цілком, включаючи частини, які не зазнали змін.
|
|
34
|
+
|
|
35
|
+
Усе це повторно надсилається на кожній ітерації, через що витрати зростають за формулою `розмір контенту × кількість локалей × кількість ітерацій`, а будь-які невідповідності форматування чи ключів доводиться виправляти вручну.
|
|
36
|
+
|
|
37
|
+
## Що Intlayer робить натомість
|
|
38
|
+
|
|
39
|
+
Перевага Intlayer полягає у виконанні цієї роботи за межами агента завдяки конвеєру (pipeline), створеному спеціально для перекладу:
|
|
40
|
+
|
|
41
|
+
- **Фільтрує наявні переклади** для обмеження використання токенів. Вже перекладені ключі у вашому JSON відсіюються, і до моделі надсилаються лише відсутні.
|
|
42
|
+
- **Перекладає markdown блок за блоком.** Для документації команди [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/doc-translate.md) та [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/doc-review.md) порівнюють кожен блок із базовим документом та пропускають блоки, які вже перекладені або не змінилися.
|
|
43
|
+
- **Розбиває JSON на частини (chunking)**, якщо він завеликий, щоб залишатися в оптимальній зоні контекстного вікна.
|
|
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/uk/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/uk/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/uk/cli/doc-translate.md) та [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/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
|
+
Завдяки [серверу MCP Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/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/uk/agent_skills.md) за допомогою `npx intlayer init skills` також позбавляє агента необхідності вгадувати API 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/uk/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
|
+
| Виконувати команди | Headless Claude Code | Промпт + вивід команди |
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-13
|
|
3
|
+
updatedAt: 2026-09-13
|
|
4
|
+
title: Cách giới hạn mức tiêu thụ token của Claude Code khi tạo bản dịch
|
|
5
|
+
description: Tại sao dịch thuật bằng Claude Code gây lãng phí token, những gì Intlayer thực hiện thay thế (lọc các khóa đã dịch, chia nhỏ JSON, dịch markdown theo từng khối) và cách tái sử dụng gói đăng ký Claude với claude setup-token.
|
|
6
|
+
keywords:
|
|
7
|
+
- claude code
|
|
8
|
+
- tokens
|
|
9
|
+
- tiêu thụ token
|
|
10
|
+
- setup-token
|
|
11
|
+
- i18n
|
|
12
|
+
- quốc tế hóa
|
|
13
|
+
- dịch thuật
|
|
14
|
+
- fill
|
|
15
|
+
- mcp
|
|
16
|
+
- agent
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- claude-code-token-consumption
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Cách giới hạn mức tiêu thụ token của Claude Code khi tạo bản dịch
|
|
24
|
+
|
|
25
|
+
## Mô tả vấn đề
|
|
26
|
+
|
|
27
|
+
Yêu cầu Claude Code (hoặc bất kỳ agent lập trình nào) dịch nội dung là phương pháp tốn kém nhất. Trong mỗi lần chạy, agent phải:
|
|
28
|
+
|
|
29
|
+
- Tải toàn bộ tệp JSON hoặc tệp nội dung vào ngữ cảnh, bao gồm cả những khóa đã được dịch.
|
|
30
|
+
- Tìm kiếm các tệp liên quan để xác định vị trí và cấu trúc của nội dung.
|
|
31
|
+
- Tìm ra những ngôn ngữ (locales) còn thiếu và cần được tạo.
|
|
32
|
+
- Đọc lại các hướng dẫn tùy chỉnh của bạn mỗi lần ("chuyển đổi URL theo cách này", "giữ nguyên tên thương hiệu bằng tiếng Anh", "dùng văn phong thân mật").
|
|
33
|
+
- Viết lại toàn bộ tệp, bao gồm cả những phần không hề thay đổi.
|
|
34
|
+
|
|
35
|
+
Tất cả những dữ liệu đó đều được gửi lại ở mỗi lượt tương tác, khiến chi phí tăng theo công thức `kích thước nội dung × số lượng ngôn ngữ × số lượt tương tác`, và mọi sai lệch về định dạng hoặc khóa đều phải rà soát thủ công.
|
|
36
|
+
|
|
37
|
+
## Những gì Intlayer thực hiện thay thế
|
|
38
|
+
|
|
39
|
+
Lợi ích của Intlayer là xử lý công việc đó bên ngoài agent, thông qua một pipeline được xây dựng chuyên biệt cho việc dịch thuật:
|
|
40
|
+
|
|
41
|
+
- **Lọc các bản dịch đã có** để giảm thiểu việc sử dụng token. Các khóa đã được dịch trong JSON sẽ được loại bỏ, chỉ các khóa còn thiếu mới được gửi đến mô hình.
|
|
42
|
+
- **Dịch markdown theo từng khối.** Đối với tài liệu, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/doc-translate.md) và [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/doc-review.md) so sánh từng khối với tài liệu gốc và bỏ qua các khối đã được dịch hoặc không thay đổi.
|
|
43
|
+
- **Chia nhỏ JSON (chunking)** nếu tệp quá lớn để luôn nằm trong vùng tối ưu của cửa sổ ngữ cảnh.
|
|
44
|
+
- **Làm phẳng và tái cấu trúc JSON** nhằm tối ưu hóa lượng token tiêu thụ.
|
|
45
|
+
- **Chèn prompt tùy chỉnh** cho các quy tắc cụ thể về thương hiệu và câu từ (`applicationContext`, `--custom-instructions`), giúp bạn chỉ cần viết một lần thay vì lặp lại trong mỗi cuộc trò chuyện.
|
|
46
|
+
- **Xác thực cấu trúc** để đảm bảo tính nhất quán và ngăn ngừa sai lệch khóa, đồng thời giữ nguyên định dạng (markdown, HTML, biến chèn, số nhiều).
|
|
47
|
+
- **Áp dụng cơ chế thử lại (retry)** khi định dạng đầu ra không hợp lệ.
|
|
48
|
+
- **Xếp hàng và xử lý song song các yêu cầu** giữa các tệp, khối dữ liệu và ngôn ngữ để tăng tốc độ.
|
|
49
|
+
|
|
50
|
+
Không có bước nào trong số này đi qua ngữ cảnh của agent. Nguyên tắc cốt lõi: để agent quyết định **cần** quốc tế hóa nội dung nào, và để Intlayer đảm nhận công việc lặp đi lặp lại.
|
|
51
|
+
|
|
52
|
+
## Giải pháp
|
|
53
|
+
|
|
54
|
+
### 1. Ủy quyền việc trích xuất cho `intlayer extract`
|
|
55
|
+
|
|
56
|
+
Thay vì yêu cầu agent viết lại từng component theo cách thủ công, hãy để agent chạy lệnh [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/extract.md). Lệnh này sẽ chuyển các chuỗi văn bản cố định sang tệp `.content` ngay cạnh component mà không cần tải toàn bộ tệp vào ngữ cảnh của agent.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx intlayer extract --file src/components/Header.tsx
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 2. Ủy quyền việc dịch thuật cho `intlayer fill`
|
|
63
|
+
|
|
64
|
+
Tuyệt đối không yêu cầu agent dịch trực tiếp. Lệnh [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/fill.md) áp dụng pipeline đã nêu: chỉ gửi các khóa còn thiếu, chia nhỏ chúng, xử lý song song các ngôn ngữ và ghi kết quả trở lại các tệp nội dung của bạn.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx intlayer fill
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Một số flag giúp giới hạn phạm vi thực thi:
|
|
71
|
+
|
|
72
|
+
- `--git-diff` (hoặc `--uncommitted`) chỉ xử lý các từ điển bị thay đổi trong nhánh hiện tại.
|
|
73
|
+
- `--file` hoặc `--keys` nhắm mục tiêu vào các tệp nội dung cụ thể.
|
|
74
|
+
- `--output-locales fr es` giới hạn thực thi cho các ngôn ngữ bạn thực sự cần lúc này.
|
|
75
|
+
- `--skip-metadata` bỏ qua bước tạo tiêu đề, mô tả và thẻ tag.
|
|
76
|
+
- `--data-serialization toon` gửi dữ liệu gọn gàng hơn đến mô hình (tiết kiệm token, đầu ra có thể hơi khác biệt).
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx intlayer fill --git-diff --output-locales fr es --skip-metadata
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. Dịch markdown bằng `doc translate` và `doc review`
|
|
83
|
+
|
|
84
|
+
Yêu cầu agent dịch tệp `.md` đồng nghĩa với việc dán toàn bộ tài liệu cho từng ngôn ngữ sau mỗi lần thay đổi. Ngược lại, các lệnh [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/doc-translate.md) và [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/doc-review.md) xử lý theo từng khối.
|
|
85
|
+
|
|
86
|
+
Sử dụng `doc translate` khi tệp dịch chưa tồn tại. Lệnh sẽ chia nhỏ markdown, dịch song song và tạo các tệp đích:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Sử dụng `doc review` khi tệp dịch đã tồn tại. Lệnh sẽ so sánh từng khối với tài liệu gốc, bỏ qua các khối đã được dịch hoặc không đổi, và chỉ gửi các khối có sự khác biệt:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Cả hai lệnh đều tiếp nhận các quy tắc của bạn một lần duy nhất, tránh việc phải lặp lại trong mọi 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
|
+
Hai chế độ của `doc review` rất hữu ích khi agent cần tham gia vào quy trình mà không làm phát sinh lệnh gọi AI nào từ phía Intlayer:
|
|
105
|
+
|
|
106
|
+
- `--mode report` ghi lại các khối cần chú ý kèm theo số dòng, giúp agent chỉ chỉnh sửa các khối đó.
|
|
107
|
+
- `--mode synthesis` chỉ thông báo tài liệu nào đã cập nhật và tài liệu nào còn các khối cần chỉnh sửa.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx intlayer doc review --mode report --locales fr
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 4. Để agent gọi CLI thông qua máy chủ MCP
|
|
114
|
+
|
|
115
|
+
Với [máy chủ Intlayer MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/mcp_server.md), agent trả lời dựa trên tài liệu mới nhất và tự chạy `intlayer fill` hoặc `intlayer doc review` thay vì triển khai lại logic đó trong cuộc hội thoại.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
claude mcp add intlayer npx -y @intlayer/mcp
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Cài đặt [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/agent_skills.md) với `npx intlayer init skills` cũng giúp ngăn agent phỏng đoán API của Intlayer và đọc lại tài liệu trong mỗi tác vụ.
|
|
122
|
+
|
|
123
|
+
### 5. Tái sử dụng gói đăng ký Claude với `claude setup-token`
|
|
124
|
+
|
|
125
|
+
Chạy cấu hình i18n trong phiên Claude Code tương tác sẽ lưu toàn bộ lịch sử trò chuyện trong ngữ cảnh. Hãy chuyển tác vụ nặng này sang một phiên headless ngắn gọn.
|
|
126
|
+
|
|
127
|
+
Tạo token dài hạn từ gói đăng ký Claude của bạn:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
claude setup-token
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Lưu dưới dạng `CLAUDE_CODE_OAUTH_TOKEN` (trong tệp `.env` hoặc trong bí mật CI của bạn), sau đó tái sử dụng cho phiên chạy đơn lẻ thực thi các lệnh 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
|
+
Phiên này chỉ mang theo prompt đó và kết quả đầu ra của lệnh, không bao gồm toàn bộ cuộc trò chuyện trước đây. Token tương tự cũng hoạt động trong [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) để chạy `intlayer fill` trên mỗi pull request.
|
|
140
|
+
|
|
141
|
+
> Token được cấp bởi `claude setup-token` chỉ xác thực cho Claude Code. Token này không thể sử dụng làm khóa Anthropic API trong `ai.apiKey`. Đối với bản dịch, `intlayer fill` sử dụng [tài khoản Intlayer](https://app.intlayer.org) của bạn (đã bao gồm gói miễn phí) hoặc khóa nhà cung cấp riêng được cấu hình trong [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/configuration.md#ai-configuration).
|
|
142
|
+
|
|
143
|
+
## Tóm tắt
|
|
144
|
+
|
|
145
|
+
| Tác vụ | Người thực hiện | Token trong ngữ cảnh của agent |
|
|
146
|
+
| ----------------------------------- | ------------------------ | ------------------------------ |
|
|
147
|
+
| Quyết định nội dung cần bản địa hóa | Claude Code | Thấp |
|
|
148
|
+
| Trích xuất chuỗi văn bản | `intlayer extract` | Không có |
|
|
149
|
+
| Dịch nội dung | `intlayer fill` | Không có |
|
|
150
|
+
| Dịch tài liệu | `intlayer doc translate` | Không có |
|
|
151
|
+
| Cập nhật tài liệu | `intlayer doc review` | Không có |
|
|
152
|
+
| Chạy các lệnh | Headless Claude Code | Prompt + đầu ra của lệnh |
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-13
|
|
3
|
+
updatedAt: 2026-09-13
|
|
4
|
+
title: 如何限制 Claude Code 生成翻译时的 Token 消耗
|
|
5
|
+
description: 为什么使用 Claude Code 进行翻译会大量消耗 Token,Intlayer 如何取而代之(过滤已翻译的键、切分 JSON、逐块翻译 Markdown),以及如何通过 claude setup-token 复用 Claude 订阅。
|
|
6
|
+
keywords:
|
|
7
|
+
- claude code
|
|
8
|
+
- tokens
|
|
9
|
+
- token 消耗
|
|
10
|
+
- setup-token
|
|
11
|
+
- i18n
|
|
12
|
+
- 国际化
|
|
13
|
+
- 翻译
|
|
14
|
+
- fill
|
|
15
|
+
- mcp
|
|
16
|
+
- agent
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- claude-code-token-consumption
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# 如何限制 Claude Code 生成翻译时的 Token 消耗
|
|
24
|
+
|
|
25
|
+
## 问题描述
|
|
26
|
+
|
|
27
|
+
让 Claude Code(或任何编码 Agent)直接翻译内容是最昂贵的做法。每次执行时,Agent 都必须:
|
|
28
|
+
|
|
29
|
+
- 将整个 JSON 或内容文件加载到上下文中,甚至包括已经翻译过的键。
|
|
30
|
+
- 检索相关文件以确定内容的存放位置和结构。
|
|
31
|
+
- 分析缺少哪些语言环境(Locales)并需要生成。
|
|
32
|
+
- 每次都要重新阅读您的自定义指令(“按此规则转换 URL”,“保留英文品牌名称”,“使用非正式语气”等)。
|
|
33
|
+
- 重写整个文件,包括未发生变动的部分。
|
|
34
|
+
|
|
35
|
+
所有这些内容在每次对话轮次中都会被重新发送,导致成本随着 `内容大小 × 语言环境数量 × 对话轮次` 呈倍数增长,而且格式或键名出现的任何偏差都必须手动排查。
|
|
36
|
+
|
|
37
|
+
## Intlayer 采取的替代方案
|
|
38
|
+
|
|
39
|
+
Intlayer 的优势在于将这些工作移至 Agent 之外,通过专为翻译构建的流水线来完成:
|
|
40
|
+
|
|
41
|
+
- **过滤已存在的翻译**以限制 Token 消耗。JSON 中已翻译的键会被剥离,仅将缺失的键发送给模型。
|
|
42
|
+
- **逐块翻译 Markdown。** 对于文档,[`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/doc-translate.md) 与 [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/doc-review.md) 会将每个文本块与基础文档进行比对,直接跳过已翻译或未更改的块。
|
|
43
|
+
- **超大 JSON 自动分块(Chunking)**,使其始终处于上下文窗口的最佳处理区间内。
|
|
44
|
+
- **扁平化与重构 JSON** 以优化 Token 消耗。
|
|
45
|
+
- **插入自定义 Prompt** 以适配品牌与术语规则(`applicationContext`, `--custom-instructions`),只需编写一次,无需在每次对话中反复传递。
|
|
46
|
+
- **校验数据结构**以确保一致性并防止键名漂移,同时完整保留原始排版格式(Markdown、HTML、插值、复数等)。
|
|
47
|
+
- **内置重试机制**以应对输出格式错误。
|
|
48
|
+
- **请求排队与并行处理**跨文件、分块和语言环境,显著提高翻译速度。
|
|
49
|
+
|
|
50
|
+
所有这些工作都不会占用 Agent 的上下文。黄金法则是:让 Agent 决定**需要国际化什么**,而让 Intlayer 处理繁重的重复性流水线。
|
|
51
|
+
|
|
52
|
+
## 解决方案
|
|
53
|
+
|
|
54
|
+
### 1. 将提取工作委托给 `intlayer extract`
|
|
55
|
+
|
|
56
|
+
无需让 Agent 手动重写每个组件,直接运行 [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md) 命令即可。它会将硬编码字符串提取到组件同目录下的 `.content` 文件中,而不会将完整文件加载到 Agent 上下文中。
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx intlayer extract --file src/components/Header.tsx
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 2. 将翻译工作委托给 `intlayer fill`
|
|
63
|
+
|
|
64
|
+
切勿让 Agent 直接进行翻译。[`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/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` 向模型发送更紧凑的数据格式(更少的 Token,输出略微不可控)。
|
|
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
|
+
让 Agent 翻译 `.md` 文件意味着每次修改都要在每个语言环境中粘贴整个文档。而 [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/doc-translate.md) 和 [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/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
|
+
在需要 Agent 参与但无需 Intlayer 发起 AI 调用的场景下,`doc review` 的两种模式非常实用:
|
|
105
|
+
|
|
106
|
+
- `--mode report` 输出需要关注的文本块及行号,让 Agent 仅修改这些特定块。
|
|
107
|
+
- `--mode synthesis` 仅输出哪些文档是最新的,哪些文档仍有待编辑的块。
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx intlayer doc review --mode report --locales fr
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 4. 让 Agent 通过 MCP 服务调用 CLI
|
|
114
|
+
|
|
115
|
+
借助 [Intlayer MCP 服务](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/mcp_server.md),Agent 可以依据最新的文档回答,并自行执行 `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/zh/agent_skills.md),还可以避免 Agent 盲目猜测 Intlayer API 或在每个任务中重复阅读文档。
|
|
122
|
+
|
|
123
|
+
### 5. 通过 `claude setup-token` 复用 Claude 订阅
|
|
124
|
+
|
|
125
|
+
在交互式 Claude Code 会话中运行国际化设置会将整个对话历史保留在上下文中。将繁重的工作移至简短的无头(Headless)会话中执行:
|
|
126
|
+
|
|
127
|
+
从 Claude 订阅中生成长效 Token:
|
|
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
|
+
该会话仅包含该 Prompt 和命令输出,无需携带冗长的对话上下文。同一个 Token 也可以在 [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) 中使用,从而在每次 Pull Request 时运行 `intlayer fill`。
|
|
140
|
+
|
|
141
|
+
> 通过 `claude setup-token` 颁发的 Token 仅用于 Claude Code 认证。它不能在 `ai.apiKey` 中作为 Anthropic API Key 使用。对于翻译本身,`intlayer fill` 会使用您的 [Intlayer 账户](https://app.intlayer.org)(包含免费额度)或在 [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#ai-configuration) 中配置的专属模型 Key。
|
|
142
|
+
|
|
143
|
+
## 总结
|
|
144
|
+
|
|
145
|
+
| 任务 | 执行者 | Agent 上下文中的 Token 消耗 |
|
|
146
|
+
| ------------------ | ------------------------ | --------------------------- |
|
|
147
|
+
| 决定要本地化的内容 | Claude Code | 低 |
|
|
148
|
+
| 提取文本字符串 | `intlayer extract` | 无 |
|
|
149
|
+
| 翻译声明内容 | `intlayer fill` | 无 |
|
|
150
|
+
| 翻译 Markdown 文档 | `intlayer doc translate` | 无 |
|
|
151
|
+
| 更新 Markdown 文档 | `intlayer doc review` | 无 |
|
|
152
|
+
| 批量执行命令 | Headless Claude Code | 仅 Prompt + 命令输出 |
|