@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: अनुवाद उत्पन्न करने के लिए Claude Code के टोकन उपभोग को कैसे सीमित करें
|
|
5
|
+
description: "Claude Code से अनुवाद कराने में टोकन क्यों अत्यधिक खर्च होते हैं, Intlayer इसके बजाय क्या करता है (अनुवादित कुंजियों को फ़िल्टर करना, JSON के टुकड़े करना, ब्लॉक-दर-ब्लॉक markdown का अनुवाद करना), और claude setup-token के साथ अपने Claude सब्सक्रिप्शन का पुन: उपयोग कैसे करें।"
|
|
6
|
+
keywords:
|
|
7
|
+
- claude code
|
|
8
|
+
- tokens
|
|
9
|
+
- टोकन उपभोग
|
|
10
|
+
- setup-token
|
|
11
|
+
- i18n
|
|
12
|
+
- अंतर्राष्ट्रीयकरण
|
|
13
|
+
- अनुवाद
|
|
14
|
+
- fill
|
|
15
|
+
- mcp
|
|
16
|
+
- एजेंट
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- claude-code-token-consumption
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# अनुवाद उत्पन्न करने के लिए Claude Code के टोकन उपभोग को कैसे सीमित करें
|
|
24
|
+
|
|
25
|
+
## समस्या का विवरण
|
|
26
|
+
|
|
27
|
+
Claude Code (या किसी भी कोडिंग एजेंट) से अपनी सामग्री का अनुवाद करने के लिए कहना सबसे महंगा तरीका है। प्रत्येक निष्पादन के दौरान, एजेंट को:
|
|
28
|
+
|
|
29
|
+
- पहले से अनुवादित कुंजियों सहित संपूर्ण JSON या सामग्री फ़ाइल को अपने संदर्भ (context) में लोड करना पड़ता है।
|
|
30
|
+
- सामग्री कहाँ स्थित है और इसकी संरचना कैसी है, यह समझने के लिए संबंधित फ़ाइलों को खोजना पड़ता है।
|
|
31
|
+
- यह पता लगाना पड़ता है कि कौन से लोकेल अनुपलब्ध हैं और उन्हें उत्पन्न करने की आवश्यकता है।
|
|
32
|
+
- आपके कस्टम निर्देशों को हर बार फिर से पढ़ना पड़ता है ("URL को इस तरह बदलें", "ब्रांड नाम अंग्रेजी में रखें", "अनौपचारिक रूप का उपयोग करें")।
|
|
33
|
+
- उन हिस्सों सहित पूरी फ़ाइल को फिर से लिखना पड़ता है जिनमें कोई बदलाव नहीं हुआ था।
|
|
34
|
+
|
|
35
|
+
यह सब प्रत्येक संवाद चक्र में फिर से भेजा जाता है, जिससे लागत `सामग्री का आकार × लोकेल की संख्या × चक्रों की संख्या` के अनुपात में बढ़ती है, और फ़ॉर्मेटिंग या कुंजियों में किसी भी अंतर को मैन्युअल रूप से ठीक करना पड़ता है।
|
|
36
|
+
|
|
37
|
+
## Intlayer इसके बजाय क्या करता है
|
|
38
|
+
|
|
39
|
+
Intlayer की सबसे बड़ी विशेषता यह है कि यह कार्य अनुवाद के लिए विशेष रूप से निर्मित पाइपलाइन के साथ एजेंट के बाहर किया जाता है:
|
|
40
|
+
|
|
41
|
+
- **मौजूदा अनुवादों को फ़िल्टर करता है** ताकि टोकन का उपयोग सीमित रहे। आपके JSON में पहले से अनुवादित कुंजियों को हटा दिया जाता है, और केवल अनुपलब्ध कुंजियों को मॉडल को भेजा जाता है।
|
|
42
|
+
- **Markdown का ब्लॉक-दर-ब्लॉक अनुवाद करता है।** प्रलेखन के लिए, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/doc-translate.md) और [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/doc-review.md) प्रत्येक ब्लॉक की तुलना मूल दस्तावेज़ से करते हैं और उन ब्लॉकों को छोड़ देते हैं जो पहले से अनुवादित या अपरिवर्तित हैं।
|
|
43
|
+
- **यदि आपका JSON बहुत बड़ा है तो उसके टुकड़े (chunking) करता है**, ताकि संदर्भ विंडो के सबसे उपयुक्त भाग में रहा जा सके।
|
|
44
|
+
- **टोकन खपत को अनुकूलित करने के लिए आपके JSON को समतल (flatten) और पुनर्गठित करता है**।
|
|
45
|
+
- **कस्टम प्रॉम्प्ट सम्मिलित करता है** आपके ब्रांड और शब्दावली से संबंधित विशिष्ट नियमों के लिए (`applicationContext`, `--custom-instructions`), जिससे आप उन्हें हर बातचीत में दोहराने के बजाय केवल एक बार लिखते हैं।
|
|
46
|
+
- **संरचना को मान्य करता है** ताकि निरंतरता सुनिश्चित हो सके और कुंजियों का भटकाव रुके, साथ ही फ़ॉर्मेटिंग (markdown, HTML, इंसर्शन, बहुवचन) सुरक्षित रहे।
|
|
47
|
+
- **पुनः प्रयास प्रबंधन (retry)** लागू करता है यदि आउटपुट का प्रारूप अमान्य हो।
|
|
48
|
+
- **गति बढ़ाने के लिए फ़ाइलों, टुकड़ों और लोकेल में अनुरोधों को कतारबद्ध और समानांतर करता है**।
|
|
49
|
+
|
|
50
|
+
इनमें से कुछ भी एजेंट के संदर्भ से होकर नहीं गुजरता। मुख्य नियम: एजेंट को यह तय करने दें कि **क्या** अंतर्राष्ट्रीयकृत करना है, और दोहराए जाने वाले कार्य को Intlayer पर छोड़ दें।
|
|
51
|
+
|
|
52
|
+
## समाधान
|
|
53
|
+
|
|
54
|
+
### 1. निष्कर्षण को `intlayer extract` को सौंपें
|
|
55
|
+
|
|
56
|
+
एजेंट को प्रत्येक घटक को हाथ से फिर से लिखने के लिए कहने के बजाय, उसे [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/extract.md) कमांड चलाने दें। यह पूरी फ़ाइल को एजेंट के संदर्भ में लोड किए बिना हार्ड-कोडेड स्ट्रिंग्स को घटक के बगल में एक `.content` फ़ाइल में स्थानांतरित करता है।
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx intlayer extract --file src/components/Header.tsx
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 2. अनुवाद को `intlayer fill` को सौंपें
|
|
63
|
+
|
|
64
|
+
एजेंट से सीधे अनुवाद करने के लिए कभी न कहें। [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/fill.md) कमांड ऊपर दी गई पाइपलाइन को लागू करता है: यह केवल अनुपलब्ध कुंजियों को भेजता है, उन्हें टुकड़ों में बाँटता है, लोकेल को समानांतर में चलाता है और परिणाम को आपकी सामग्री फ़ाइलों में वापस लिखता है।
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx intlayer fill
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
कुछ फ़्लैग निष्पादन को सीमित रखते हैं:
|
|
71
|
+
|
|
72
|
+
- `--git-diff` (या `--uncommitted`) केवल वर्तमान शाखा में बदले गए शब्दकोशों को संसाधित करता है।
|
|
73
|
+
- `--file` या `--keys` विशिष्ट सामग्री फ़ाइलों को लक्षित करता है।
|
|
74
|
+
- `--output-locales fr es` निष्पादन को केवल उन लोकेल तक सीमित करता है जिनकी आपको वास्तव में अभी आवश्यकता है।
|
|
75
|
+
- `--skip-metadata` शीर्षक, विवरण और टैग निर्माण को छोड़ देता है।
|
|
76
|
+
- `--data-serialization toon` मॉडल को अधिक संक्षिप्त पेलोड भेजता है (कम टोकन, थोड़ा कम पूर्वानुमानित आउटपुट)।
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx intlayer fill --git-diff --output-locales fr es --skip-metadata
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. `doc translate` और `doc review` के साथ markdown का अनुवाद करें
|
|
83
|
+
|
|
84
|
+
किसी एजेंट से `.md` फ़ाइल का अनुवाद करने के लिए कहने का अर्थ है प्रत्येक परिवर्तन पर, प्रत्येक लोकेल के लिए पूरा दस्तावेज़ चिपकाना। इसके विपरीत [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/doc-translate.md) और [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/doc-review.md) कमांड ब्लॉक-दर-ब्लॉक काम करते हैं।
|
|
85
|
+
|
|
86
|
+
जब अनुवादित फ़ाइल अभी मौजूद न हो तो `doc translate` का उपयोग करें। यह markdown को टुकड़ों में बाँटता है, इसे समानांतर में अनुवाद करता है और लक्षित फ़ाइलें लिखता है:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
जब अनुवादित फ़ाइल पहले से मौजूद हो तो `doc review` का उपयोग करें। यह प्रत्येक ब्लॉक की तुलना मूल दस्तावेज़ से करता है, उन ब्लॉकों को छोड़ देता है जो पहले से अनुवादित या अपरिवर्तित हैं, और केवल भिन्न ब्लॉकों को भेजता है:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
दोनों कमांड आपके नियमों को एक बार स्वीकार करते हैं, जिससे उन्हें हर प्रॉम्प्ट में दोहराने की आवश्यकता नहीं होती:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npx intlayer doc translate --custom-instructions "Do not translate URLs. Keep the markdown structure and the code blocks untouched."
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`doc review` के दो मोड तब उपयोगी होते हैं जब एजेंट को Intlayer से किसी भी AI कॉल के बिना प्रक्रिया में शामिल रहने की आवश्यकता होती है:
|
|
105
|
+
|
|
106
|
+
- `--mode report` उन ब्लॉकों को लाइन नंबर के साथ लॉग करता है जिन पर ध्यान देने की आवश्यकता है, ताकि एजेंट केवल उन्हीं ब्लॉकों को छुए।
|
|
107
|
+
- `--mode synthesis` केवल यह लॉग करता है कि कौन से दस्तावेज़ अद्यतित हैं और किसमें अभी भी संपादित करने के लिए ब्लॉक बाकी हैं।
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx intlayer doc review --mode report --locales fr
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 4. एजेंट को MCP सर्वर के माध्यम से CLI कॉल करने दें
|
|
114
|
+
|
|
115
|
+
[Intlayer MCP सर्वर](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/mcp_server.md) के साथ, एजेंट वर्तमान प्रलेखन के आधार पर उत्तर देता है और बातचीत में इसे फिर से लागू करने के बजाय सीधे `intlayer fill` या `intlayer doc review` चलाता है।
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
claude mcp add intlayer npx -y @intlayer/mcp
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
`npx intlayer init skills` के साथ [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/agent_skills.md) स्थापित करने से एजेंट को Intlayer API का अनुमान लगाने और प्रत्येक कार्य पर प्रलेखन को फिर से पढ़ने से भी रोका जा सकता है।
|
|
122
|
+
|
|
123
|
+
### 5. `claude setup-token` के साथ अपने Claude सब्सक्रिप्शन का पुन: उपयोग करें
|
|
124
|
+
|
|
125
|
+
अपने इंटरैक्टिव Claude Code सत्र में i18n सेटअप चलाने से बातचीत का पूरा इतिहास संदर्भ में बना रहता है। भारी कार्यों को इसके बजाय एक संक्षिप्त हेडलेस (headless) सत्र में स्थानांतरित करें।
|
|
126
|
+
|
|
127
|
+
अपने Claude सब्सक्रिप्शन से एक दीर्घकालिक टोकन उत्पन्न करें:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
claude setup-token
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
इसे `CLAUDE_CODE_OAUTH_TOKEN` के रूप में संग्रहीत करें (एक `.env` फ़ाइल या अपने CI सीक्रेट्स में), फिर Intlayer कमांड चलाने वाले एक-बार के सत्र के लिए इसका पुन: उपयोग करें:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
CLAUDE_CODE_OAUTH_TOKEN=... claude -p "Run npx intlayer extract on src/components, then npx intlayer fill --uncommitted"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
यह सत्र केवल उस प्रॉम्प्ट और कमांड आउटपुट को वहन करेगा, न कि आपकी पूरी बातचीत को। यही टोकन प्रत्येक पुल अनुरोध पर `intlayer fill` चलाने के लिए [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) में काम करता है।
|
|
140
|
+
|
|
141
|
+
> `claude setup-token` द्वारा जारी टोकन केवल Claude Code को प्रमाणित करता है। इसका उपयोग `ai.apiKey` में Anthropic API कुंजी के रूप में नहीं किया जा सकता है। अनुवाद के लिए, `intlayer fill` आपके [Intlayer खाते](https://app.intlayer.org) (मुफ्त स्तर शामिल) या [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/configuration.md#ai-configuration) में कॉन्फ़िगर की गई आपकी अपनी प्रदाता कुंजी का उपयोग करता है।
|
|
142
|
+
|
|
143
|
+
## सारांश
|
|
144
|
+
|
|
145
|
+
| कार्य | कौन करता है | एजेंट संदर्भ में टोकन |
|
|
146
|
+
| ---------------------------------- | ------------------------ | ------------------------ |
|
|
147
|
+
| क्या स्थानीयकृत करना है यह तय करना | Claude Code | कम |
|
|
148
|
+
| स्ट्रिंग्स निकालना | `intlayer extract` | कोई नहीं |
|
|
149
|
+
| सामग्री का अनुवाद करना | `intlayer fill` | कोई नहीं |
|
|
150
|
+
| प्रलेखन का अनुवाद करना | `intlayer doc translate` | कोई नहीं |
|
|
151
|
+
| प्रलेखन अद्यतन करना | `intlayer doc review` | कोई नहीं |
|
|
152
|
+
| कमांड चलाना | हेडलेस Claude Code | प्रॉम्प्ट + कमांड आउटपुट |
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-13
|
|
3
|
+
updatedAt: 2026-09-13
|
|
4
|
+
title: Cara membatasi konsumsi token Claude Code untuk menghasilkan terjemahan
|
|
5
|
+
description: Mengapa menerjemahkan dengan Claude Code menghabiskan banyak token, apa yang dilakukan Intlayer sebagai gantinya (memfilter kunci yang diterjemahkan, memotong JSON, menerjemahkan markdown blok demi blok), dan cara menggunakan kembali langganan Claude Anda dengan claude setup-token.
|
|
6
|
+
keywords:
|
|
7
|
+
- claude code
|
|
8
|
+
- tokens
|
|
9
|
+
- konsumsi token
|
|
10
|
+
- setup-token
|
|
11
|
+
- i18n
|
|
12
|
+
- internasionalisasi
|
|
13
|
+
- terjemahan
|
|
14
|
+
- fill
|
|
15
|
+
- mcp
|
|
16
|
+
- agen
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- claude-code-token-consumption
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Cara membatasi konsumsi token Claude Code untuk menghasilkan terjemahan
|
|
24
|
+
|
|
25
|
+
## Deskripsi Masalah
|
|
26
|
+
|
|
27
|
+
Meminta Claude Code (atau agen pengodean apa pun) untuk menerjemahkan konten Anda adalah metode yang paling boros biaya. Untuk setiap eksekusi, agen harus:
|
|
28
|
+
|
|
29
|
+
- Memuat seluruh file JSON atau file konten ke dalam konteksnya, bahkan kunci yang sudah diterjemahkan.
|
|
30
|
+
- Mencari file terkait untuk memahami letak konten dan bagaimana strukturnya disusun.
|
|
31
|
+
- Menentukan locale mana yang belum ada dan perlu dibuat.
|
|
32
|
+
- Membaca ulang instruksi khusus Anda setiap saat ("ubah URL dengan cara ini", "biarkan nama merek dalam bahasa Inggris", "gunakan nada santai").
|
|
33
|
+
- Menulis ulang seluruh file, termasuk bagian yang tidak mengalami perubahan.
|
|
34
|
+
|
|
35
|
+
Semua itu dikirim ulang pada setiap giliran percakapan, sehingga biaya melonjak seiring `ukuran konten × jumlah locale × jumlah giliran`, dan setiap inkonsistensi format maupun kunci harus diperiksa secara manual.
|
|
36
|
+
|
|
37
|
+
## Apa yang dilakukan Intlayer sebagai gantinya
|
|
38
|
+
|
|
39
|
+
Kelebihan Intlayer adalah menjalankan pekerjaan tersebut di luar agen melalui alur kerja (pipeline) yang dirancang khusus untuk penerjemahan:
|
|
40
|
+
|
|
41
|
+
- **Memfilter terjemahan yang sudah ada** untuk menekan penggunaan token. Kunci yang sudah diterjemahkan di dalam JSON Anda akan disaring, dan hanya kunci yang belum ada yang dikirim ke model.
|
|
42
|
+
- **Menerjemahkan markdown blok demi blok.** Untuk dokumentasi, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/doc-translate.md) dan [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/doc-review.md) membandingkan setiap blok dengan dokumen dasar dan melewati blok yang sudah diterjemahkan atau tidak berubah.
|
|
43
|
+
- **Memotong JSON (chunking)** jika ukurannya terlalu besar agar tetap berada di rentang konteks yang optimal.
|
|
44
|
+
- **Meratakan dan menyusun ulang JSON** guna mengoptimalkan konsumsi token.
|
|
45
|
+
- **Menyisipkan prompt khusus** untuk aturan tertentu terkait merek dan terminologi Anda (`applicationContext`, `--custom-instructions`), sehingga Anda hanya menuliskannya satu kali tanpa perlu mengulanginya di setiap percakapan.
|
|
46
|
+
- **Memvalidasi struktur** untuk menjamin konsistensi dan mencegah pergeseran kunci, serta mempertahankan format (markdown, HTML, tag sisipan, bentuk jamak).
|
|
47
|
+
- **Menerapkan manajemen percobaan ulang (retry)** apabila format output tidak valid.
|
|
48
|
+
- **Mengantrekan dan memparalelkan permintaan** lintas file, potongan teks, dan locale untuk meningkatkan kecepatan.
|
|
49
|
+
|
|
50
|
+
Semua proses ini tidak melewati konteks agen. Aturan praktisnya: biarkan agen memutuskan **apa** yang perlu diinternasionalisasi, dan biarkan Intlayer menangani pekerjaan berulang tersebut.
|
|
51
|
+
|
|
52
|
+
## Solusi
|
|
53
|
+
|
|
54
|
+
### 1. Delegasikan ekstraksi ke `intlayer extract`
|
|
55
|
+
|
|
56
|
+
Alih-alih meminta agen menulis ulang setiap komponen secara manual, biarkan agen menjalankan perintah [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/extract.md). Perintah ini memindahkan string statis ke dalam file `.content` di samping komponen tanpa memuat seluruh file ke dalam konteks agen.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx intlayer extract --file src/components/Header.tsx
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 2. Delegasikan penerjemahan ke `intlayer fill`
|
|
63
|
+
|
|
64
|
+
Jangan pernah meminta agen untuk menerjemahkan secara langsung. Perintah [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/fill.md) menerapkan alur kerja di atas: hanya mengirimkan kunci yang belum diterjemahkan, membaginya ke dalam beberapa potongan, memproses locale secara paralel, dan menuliskan hasilnya kembali ke file konten Anda.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx intlayer fill
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Beberapa opsi flag membantu mempersempit ruang lingkup eksekusi:
|
|
71
|
+
|
|
72
|
+
- `--git-diff` (atau `--uncommitted`) hanya memproses kamus yang dimodifikasi pada branch saat ini.
|
|
73
|
+
- `--file` atau `--keys` menargetkan file konten tertentu.
|
|
74
|
+
- `--output-locales fr es` membatasi eksekusi hanya untuk locale yang benar-benar Anda butuhkan saat ini.
|
|
75
|
+
- `--skip-metadata` melewati pembuatan judul, deskripsi, dan tag.
|
|
76
|
+
- `--data-serialization toon` mengirimkan payload yang lebih ringkas ke model (mengurangi token, hasil sedikit kurang konsisten).
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx intlayer fill --git-diff --output-locales fr es --skip-metadata
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. Terjemahkan markdown dengan `doc translate` dan `doc review`
|
|
83
|
+
|
|
84
|
+
Meminta agen menerjemahkan file `.md` berarti menempelkan seluruh dokumen, untuk setiap locale, pada setiap perubahan. Sebaliknya, perintah [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/doc-translate.md) dan [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/doc-review.md) bekerja blok demi blok.
|
|
85
|
+
|
|
86
|
+
Gunakan `doc translate` ketika file hasil terjemahan belum ada. Perintah ini memotong markdown, menerjemahkannya secara paralel, dan menulis file tujuan:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Gunakan `doc review` ketika file terjemahan sudah ada. Perintah ini membandingkan setiap blok dengan dokumen dasar, melewati blok yang sudah diterjemahkan atau tidak berubah, dan hanya mengirimkan blok yang berbeda:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Kedua perintah ini menerima aturan Anda satu kali saja, sehingga Anda tidak perlu mengulanginya di setiap prompt:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npx intlayer doc translate --custom-instructions "Do not translate URLs. Keep the markdown structure and the code blocks untouched."
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Dua mode pada `doc review` sangat berguna saat agen tetap harus dilibatkan tanpa memicu panggilan AI dari Intlayer:
|
|
105
|
+
|
|
106
|
+
- `--mode report` mencatat blok-blok yang memerlukan penyesuaian lengkap dengan nomor baris, sehingga agen hanya mengubah blok tersebut.
|
|
107
|
+
- `--mode synthesis` hanya melaporkan dokumen mana yang sudah diperbarui dan dokumen mana yang masih memiliki blok untuk diedit.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx intlayer doc review --mode report --locales fr
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 4. Biarkan agen memanggil CLI melalui server MCP
|
|
114
|
+
|
|
115
|
+
Dengan [server MCP Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/mcp_server.md), agen menjawab berdasarkan dokumentasi terbaru dan menjalankan `intlayer fill` atau `intlayer doc review` secara langsung alih-alih mengimplementasikan kembali logika tersebut di dalam percakapan.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
claude mcp add intlayer npx -y @intlayer/mcp
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Memasang [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/agent_skills.md) melalui `npx intlayer init skills` juga mencegah agen menebak-nebak API Intlayer dan membaca ulang dokumentasi di setiap tugas.
|
|
122
|
+
|
|
123
|
+
### 5. Gunakan kembali langganan Claude Anda dengan `claude setup-token`
|
|
124
|
+
|
|
125
|
+
Menjalankan penyiapan i18n di dalam sesi Claude Code interaktif akan menumpuk seluruh riwayat percakapan dalam konteks. Alihkan tugas berat tersebut ke sesi headless yang singkat.
|
|
126
|
+
|
|
127
|
+
Buat token berdurasi panjang dari langganan Claude Anda:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
claude setup-token
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Simpan token ini sebagai `CLAUDE_CODE_OAUTH_TOKEN` (di dalam file `.env` atau secret CI Anda), lalu gunakan kembali untuk sesi sekali jalan yang mengeksekusi perintah Intlayer:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
CLAUDE_CODE_OAUTH_TOKEN=... claude -p "Run npx intlayer extract on src/components, then npx intlayer fill --uncommitted"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Sesi tersebut hanya memuat prompt dan output perintah tanpa menyertakan riwayat percakapan sebelumnya. Token yang sama juga berfungsi pada [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) untuk menjalankan `intlayer fill` di setiap pull request.
|
|
140
|
+
|
|
141
|
+
> Token yang dibuat oleh `claude setup-token` hanya mengautentikasi Claude Code. Token ini tidak dapat digunakan sebagai kunci API Anthropic di `ai.apiKey`. Untuk proses penerjemahannya sendiri, `intlayer fill` menggunakan [akun Intlayer](https://app.intlayer.org) Anda (termasuk paket gratis) atau kunci penyedia Anda sendiri yang dikonfigurasi pada [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/configuration.md#ai-configuration).
|
|
142
|
+
|
|
143
|
+
## Ringkasan
|
|
144
|
+
|
|
145
|
+
| Tugas | Pelaksana | Token dalam konteks agen |
|
|
146
|
+
| ------------------------------------- | ------------------------ | ------------------------ |
|
|
147
|
+
| Menentukan apa yang akan dilokalisasi | Claude Code | Rendah |
|
|
148
|
+
| Mengekstrak string | `intlayer extract` | Tidak ada |
|
|
149
|
+
| Menerjemahkan konten | `intlayer fill` | Tidak ada |
|
|
150
|
+
| Menerjemahkan dokumentasi | `intlayer doc translate` | Tidak ada |
|
|
151
|
+
| Memperbarui dokumentasi | `intlayer doc review` | Tidak ada |
|
|
152
|
+
| Menjalankan perintah | Headless Claude Code | Prompt + output perintah |
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-13
|
|
3
|
+
updatedAt: 2026-09-13
|
|
4
|
+
title: Come limitare il consumo di token di Claude Code per generare traduzioni
|
|
5
|
+
description: Perché tradurre con Claude Code spreca token, cosa fa invece Intlayer (filtra le chiavi già tradotte, suddivide il JSON in blocchi, traduce il markdown blocco per blocco) e come riutilizzare il tuo abbonamento Claude con claude setup-token.
|
|
6
|
+
keywords:
|
|
7
|
+
- claude code
|
|
8
|
+
- token
|
|
9
|
+
- consumo di token
|
|
10
|
+
- setup-token
|
|
11
|
+
- i18n
|
|
12
|
+
- internazionalizzazione
|
|
13
|
+
- traduzione
|
|
14
|
+
- fill
|
|
15
|
+
- mcp
|
|
16
|
+
- agent
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- claude-code-token-consumption
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Come limitare il consumo di token di Claude Code per generare traduzioni
|
|
24
|
+
|
|
25
|
+
## Descrizione del problema
|
|
26
|
+
|
|
27
|
+
Chiedere a Claude Code (o a qualsiasi agente di sviluppo) di tradurre i tuoi contenuti è il modo più costoso in assoluto. A ogni esecuzione, l'agente deve:
|
|
28
|
+
|
|
29
|
+
- Caricare l'intero file JSON o di contenuto nel suo contesto, comprese le chiavi già tradotte.
|
|
30
|
+
- Cercare nei file correlati per capire dove si trova il contenuto e come è strutturato.
|
|
31
|
+
- Individuare quali locale mancano e devono essere generate.
|
|
32
|
+
- Rileggere ogni volta le tue istruzioni personalizzate ("trasforma gli URL in questo modo", "mantieni il nome del brand in inglese", "usa una forma informale").
|
|
33
|
+
- Riscrivere l'intero file, incluse le parti rimaste invariate.
|
|
34
|
+
|
|
35
|
+
Tutto questo viene reinviato a ogni iterazione, quindi il costo cresce in base a `dimensione del contenuto × numero di locale × numero di iterazioni`, e ogni minima divergenza di formattazione o di chiavi deve essere controllata manualmente.
|
|
36
|
+
|
|
37
|
+
## Cosa fa invece Intlayer
|
|
38
|
+
|
|
39
|
+
Il vantaggio di Intlayer è svolgere questo lavoro al di fuori dell'agente, grazie a una pipeline progettata specificamente per la traduzione:
|
|
40
|
+
|
|
41
|
+
- **Filtra le traduzioni esistenti** per limitare l'uso dei token. Le chiavi già tradotte nel tuo JSON vengono escluse, inviando al modello solo quelle mancanti.
|
|
42
|
+
- **Traduce il markdown blocco per blocco.** Per la documentazione, [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/doc-translate.md) e [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/doc-review.md) confrontano ogni blocco con il documento base e saltano i blocchi già tradotti o invariati.
|
|
43
|
+
- **Suddivide il tuo JSON in chunk** se è troppo grande, per operare nella parte migliore della finestra di contesto.
|
|
44
|
+
- **Appiattisce e ricostruisce il tuo JSON** per ottimizzare il consumo di token.
|
|
45
|
+
- **Inserisce prompt personalizzati** per regole specifiche sul tuo brand e stile (`applicationContext`, `--custom-instructions`), così da scriverli una sola volta invece di ripeterli in ogni conversazione.
|
|
46
|
+
- **Valida la struttura** per assicurare coerenza, prevenire la deviazione delle chiavi e preservare la formattazione (markdown, HTML, inserimenti, plurali).
|
|
47
|
+
- **Implementa la gestione dei tentativi (retry)** quando l'output è malformato.
|
|
48
|
+
- **Accoda e parallelizza le richieste** tra file, blocchi e locale per massimizzare la velocità.
|
|
49
|
+
|
|
50
|
+
Niente di tutto questo passa attraverso il contesto dell'agente. La regola d'oro: lascia che l'agente decida **cosa** internazionalizzare, e lascia a Intlayer il lavoro ripetitivo.
|
|
51
|
+
|
|
52
|
+
## Soluzione
|
|
53
|
+
|
|
54
|
+
### 1. Delegare l'estrazione a `intlayer extract`
|
|
55
|
+
|
|
56
|
+
Invece di chiedere all'agente di riscrivere ogni componente a mano, fagli eseguire il comando [`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/extract.md). Questo sposta le stringhe hardcoded in un file `.content` accanto al componente senza caricare l'intero file nel contesto dell'agente.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx intlayer extract --file src/components/Header.tsx
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 2. Delegare la traduzione a `intlayer fill`
|
|
63
|
+
|
|
64
|
+
Non chiedere mai all'agente di tradurre direttamente. Il comando [`fill`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/fill.md) applica la pipeline sopra descritta: invia solo le chiavi mancanti, le suddivide, elabora le locale in parallelo e riscrive il risultato direttamente nei file di contenuto.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx intlayer fill
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Alcuni flag consentono di contenere l'elaborazione:
|
|
71
|
+
|
|
72
|
+
- `--git-diff` (o `--uncommitted`) elabora solo i dizionari modificati nel branch corrente.
|
|
73
|
+
- `--file` o `--keys` punta a file di contenuto specifici.
|
|
74
|
+
- `--output-locales fr es` limita l'esecuzione alle sole locale necessarie al momento.
|
|
75
|
+
- `--skip-metadata` ignora la generazione di titolo, descrizione e tag.
|
|
76
|
+
- `--data-serialization toon` invia un payload più compatto al modello (meno token, output leggermente meno prevedibile).
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx intlayer fill --git-diff --output-locales fr es --skip-metadata
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. Tradurre il markdown con `doc translate` e `doc review`
|
|
83
|
+
|
|
84
|
+
Chiedere a un agente di tradurre un file `.md` comporta l'inclusione dell'intero documento, per ogni locale, a ogni modifica. I comandi [`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/doc-translate.md) e [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/doc-review.md) lavorano invece blocco per blocco.
|
|
85
|
+
|
|
86
|
+
Usa `doc translate` quando il file tradotto non esiste ancora. Suddivide il markdown, lo traduce in parallelo e crea i file di destinazione:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx intlayer doc translate --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Usa `doc review` quando il file tradotto esiste già. Confronta ogni blocco con il documento base, salta i blocchi già tradotti o invariati e invia solo quelli divergenti:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npx intlayer doc review --doc-pattern "docs/**/*.md" --base-locale en --locales fr es
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Entrambi i comandi accettano le tue regole una volta sola, senza doverle ripetere in ogni 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
|
+
Due modalità di `doc review` sono utili quando l'agente deve rimanere coinvolto nel flusso, senza alcuna chiamata AI da parte di Intlayer:
|
|
105
|
+
|
|
106
|
+
- `--mode report` segnala i blocchi che richiedono attenzione, completi di numero di riga, in modo che l'agente modifichi solo quei blocchi.
|
|
107
|
+
- `--mode synthesis` riporta unicamente quali documenti sono aggiornati e quali presentano ancora blocchi da modificare.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx intlayer doc review --mode report --locales fr
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 4. Far chiamare la CLI all'agente tramite il server MCP
|
|
114
|
+
|
|
115
|
+
Grazie al [server MCP di Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/mcp_server.md), l'agente risponde basandosi sulla documentazione aggiornata ed esegue autonomamente `intlayer fill` o `intlayer doc review`, invece di dover reimplementare la logica nella conversazione.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
claude mcp add intlayer npx -y @intlayer/mcp
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Installare le [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/agent_skills.md) con `npx intlayer init skills` evita inoltre che l'agente debba indovinare l'API di Intlayer e rileggere la documentazione a ogni task.
|
|
122
|
+
|
|
123
|
+
### 5. Riutilizzare l'abbonamento Claude con `claude setup-token`
|
|
124
|
+
|
|
125
|
+
Eseguire la configurazione di i18n nella sessione interattiva di Claude Code mantiene l'intera cronologia della conversazione nel contesto. Sposta invece questo carico di lavoro su una breve sessione headless.
|
|
126
|
+
|
|
127
|
+
Genera un token a lunga durata dal tuo abbonamento Claude:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
claude setup-token
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Salvalo come `CLAUDE_CODE_OAUTH_TOKEN` (in un file `.env` o nei secret della tua CI), quindi riutilizzalo per una sessione mirata che esegua i comandi Intlayer:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
CLAUDE_CODE_OAUTH_TOKEN=... claude -p "Run npx intlayer extract on src/components, then npx intlayer fill --uncommitted"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
La sessione conterrà solo quel prompt e l'output del comando, evitando tutta la cronologia precedente. Lo stesso token funziona nella [Claude Code GitHub Action](https://github.com/anthropics/claude-code-action) per eseguire `intlayer fill` su ogni pull request.
|
|
140
|
+
|
|
141
|
+
> Il token generato da `claude setup-token` autentica unicamente Claude Code. Non può essere usato come chiave API Anthropic in `ai.apiKey`. Per la traduzione vera e propria, `intlayer fill` usa il tuo [account Intlayer](https://app.intlayer.org) (piano gratuito incluso) o la tua chiave fornitore configurata in [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/configuration.md#ai-configuration).
|
|
142
|
+
|
|
143
|
+
## Riepilogo
|
|
144
|
+
|
|
145
|
+
| Attività | Chi la esegue | Token nel contesto dell'agente |
|
|
146
|
+
| ---------------------------- | -------------------------------- | ------------------------------ |
|
|
147
|
+
| Decidere cosa localizzare | Claude Code | Basso |
|
|
148
|
+
| Estrarre le stringhe | `intlayer extract` | Nessuno |
|
|
149
|
+
| Tradurre i contenuti | `intlayer fill` | Nessuno |
|
|
150
|
+
| Tradurre la documentazione | `intlayer doc translate` | Nessuno |
|
|
151
|
+
| Aggiornare la documentazione | `intlayer doc review` | Nessuno |
|
|
152
|
+
| Eseguire i comandi | Claude Code in modalità headless | Prompt + output del comando |
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-13
|
|
3
|
+
updatedAt: 2026-09-13
|
|
4
|
+
title: 翻訳生成時のClaude Codeのトークン消費を抑える方法
|
|
5
|
+
description: Claude Codeでの翻訳がトークンを浪費する理由、Intlayerが代わりに実行する処理(翻訳済みキーの除外、JSONのチャンク化、Markdownのブロック単位翻訳)、およびclaude setup-tokenでClaudeのサブスクリプションを再利用する方法。
|
|
6
|
+
keywords:
|
|
7
|
+
- claude code
|
|
8
|
+
- tokens
|
|
9
|
+
- トークン消費
|
|
10
|
+
- setup-token
|
|
11
|
+
- i18n
|
|
12
|
+
- 国際化
|
|
13
|
+
- 翻訳
|
|
14
|
+
- fill
|
|
15
|
+
- mcp
|
|
16
|
+
- エージェント
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- claude-code-token-consumption
|
|
20
|
+
author: aymericzip
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# 翻訳生成時のClaude Codeのトークン消費を抑える方法
|
|
24
|
+
|
|
25
|
+
## 問題の説明
|
|
26
|
+
|
|
27
|
+
Claude Code(またはその他のコーディングエージェント)にコンテンツの翻訳を依頼することは、最もコストのかかる方法です。実行するたびに、エージェントは以下の処理を行う必要があります。
|
|
28
|
+
|
|
29
|
+
- 既に翻訳済みのキーを含め、JSONやコンテンツファイル全体をコンテキストに読み込む。
|
|
30
|
+
- 関連ファイルを検索して、コンテンツの配置場所や構造を把握する。
|
|
31
|
+
- どのロケールが不足しており、生成すべきかを特定する。
|
|
32
|
+
- カスタム指示(「URLはこのように変換する」「ブランド名は英語のままにする」「親しみやすい表現を使う」など)を毎回再読込する。
|
|
33
|
+
- 変更されていない部分を含めて、ファイル全体を書き直す。
|
|
34
|
+
|
|
35
|
+
これらすべてがターンごとに再送信されるため、コストは「`コンテンツのサイズ × ロケール数 × ターン数`」で増加し、フォーマットやキーのずれを手動で検出して修正しなければならなくなります。
|
|
36
|
+
|
|
37
|
+
## Intlayerが代わりに行うこと
|
|
38
|
+
|
|
39
|
+
Intlayerの大きなメリットは、翻訳専用に構築されたパイプラインによって、エージェントの外部でこれらの作業を実行することです。
|
|
40
|
+
|
|
41
|
+
- **既存の翻訳をフィルタリング**してトークン使用量を制限します。JSON内の既に翻訳されているキーは除外され、不足しているキーのみがモデルに送信されます。
|
|
42
|
+
- **Markdownをブロック単位で翻訳します。** ドキュメントの場合、[`doc translate`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/cli/doc-translate.md) および [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/cli/doc-review.md) は各ブロックをベースドキュメントと比較し、すでに翻訳されているブロックや変更のないブロックをスキップします。
|
|
43
|
+
- **JSONが大きすぎる場合はチャンクに分割**し、コンテキストウィンドウの最適な範囲を維持します。
|
|
44
|
+
- **JSONをフラット化して再構築**し、トークン消費を最適化します。
|
|
45
|
+
- **カスタムプロンプトを挿入**してブランドや表現に関するルール(`applicationContext`, `--custom-instructions`)を適用できるため、会話ごとに繰り返すことなく一度だけ記述すれば済みます。
|
|
46
|
+
- **構造を検証**して一貫性を担保し、キーのずれを防ぎながら、フォーマット(Markdown、HTML、挿入タグ、複数形など)を保持します。
|
|
47
|
+
- **リトライ管理**を実装し、出力が不正な場合に自動で再試行します。
|
|
48
|
+
- **リクエストをキューイングして並列化**し、ファイル、チャンク、ロケールをまたいで処理速度を向上させます。
|
|
49
|
+
|
|
50
|
+
これらの処理はエージェントのコンテキストを経由しません。基本原則として、エージェントには**何を**国際化するかを判断させ、定型的な反復作業はIntlayerに任せます。
|
|
51
|
+
|
|
52
|
+
## 解決策
|
|
53
|
+
|
|
54
|
+
### 1. 抽出を `intlayer extract` に任せる
|
|
55
|
+
|
|
56
|
+
エージェントに各コンポーネントを手動で書き直させる代わりに、[`extract`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/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/ja/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/ja/cli/doc-translate.md) および [`doc review`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/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
|
+
IntlayerからのAI呼び出しを発生させずにエージェントをワークフローに参加させたい場合、`doc review` の以下の2つのモードが役立ちます。
|
|
105
|
+
|
|
106
|
+
- `--mode report`: 対応が必要なブロックを行番号と共に出力し、エージェントが該当ブロックのみを編集できるようにします。
|
|
107
|
+
- `--mode synthesis`: どのドキュメントが最新で、どれに編集対象ブロックが残っているかのみを出力します。
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx intlayer doc review --mode report --locales fr
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 4. エージェントにMCPサーバー経由でCLIを呼び出させる
|
|
114
|
+
|
|
115
|
+
[Intlayer MCPサーバー](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/mcp_server.md)を利用すると、エージェントは最新のドキュメントを参照し、会話内で独自に処理を再実装する代わりに `intlayer fill` や `intlayer doc review` を直接実行します。
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
claude mcp add intlayer npx -y @intlayer/mcp
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
`npx intlayer init skills` で [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/agent_skills.md) を導入すると、エージェントがIntlayerのAPIを推測したり、タスクごとにドキュメントを読み直したりする無駄も防げます。
|
|
122
|
+
|
|
123
|
+
### 5. `claude setup-token` でClaudeのサブスクリプションを再利用する
|
|
124
|
+
|
|
125
|
+
対話型のClaude Codeセッション内でi18nのセットアップを実行すると、会話履歴全体がコンテキストに保持され続けます。負荷の大きい処理は、短時間のヘッドレスセッションに切り替えて実行しましょう。
|
|
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) でも動作し、Pull Requestごとに `intlayer fill` を実行できます。
|
|
140
|
+
|
|
141
|
+
> `claude setup-token` で発行されるトークンはClaude Code専用の認証トークンです。`ai.apiKey` のAnthropic APIキーとしては使用できません。翻訳処理自体には、[Intlayerアカウント](https://app.intlayer.org)(無料枠あり)または [`ai`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md#ai-configuration) で設定したプロバイダーのAPIキーが使用されます。
|
|
142
|
+
|
|
143
|
+
## まとめ
|
|
144
|
+
|
|
145
|
+
| タスク | 担当者 | エージェントコンテキスト内のトークン |
|
|
146
|
+
| ---------------------- | ------------------------ | ------------------------------------ |
|
|
147
|
+
| ローカライズ対象の決定 | Claude Code | 少量 |
|
|
148
|
+
| 文字列の抽出 | `intlayer extract` | なし |
|
|
149
|
+
| コンテンツの翻訳 | `intlayer fill` | なし |
|
|
150
|
+
| ドキュメントの翻訳 | `intlayer doc translate` | なし |
|
|
151
|
+
| ドキュメントの更新 | `intlayer doc review` | なし |
|
|
152
|
+
| コマンドの実行 | ヘッドレスClaude Code | プロンプト + コマンド出力 |
|