@intlayer/docs 9.5.3 → 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 +8 -8
- 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/is_i18next_outdated.md +5 -1
- package/blog/ar/is_next-intl_outdated.md +5 -1
- package/blog/ar/is_vue-i18n_outdated.md +7 -1
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +8 -4
- package/blog/ar/per-component_vs_centralized_i18n.md +9 -4
- package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/de/is_next-intl_outdated.md +5 -1
- package/blog/de/is_vue-i18n_outdated.md +7 -1
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- 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/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/is_i18next_outdated.md +5 -1
- package/blog/en/is_next-intl_outdated.md +5 -1
- package/blog/en/is_vue-i18n_outdated.md +7 -1
- package/blog/en/list_i18n_technologies/frameworks/react-router.md +2 -3
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/en/per-component_vs_centralized_i18n.md +9 -4
- package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/en-GB/is_next-intl_outdated.md +5 -1
- package/blog/en-GB/is_vue-i18n_outdated.md +7 -1
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/en-GB/per-component_vs_centralized_i18n.md +9 -4
- package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/es/is_next-intl_outdated.md +5 -1
- package/blog/es/is_vue-i18n_outdated.md +7 -1
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- 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/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/is_i18next_outdated.md +5 -1
- package/blog/fr/is_next-intl_outdated.md +5 -1
- package/blog/fr/is_vue-i18n_outdated.md +7 -1
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- 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/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/is_i18next_outdated.md +5 -1
- package/blog/hi/is_next-intl_outdated.md +5 -1
- package/blog/hi/is_vue-i18n_outdated.md +7 -1
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +8 -4
- package/blog/hi/per-component_vs_centralized_i18n.md +9 -4
- package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/id/is_next-intl_outdated.md +5 -1
- package/blog/id/is_vue-i18n_outdated.md +7 -1
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/id/per-component_vs_centralized_i18n.md +9 -4
- package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/it/is_next-intl_outdated.md +5 -1
- package/blog/it/is_vue-i18n_outdated.md +7 -1
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- 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/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/is_i18next_outdated.md +5 -1
- package/blog/ja/is_next-intl_outdated.md +5 -1
- package/blog/ja/is_vue-i18n_outdated.md +7 -1
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/ja/per-component_vs_centralized_i18n.md +9 -4
- package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/ko/is_next-intl_outdated.md +5 -1
- package/blog/ko/is_vue-i18n_outdated.md +7 -1
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/ko/per-component_vs_centralized_i18n.md +9 -4
- package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/pl/is_next-intl_outdated.md +5 -1
- package/blog/pl/is_vue-i18n_outdated.md +7 -1
- package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/pl/per-component_vs_centralized_i18n.md +9 -4
- package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/pt/is_next-intl_outdated.md +5 -1
- package/blog/pt/is_vue-i18n_outdated.md +7 -1
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- 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/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/is_i18next_outdated.md +5 -1
- package/blog/ru/is_next-intl_outdated.md +5 -1
- package/blog/ru/is_vue-i18n_outdated.md +7 -1
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +8 -4
- 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/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/is_i18next_outdated.md +5 -1
- package/blog/tr/is_next-intl_outdated.md +5 -1
- package/blog/tr/is_vue-i18n_outdated.md +7 -1
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/tr/per-component_vs_centralized_i18n.md +9 -4
- package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/uk/is_next-intl_outdated.md +5 -1
- package/blog/uk/is_vue-i18n_outdated.md +7 -1
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/uk/per-component_vs_centralized_i18n.md +9 -4
- package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/vi/is_next-intl_outdated.md +5 -1
- package/blog/vi/is_vue-i18n_outdated.md +7 -1
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/vi/per-component_vs_centralized_i18n.md +9 -4
- package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- 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/is_i18next_outdated.md +5 -1
- package/blog/zh/is_next-intl_outdated.md +5 -1
- package/blog/zh/is_vue-i18n_outdated.md +7 -1
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
- package/blog/zh/per-component_vs_centralized_i18n.md +9 -4
- package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
- package/dist/cjs/generated/blog.entry.cjs +80 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/generated/blog.entry.mjs +80 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/types/generated/blog.entry.d.ts +4 -0
- package/dist/types/generated/blog.entry.d.ts.map +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 +6 -6
- 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 +21 -21
- 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 +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/de/how_works_intlayer.md +2 -2
- package/docs/de/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/en/how_works_intlayer.md +2 -2
- package/docs/en/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/en-GB/how_works_intlayer.md +2 -2
- package/docs/en-GB/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/es/how_works_intlayer.md +2 -2
- package/docs/es/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/fr/how_works_intlayer.md +2 -2
- package/docs/fr/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/hi/how_works_intlayer.md +2 -2
- package/docs/hi/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/id/how_works_intlayer.md +2 -2
- package/docs/id/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/it/how_works_intlayer.md +2 -2
- package/docs/it/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/ja/how_works_intlayer.md +2 -2
- package/docs/ja/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/ko/how_works_intlayer.md +2 -2
- package/docs/ko/interest_of_intlayer.md +6 -6
- 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 +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/pl/how_works_intlayer.md +2 -2
- package/docs/pl/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/pt/how_works_intlayer.md +2 -2
- package/docs/pt/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/ru/how_works_intlayer.md +2 -2
- package/docs/ru/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/tr/how_works_intlayer.md +2 -2
- package/docs/tr/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/uk/how_works_intlayer.md +2 -2
- package/docs/uk/interest_of_intlayer.md +6 -6
- 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 +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/vi/how_works_intlayer.md +2 -2
- package/docs/vi/interest_of_intlayer.md +6 -6
- 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/bundle_optimization.md +5 -1
- package/docs/zh/how_works_intlayer.md +2 -2
- package/docs/zh/interest_of_intlayer.md +6 -6
- 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 +6 -6
- package/docs/zh-TW/intlayer_with_angular_21.md +1 -1
- package/docs/zh-TW/introduction.md +0 -1
- package/package.json +8 -7
- package/src/generated/blog.entry.ts +80 -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,548 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-16
|
|
3
|
+
updatedAt: 2026-09-16
|
|
4
|
+
title: "2026 में सही React i18n लाइब्रेरी कैसे चुनें"
|
|
5
|
+
description: "React internationalization के लिए एक निर्णय गाइड। react-i18next, react-intl, Lingui, use-intl, Paraglide और Intlayer की तुलना करने से पहले किन सवालों के जवाब देने चाहिए, और प्रत्येक विकल्प bundle size, typing और maintenance में क्या लागत लेता है।"
|
|
6
|
+
keywords:
|
|
7
|
+
- react i18n
|
|
8
|
+
- react internationalization
|
|
9
|
+
- react-i18next
|
|
10
|
+
- react-intl
|
|
11
|
+
- Lingui
|
|
12
|
+
- use-intl
|
|
13
|
+
- Paraglide
|
|
14
|
+
- Intlayer
|
|
15
|
+
- i18n लाइब्रेरी तुलना
|
|
16
|
+
slugs:
|
|
17
|
+
- blog
|
|
18
|
+
- how-to-pick-react-i18n-library
|
|
19
|
+
author: aymericzip
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# सही React i18n लाइब्रेरी कैसे चुनें
|
|
23
|
+
|
|
24
|
+
React में कोई इन-बिल्ट i18n primitive नहीं आता है। पहले दिन आप जो लाइब्रेरी चुनते हैं, वह तय करती है कि अनुवाद कैसे स्टोर होंगे, वे बंडल तक कैसे पहुंचेंगे, और अगले कुछ वर्षों के लिए आपका कितना काम बढ़ जाएगा। अधिकांश टीमें लोकप्रियता के आधार पर चुनाव करती हैं, और फिर 2,000 कुंजियों पर पहुंचने के बाद उन्हें इसके नुकसानों का पता चलता है।
|
|
25
|
+
|
|
26
|
+
यह गाइड विपरीत दिशा में काम करता है: पहले अपने प्रोजेक्ट के बारे में कुछ सवालों के जवाब दें, और फिर उन जवाबों को उपयुक्त लाइब्रेरी से मिलाएँ। यह सादे React (Vite, React Router, TanStack Start) पर केंद्रित है। Next.js की अपनी बाधाएं हैं, जिन्हें [Next.js तुलना](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md) में शामिल किया गया है।
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
## विषय सूची
|
|
31
|
+
|
|
32
|
+
<TOC/>
|
|
33
|
+
|
|
34
|
+
## लाइब्रेरीज़ की तुलना करने से पहले उत्तर देने योग्य छह प्रश्न
|
|
35
|
+
|
|
36
|
+
यह जाने बिना कि कौन सी पंक्तियाँ आपके लिए महत्वपूर्ण हैं, एक फीचर टेबल बेकार है। पहले इन्हें देखें।
|
|
37
|
+
|
|
38
|
+
1. **ऐप कैसे रेंडर होता है?** केवल SPA, हाइड्रेशन के साथ SSR, या React Server Components। Context-आधारित hooks SPA में हर जगह काम करते हैं। RSC के साथ, एक hook टेक्स्ट रेंडर करने वाले प्रत्येक घटक पर `"use client"` को बाध्य करता है, इसलिए आपको सर्वर-साइड API की भी आवश्यकता होगी।
|
|
39
|
+
2. **अनुवाद कौन लिखता है?** डेवलपर्स, TMS का उपयोग करने वाली एक इन-हाउस टीम, ICU फ़ाइलें देने वाली एक एजेंसी, या एक AI पाइपलाइन। यह किसी भी API विवरण से अधिक कैटलॉग प्रारूप को तय करता है।
|
|
40
|
+
3. **कितने लोकेल्स और पेज हैं?** दो लोकेल्स और पाँच पेज सब कुछ शिप करना वहन कर सकते हैं। दस लोकेल्स और पचास रूट्स ऐसा नहीं कर सकते, और लोडिंग रणनीति मुख्य लागत बन जाती है।
|
|
41
|
+
4. **क्या आपको कुंजियों पर प्रकारों (types) की आवश्यकता है?** `t("checkout.totl")` में एक टाइपो हर कुंजी-आधारित लाइब्रेरी में तब तक संकलित होता है जब तक कि आप स्वयं प्रकारों को वायर न करें। तय करें कि क्या यह स्वीकार्य है।
|
|
42
|
+
5. **स्ट्रिंग में क्या शामिल है?** सादा टेक्स्ट, बहुवचन (plurals), या बीच में `<Link>` वाले वाक्य। रिच सामग्री वह जगह है जहाँ अधिकांश API अजीब हो जाते हैं।
|
|
43
|
+
6. **प्रोजेक्ट कितने समय तक चलेगा?** तीन महीने के प्रोटोटाइप और पांच साल के उत्पाद को समान मात्रा में बिल्ड टूलिंग की आवश्यकता नहीं होती है।
|
|
44
|
+
|
|
45
|
+
उत्तर लिख लें। नीचे सब कुछ उनका संदर्भ देता है।
|
|
46
|
+
|
|
47
|
+
## एक तस्वीर में पूरा परिदृश्य
|
|
48
|
+
|
|
49
|
+
JavaScript i18n के पंद्रह वर्ष चार वास्तुकला तरंगों में फिट बैठते हैं, और जिन React लाइब्रेरीज़ की आप तुलना करेंगे वे विभिन्न तरंगों से आती हैं।
|
|
50
|
+
|
|
51
|
+

|
|
52
|
+
|
|
53
|
+
<AccordionGroup>
|
|
54
|
+
<Accordion header="रनटाइम डिक्शनरी (2011 से 2017): i18next, react-intl">
|
|
55
|
+
|
|
56
|
+
मेमोरी में लोड किए गए JSON कैटलॉग, रनटाइम पर देखा जाने वाला `t("a.b")`, ब्राउज़र में पार्स किया गया ICU या कस्टम सिंटैक्स। सबसे बड़े इकोसिस्टम, सबसे भारी रनटाइम, और प्रकार (types) वैकल्पिक हैं।
|
|
57
|
+
|
|
58
|
+
</Accordion>
|
|
59
|
+
<Accordion header="कंपाइल-टाइम मैक्रोज़ (2018 से 2021): Lingui, typesafe-i18n">
|
|
60
|
+
|
|
61
|
+
बिल्ड के समय निकाले गए संदेश, कॉम्पैक्ट कैटलॉग में संकलित, टाइप किए गए तर्क। छोटे बंडलों के बदले में एक अतिरिक्त बिल्ड स्टेप (`extract`, `compile`)।
|
|
62
|
+
|
|
63
|
+
</Accordion>
|
|
64
|
+
<Accordion header="सर्वर-फ़र्स्ट (2022 से 2024): use-intl / next-intl">
|
|
65
|
+
|
|
66
|
+
SSR और Server Components के आसपास डिज़ाइन किया गया। सर्वर पर रेंडर करें, केवल वही हाइड्रेट करें जो क्लाइंट को चाहिए। अभी भी कुंजी-आधारित और केंद्रीकृत।
|
|
67
|
+
|
|
68
|
+
</Accordion>
|
|
69
|
+
<Accordion header="कंपाइलर और कोलोकेटेड सामग्री (2024 से 2026): Paraglide, Intlayer, wuchale">
|
|
70
|
+
|
|
71
|
+
सामग्री को ट्री-शेकेबल फ़ंक्शनों या प्रति-घटक डिक्शनरी में संकलित किया जाता है। प्रकार उत्पन्न होते हैं, गायब अनुवाद बिल्ड को विफल कर देते हैं, और AI अनुवाद CLI से चलता है।
|
|
72
|
+
|
|
73
|
+
</Accordion>
|
|
74
|
+
</AccordionGroup>
|
|
75
|
+
|
|
76
|
+
[JavaScript i18n का इतिहास](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/history_of_i18n.md) विस्तार से बताता है कि प्रत्येक तरंग ने पिछली समस्याओं का कैसे समाधान किया।
|
|
77
|
+
|
|
78
|
+
## वह निर्णय जो सबसे अधिक मायने रखता है: सामग्री कहाँ रहती है और कब लोड होती है
|
|
79
|
+
|
|
80
|
+
प्रत्येक React i18n लाइब्रेरी का आकार समान होता है: एक स्टोर, एक प्रोवाइडर, एक हुक। प्रोवाइडर जो कुछ भी प्राप्त करता है वह क्लाइंट बंडल में या हाइड्रेशन पेलोड में समाप्त होता है। इसलिए दो संरचनात्मक विकल्प हैं:
|
|
81
|
+
|
|
82
|
+
- **केंद्रीकृत या स्कोप्ड सामग्री।** ऐप के लिए एक `en.json`, या प्रति घटक (या प्रति नेमस्पेस) एक घोषणा।
|
|
83
|
+
- **स्थिर या गतिशील आयात।** स्टार्टअप पर सब कुछ बंडल किया गया, या सक्रिय लोकेल और रूट मांग पर प्राप्त किए गए।
|
|
84
|
+
|
|
85
|
+
नीचे दिया गया ग्राफ 1 से 10 पृष्ठों के एक सैद्धांतिक ऐप के लिए पेलोड का अनुमान लगाता है, जिसका अनुवाद 1 से 10 लोकेल्स में किया गया है, जिसमें प्रति पृष्ठ लगभग 30 KB टेक्स्ट है।
|
|
86
|
+
|
|
87
|
+

|
|
88
|
+
|
|
89
|
+
स्थिर आयातों के साथ केंद्रीकृत सामग्री दोनों अक्षों के साथ बढ़ती है: 10 पृष्ठ गुणा 10 लोकेल्स का अर्थ है प्रत्येक पृष्ठ पर 300 KB टेक्स्ट। गतिशील आयात लोकेल अक्ष को हटा देते हैं। स्कोपिंग पेज अक्ष को हटा देती है। केवल संयोजन ही स्थिर रहता है।
|
|
90
|
+
|
|
91
|
+
यह लाइब्रेरी का गुण नहीं है, यह अनुशासन का गुण है। `react-i18next` को नेमस्पेस और लेज़ी बैकएंड के साथ स्कोप किया जा सकता है। `use-intl` को प्रति रूट विभाजित किया जा सकता है। लेकिन कोई भी इसे लागू नहीं करता है, और एक साझा `<Button>` जो `t("common:cta")` तक पहुंचता है, चुपचाप `common` को प्रत्येक रूट की निर्भरता बना देता है। [बेंचमार्क](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/benchmark/index.md) इसे "अन्य रूट्स से रिसाव" और "अन्य लोकेल्स से रिसाव" के रूप में मापता है, और यहीं से लाइब्रेरीज़ के बीच अधिकांश अंतर आता है।
|
|
92
|
+
|
|
93
|
+
यदि प्रश्न 3 का आपका उत्तर "कई लोकेल्स, कई पेज" था, तो इस खंड को किसी भी API प्राथमिकता से अधिक महत्व दें। [प्रति-घटक बनाम केंद्रीकृत i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/per-component_vs_centralized_i18n.md) पोस्ट उसी विकल्प के रखरखाव पक्ष पर गहराई से जाती है।
|
|
94
|
+
|
|
95
|
+
## उम्मीदवार
|
|
96
|
+
|
|
97
|
+
लाइब्रेरी के आकार [TanStack Start बेंचमार्क](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/benchmark/tanstack.md) से आते हैं: एक खाली घटक में प्रोवाइडर प्लस हुक, बंडलिंग, ट्री-शेकिंग और मिनिफिकेशन के बाद, 10 पेज और 10 लोकेल्स। सामग्री को अलग से मापा जाता है।
|
|
98
|
+
|
|
99
|
+
| लाइब्रेरी | तरंग | सामग्री मॉडल | टाइप सुरक्षा | संदेश प्रारूप | लाइब्रेरी का आकार |
|
|
100
|
+
| :---------------------- | :------------ | :----------------------------------- | :---------------------------------- | :---------------------------- | :----------------------------------------------- |
|
|
101
|
+
| `react-i18next` | रनटाइम | केंद्रीय JSON, नेमस्पेस | 2/5 — Opt-in (`CustomTypeOptions`) | i18next (प्रत्यय बहुवचन) | ~18.4 kB |
|
|
102
|
+
| `react-intl` (FormatJS) | रनटाइम | केंद्रीय JSON, ICU | 2/5 — Opt-in (निष्कर्षण + यूनियन) | ICU | ~15.3 kB |
|
|
103
|
+
| `use-intl` | सर्वर-फ़र्स्ट | केंद्रीय JSON, ICU | 2/5 — Opt-in (घोषणा विलय) | ICU | ~14.1 kB |
|
|
104
|
+
| `@tolgee/react` | रनटाइम | केंद्रीय, इन-कॉन्टेक्स्ट संपादन | 1/5 — नहीं | ICU | ~11.1 kB |
|
|
105
|
+
| Lingui | मैक्रो | कोड में स्रोत टेक्स्ट, संकलित कैटलॉग | 2/5 — अच्छा, कंपाइलर से | मैक्रोज़ के माध्यम से ICU | ~11.8 kB |
|
|
106
|
+
| Paraglide | कंपाइलर | inlang प्रोजेक्ट, जनरेटेड फ़ंक्शंस | 3.5/5 — जनरेटेड | स्वयं का | लगभग शून्य (कोडबेस में जनरेट किए गए कोड के कारण) |
|
|
107
|
+
| Intlayer | कंपाइलर | प्रति घटक `.content.ts` | 5/5 — जनरेटेड, डिफ़ॉल्ट रूप से चालू | Intlayer (+ ICU, i18next, PO) | ~5.0 kB |
|
|
108
|
+
|
|
109
|
+
> संख्याएं बेंचमार्क के संस्करणों का एक स्नैपशॉट हैं और रिलीज के साथ बदलती हैं। केवल आकार पर निर्णय लेने से पहले अपने स्वयं के ऐप पर बेंचमार्क चलाएं।
|
|
110
|
+
> टाइप सुरक्षा: 5/5 का अर्थ है कि URL फॉर्मेटर और हेल्पर्स सहित कुंजियाँ, पैरामीटर और हर लोकेल बिना किसी मैन्युअल सेटअप के जाँचे जाते हैं।
|
|
111
|
+
|
|
112
|
+
तालिका दो चीजें नहीं दिखाती है। `Paraglide` लगभग कोई लाइब्रेरी शिप नहीं करता क्योंकि यह आपके रिपॉजिटरी में कोड जनरेट करता है, जिसका अर्थ है प्रत्येक कमिट से पहले एक पुनर्जनन चरण और जनरेटेड फ़ाइलों पर मर्ज टकराव। और `Intlayer` को एक बंडलर प्लगइन (`vite-intlayer` या समकक्ष) की आवश्यकता होती है, इसलिए यह नो-बिल्ड सेटअप में नहीं चल सकता।
|
|
113
|
+
|
|
114
|
+
## अपने उत्तरों को एक लाइब्रेरी से मिलाएँ
|
|
115
|
+
|
|
116
|
+
<AccordionGroup>
|
|
117
|
+
<Accordion header="प्रोटोटाइप, छोटी टीम, कम लोकेल्स">
|
|
118
|
+
|
|
119
|
+
सबसे सरल विकल्प चुनें जो काम करता है और ज़रूरत से ज़्यादा निवेश न करें। प्रति लोकेल एकल JSON के साथ `react-i18next` ठीक है, और एक दशक के Stack Overflow उत्तर आपका समय बचाएंगे। जब तक आपको उनकी आवश्यकता न हो तब तक नेमस्पेस छोड़ दें। यदि प्रोटोटाइप एक उत्पाद बन जाता है, तो स्कोप्ड सामग्री में माइग्रेशन का बजट बनाएं; [react-i18next कम्पैट एडॉप्टर](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/compat/react-i18next.md) इसे वृद्धिशील बनाता है।
|
|
120
|
+
|
|
121
|
+
</Accordion>
|
|
122
|
+
<Accordion header="अनुवाद किसी एजेंसी या ICU बोलने वाले TMS से आते हैं">
|
|
123
|
+
|
|
124
|
+
आपका कैटलॉग प्रारूप आपके लिए तय किया गया है। `react-intl` ICU-मूल निवासी है और FormatJS निष्कर्षण टूलिंग उस पाइपलाइन के लिए बनाई गई है। `use-intl` भी ICU पढ़ता है। `react-i18next` को ICU प्लगइन और अन्यथा अपनी बहुवचन कुंजियों की आवश्यकता होती है। Intlayer का ICU समर्थन अभी भी आंशिक है, इसलिए यदि आप आज ICU स्ट्रिंग्स प्राप्त करते हैं, तो इसे तब तक अवरोधक के रूप में मानें जब तक कि यह पूरी तरह उपलब्ध न हो जाए।
|
|
125
|
+
|
|
126
|
+
</Accordion>
|
|
127
|
+
<Accordion header="बड़ा ऐप, कई रूट्स, बंडल बजट मायने रखता है">
|
|
128
|
+
|
|
129
|
+
डिफ़ॉल्ट रूप से स्कोप्ड सामग्री और गतिशील लोडिंग को प्राथमिकता दें, परिपाटी द्वारा नहीं। `Lingui` और `Paraglide` संकलन के माध्यम से वहां पहुंचते हैं। Intlayer प्रति-घटक घोषणाओं के माध्यम से वहां पहुंचता है, और कंपाइलर केवल वही भेजता है जो एक रूट रेंडर करता है। `react-i18next` या `use-intl` के साथ, पहले दिन नेमस्पेस और लेज़ी-लोडिंग रणनीति की योजना बनाएं और समीक्षा में इसे लागू करें, क्योंकि टूलिंग ऐसा नहीं करेगी।
|
|
130
|
+
|
|
131
|
+
</Accordion>
|
|
132
|
+
<Accordion header="प्रकार सुरक्षा (Type safety) गैर-परक्राम्य है">
|
|
133
|
+
|
|
134
|
+
प्रत्येक कुंजी-आधारित लाइब्रेरी को टाइप किया जा सकता है, और लगभग कोई भी डिफ़ॉल्ट रूप से टाइप नहीं होती है। यदि आप घोषणा विलय (declaration merging) को बनाए नहीं रखना चाहते हैं जिसे लेज़ी रूप से लोड किए गए नेमस्पेस में काम करना है, तो ऐसी लाइब्रेरी चुनें जहाँ प्रकार सामग्री से जनरेट होते हैं: `Lingui`, `Paraglide`, या Intlayer। [अनुपस्थित अनुवादों का पता लगाना](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/detecting_missing_translations.md) पोस्ट तुलना करती है कि प्रत्येक बिल्ड समय पर क्या पकड़ता है।
|
|
135
|
+
|
|
136
|
+
</Accordion>
|
|
137
|
+
<Accordion header="बहुत सारी रिच सामग्री: मार्कडाउन, वाक्यों के अंदर लिंक, प्रति-लोकेल घटक">
|
|
138
|
+
|
|
139
|
+
रिच नोड्स वे हैं जहाँ स्ट्रिंग लौटाने वाला `t()` विफल हो जाता है। `react-i18next` और `Lingui` में `<Trans>` है, `react-intl` में रिच टेक्स्ट टैग हैं, जो सभी सादे स्ट्रिंग मामले की तुलना में अधिक जटिल हैं। Intlayer के कंटेंट नोड्स सीधे JSX, मार्कडाउन और नेस्टेड ऑब्जेक्ट्स को स्वीकार करते हैं, जो बेहतर फिट है यदि सामग्री केवल UI लेबल से अधिक है।
|
|
140
|
+
|
|
141
|
+
</Accordion>
|
|
142
|
+
<Accordion header="अनुवाद AI द्वारा तैयार किए जाएंगे, डेवलपर्स द्वारा समीक्षा किए जाएंगे">
|
|
143
|
+
|
|
144
|
+
तब केंद्रीकृत JSON अब कोई आवश्यकता नहीं है, क्योंकि आयात करने के लिए कोई TMS नहीं है। कोलोकेटेड सामग्री और एक CLI जो गायब लोकेल्स को भरता है, छोटा रास्ता है। Intlayer का `fill` कमांड आपकी अपनी API कुंजी (OpenAI, Anthropic, Mistral, Gemini) के विरुद्ध चलता है और केवल वही अनुवाद करता है जो बदला है। Paraglide और Tolgee अपनी योजनाओं के साथ होस्ट किए गए समकक्ष प्रदान करते हैं।
|
|
145
|
+
|
|
146
|
+
</Accordion>
|
|
147
|
+
<Accordion header="आप बाद में Next.js App Router पर जा सकते हैं">
|
|
148
|
+
|
|
149
|
+
React context सर्वर/क्लाइंट सीमा को पार नहीं करता है। केवल एक क्लाइंट हुक पर निर्मित लाइब्रेरीज़ (`react-i18next`, `react-intl`) को जिस दिन आप RSC अपनाते हैं, उस दिन एक समानांतर सर्वर API की आवश्यकता होगी। `use-intl` (`next-intl` के रूप में) और Intlayer (`next-intlayer` के रूप में) में पहले से ही वह विभाजन है। एक पैटर्न को मानकीकृत करने से पहले [Next.js i18n पोस्ट](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/list_i18n_technologies/frameworks/nextjs.md) पढ़ें।
|
|
150
|
+
|
|
151
|
+
</Accordion>
|
|
152
|
+
</AccordionGroup>
|
|
153
|
+
|
|
154
|
+
## प्रत्येक लाइब्रेरी कहाँ कम पड़ जाती है
|
|
155
|
+
|
|
156
|
+
ईमानदार सीमाएँ, क्योंकि हर विकल्प में वे होती हैं।
|
|
157
|
+
|
|
158
|
+
- **`react-i18next`**: सेट में सबसे भारी, इसका अपना बहुवचन प्रारूप, प्रकारों को बनाए रखने की ज़िम्मेदारी आपकी है, अप्रयुक्त कुंजियाँ चुपचाप जमा होती हैं।
|
|
159
|
+
- **`react-intl`**: विस्तृत DX (`useIntl()` फिर `formatMessage({ id })`), कई नोड्स से बंधा वैश्विक इंस्टेंस।
|
|
160
|
+
- **`use-intl`**: शुरू करने में सरल, अनुकूलित करने में कष्टदायी। नेमस्पेस, गतिशील लोडिंग और प्रकार एक साथ विकास को बहुत धीमा कर देते हैं।
|
|
161
|
+
- **`Lingui`**: अतिरिक्त `extract` / `compile` बिल्ड चरण, कई ओवरलैपिंग सिंटैक्स (`t()`, टैग किए गए टेम्पलेट, `i18n.t()`, `<Trans>`) जो मनुष्यों और AI सहायकों दोनों को भ्रमित करते हैं।
|
|
162
|
+
- **`Paraglide`**: रेपो में जनरेट की गई फाइलें, React बेंचमार्क में ट्री-शेकिंग प्रभावी नहीं हुई, और लोकेल को स्टोर के बजाय प्रत्येक नोड पर स्टोरेज से पढ़ा जाता है।
|
|
163
|
+
- **`Tolgee`**: कोई कुंजी प्रकार नहीं, कठिन ऑनबोर्डिंग, इन-कॉन्टेक्स्ट संपादन इसका मुख्य विक्रय बिंदु है।
|
|
164
|
+
- **`Intlayer`**: अनिवार्य बिल्ड प्लगइन, छोटा इकोसिस्टम, आंशिक ICU समर्थन, डिज़ाइन द्वारा पूरे कोडबेस में फैली सामग्री जिससे एक अनुवादक के लिए एक JSON निर्यात करने के लिए टूलिंग की आवश्यकता होती है।
|
|
165
|
+
- **`gt-react`, `lingo.dev`**: बेंचमार्क में अनुशंसित नहीं: बिल्ड पर कोटा त्रुटियां, वेंडर लॉक-इन, और प्रतिक्रियाशीलता समस्याएं जिनके लिए प्रोवाइडर री-रेंडर को बाध्य करना पड़ा।
|
|
166
|
+
|
|
167
|
+
## प्रत्येक विकल्प कोड में कैसा दिखता है
|
|
168
|
+
|
|
169
|
+
एक ही घटक, एक शीर्षक और बहुवचन के साथ एक कार्ट सारांश, प्रत्येक उम्मीदवार के साथ लिखा गया। दिलचस्प हिस्सा घटक नहीं है, यह है कि सामग्री कहाँ रहती है और टाइप चेकर इसके बारे में क्या जानता है।
|
|
170
|
+
|
|
171
|
+
<Tabs defaultTab="react-i18next">
|
|
172
|
+
<Tab label="react-i18next" value="react-i18next">
|
|
173
|
+
|
|
174
|
+
<Tabs group="locale">
|
|
175
|
+
<Tab value="en" label="अंग्रेज़ी">
|
|
176
|
+
|
|
177
|
+
```json fileName="public/locales/en/cart.json"
|
|
178
|
+
{
|
|
179
|
+
"title": "Your cart",
|
|
180
|
+
"items_one": "{{count}} item",
|
|
181
|
+
"items_other": "{{count}} items"
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
</Tab>
|
|
186
|
+
<Tab value="fr" label="फ़्रेंच">
|
|
187
|
+
|
|
188
|
+
```json fileName="public/locales/fr/cart.json"
|
|
189
|
+
{
|
|
190
|
+
"title": "Votre panier",
|
|
191
|
+
"items_one": "{{count}} article",
|
|
192
|
+
"items_other": "{{count}} articles"
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
</Tab>
|
|
197
|
+
<Tab value="es" label="स्पेनिश">
|
|
198
|
+
|
|
199
|
+
```json fileName="public/locales/es/cart.json"
|
|
200
|
+
{
|
|
201
|
+
"title": "Tu carrito",
|
|
202
|
+
"items_one": "{{count}} artículo",
|
|
203
|
+
"items_other": "{{count}} artículos"
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
</Tab>
|
|
208
|
+
</Tabs>
|
|
209
|
+
|
|
210
|
+
```tsx fileName="src/components/CartSummary.tsx"
|
|
211
|
+
import type { FC } from "react";
|
|
212
|
+
import { useTranslation } from "react-i18next";
|
|
213
|
+
|
|
214
|
+
export const CartSummary: FC<{ count: number }> = ({ count }) => {
|
|
215
|
+
const { t } = useTranslation("cart");
|
|
216
|
+
|
|
217
|
+
return (
|
|
218
|
+
<section>
|
|
219
|
+
<h2>{t("title")}</h2>
|
|
220
|
+
<p>{t("items", { count })}</p>
|
|
221
|
+
</section>
|
|
222
|
+
);
|
|
223
|
+
};
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
बहुवचन प्रत्यय कुंजियाँ हैं जो `Intl.PluralRules` के माध्यम से हल होती हैं। `t` का प्रकार `(key: string) => string` है जब तक कि आप `CustomTypeOptions` घोषित नहीं करते, इसलिए `t("titel")` भी संकलित हो जाता है।
|
|
227
|
+
|
|
228
|
+
</Tab>
|
|
229
|
+
<Tab label="react-intl" value="react-intl">
|
|
230
|
+
|
|
231
|
+
<Tabs group="locale">
|
|
232
|
+
<Tab value="en" label="अंग्रेज़ी">
|
|
233
|
+
|
|
234
|
+
```json fileName="src/locales/en.json"
|
|
235
|
+
{
|
|
236
|
+
"cart.title": "Your cart",
|
|
237
|
+
"cart.items": "{count, plural, one {# item} other {# items}}"
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
</Tab>
|
|
242
|
+
<Tab value="fr" label="फ़्रेंच">
|
|
243
|
+
|
|
244
|
+
```json fileName="src/locales/fr.json"
|
|
245
|
+
{
|
|
246
|
+
"cart.title": "Votre panier",
|
|
247
|
+
"cart.items": "{count, plural, one {# article} other {# articles}}"
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
</Tab>
|
|
252
|
+
<Tab value="es" label="स्पेनिश">
|
|
253
|
+
|
|
254
|
+
```json fileName="src/locales/es.json"
|
|
255
|
+
{
|
|
256
|
+
"cart.title": "Tu carrito",
|
|
257
|
+
"cart.items": "{count, plural, one {# artículo} other {# artículos}}"
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
</Tab>
|
|
262
|
+
</Tabs>
|
|
263
|
+
|
|
264
|
+
```tsx fileName="src/components/CartSummary.tsx"
|
|
265
|
+
import type { FC } from "react";
|
|
266
|
+
import { FormattedMessage, useIntl } from "react-intl";
|
|
267
|
+
|
|
268
|
+
export const CartSummary: FC<{ count: number }> = ({ count }) => {
|
|
269
|
+
const intl = useIntl();
|
|
270
|
+
|
|
271
|
+
return (
|
|
272
|
+
<section>
|
|
273
|
+
<h2>
|
|
274
|
+
<FormattedMessage id="cart.title" />
|
|
275
|
+
</h2>
|
|
276
|
+
<p>{intl.formatMessage({ id: "cart.items" }, { count })}</p>
|
|
277
|
+
</section>
|
|
278
|
+
);
|
|
279
|
+
};
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
शुरुआत से अंत तक ICU, जो कि अधिकांश TMS प्लेटफॉर्म निर्यात करते हैं। `id` पर प्रकार `formatjs` निष्कर्षण चरण और एक जनरेट किए गए यूनियन से आते हैं, न कि आउट ऑफ द बॉक्स।
|
|
283
|
+
|
|
284
|
+
</Tab>
|
|
285
|
+
<Tab label="use-intl" value="use-intl">
|
|
286
|
+
|
|
287
|
+
<Tabs group="locale">
|
|
288
|
+
<Tab value="en" label="अंग्रेज़ी">
|
|
289
|
+
|
|
290
|
+
```json fileName="messages/en.json"
|
|
291
|
+
{
|
|
292
|
+
"Cart": {
|
|
293
|
+
"title": "Your cart",
|
|
294
|
+
"items": "{count, plural, one {# item} other {# items}}"
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
</Tab>
|
|
300
|
+
<Tab value="fr" label="फ़्रेंच">
|
|
301
|
+
|
|
302
|
+
```json fileName="messages/fr.json"
|
|
303
|
+
{
|
|
304
|
+
"Cart": {
|
|
305
|
+
"title": "Votre panier",
|
|
306
|
+
"items": "{count, plural, one {# article} other {# articles}}"
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
</Tab>
|
|
312
|
+
<Tab value="es" label="स्पेनिश">
|
|
313
|
+
|
|
314
|
+
```json fileName="messages/es.json"
|
|
315
|
+
{
|
|
316
|
+
"Cart": {
|
|
317
|
+
"title": "Tu carrito",
|
|
318
|
+
"items": "{count, plural, one {# artículo} other {# artículos}}"
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
</Tab>
|
|
324
|
+
</Tabs>
|
|
325
|
+
|
|
326
|
+
```tsx fileName="src/components/CartSummary.tsx"
|
|
327
|
+
import type { FC } from "react";
|
|
328
|
+
import { useTranslations } from "use-intl";
|
|
329
|
+
|
|
330
|
+
export const CartSummary: FC<{ count: number }> = ({ count }) => {
|
|
331
|
+
const t = useTranslations("Cart");
|
|
332
|
+
|
|
333
|
+
return (
|
|
334
|
+
<section>
|
|
335
|
+
<h2>{t("title")}</h2>
|
|
336
|
+
<p>{t("items", { count })}</p>
|
|
337
|
+
</section>
|
|
338
|
+
);
|
|
339
|
+
};
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
Next.js बाइंडिंग के बिना `next-intl` के समान आकार। संदेश प्रकार के साथ `AppConfig` को बढ़ाने के बाद कुंजियाँ टाइप की जाती हैं; नेमस्पेस को विभाजित करना आपका काम है।
|
|
343
|
+
|
|
344
|
+
</Tab>
|
|
345
|
+
<Tab label="Lingui" value="lingui">
|
|
346
|
+
|
|
347
|
+
```po fileName="src/locales/fr/messages.po"
|
|
348
|
+
msgid "Your cart"
|
|
349
|
+
msgstr "Votre panier"
|
|
350
|
+
|
|
351
|
+
msgid "{count, plural, one {# item} other {# items}}"
|
|
352
|
+
msgstr "{count, plural, one {# article} other {# articles}}"
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
```tsx fileName="src/components/CartSummary.tsx"
|
|
356
|
+
import type { FC } from "react";
|
|
357
|
+
import { Plural, Trans } from "@lingui/react/macro";
|
|
358
|
+
|
|
359
|
+
export const CartSummary: FC<{ count: number }> = ({ count }) => (
|
|
360
|
+
<section>
|
|
361
|
+
<h2>
|
|
362
|
+
<Trans>Your cart</Trans>
|
|
363
|
+
</h2>
|
|
364
|
+
<p>
|
|
365
|
+
<Plural value={count} one="# item" other="# items" />
|
|
366
|
+
</p>
|
|
367
|
+
</section>
|
|
368
|
+
);
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
स्रोत भाषा घटक में रहती है; अन्य लोकेल्स `lingui extract` के बाद हैशेड आईडी के तहत `.po` फ़ाइलों में रहते हैं। `extract` या `compile` को भूल जाने पर चुपचाप अंग्रेज़ी पर वापस आ जाता है।
|
|
372
|
+
|
|
373
|
+
</Tab>
|
|
374
|
+
<Tab label="Paraglide" value="paraglide">
|
|
375
|
+
|
|
376
|
+
<Tabs group="locale">
|
|
377
|
+
<Tab value="en" label="अंग्रेज़ी">
|
|
378
|
+
|
|
379
|
+
```json fileName="messages/en.json"
|
|
380
|
+
{
|
|
381
|
+
"cart_title": "Your cart",
|
|
382
|
+
"cart_items": "{count} items"
|
|
383
|
+
}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
</Tab>
|
|
387
|
+
<Tab value="fr" label="फ़्रेंच">
|
|
388
|
+
|
|
389
|
+
```json fileName="messages/fr.json"
|
|
390
|
+
{
|
|
391
|
+
"cart_title": "Votre panier",
|
|
392
|
+
"cart_items": "{count} articles"
|
|
393
|
+
}
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
</Tab>
|
|
397
|
+
<Tab value="es" label="स्पेनिश">
|
|
398
|
+
|
|
399
|
+
```json fileName="messages/es.json"
|
|
400
|
+
{
|
|
401
|
+
"cart_title": "Tu carrito",
|
|
402
|
+
"cart_items": "{count} artículos"
|
|
403
|
+
}
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
</Tab>
|
|
407
|
+
</Tabs>
|
|
408
|
+
|
|
409
|
+
```tsx fileName="src/components/CartSummary.tsx"
|
|
410
|
+
import type { FC } from "react";
|
|
411
|
+
import { m } from "../paraglide/messages.js";
|
|
412
|
+
|
|
413
|
+
export const CartSummary: FC<{ count: number }> = ({ count }) => (
|
|
414
|
+
<section>
|
|
415
|
+
<h2>{m.cart_title()}</h2>
|
|
416
|
+
<p>{m.cart_items({ count })}</p>
|
|
417
|
+
</section>
|
|
418
|
+
);
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
प्रत्येक संदेश एक जनरेटेड, टाइप किया गया फ़ंक्शन है, इसलिए एक गायब कुंजी एक आयात त्रुटि (import error) है। `paraglide/` फ़ोल्डर आपके रेपो में जनरेट होता है और प्रत्येक परिवर्तन पर पुनर्जीवित होता है।
|
|
422
|
+
|
|
423
|
+
</Tab>
|
|
424
|
+
<Tab label="Intlayer" value="intlayer">
|
|
425
|
+
|
|
426
|
+
```ts fileName="src/components/cartSummary.content.ts"
|
|
427
|
+
import { plural, t, type Dictionary } from "intlayer";
|
|
428
|
+
|
|
429
|
+
const cartSummaryContent = {
|
|
430
|
+
key: "cart-summary",
|
|
431
|
+
content: {
|
|
432
|
+
title: t({
|
|
433
|
+
hi: "आपकी कार्ट",
|
|
434
|
+
en: "Your cart",
|
|
435
|
+
fr: "Votre panier",
|
|
436
|
+
es: "Tu carrito",
|
|
437
|
+
}),
|
|
438
|
+
items: t({
|
|
439
|
+
hi: plural({ one: "{{count}} आइटम", other: "{{count}} आइटम" }),
|
|
440
|
+
en: plural({ one: "{{count}} item", other: "{{count}} items" }),
|
|
441
|
+
fr: plural({ one: "{{count}} article", other: "{{count}} articles" }),
|
|
442
|
+
es: plural({ one: "{{count}} artículo", other: "{{count}} artículos" }),
|
|
443
|
+
}),
|
|
444
|
+
},
|
|
445
|
+
} satisfies Dictionary;
|
|
446
|
+
|
|
447
|
+
export default cartSummaryContent;
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
```tsx fileName="src/components/CartSummary.tsx"
|
|
451
|
+
import type { FC } from "react";
|
|
452
|
+
import { useIntlayer } from "react-intlayer";
|
|
453
|
+
|
|
454
|
+
export const CartSummary: FC<{ count: number }> = ({ count }) => {
|
|
455
|
+
const { title, items } = useIntlayer("cart-summary");
|
|
456
|
+
|
|
457
|
+
return (
|
|
458
|
+
<section>
|
|
459
|
+
<h2>{title}</h2>
|
|
460
|
+
<p>{items(count)}</p>
|
|
461
|
+
</section>
|
|
462
|
+
);
|
|
463
|
+
};
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
घटक के बगल में एक फ़ाइल में सभी लोकेल्स। बिल्ड के समय प्रकार जनरेट होते हैं, इसलिए `title` स्वतः पूर्ण (autocomplete) होता है और एक टाइपो बिना किसी घोषणा विलय के `tsc` को विफल कर देता है। फ़ोल्डर हटाने से स्ट्रिंग्स हट जाती हैं।
|
|
467
|
+
|
|
468
|
+
</Tab>
|
|
469
|
+
</Tabs>
|
|
470
|
+
|
|
471
|
+
पहले से ही `react-i18next`, `react-intl` या `Lingui` पर हैं? कम्पैट एडॉप्टर ([react-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/compat/react-i18next.md), [react-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/compat/react-intl.md), [Lingui](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/compat/lingui.md)) बंडलर स्तर पर आयात को एलियास करते हैं ताकि मौजूदा API घटक दर घटक आगे बढ़ते समय काम करता रहे। [माइग्रेशन गाइड](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/migration_from_react-i18next_to_intlayer.md) बाकी को कवर करता है।
|
|
472
|
+
|
|
473
|
+
## प्रतिबद्ध करने से पहले
|
|
474
|
+
|
|
475
|
+
एक फीचर टेबल आपको बताती है कि एक लाइब्रेरी आज क्या करती है। ये बिंदु आपको बताते हैं कि इसके साथ रहना कैसा होगा।
|
|
476
|
+
|
|
477
|
+
**रिपॉजिटरी गतिविधि की जाँच करें।**
|
|
478
|
+
|
|
479
|
+
कमिट, समस्या प्रतिक्रिया समय, और क्या अंतिम मामूली रिलीज इस वर्ष थी। बिना अनुरक्षक के एक ध्वनि डिजाइन प्रतीक्षा में एक माइग्रेशन है।
|
|
480
|
+
|
|
481
|
+
**npm डाउनलोड द्वारा चयन न करें।**
|
|
482
|
+
|
|
483
|
+
सबसे अधिक स्थापित लाइब्रेरी वह है जिसे पहले भेजा गया था, वह नहीं जो 2026 React कोडबेस में फिट बैठती है। डाउनलोड इतिहास को मापते हैं, उपयुक्तता को नहीं।
|
|
484
|
+
|
|
485
|
+

|
|
486
|
+
|
|
487
|
+
**पूछें कि अनुरक्षक को कौन भुगतान करता है, और वे क्या बेचते हैं।**
|
|
488
|
+
|
|
489
|
+
`i18next` को Locize द्वारा समर्थित किया गया है। `next-intl` / `use-intl`, `vue-i18n`, `svelte-i18n` और Lingui को Crowdin द्वारा समर्थित किया गया है। Tolgee, Paraglide (inlang) और Intlayer प्रत्येक अपना स्वयं का प्लेटफ़ॉर्म चलाते हैं। एक विक्रेता जिसका राजस्व होस्टेड अनुवाद है, उसके पास आपके टूलचेन के अंदर अनुवाद को मुफ़्त बनाने का बहुत कम कारण है। Intlayer इस सेट में एकमात्र ऐसा है जो आपकी अपनी API कुंजी के साथ CLI के माध्यम से AI अनुवाद प्रदान करता है, और एक CMS जिसे आप स्वयं होस्ट कर सकते हैं।
|
|
490
|
+
|
|
491
|
+
**क्या यह AI-एजेंट के लिए तैयार है?**
|
|
492
|
+
|
|
493
|
+
एजेंट अभी भी i18n के साथ संघर्ष करते हैं: वे लोकेल्स भूल जाते हैं, कुंजियों का आविष्कार करते हैं, और संदेश सिंटैक्स को मिलाते हैं। क्या लाइब्रेरी [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/agent_skills.md) या एक [MCP सर्वर](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/mcp_server.md) भेजती है ताकि एजेंट सामग्री को सूचीबद्ध, भर और परीक्षण कर सके? और क्या सामग्री लोडिंग डिफ़ॉल्ट रूप से अनुकूलित है, या किसी को हर तिमाही में नेमस्पेस और लेज़ी आयातों की समीक्षा करनी होगी?
|
|
494
|
+
|
|
495
|
+
**आउट ऑफ द बॉक्स प्रकार सुरक्षा (Type safety)।**
|
|
496
|
+
|
|
497
|
+
"अतिरिक्त वायरिंग के साथ टाइप किया जा सकता है" नहीं बल्कि "एक गलत कुंजी एक नए इंस्टॉल पर `tsc` को विफल कर देती है"। जांचें कि उस कुंजी के साथ क्या होता है जो मौजूद नहीं है, और उस लोकेल के साथ जिसमें एक अनुवाद गायब है।
|
|
498
|
+
|
|
499
|
+
**अप्रयुक्त सामग्री का पता लगाना।**
|
|
500
|
+
|
|
501
|
+
कैटलॉग केवल बढ़ते हैं। Intlayer का बिल्ड अप्रयुक्त फ़ील्ड्स को हटा देता है और उन्हें लॉग करता है (`build.purge`)। Paraglide वास्तुकला द्वारा वहां पहुंचता है, क्योंकि एक अनकॉल संदेश फ़ंक्शन ट्री-शेक हो जाता है। बाकी सब कुछ सफाई को आप पर छोड़ देता है।
|
|
502
|
+
|
|
503
|
+
**डेवलपर अनुभव (Developer experience)।**
|
|
504
|
+
|
|
505
|
+
पहले अनुवादित स्ट्रिंग तक सेटअप का समय, एक [LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/lsp.md) या [VS Code एक्सटेंशन](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/vs_code_extension.md) जो होवर पर अनुवाद दिखाता है और घोषणा पर कूदता है, भरने, परीक्षण करने और पुश करने के लिए एक [CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/index.md), आपके कंपोनेंट्स से हार्ड-कोडेड स्ट्रिंग्स निकालने वाला एक [कंपाइलर](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/compiler.md) या एक्सट्रैक्टर ताकि हर स्ट्रिंग को कुंजी-दर-कुंजी प्रबंधित न करना पड़े, और गैर-डेवलपर्स के लिए बिना किसी पुल अनुरोध के सामग्री को संपादित करने का एक तरीका ([विज़ुअल एडिटर](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_visual_editor.md) या [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md))।
|
|
506
|
+
|
|
507
|
+
## अक्सर पूछे जाने वाले प्रश्न
|
|
508
|
+
|
|
509
|
+
<FAQ>
|
|
510
|
+
|
|
511
|
+
<Question title="क्या react-i18next अभी भी 2026 में एक अच्छा डिफ़ॉल्ट है?">
|
|
512
|
+
|
|
513
|
+
अधिकांश टीमों के लिए हाँ। इसके पास सबसे बड़ा इकोसिस्टम और ऑनलाइन सबसे अधिक उत्तर हैं। इसकी लागत वास्तविक लेकिन अनुमानित है: सबसे भारी रनटाइम, एक कस्टम बहुवचन प्रारूप, और प्रकार सुरक्षा प्लस स्कोपिंग जिसे आपको स्वयं सेट अप और डिफेंड करना होगा।
|
|
514
|
+
|
|
515
|
+
</Question>
|
|
516
|
+
|
|
517
|
+
<Question title="क्या मुझे कंपाइलर-आधारित लाइब्रेरी की आवश्यकता है?">
|
|
518
|
+
|
|
519
|
+
केवल तभी जब बंडल आकार, जनरेट किए गए प्रकार या बिल्ड-टाइम अनुपस्थित-कुंजी जांच आपकी आवश्यकताओं में शामिल हों। दो लोकेल्स वाले एक छोटे ऐप के लिए, एक रनटाइम लाइब्रेरी सरल है। [कंपाइलर बनाम घोषणात्मक i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/compiler_vs_declarative_i18n.md) पोस्ट बताती है कि कंपाइलर आपको क्या देते हैं और वे क्या गलत कर सकते हैं।
|
|
520
|
+
|
|
521
|
+
</Question>
|
|
522
|
+
|
|
523
|
+
<Question title="क्या मैं प्रत्येक घटक को फिर से लिखे बिना बाद में लाइब्रेरी बदल सकता हूँ?">
|
|
524
|
+
|
|
525
|
+
आंशिक रूप से। कुंजी-आधारित लाइब्रेरीज़ पर्याप्त आकार साझा करती हैं जिससे कि एक कम्पैट एडॉप्टर एक API को दूसरे के लिए एलियास कर सकता है, जो कि Intlayer एडॉप्टर कैसे काम करते हैं। संदेश प्रारूप (ICU बनाम i18next बनाम हेल्पर्स) स्वचालित रूप से परिवर्तित नहीं होते हैं, इसलिए बहुवचन और इंटरपोलेशन वह हिस्सा हैं जिसे आप स्पर्श करेंगे।
|
|
526
|
+
|
|
527
|
+
</Question>
|
|
528
|
+
|
|
529
|
+
<Question title="क्या लाइब्रेरी का चुनाव SEO को प्रभावित करता है?">
|
|
530
|
+
|
|
531
|
+
अप्रत्यक्ष रूप से। क्रॉलर्स जो देखते हैं वह रूटिंग, `hreflang`, `<html lang>` द्वारा तय किया जाता है और क्या टेक्स्ट सर्वर-रेंडर किए गए HTML में है। कुछ लाइब्रेरीज़ इसके लिए हेल्पर्स भेजती हैं, अधिकांश इसे आप पर छोड़ देती हैं। [hreflang गाइड](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/hreflang_guide_multilingual_seo.md) देखें।
|
|
532
|
+
|
|
533
|
+
</Question>
|
|
534
|
+
|
|
535
|
+
</FAQ>
|
|
536
|
+
|
|
537
|
+
## आगे पढ़ना
|
|
538
|
+
|
|
539
|
+
- [i18n लाइब्रेरी बेंचमार्क: बंडल आकार, रिसाव और लोकेल-स्विच समय](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/benchmark/index.md) और [TanStack Start रिपोर्ट](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/benchmark/tanstack.md)
|
|
540
|
+
- [React i18n: प्रोवाइडर मॉडल कैसे काम करता है और इसकी लागत क्या है](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/list_i18n_technologies/frameworks/react.md)
|
|
541
|
+
- [react-i18next बनाम react-intl बनाम Intlayer, फीचर दर फीचर](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md)
|
|
542
|
+
- [next-i18next बनाम next-intl बनाम Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md)
|
|
543
|
+
- [JavaScript i18n का इतिहास](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/history_of_i18n.md)
|
|
544
|
+
- [कंपाइलर बनाम घोषणात्मक i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/compiler_vs_declarative_i18n.md)
|
|
545
|
+
- [प्रति-घटक बनाम केंद्रीकृत i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/per-component_vs_centralized_i18n.md)
|
|
546
|
+
- [बिल्ड समय पर बंडल अनुकूलन कैसे काम करता है](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/bundle_optimization.md)
|
|
547
|
+
- [Vite + React ऐप में i18n सेट अप करें](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_with_vite+react.md)
|
|
548
|
+
- [Vue](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/how_to_pick_vue_i18n_library.md), [Svelte](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/how_to_pick_svelte_i18n_library.md) और [Solid](https://github.com/aymericzip/intlayer/blob/main/docs/blog/hi/how_to_pick_solid_i18n_library.md) के लिए समान गाइड
|