@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'da Doğru React i18n Kütüphanesini Seçme Rehberi"
|
|
5
|
+
description: React uluslararasılaştırması için karar rehberi. react-i18next, react-intl, Lingui, use-intl, Paraglide ve Intlayer'ı karşılaştırmadan önce yanıtlanması gereken sorular ve her seçeneğin bundle boyutu, typing ve bakım maliyetleri.
|
|
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 kütüphane karşılaştırması
|
|
16
|
+
slugs:
|
|
17
|
+
- blog
|
|
18
|
+
- how-to-pick-react-i18n-library
|
|
19
|
+
author: aymericzip
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Doğru React i18n kütüphanesi nasıl seçilir
|
|
23
|
+
|
|
24
|
+
React yerleşik bir i18n primitive'i sunmaz. İlk gün seçtiğiniz kütüphane, çevirilerin nasıl saklanacağını, bundle'a nasıl ulaşacağını ve önümüzdeki birkaç yıl boyunca iş yükünün ne kadarının size kalacağını belirler. Çoğu ekip popülariteye göre seçim yapar, ardından 2.000 anahtara ulaştığında trade-off'ları keşfeder.
|
|
25
|
+
|
|
26
|
+
Bu rehber tersi bir yaklaşım izler: önce projeniz hakkında birkaç soruyu yanıtlayın, ardından bu yanıtları uygun kütüphanelerle eşleştirin. Bu rehber düz React (Vite, React Router, TanStack Start) projelerine odaklanır. Next.js'in kendine has kısıtlamaları vardır ve bunlar [Next.js karşılaştırması](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md) yazısında ele alınmıştır.
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
## İçindekiler
|
|
31
|
+
|
|
32
|
+
<TOC/>
|
|
33
|
+
|
|
34
|
+
## Kütüphaneleri karşılaştırmadan önce yanıtlanması gereken altı soru
|
|
35
|
+
|
|
36
|
+
Hangi satırların sizin için önemli olduğunu bilmeden bir özellik tablosu işe yaramaz. Öncelikle bunları gözden geçirin.
|
|
37
|
+
|
|
38
|
+
1. **Uygulama nasıl render ediliyor?** Yalnızca SPA, hydration ile SSR veya React Server Components. Context tabanlı hook'lar bir SPA'da her yerde çalışır. RSC ile bir hook, metin render eden her bileşende `"use client"` kullanımını zorunlu kılar, bu nedenle sunucu tarafı bir API'ye de ihtiyacınız olacaktır.
|
|
39
|
+
2. **Çevirileri kim yazıyor?** Geliştiriciler, bir TMS kullanan şirket içi bir ekip, ICU dosyaları teslim eden bir ajans veya bir AI pipeline'ı. Bu durum, herhangi bir API detayından çok katalog formatını belirler.
|
|
40
|
+
3. **Kaç locale ve sayfa var?** İki locale ve beş sayfa her şeyi tek seferde sunabilir. On locale ve elli route bunu kaldıramaz ve yükleme stratejisi ana maliyet haline gelir.
|
|
41
|
+
4. **Anahtarlarda type kontrolüne ihtiyacınız var mı?** `t("checkout.totl")` ifadesindeki bir yazım hatası, typeları kendiniz bağlamadığınız sürece her anahtar tabanlı kütüphanede derlenir. Bunun kabul edilebilir olup olmadığına karar verin.
|
|
42
|
+
5. **Dize ne içeriyor?** Düz metin, çoğullar veya ortasında bir `<Link>` bulunan cümleler. Zengin içerik, çoğu API'nin hantallaştığı yerdir.
|
|
43
|
+
6. **Proje ne kadar süre yaşayacak?** Üç aylık bir prototip ile beş yıllık bir ürün aynı miktarda build aracına ihtiyaç duymaz.
|
|
44
|
+
|
|
45
|
+
Yanıtları bir yere not edin. Aşağıdaki her şey bunlara atıfta bulunacaktır.
|
|
46
|
+
|
|
47
|
+
## Tek bir resimde genel görünüm
|
|
48
|
+
|
|
49
|
+
JavaScript i18n dünyasının on beş yılı dört mimari dalgaya sığar ve karşılaştıracağınız React kütüphaneleri bu farklı dalgalardan gelir.
|
|
50
|
+
|
|
51
|
+

|
|
52
|
+
|
|
53
|
+
<AccordionGroup>
|
|
54
|
+
<Accordion header="Runtime sözlükleri (2011 - 2017): i18next, react-intl">
|
|
55
|
+
|
|
56
|
+
Belleğe yüklenen JSON katalogları, çalışma zamanında aranan `t("a.b")`, tarayıcıda ayrıştırılan ICU veya özel bir sözdizimi. En büyük ekosistemler, en ağır runtime'lar, typelar ise isteğe bağlı (opt-in).
|
|
57
|
+
|
|
58
|
+
</Accordion>
|
|
59
|
+
<Accordion header="Compile-time makroları (2018 - 2021): Lingui, typesafe-i18n">
|
|
60
|
+
|
|
61
|
+
Build sırasında ayıklanan mesajlar, kompakt kataloglara derleme, type güvenli argümanlar. Daha küçük bundle'lar karşılığında ekstra bir derleme adımı (`extract`, `compile`).
|
|
62
|
+
|
|
63
|
+
</Accordion>
|
|
64
|
+
<Accordion header="Server-first (2022 - 2024): use-intl / next-intl">
|
|
65
|
+
|
|
66
|
+
SSR ve Server Components etrafında tasarlanmıştır. Sunucuda render edin, client'a yalnızca ihtiyaç duyduğu kısmı hydrate edin. Hâlâ anahtar tabanlı ve merkezi.
|
|
67
|
+
|
|
68
|
+
</Accordion>
|
|
69
|
+
<Accordion header="Derleyici ve birlikte konumlandırılmış (colocated) içerik (2024 - 2026): Paraglide, Intlayer, wuchale">
|
|
70
|
+
|
|
71
|
+
İçerik, tree-shakable fonksiyonlara veya bileşen başına sözlüklere derlenir. Typelar otomatik oluşturulur, eksik çeviriler derlemeyi durdurur ve AI çevirisi CLI üzerinden çalışır.
|
|
72
|
+
|
|
73
|
+
</Accordion>
|
|
74
|
+
</AccordionGroup>
|
|
75
|
+
|
|
76
|
+
[JavaScript i18n tarihi](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/history_of_i18n.md), her dalganın bir öncekinin sorunlarına nasıl yanıt verdiğini ayrıntılı olarak açıklamaktadır.
|
|
77
|
+
|
|
78
|
+
## En önemli karar: içerik nerede yaşar ve ne zaman yüklenir
|
|
79
|
+
|
|
80
|
+
Her React i18n kütüphanesi aynı yapıya sahiptir: bir store, bir provider, bir hook. Provider ne alırsa alsın, client bundle'ında veya hydration payload'ında son bulur. Dolayısıyla iki yapısal seçenek şunlardır:
|
|
81
|
+
|
|
82
|
+
- **Merkezi veya kapsamlı (scoped) içerik.** Uygulama için tek bir `en.json` ya da bileşen başına (veya namespace başına) bir bildirim.
|
|
83
|
+
- **Statik veya dinamik import.** Başlangıçta paketlenen her şey veya isteğe bağlı olarak yüklenen aktif locale ve route.
|
|
84
|
+
|
|
85
|
+
Aşağıdaki grafik, sayfa başına yaklaşık 30 KB metin içeren, 1 ila 10 sayfadan oluşan ve 1 ila 10 dile çevrilmiş teorik bir uygulamanın payload boyutunu tahmin etmektedir.
|
|
86
|
+
|
|
87
|
+

|
|
88
|
+
|
|
89
|
+
Statik import'lara sahip merkezi içerik her iki eksende de büyür: 10 sayfa çarpı 10 locale, her sayfada 300 KB metin demektir. Dinamik import'lar locale eksenini ortadan kaldırır. Scoping sayfa eksenini ortadan kaldırır. Yalnızca bu ikisinin kombinasyonu grafiği sabit tutar.
|
|
90
|
+
|
|
91
|
+
Bu bir kütüphane özelliği değil, bir disiplin özelliğidir. `react-i18next` namespace'ler ve lazy backend'ler ile sınırlandırılabilir. `use-intl` route başına bölünebilir. Ancak hiçbir şey bunu zorlamaz ve `t("common:cta")` çağıran paylaşılan bir `<Button>`, `common` namespace'ini sessizce her route'un bağımlılığı haline getirir. [Benchmark](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/benchmark/index.md) bunu "diğer route'lardan sızıntı" ve "diğer locale'lerden sızıntı" olarak ölçer ve kütüphaneler arasındaki farkın çoğu buradan kaynaklanır.
|
|
92
|
+
|
|
93
|
+
3. soruya yanıtınız "çok sayıda locale, çok sayıda sayfa" olduysa, bu bölüme herhangi bir API tercihinden daha fazla önem verin. [Bileşen bazlı vs merkezi i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/per-component_vs_centralized_i18n.md) yazısı, aynı tercihin bakım tarafını daha derinlemesine inceler.
|
|
94
|
+
|
|
95
|
+
## Adaylar
|
|
96
|
+
|
|
97
|
+
Kütüphane boyutları [TanStack Start benchmark](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/benchmark/tanstack.md) çalışmasından alınmıştır: boş bir bileşende provider artı hook, bundling, tree-shaking ve minification sonrası, 10 sayfa ve 10 locale. İçerik ayrıca ölçülür.
|
|
98
|
+
|
|
99
|
+
| Kütüphane | Dalga | İçerik modeli | Tip güvenliği | Mesaj formatı | Kütüphane boyutu |
|
|
100
|
+
| :---------------------- | :----------- | :-------------------------------------------- | :--------------------------------- | :---------------------------- | :-------------------------------------------------- |
|
|
101
|
+
| `react-i18next` | Runtime | Merkezi JSON, namespace'ler | 2/5 — Opt-in (`CustomTypeOptions`) | i18next (suffix çoğullar) | ~18.4 kB |
|
|
102
|
+
| `react-intl` (FormatJS) | Runtime | Merkezi JSON, ICU | 2/5 — Opt-in (extraction + union) | ICU | ~15.3 kB |
|
|
103
|
+
| `use-intl` | Server-first | Merkezi JSON, ICU | 2/5 — Opt-in (declaration merging) | ICU | ~14.1 kB |
|
|
104
|
+
| `@tolgee/react` | Runtime | Merkezi, bağlam içi (in-context) düzenleme | 1/5 — Yok | ICU | ~11.1 kB |
|
|
105
|
+
| Lingui | Macro | Kod içinde kaynak metin, derlenmiş kataloglar | 2/5 — İyi, derleyiciden gelir | Makrolar ile ICU | ~11.8 kB |
|
|
106
|
+
| Paraglide | Compiler | inlang projesi, üretilen fonksiyonlar | 3.5/5 — Üretilmiş (Generated) | Kendine ait | Sıfıra yakın (kod tabanında üretilen kod sayesinde) |
|
|
107
|
+
| Intlayer | Compiler | Bileşen başına `.content.ts` | 5/5 — Üretilmiş, varsayılan açık | Intlayer (+ ICU, i18next, PO) | ~5.0 kB |
|
|
108
|
+
|
|
109
|
+
> Rakamlar, benchmark sırasındaki sürümlerin anlık bir görüntüsüdür ve yeni sürümlerle değişebilir. Yalnızca boyuta göre karar vermeden önce benchmark'ı kendi uygulamanızda çalıştırın.
|
|
110
|
+
> Tip güvenliği: 5/5; anahtarların, parametrelerin ve her locale'in, URL biçimlendirici ve yardımcılar (helpers) dahil olmak üzere manuel kurulum olmadan kontrol edildiği anlamına gelir.
|
|
111
|
+
|
|
112
|
+
Tablonun göstermediği iki nokta var. `Paraglide`, kodları doğrudan deponuza (repo) ürettiği için neredeyse hiçbir kütüphane kodu içermez; bu da her commit öncesinde bir yeniden üretim adımı ve üretilen dosyalarda merge conflict'leri anlamına gelir. `Intlayer` ise bir bundler eklentisi (`vite-intlayer` veya eşdeğeri) gerektirir, bu nedenle build adımı olmayan bir kurulumda çalışamaz.
|
|
113
|
+
|
|
114
|
+
## Yanıtlarınızı bir kütüphaneyle eşleştirin
|
|
115
|
+
|
|
116
|
+
<AccordionGroup>
|
|
117
|
+
<Accordion header="Prototip, küçük ekip, az sayıda locale">
|
|
118
|
+
|
|
119
|
+
Çalışan en basit seçeneği seçin ve aşırı yatırım yapmayın. Locale başına tek bir JSON ile `react-i18next` gayet uygundur ve Stack Overflow'daki on yıllık yanıtlar size zaman kazandıracaktır. İhtiyacınız olana kadar namespace'leri atlayın. Prototip bir ürüne dönüşürse, kapsamlı (scoped) içeriğe geçiş için bütçe ayırın; [react-i18next uyumluluk adaptörü](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/compat/react-i18next.md) bu geçişi aşamalı hale getirir.
|
|
120
|
+
|
|
121
|
+
</Accordion>
|
|
122
|
+
<Accordion header="Çeviriler bir ajans veya ICU formatını destekleyen bir TMS'den geliyor">
|
|
123
|
+
|
|
124
|
+
Katalog formatınız sizin yerinize belirlenmiştir. `react-intl` yerel olarak ICU destekler ve FormatJS extraction araçları bu pipeline için oluşturulmuştur. `use-intl` de ICU okur. `react-i18next`, ICU eklentisine ve aksi takdirde kendi çoğul anahtarlarına ihtiyaç duyar. Intlayer'ın ICU desteği henüz kısmi aşamadadır, bu nedenle bugün doğrudan ICU dizeleri alıyorsanız, bu özellik tamamlanana kadar bunu bir engel olarak değerlendirin.
|
|
125
|
+
|
|
126
|
+
</Accordion>
|
|
127
|
+
<Accordion header="Büyük uygulama, çok sayıda route, bundle bütçesi kritik">
|
|
128
|
+
|
|
129
|
+
Sözleşmeye göre değil, varsayılan olarak kapsamlı (scoped) içeriği ve dinamik yüklemeyi tercih edin. `Lingui` ve `Paraglide` derleme yoluyla buna ulaşır. Intlayer, bileşen başına bildirimlerle buna ulaşır ve derleyici yalnızca bir route'un render ettiği içeriği gönderir. `react-i18next` veya `use-intl` ile namespace ve lazy-loading stratejisini ilk günden planlayın ve code review'larda zorunlu kılın, çünkü araçlar bunu otomatik olarak yapmayacaktır.
|
|
130
|
+
|
|
131
|
+
</Accordion>
|
|
132
|
+
<Accordion header="Type güvenliği vazgeçilmezdir">
|
|
133
|
+
|
|
134
|
+
Her anahtar tabanlı kütüphane type güvenli hale getirilebilir, ancak neredeyse hiçbiri varsayılan olarak böyle değildir. Lazy yüklenen namespace'ler karşısında ayakta kalması gereken declaration merging yapılarıyla uğraşmak istemiyorsanız, typeların içerikten otomatik üretildiği bir kütüphane seçin: `Lingui`, `Paraglide` veya Intlayer. [Eksik çevirileri algılama](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/detecting_missing_translations.md) yazısı, her birinin derleme zamanında neleri yakaladığını karşılaştırır.
|
|
135
|
+
|
|
136
|
+
</Accordion>
|
|
137
|
+
<Accordion header="Çok sayıda zengin içerik: markdown, cümle içi bağlantılar, locale başına bileşenler">
|
|
138
|
+
|
|
139
|
+
Zengin düğümler, bir dize döndüren `t()` fonksiyonunun yetersiz kaldığı yerdir. `react-i18next` ve `Lingui` `<Trans>` bileşenine, `react-intl` zengin metin etiketlerine sahiptir; hepsi de düz dize durumuna göre daha hantaldır. Intlayer'ın içerik düğümleri doğrudan JSX, markdown ve iç içe objeleri kabul eder; bu da içeriğin yalnızca UI etiketlerinden ibaret olmadığı durumlar için daha iyi bir çözümdür.
|
|
140
|
+
|
|
141
|
+
</Accordion>
|
|
142
|
+
<Accordion header="Çeviriler AI tarafından üretilecek, geliştiriciler tarafından incelenecek">
|
|
143
|
+
|
|
144
|
+
Bu durumda, içeri aktarılacak bir TMS bulunmadığından merkezi bir JSON artık bir gereklilik değildir. Birlikte konumlandırılmış içerik ve eksik locale'leri dolduran bir CLI en kısa yoldur. Intlayer'ın `fill` komutu kendi API anahtarınızla (OpenAI, Anthropic, Mistral, Gemini) çalışır ve yalnızca değişen kısımları çevirir. Paraglide ve Tolgee kendi planlarıyla barındırılan alternatifler sunar.
|
|
145
|
+
|
|
146
|
+
</Accordion>
|
|
147
|
+
<Accordion header="Daha sonra Next.js App Router'a geçebilirsiniz">
|
|
148
|
+
|
|
149
|
+
React context, sunucu/istemci sınırını geçemez. Yalnızca istemci hook'u üzerine kurulu kütüphaneler (`react-i18next`, `react-intl`), RSC'yi benimsediğiniz gün paralel bir sunucu API'sine ihtiyaç duyacaktır. `use-intl` (`next-intl` olarak) ve Intlayer (`next-intlayer` olarak) bu ayrıma zaten sahiptir. Bir deseni standartlaştırmadan önce [Next.js i18n yazısını](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/list_i18n_technologies/frameworks/nextjs.md) okuyun.
|
|
150
|
+
|
|
151
|
+
</Accordion>
|
|
152
|
+
</AccordionGroup>
|
|
153
|
+
|
|
154
|
+
## Her kütüphanenin yetersiz kaldığı noktalar
|
|
155
|
+
|
|
156
|
+
Her seçeneğin sınırları vardır, dürüst limitler:
|
|
157
|
+
|
|
158
|
+
- **`react-i18next`**: Grubun en ağırı, kendine has çoğul formatı, typeların bakımını sizin yapmanız gerekir, ölü anahtarlar sessizce birikir.
|
|
159
|
+
- **`react-intl`**: Ayrıntılı (verbose) DX (`useIntl()` ardından `formatMessage({ id })`), birçok düğüme bağlı global instance.
|
|
160
|
+
- **`use-intl`**: Başlaması basit, optimize etmesi zahmetli. Namespace'ler, dinamik yükleme ve typelar bir araya geldiğinde geliştirmeyi oldukça yavaşlatır.
|
|
161
|
+
- **`Lingui`**: Ekstra `extract` / `compile` derleme adımı, hem insanları hem de AI asistanlarını karıştıran birkaç örtüşen sözdizimi (`t()`, tagged template, `i18n.t()`, `<Trans>`).
|
|
162
|
+
- **`Paraglide`**: Depoda üretilen dosyalar, React benchmark'ında tree-shaking etkili olmadı ve locale bir store yerine her düğümde depolamadan (storage) okunur.
|
|
163
|
+
- **`Tolgee`**: Anahtar typeları yok, alışması daha zor, öne çıkan satış noktası in-context düzenleme.
|
|
164
|
+
- **`Intlayer`**: Zorunlu build eklentisi, daha küçük ekosistem, kısmi ICU desteği, içerik tasarım gereği kod tabanına yayıldığından bir çevirmen için tek bir JSON dışa aktarmak araç gerektirir.
|
|
165
|
+
- **`gt-react`, `lingo.dev`**: Benchmark'ta önerilmedi: derlemede kota hataları, satıcı bağımlılığı (vendor lock-in) ve provider'ı zorla yeniden render etmeyi gerektiren reaktivite sorunları.
|
|
166
|
+
|
|
167
|
+
## Her seçeneğin kodda görünümü
|
|
168
|
+
|
|
169
|
+
Aynı bileşen, başlık ve çoğul içeren bir sepet özeti, her aday ile yazılmıştır. İlginç olan kısım bileşen değil, içeriğin nerede yaşadığı ve type checker'ın bunun hakkında ne bildiğidir.
|
|
170
|
+
|
|
171
|
+
<Tabs defaultTab="react-i18next">
|
|
172
|
+
<Tab label="react-i18next" value="react-i18next">
|
|
173
|
+
|
|
174
|
+
<Tabs group="locale">
|
|
175
|
+
<Tab value="en" label="İngilizce">
|
|
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="Fransızca">
|
|
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="İspanyolca">
|
|
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
|
+
Çoğullar, `Intl.PluralRules` aracılığıyla çözümlenen son ek (suffix) anahtarlarıdır. `CustomTypeOptions` tanımlamadığınız sürece `t`, `(key: string) => string` tipindedir, bu yüzden `t("titel")` başarıyla derlenir.
|
|
227
|
+
|
|
228
|
+
</Tab>
|
|
229
|
+
<Tab label="react-intl" value="react-intl">
|
|
230
|
+
|
|
231
|
+
<Tabs group="locale">
|
|
232
|
+
<Tab value="en" label="İngilizce">
|
|
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="Fransızca">
|
|
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="İspanyolca">
|
|
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
|
+
Çoğu TMS platformunun dışa aktardığı uçtan uca ICU. `id` üzerindeki typelar, kutudan çıktığı gibi değil, `formatjs` extraction adımı ve üretilen bir union sayesinde gelir.
|
|
283
|
+
|
|
284
|
+
</Tab>
|
|
285
|
+
<Tab label="use-intl" value="use-intl">
|
|
286
|
+
|
|
287
|
+
<Tabs group="locale">
|
|
288
|
+
<Tab value="en" label="İngilizce">
|
|
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="Fransızca">
|
|
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="İspanyolca">
|
|
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 binding'leri olmadan `next-intl` ile aynı yapı. `AppConfig` mesaj tipiyle genişletildikten sonra anahtarlar type güvenli hale gelir; namespace'leri bölmek sizin sorumluluğunuzdadır.
|
|
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
|
+
Kaynak dil bileşenin içinde yer alır; diğer locale'ler `lingui extract` sonrasında hashlenmiş id'ler altında `.po` dosyalarında yaşar. `extract` veya `compile` adımlarını unutmak sessizce İngilizceye geri dönülmesine neden olur.
|
|
372
|
+
|
|
373
|
+
</Tab>
|
|
374
|
+
<Tab label="Paraglide" value="paraglide">
|
|
375
|
+
|
|
376
|
+
<Tabs group="locale">
|
|
377
|
+
<Tab value="en" label="İngilizce">
|
|
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="Fransızca">
|
|
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="İspanyolca">
|
|
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
|
+
Her mesaj üretilmiş ve type güvenli bir fonksiyondur, bu nedenle eksik bir anahtar bir import hatası oluşturur. `paraglide/` klasörü deponuzda üretilir ve her değişiklikte yeniden derlenir.
|
|
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
|
+
tr: "Sepetiniz",
|
|
434
|
+
en: "Your cart",
|
|
435
|
+
fr: "Votre panier",
|
|
436
|
+
es: "Tu carrito",
|
|
437
|
+
}),
|
|
438
|
+
items: t({
|
|
439
|
+
tr: plural({ one: "{{count}} ürün", other: "{{count}} ürün" }),
|
|
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
|
+
Tüm locale'ler bileşenin yanındaki tek bir dosyada bulunur. Typelar derleme sırasında üretilir, böylece `title` otomatik tamamlanır ve bir yazım hatası declaration merging olmadan `tsc` derlemesini durdurur. Klasörü silmek dizeleri de siler.
|
|
467
|
+
|
|
468
|
+
</Tab>
|
|
469
|
+
</Tabs>
|
|
470
|
+
|
|
471
|
+
Halihazırda `react-i18next`, `react-intl` veya `Lingui` kullanıyor musunuz? Uyumluluk adaptörleri ([react-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/compat/react-i18next.md), [react-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/compat/react-intl.md), [Lingui](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/compat/lingui.md)), import'ları bundler düzeyinde alias haline getirir; böylece siz bileşen bazında geçiş yaparken mevcut API çalışmaya devam eder. [Geçiş rehberi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/migration_from_react-i18next_to_intlayer.md) geri kalan detayları kapsar.
|
|
472
|
+
|
|
473
|
+
## Karar vermeden önce
|
|
474
|
+
|
|
475
|
+
Bir özellik tablosu bir kütüphanenin bugün ne yaptığını gösterir. Bu maddeler ise onunla yaşamanın nasıl bir şey olacağını anlatır.
|
|
476
|
+
|
|
477
|
+
**Repository aktivitesini kontrol edin.**
|
|
478
|
+
|
|
479
|
+
Commitler, issue yanıt süreleri ve son minör sürümün bu yıl çıkıp çıkmadığı. Bakımı yapılmayan iyi bir mimari, ertelenmiş bir göç sürecidir.
|
|
480
|
+
|
|
481
|
+
**npm indirme sayılarına göre seçim yapmayın.**
|
|
482
|
+
|
|
483
|
+
En çok indirilen kütüphane, 2026 React kod tabanına en uygun olan değil, ilk yayınlanan kütüphanedir. İndirmeler uyumu değil, geçmişi ölçer.
|
|
484
|
+
|
|
485
|
+

|
|
486
|
+
|
|
487
|
+
**Kütüphaneyi kimin finanse ettiğini ve ne sattıklarını sorun.**
|
|
488
|
+
|
|
489
|
+
`i18next`, Locize tarafından desteklenmektedir. `next-intl` / `use-intl`, `vue-i18n`, `svelte-i18n` ve Lingui, Crowdin tarafından desteklenmektedir. Tolgee, Paraglide (inlang) ve Intlayer kendi platformlarını yürütmektedir. Geliri barındırılan çevirilerden gelen bir sağlayıcının, araç zinciriniz içinde çeviriyi ücretsiz hale getirmek için çok az nedeni vardır. Intlayer, kendi API anahtarınızla CLI üzerinden AI çevirisi sunan ve self-host edebileceğiniz bir CMS sağlayan tek seçenektir.
|
|
490
|
+
|
|
491
|
+
**AI agent kullanımına hazır mı?**
|
|
492
|
+
|
|
493
|
+
Agent'lar i18n konusunda hâlâ zorlanmaktadır: locale'leri unuturlar, anahtarlar uydururlar ve mesaj sözdizimlerini karıştırırlar. Kütüphane, agent'ın içeriği listelemesi, doldurması ve test etmesi için [Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/agent_skills.md) veya bir [MCP sunucusu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/mcp_server.md) sunuyor mu? İçerik yüklemesi varsayılan olarak optimize edilmiş mi, yoksa birinin her çeyrekte namespace'leri ve lazy import'ları gözden geçirmesi mi gerekiyor?
|
|
494
|
+
|
|
495
|
+
**Kutudan çıktığı gibi Type Güvenliği.**
|
|
496
|
+
|
|
497
|
+
"Ekstra yapılandırmayla type güvenli hale getirilebilir" değil, "yanlış bir anahtar temiz bir kurulumda `tsc` derlemesini durdurur". Var olmayan bir anahtarda ve bir çevirisi eksik olan bir locale durumunda ne olduğunu kontrol edin.
|
|
498
|
+
|
|
499
|
+
**Kullanılmayan içeriğin tespiti.**
|
|
500
|
+
|
|
501
|
+
Kataloglar sadece büyür. Intlayer'ın derleme adımı kullanılmayan alanları temizler ve bunları loglar (`build.purge`). Paraglide çağrılmayan mesaj fonksiyonunu tree-shaking ile elediğinden mimari olarak buna ulaşır. Diğer tüm kütüphaneler temizlik işini size bırakır.
|
|
502
|
+
|
|
503
|
+
**Geliştirici deneyimi (DX).**
|
|
504
|
+
|
|
505
|
+
İlk çevrilmiş dizeye kadar geçen kurulum süresi, fareyle üzerine gelindiğinde çeviriyi gösteren ve bildirime atlayan bir [LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/lsp.md) veya [VS Code eklentisi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/vs_code_extension.md), doldurma, test etme ve push için bir [CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/index.md), bileşenlerinizdeki sabit kodlanmış dizeleri çıkaran ve böylece her dizeyi anahtar anahtar yönetmenizi gerektirmeyen bir [derleyici](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/compiler.md) veya çıkarıcı ve geliştirici olmayanların bir pull request açmadan içeriği düzenlemesi için bir yol ([görsel düzenleyici](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_visual_editor.md) veya [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md)).
|
|
506
|
+
|
|
507
|
+
## Sıkça Sorulan Sorular
|
|
508
|
+
|
|
509
|
+
<FAQ>
|
|
510
|
+
|
|
511
|
+
<Question title="react-i18next 2026'da hâlâ iyi bir varsayılan seçenek mi?">
|
|
512
|
+
|
|
513
|
+
Çoğu ekip için evet. En büyük ekosisteme ve internette en fazla yanıta sahiptir. Maliyetleri gerçektir ancak öngörülebilirdir: en ağır runtime, özel bir çoğul formatı, kendiniz kurup korumanız gereken type güvenliği ve scoping.
|
|
514
|
+
|
|
515
|
+
</Question>
|
|
516
|
+
|
|
517
|
+
<Question title="Derleyici tabanlı (compiler-based) bir kütüphaneye ihtiyacım var mı?">
|
|
518
|
+
|
|
519
|
+
Yalnızca bundle boyutu, üretilen typelar veya derleme zamanında eksik anahtar kontrolleri gereksinimleriniz arasındaysa. İki locale içeren küçük bir uygulama için runtime kütüphanesi daha basittir. [Derleyici vs bildirimsel i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/compiler_vs_declarative_i18n.md) yazısı, derleyicilerin size ne sağladığını ve neleri yanlış yapabileceğini açıklamaktadır.
|
|
520
|
+
|
|
521
|
+
</Question>
|
|
522
|
+
|
|
523
|
+
<Question title="Daha sonra her bileşeni yeniden yazmadan kütüphaneyi değiştirebilir miyim?">
|
|
524
|
+
|
|
525
|
+
Kısmen. Anahtar tabanlı kütüphaneler, bir uyumluluk adaptörünün bir API'yi diğerine eşlemesine yetecek kadar benzer yapıdadır; Intlayer adaptörleri de bu şekilde çalışır. Mesaj formatları (ICU vs i18next vs helper'lar) otomatik olarak dönüştürülmez, bu nedenle çoğullar ve enterpolasyon düzenleyeceğiniz kısım olacaktır.
|
|
526
|
+
|
|
527
|
+
</Question>
|
|
528
|
+
|
|
529
|
+
<Question title="Kütüphane seçimi SEO'yu etkiler mi?">
|
|
530
|
+
|
|
531
|
+
Dolaylı olarak. Crawler'ların gördüğü şey; yönlendirme, `hreflang`, `<html lang>` ve metnin sunucu tarafından render edilen HTML'de olup olmadığına göre belirlenir. Bazı kütüphaneler bunun için helper'lar sunar, çoğu ise bunu size bırakır. [hreflang rehberine](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/hreflang_guide_multilingual_seo.md) göz atın.
|
|
532
|
+
|
|
533
|
+
</Question>
|
|
534
|
+
|
|
535
|
+
</FAQ>
|
|
536
|
+
|
|
537
|
+
## Daha fazlası
|
|
538
|
+
|
|
539
|
+
- [i18n kütüphane benchmark'ı: bundle boyutu, sızıntı ve locale geçiş süreleri](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/benchmark/index.md) ve [TanStack Start raporu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/benchmark/tanstack.md)
|
|
540
|
+
- [React i18n: provider modeli nasıl çalışır ve maliyeti nedir](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/list_i18n_technologies/frameworks/react.md)
|
|
541
|
+
- [Özellik özellik: react-i18next vs react-intl vs Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md)
|
|
542
|
+
- [next-i18next vs next-intl vs Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md)
|
|
543
|
+
- [JavaScript i18n tarihi](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/history_of_i18n.md)
|
|
544
|
+
- [Derleyici vs bildirimsel i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/compiler_vs_declarative_i18n.md)
|
|
545
|
+
- [Bileşen bazlı vs merkezi i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/per-component_vs_centralized_i18n.md)
|
|
546
|
+
- [Build zamanında bundle optimizasyonu nasıl çalışır](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/bundle_optimization.md)
|
|
547
|
+
- [Vite + React uygulamasında i18n kurulumu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_with_vite+react.md)
|
|
548
|
+
- Aynı rehber: [Vue](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/how_to_pick_vue_i18n_library.md), [Svelte](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/how_to_pick_svelte_i18n_library.md) ve [Solid](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/how_to_pick_solid_i18n_library.md)
|