@intlayer/docs 8.7.6 → 8.7.8-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/blog/ar/i18n_using_next-i18next.md +1 -1
- package/blog/ar/i18n_using_next-intl.md +1 -1
- package/blog/ar/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/de/i18n_using_next-i18next.md +1 -1
- package/blog/de/i18n_using_next-intl.md +1 -1
- package/blog/de/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/en/i18n_using_next-i18next.md +1 -1
- package/blog/en/i18n_using_next-intl.md +1 -1
- package/blog/en/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/en-GB/i18n_using_next-i18next.md +1 -1
- package/blog/en-GB/i18n_using_next-intl.md +1 -1
- package/blog/en-GB/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/es/i18n_using_next-i18next.md +1 -1
- package/blog/es/i18n_using_next-intl.md +1 -1
- package/blog/es/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/fr/i18n_using_next-i18next.md +1 -1
- package/blog/fr/i18n_using_next-intl.md +1 -1
- package/blog/fr/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/hi/i18n_using_next-i18next.md +1 -1
- package/blog/hi/i18n_using_next-intl.md +1 -1
- package/blog/hi/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/id/i18n_using_next-i18next.md +1 -1
- package/blog/id/i18n_using_next-intl.md +1 -1
- package/blog/it/i18n_using_next-i18next.md +1 -1
- package/blog/it/i18n_using_next-intl.md +1 -1
- package/blog/it/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/ja/i18n_using_next-i18next.md +1 -1
- package/blog/ja/i18n_using_next-intl.md +1 -1
- package/blog/ko/i18n_using_next-i18next.md +1 -1
- package/blog/ko/i18n_using_next-intl.md +1 -1
- package/blog/pl/i18n_using_next-i18next.md +1 -1
- package/blog/pl/i18n_using_next-intl.md +1 -1
- package/blog/pt/i18n_using_next-i18next.md +1 -1
- package/blog/pt/i18n_using_next-intl.md +1 -1
- package/blog/pt/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/ru/i18n_using_next-i18next.md +1 -1
- package/blog/ru/i18n_using_next-intl.md +1 -1
- package/blog/ru/list_i18n_technologies/frameworks/react-native.md +0 -4
- package/blog/tr/i18n_using_next-i18next.md +1 -1
- package/blog/tr/i18n_using_next-intl.md +1 -1
- package/blog/uk/i18n_using_next-i18next.md +1 -1
- package/blog/uk/i18n_using_next-intl.md +1 -1
- package/blog/vi/i18n_using_next-i18next.md +1 -1
- package/blog/vi/i18n_using_next-intl.md +1 -1
- package/blog/zh/i18n_using_next-i18next.md +1 -1
- package/blog/zh/i18n_using_next-intl.md +1 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +140 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +140 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/common.d.ts +1 -0
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +7 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/dictionary/condition.md +2 -116
- package/docs/ar/dictionary/content_file.md +2 -202
- package/docs/ar/dictionary/enumeration.md +2 -116
- package/docs/ar/dictionary/file.md +3 -103
- package/docs/ar/dictionary/function_fetching.md +3 -105
- package/docs/ar/dictionary/gender.md +2 -140
- package/docs/ar/dictionary/insertion.md +3 -57
- package/docs/ar/dictionary/nesting.md +3 -121
- package/docs/ar/dictionary/translation.md +4 -146
- package/docs/ar/interest_of_intlayer.md +2 -59
- package/docs/ar/intlayer_CMS.md +3 -228
- package/docs/ar/intlayer_visual_editor.md +1 -72
- package/docs/ar/intlayer_with_adonisjs.md +3 -109
- package/docs/ar/intlayer_with_analog.md +21 -41
- package/docs/ar/intlayer_with_angular.md +15 -41
- package/docs/ar/intlayer_with_astro.md +187 -58
- package/docs/ar/intlayer_with_astro_lit.md +619 -0
- package/docs/ar/intlayer_with_astro_preact.md +568 -0
- package/docs/ar/intlayer_with_astro_react.md +566 -0
- package/docs/ar/intlayer_with_astro_solid.md +566 -0
- package/docs/ar/intlayer_with_astro_svelte.md +570 -0
- package/docs/ar/intlayer_with_astro_vanilla.md +547 -0
- package/docs/ar/intlayer_with_astro_vue.md +588 -0
- package/docs/ar/intlayer_with_create_react_app.md +8 -388
- package/docs/ar/intlayer_with_express.md +5 -177
- package/docs/ar/intlayer_with_fastify.md +5 -193
- package/docs/ar/intlayer_with_hono.md +2 -2
- package/docs/ar/intlayer_with_lynx+react.md +2 -116
- package/docs/ar/intlayer_with_nestjs.md +3 -33
- package/docs/ar/intlayer_with_nextjs_14.md +58 -491
- package/docs/ar/intlayer_with_nextjs_15.md +56 -815
- package/docs/ar/intlayer_with_nextjs_16.md +40 -883
- package/docs/ar/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +12 -506
- package/docs/ar/intlayer_with_nextjs_page_router.md +37 -652
- package/docs/ar/intlayer_with_nuxt.md +16 -98
- package/docs/ar/intlayer_with_react_native+expo.md +31 -283
- package/docs/ar/intlayer_with_react_router_v7.md +15 -91
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +15 -91
- package/docs/ar/intlayer_with_storybook.md +1 -37
- package/docs/ar/intlayer_with_svelte_kit.md +29 -71
- package/docs/ar/intlayer_with_tanstack+solid.md +14 -70
- package/docs/ar/intlayer_with_tanstack.md +14 -62
- package/docs/ar/intlayer_with_vanilla.md +28 -108
- package/docs/ar/intlayer_with_vite+lit.md +98 -156
- package/docs/ar/intlayer_with_vite+preact.md +101 -710
- package/docs/ar/intlayer_with_vite+react.md +113 -797
- package/docs/ar/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/ar/intlayer_with_vite+solid.md +79 -152
- package/docs/ar/intlayer_with_vite+svelte.md +104 -132
- package/docs/ar/intlayer_with_vite+vanilla.md +105 -155
- package/docs/ar/intlayer_with_vite+vue.md +92 -253
- package/docs/ar/introduction.md +2 -58
- package/docs/ar/packages/express-intlayer/t.md +6 -181
- package/docs/ar/packages/hono-intlayer/t.md +1 -45
- package/docs/ar/packages/intlayer/getConfiguration.md +2 -54
- package/docs/ar/packages/intlayer/getEnumeration.md +2 -60
- package/docs/ar/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/ar/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/ar/packages/intlayer/getLocaleName.md +1 -43
- package/docs/ar/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/ar/packages/intlayer/getMultilingualUrls.md +2 -60
- package/docs/ar/packages/intlayer/getPathWithoutLocale.md +1 -20
- package/docs/ar/packages/intlayer/getPrefix.md +1 -12
- package/docs/ar/packages/intlayer/getTranslation.md +3 -87
- package/docs/ar/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/ar/packages/next-intlayer/t.md +5 -137
- package/docs/ar/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/ar/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/ar/packages/next-intlayer/useLocale.md +1 -51
- package/docs/ar/packages/react-intlayer/t.md +4 -106
- package/docs/ar/packages/react-intlayer/useDictionary.md +3 -115
- package/docs/ar/packages/react-intlayer/useI18n.md +4 -107
- package/docs/ar/packages/react-intlayer/useIntlayer.md +3 -109
- package/docs/ar/packages/react-intlayer/useLocale.md +3 -103
- package/docs/ar/per_locale_file.md +3 -35
- package/docs/bn/intlayer_with_fastify.md +5 -193
- package/docs/bn/intlayer_with_hono.md +5 -158
- package/docs/bn/intlayer_with_storybook.md +1 -37
- package/docs/bn/intlayer_with_vanilla.md +28 -108
- package/docs/bn/intlayer_with_vite+lit.md +98 -119
- package/docs/bn/intlayer_with_vite+vanilla.md +105 -155
- package/docs/bn/introduction.md +2 -58
- package/docs/cs/intlayer_with_fastify.md +5 -193
- package/docs/cs/intlayer_with_hono.md +5 -158
- package/docs/cs/intlayer_with_storybook.md +1 -37
- package/docs/cs/intlayer_with_vanilla.md +28 -108
- package/docs/cs/intlayer_with_vite+lit.md +98 -156
- package/docs/cs/intlayer_with_vite+vanilla.md +105 -155
- package/docs/cs/introduction.md +2 -58
- package/docs/de/dictionary/condition.md +2 -116
- package/docs/de/dictionary/content_file.md +2 -201
- package/docs/de/dictionary/enumeration.md +2 -116
- package/docs/de/dictionary/file.md +3 -100
- package/docs/de/dictionary/function_fetching.md +3 -103
- package/docs/de/dictionary/gender.md +2 -181
- package/docs/de/dictionary/insertion.md +3 -57
- package/docs/de/dictionary/nesting.md +3 -123
- package/docs/de/dictionary/translation.md +4 -146
- package/docs/de/interest_of_intlayer.md +2 -59
- package/docs/de/intlayer_CMS.md +3 -226
- package/docs/de/intlayer_visual_editor.md +1 -72
- package/docs/de/intlayer_with_adonisjs.md +3 -108
- package/docs/de/intlayer_with_analog.md +21 -41
- package/docs/de/intlayer_with_angular.md +15 -41
- package/docs/de/intlayer_with_astro.md +181 -56
- package/docs/de/intlayer_with_astro_lit.md +615 -0
- package/docs/de/intlayer_with_astro_preact.md +564 -0
- package/docs/de/intlayer_with_astro_react.md +562 -0
- package/docs/de/intlayer_with_astro_solid.md +562 -0
- package/docs/de/intlayer_with_astro_svelte.md +566 -0
- package/docs/de/intlayer_with_astro_vanilla.md +543 -0
- package/docs/de/intlayer_with_astro_vue.md +584 -0
- package/docs/de/intlayer_with_create_react_app.md +33 -686
- package/docs/de/intlayer_with_express.md +5 -182
- package/docs/de/intlayer_with_fastify.md +5 -193
- package/docs/de/intlayer_with_hono.md +5 -158
- package/docs/de/intlayer_with_lynx+react.md +2 -75
- package/docs/de/intlayer_with_nestjs.md +3 -33
- package/docs/de/intlayer_with_nextjs_14.md +51 -573
- package/docs/de/intlayer_with_nextjs_15.md +61 -823
- package/docs/de/intlayer_with_nextjs_16.md +45 -870
- package/docs/de/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +11 -499
- package/docs/de/intlayer_with_nextjs_page_router.md +36 -632
- package/docs/de/intlayer_with_nuxt.md +16 -98
- package/docs/de/intlayer_with_react_native+expo.md +31 -286
- package/docs/de/intlayer_with_react_router_v7.md +15 -91
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +14 -62
- package/docs/de/intlayer_with_storybook.md +1 -37
- package/docs/de/intlayer_with_svelte_kit.md +29 -71
- package/docs/de/intlayer_with_tanstack+solid.md +14 -70
- package/docs/de/intlayer_with_tanstack.md +14 -62
- package/docs/de/intlayer_with_vanilla.md +28 -108
- package/docs/de/intlayer_with_vite+lit.md +98 -162
- package/docs/de/intlayer_with_vite+preact.md +104 -713
- package/docs/de/intlayer_with_vite+react.md +105 -789
- package/docs/de/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/de/intlayer_with_vite+solid.md +79 -153
- package/docs/de/intlayer_with_vite+svelte.md +104 -132
- package/docs/de/intlayer_with_vite+vanilla.md +105 -155
- package/docs/de/intlayer_with_vite+vue.md +92 -285
- package/docs/de/introduction.md +2 -61
- package/docs/de/packages/express-intlayer/t.md +6 -182
- package/docs/de/packages/hono-intlayer/t.md +3 -95
- package/docs/de/packages/intlayer/getConfiguration.md +2 -54
- package/docs/de/packages/intlayer/getEnumeration.md +2 -60
- package/docs/de/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/de/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/de/packages/intlayer/getLocaleName.md +1 -43
- package/docs/de/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/de/packages/intlayer/getMultilingualUrls.md +2 -60
- package/docs/de/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/de/packages/intlayer/getPrefix.md +1 -15
- package/docs/de/packages/intlayer/getTranslation.md +3 -86
- package/docs/de/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/de/packages/next-intlayer/t.md +5 -137
- package/docs/de/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/de/packages/next-intlayer/useIntlayer.md +3 -120
- package/docs/de/packages/next-intlayer/useLocale.md +1 -51
- package/docs/de/packages/react-intlayer/t.md +4 -109
- package/docs/de/packages/react-intlayer/useDictionary.md +3 -127
- package/docs/de/packages/react-intlayer/useI18n.md +4 -107
- package/docs/de/packages/react-intlayer/useIntlayer.md +3 -114
- package/docs/de/packages/react-intlayer/useLocale.md +3 -103
- package/docs/de/per_locale_file.md +3 -35
- package/docs/en/benchmark/___NOTE.md +16 -0
- package/docs/en/dictionary/condition.md +2 -116
- package/docs/en/dictionary/content_file.md +2 -200
- package/docs/en/dictionary/enumeration.md +4 -202
- package/docs/en/dictionary/file.md +3 -100
- package/docs/en/dictionary/function_fetching.md +3 -103
- package/docs/en/dictionary/gender.md +2 -140
- package/docs/en/dictionary/insertion.md +3 -57
- package/docs/en/dictionary/nesting.md +3 -121
- package/docs/en/dictionary/translation.md +4 -146
- package/docs/en/interest_of_intlayer.md +2 -58
- package/docs/en/intlayer_CMS.md +3 -227
- package/docs/en/intlayer_visual_editor.md +1 -72
- package/docs/en/intlayer_with_adonisjs.md +3 -107
- package/docs/en/intlayer_with_analog.md +21 -41
- package/docs/en/intlayer_with_angular.md +15 -41
- package/docs/en/intlayer_with_astro.md +397 -38
- package/docs/en/intlayer_with_astro_lit.md +616 -0
- package/docs/en/intlayer_with_astro_preact.md +571 -0
- package/docs/en/intlayer_with_astro_react.md +564 -0
- package/docs/en/intlayer_with_astro_solid.md +564 -0
- package/docs/en/intlayer_with_astro_svelte.md +568 -0
- package/docs/en/intlayer_with_astro_vanilla.md +543 -0
- package/docs/en/intlayer_with_astro_vue.md +586 -0
- package/docs/en/intlayer_with_create_react_app.md +34 -686
- package/docs/en/intlayer_with_express.md +5 -179
- package/docs/en/intlayer_with_fastify.md +5 -193
- package/docs/en/intlayer_with_hono.md +5 -158
- package/docs/en/intlayer_with_lynx+react.md +3 -109
- package/docs/en/intlayer_with_nestjs.md +3 -31
- package/docs/en/intlayer_with_nextjs_14.md +47 -777
- package/docs/en/intlayer_with_nextjs_15.md +39 -822
- package/docs/en/intlayer_with_nextjs_16.md +40 -891
- package/docs/en/intlayer_with_nextjs_compiler.md +2 -70
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +11 -488
- package/docs/en/intlayer_with_nextjs_page_router.md +102 -713
- package/docs/en/intlayer_with_nuxt.md +16 -98
- package/docs/en/intlayer_with_react_native+expo.md +31 -291
- package/docs/en/intlayer_with_react_router_v7.md +15 -107
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +15 -99
- package/docs/en/intlayer_with_storybook.md +1 -37
- package/docs/en/intlayer_with_svelte_kit.md +28 -78
- package/docs/en/intlayer_with_tanstack+solid.md +14 -70
- package/docs/en/intlayer_with_tanstack.md +14 -70
- package/docs/en/intlayer_with_vanilla.md +28 -108
- package/docs/en/intlayer_with_vite+lit.md +98 -162
- package/docs/en/intlayer_with_vite+preact.md +100 -717
- package/docs/en/intlayer_with_vite+react.md +104 -796
- package/docs/en/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/en/intlayer_with_vite+solid.md +79 -211
- package/docs/en/intlayer_with_vite+svelte.md +104 -138
- package/docs/en/intlayer_with_vite+vanilla.md +105 -155
- package/docs/en/intlayer_with_vite+vue.md +92 -244
- package/docs/en/introduction.md +2 -58
- package/docs/en/packages/express-intlayer/t.md +6 -181
- package/docs/en/packages/hono-intlayer/t.md +3 -95
- package/docs/en/packages/intlayer/getConfiguration.md +2 -54
- package/docs/en/packages/intlayer/getEnumeration.md +2 -60
- package/docs/en/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/en/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/en/packages/intlayer/getLocaleName.md +1 -43
- package/docs/en/packages/intlayer/getLocalizedUrl.md +3 -71
- package/docs/en/packages/intlayer/getMultilingualUrls.md +3 -79
- package/docs/en/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/en/packages/intlayer/getPrefix.md +1 -15
- package/docs/en/packages/intlayer/getTranslation.md +3 -87
- package/docs/en/packages/next-intlayer/t.md +5 -137
- package/docs/en/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/en/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/en/packages/next-intlayer/useLocale.md +1 -51
- package/docs/en/packages/react-intlayer/t.md +4 -109
- package/docs/en/packages/react-intlayer/useI18n.md +4 -107
- package/docs/en/packages/react-intlayer/useLocale.md +3 -103
- package/docs/en/per_locale_file.md +3 -33
- package/docs/en-GB/dictionary/condition.md +2 -116
- package/docs/en-GB/dictionary/content_file.md +2 -213
- package/docs/en-GB/dictionary/enumeration.md +2 -116
- package/docs/en-GB/dictionary/file.md +3 -100
- package/docs/en-GB/dictionary/function_fetching.md +3 -103
- package/docs/en-GB/dictionary/gender.md +2 -140
- package/docs/en-GB/dictionary/insertion.md +3 -81
- package/docs/en-GB/dictionary/nesting.md +3 -121
- package/docs/en-GB/dictionary/translation.md +4 -146
- package/docs/en-GB/interest_of_intlayer.md +2 -58
- package/docs/en-GB/intlayer_CMS.md +3 -223
- package/docs/en-GB/intlayer_visual_editor.md +1 -72
- package/docs/en-GB/intlayer_with_adonisjs.md +3 -109
- package/docs/en-GB/intlayer_with_analog.md +21 -41
- package/docs/en-GB/intlayer_with_angular.md +15 -41
- package/docs/en-GB/intlayer_with_astro.md +183 -53
- package/docs/en-GB/intlayer_with_astro_lit.md +619 -0
- package/docs/en-GB/intlayer_with_astro_preact.md +568 -0
- package/docs/en-GB/intlayer_with_astro_react.md +566 -0
- package/docs/en-GB/intlayer_with_astro_solid.md +566 -0
- package/docs/en-GB/intlayer_with_astro_svelte.md +570 -0
- package/docs/en-GB/intlayer_with_astro_vanilla.md +547 -0
- package/docs/en-GB/intlayer_with_astro_vue.md +588 -0
- package/docs/en-GB/intlayer_with_create_react_app.md +33 -707
- package/docs/en-GB/intlayer_with_express.md +5 -182
- package/docs/en-GB/intlayer_with_fastify.md +5 -193
- package/docs/en-GB/intlayer_with_hono.md +5 -158
- package/docs/en-GB/intlayer_with_lynx+react.md +2 -116
- package/docs/en-GB/intlayer_with_nestjs.md +3 -31
- package/docs/en-GB/intlayer_with_nextjs_14.md +77 -773
- package/docs/en-GB/intlayer_with_nextjs_15.md +59 -839
- package/docs/en-GB/intlayer_with_nextjs_16.md +39 -822
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +11 -500
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +38 -634
- package/docs/en-GB/intlayer_with_nuxt.md +16 -103
- package/docs/en-GB/intlayer_with_react_native+expo.md +31 -284
- package/docs/en-GB/intlayer_with_react_router_v7.md +14 -30
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +14 -30
- package/docs/en-GB/intlayer_with_storybook.md +1 -37
- package/docs/en-GB/intlayer_with_svelte_kit.md +28 -10
- package/docs/en-GB/intlayer_with_tanstack+solid.md +14 -70
- package/docs/en-GB/intlayer_with_tanstack.md +13 -1
- package/docs/en-GB/intlayer_with_vanilla.md +28 -108
- package/docs/en-GB/intlayer_with_vite+lit.md +98 -162
- package/docs/en-GB/intlayer_with_vite+preact.md +98 -647
- package/docs/en-GB/intlayer_with_vite+react.md +99 -906
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/en-GB/intlayer_with_vite+solid.md +78 -88
- package/docs/en-GB/intlayer_with_vite+svelte.md +103 -71
- package/docs/en-GB/intlayer_with_vite+vanilla.md +105 -155
- package/docs/en-GB/intlayer_with_vite+vue.md +91 -195
- package/docs/en-GB/introduction.md +2 -58
- package/docs/en-GB/packages/express-intlayer/t.md +6 -181
- package/docs/en-GB/packages/hono-intlayer/t.md +3 -95
- package/docs/en-GB/packages/intlayer/getConfiguration.md +2 -54
- package/docs/en-GB/packages/intlayer/getEnumeration.md +2 -60
- package/docs/en-GB/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/en-GB/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/en-GB/packages/intlayer/getLocaleName.md +1 -43
- package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +2 -62
- package/docs/en-GB/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/en-GB/packages/intlayer/getPrefix.md +1 -15
- package/docs/en-GB/packages/intlayer/getTranslation.md +4 -107
- package/docs/en-GB/packages/intlayer/getTranslationContent.md +3 -98
- package/docs/en-GB/packages/next-intlayer/t.md +5 -141
- package/docs/en-GB/packages/next-intlayer/useDictionary.md +3 -124
- package/docs/en-GB/packages/next-intlayer/useIntlayer.md +3 -119
- package/docs/en-GB/packages/next-intlayer/useLocale.md +1 -51
- package/docs/en-GB/packages/react-intlayer/t.md +4 -110
- package/docs/en-GB/packages/react-intlayer/useDictionary.md +3 -117
- package/docs/en-GB/packages/react-intlayer/useI18n.md +3 -106
- package/docs/en-GB/packages/react-intlayer/useIntlayer.md +3 -114
- package/docs/en-GB/packages/react-intlayer/useLocale.md +3 -102
- package/docs/en-GB/per_locale_file.md +3 -33
- package/docs/es/dictionary/condition.md +2 -116
- package/docs/es/dictionary/content_file.md +2 -233
- package/docs/es/dictionary/enumeration.md +2 -116
- package/docs/es/dictionary/file.md +3 -100
- package/docs/es/dictionary/function_fetching.md +3 -103
- package/docs/es/dictionary/gender.md +2 -140
- package/docs/es/dictionary/insertion.md +3 -57
- package/docs/es/dictionary/nesting.md +3 -121
- package/docs/es/dictionary/translation.md +4 -146
- package/docs/es/interest_of_intlayer.md +2 -58
- package/docs/es/intlayer_CMS.md +3 -227
- package/docs/es/intlayer_visual_editor.md +1 -72
- package/docs/es/intlayer_with_adonisjs.md +3 -107
- package/docs/es/intlayer_with_analog.md +21 -41
- package/docs/es/intlayer_with_angular.md +15 -41
- package/docs/es/intlayer_with_astro.md +178 -52
- package/docs/es/intlayer_with_astro_lit.md +612 -0
- package/docs/es/intlayer_with_astro_preact.md +562 -0
- package/docs/es/intlayer_with_astro_react.md +560 -0
- package/docs/es/intlayer_with_astro_solid.md +560 -0
- package/docs/es/intlayer_with_astro_svelte.md +564 -0
- package/docs/es/intlayer_with_astro_vanilla.md +539 -0
- package/docs/es/intlayer_with_astro_vue.md +582 -0
- package/docs/es/intlayer_with_create_react_app.md +33 -649
- package/docs/es/intlayer_with_express.md +5 -179
- package/docs/es/intlayer_with_fastify.md +5 -193
- package/docs/es/intlayer_with_hono.md +5 -158
- package/docs/es/intlayer_with_lynx+react.md +2 -108
- package/docs/es/intlayer_with_nestjs.md +3 -31
- package/docs/es/intlayer_with_nextjs_14.md +53 -678
- package/docs/es/intlayer_with_nextjs_15.md +56 -812
- package/docs/es/intlayer_with_nextjs_16.md +40 -890
- package/docs/es/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +11 -486
- package/docs/es/intlayer_with_nextjs_page_router.md +37 -648
- package/docs/es/intlayer_with_nuxt.md +16 -98
- package/docs/es/intlayer_with_react_native+expo.md +31 -284
- package/docs/es/intlayer_with_react_router_v7.md +15 -92
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +15 -92
- package/docs/es/intlayer_with_storybook.md +1 -37
- package/docs/es/intlayer_with_svelte_kit.md +29 -71
- package/docs/es/intlayer_with_tanstack+solid.md +14 -70
- package/docs/es/intlayer_with_tanstack.md +14 -62
- package/docs/es/intlayer_with_vanilla.md +28 -108
- package/docs/es/intlayer_with_vite+lit.md +98 -162
- package/docs/es/intlayer_with_vite+preact.md +100 -709
- package/docs/es/intlayer_with_vite+react.md +105 -789
- package/docs/es/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/es/intlayer_with_vite+solid.md +79 -152
- package/docs/es/intlayer_with_vite+svelte.md +104 -132
- package/docs/es/intlayer_with_vite+vanilla.md +105 -155
- package/docs/es/intlayer_with_vite+vue.md +92 -255
- package/docs/es/introduction.md +2 -60
- package/docs/es/packages/express-intlayer/t.md +6 -183
- package/docs/es/packages/hono-intlayer/t.md +3 -95
- package/docs/es/packages/intlayer/getConfiguration.md +2 -54
- package/docs/es/packages/intlayer/getEnumeration.md +2 -60
- package/docs/es/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/es/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/es/packages/intlayer/getLocaleName.md +1 -43
- package/docs/es/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/es/packages/intlayer/getMultilingualUrls.md +2 -62
- package/docs/es/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/es/packages/intlayer/getPrefix.md +1 -15
- package/docs/es/packages/intlayer/getTranslation.md +3 -87
- package/docs/es/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/es/packages/next-intlayer/index.md +2 -60
- package/docs/es/packages/next-intlayer/t.md +5 -137
- package/docs/es/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/es/packages/next-intlayer/useIntlayer.md +3 -119
- package/docs/es/packages/next-intlayer/useLocale.md +1 -51
- package/docs/es/packages/react-intlayer/index.md +2 -60
- package/docs/es/packages/react-intlayer/t.md +4 -110
- package/docs/es/packages/react-intlayer/useDictionary.md +3 -113
- package/docs/es/packages/react-intlayer/useI18n.md +4 -107
- package/docs/es/packages/react-intlayer/useIntlayer.md +3 -110
- package/docs/es/packages/react-intlayer/useLocale.md +3 -103
- package/docs/es/per_locale_file.md +3 -34
- package/docs/fr/dictionary/condition.md +2 -116
- package/docs/fr/dictionary/content_file.md +2 -200
- package/docs/fr/dictionary/enumeration.md +2 -116
- package/docs/fr/dictionary/file.md +3 -100
- package/docs/fr/dictionary/function_fetching.md +3 -103
- package/docs/fr/dictionary/gender.md +2 -141
- package/docs/fr/dictionary/insertion.md +3 -57
- package/docs/fr/dictionary/nesting.md +3 -121
- package/docs/fr/dictionary/translation.md +4 -146
- package/docs/fr/interest_of_intlayer.md +2 -59
- package/docs/fr/intlayer_CMS.md +3 -227
- package/docs/fr/intlayer_visual_editor.md +1 -72
- package/docs/fr/intlayer_with_adonisjs.md +3 -107
- package/docs/fr/intlayer_with_analog.md +21 -41
- package/docs/fr/intlayer_with_angular.md +15 -41
- package/docs/fr/intlayer_with_astro.md +175 -49
- package/docs/fr/intlayer_with_astro_lit.md +612 -0
- package/docs/fr/intlayer_with_astro_preact.md +567 -0
- package/docs/fr/intlayer_with_astro_react.md +560 -0
- package/docs/fr/intlayer_with_astro_solid.md +560 -0
- package/docs/fr/intlayer_with_astro_svelte.md +564 -0
- package/docs/fr/intlayer_with_astro_vanilla.md +539 -0
- package/docs/fr/intlayer_with_astro_vue.md +582 -0
- package/docs/fr/intlayer_with_create_react_app.md +9 -645
- package/docs/fr/intlayer_with_express.md +4 -110
- package/docs/fr/intlayer_with_fastify.md +5 -193
- package/docs/fr/intlayer_with_hono.md +5 -158
- package/docs/fr/intlayer_with_lynx+react.md +2 -108
- package/docs/fr/intlayer_with_nestjs.md +3 -31
- package/docs/fr/intlayer_with_nextjs_14.md +51 -573
- package/docs/fr/intlayer_with_nextjs_15.md +64 -842
- package/docs/fr/intlayer_with_nextjs_16.md +44 -867
- package/docs/fr/intlayer_with_nextjs_compiler.md +2 -64
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +11 -522
- package/docs/fr/intlayer_with_nextjs_page_router.md +37 -647
- package/docs/fr/intlayer_with_nuxt.md +16 -99
- package/docs/fr/intlayer_with_react_native+expo.md +31 -284
- package/docs/fr/intlayer_with_react_router_v7.md +15 -94
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +15 -94
- package/docs/fr/intlayer_with_storybook.md +1 -37
- package/docs/fr/intlayer_with_svelte_kit.md +29 -71
- package/docs/fr/intlayer_with_tanstack+solid.md +14 -70
- package/docs/fr/intlayer_with_tanstack.md +14 -62
- package/docs/fr/intlayer_with_vanilla.md +28 -108
- package/docs/fr/intlayer_with_vite+lit.md +98 -162
- package/docs/fr/intlayer_with_vite+preact.md +100 -709
- package/docs/fr/intlayer_with_vite+react.md +104 -788
- package/docs/fr/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/fr/intlayer_with_vite+solid.md +79 -152
- package/docs/fr/intlayer_with_vite+svelte.md +104 -132
- package/docs/fr/intlayer_with_vite+vanilla.md +105 -155
- package/docs/fr/intlayer_with_vite+vue.md +92 -251
- package/docs/fr/introduction.md +2 -60
- package/docs/fr/packages/express-intlayer/t.md +6 -184
- package/docs/fr/packages/hono-intlayer/t.md +3 -95
- package/docs/fr/packages/intlayer/getConfiguration.md +2 -54
- package/docs/fr/packages/intlayer/getEnumeration.md +2 -60
- package/docs/fr/packages/intlayer/getHTMLTextDir.md +2 -39
- package/docs/fr/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/fr/packages/intlayer/getLocaleName.md +1 -43
- package/docs/fr/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/fr/packages/intlayer/getMultilingualUrls.md +2 -60
- package/docs/fr/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/fr/packages/intlayer/getPrefix.md +1 -15
- package/docs/fr/packages/intlayer/getTranslation.md +3 -87
- package/docs/fr/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/fr/packages/next-intlayer/t.md +5 -137
- package/docs/fr/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/fr/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/fr/packages/next-intlayer/useLocale.md +1 -51
- package/docs/fr/packages/react-intlayer/index.md +2 -60
- package/docs/fr/packages/react-intlayer/t.md +4 -109
- package/docs/fr/packages/react-intlayer/useDictionary.md +3 -114
- package/docs/fr/packages/react-intlayer/useI18n.md +4 -107
- package/docs/fr/packages/react-intlayer/useIntlayer.md +3 -109
- package/docs/fr/packages/react-intlayer/useLocale.md +3 -103
- package/docs/fr/per_locale_file.md +3 -35
- package/docs/hi/dictionary/condition.md +2 -116
- package/docs/hi/dictionary/content_file.md +2 -201
- package/docs/hi/dictionary/enumeration.md +2 -116
- package/docs/hi/dictionary/file.md +3 -100
- package/docs/hi/dictionary/function_fetching.md +3 -103
- package/docs/hi/dictionary/gender.md +2 -141
- package/docs/hi/dictionary/insertion.md +3 -57
- package/docs/hi/dictionary/nesting.md +3 -121
- package/docs/hi/dictionary/translation.md +4 -149
- package/docs/hi/interest_of_intlayer.md +2 -58
- package/docs/hi/intlayer_CMS.md +3 -227
- package/docs/hi/intlayer_visual_editor.md +1 -72
- package/docs/hi/intlayer_with_adonisjs.md +3 -109
- package/docs/hi/intlayer_with_analog.md +21 -41
- package/docs/hi/intlayer_with_angular.md +15 -41
- package/docs/hi/intlayer_with_astro.md +183 -57
- package/docs/hi/intlayer_with_astro_lit.md +615 -0
- package/docs/hi/intlayer_with_astro_preact.md +564 -0
- package/docs/hi/intlayer_with_astro_react.md +562 -0
- package/docs/hi/intlayer_with_astro_solid.md +562 -0
- package/docs/hi/intlayer_with_astro_svelte.md +566 -0
- package/docs/hi/intlayer_with_astro_vanilla.md +543 -0
- package/docs/hi/intlayer_with_astro_vue.md +584 -0
- package/docs/hi/intlayer_with_create_react_app.md +8 -444
- package/docs/hi/intlayer_with_express.md +6 -195
- package/docs/hi/intlayer_with_fastify.md +5 -193
- package/docs/hi/intlayer_with_hono.md +2 -2
- package/docs/hi/intlayer_with_lynx+react.md +2 -116
- package/docs/hi/intlayer_with_nestjs.md +3 -31
- package/docs/hi/intlayer_with_nextjs_14.md +60 -512
- package/docs/hi/intlayer_with_nextjs_15.md +60 -822
- package/docs/hi/intlayer_with_nextjs_16.md +40 -883
- package/docs/hi/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +11 -498
- package/docs/hi/intlayer_with_nextjs_page_router.md +37 -648
- package/docs/hi/intlayer_with_nuxt.md +16 -101
- package/docs/hi/intlayer_with_react_native+expo.md +31 -284
- package/docs/hi/intlayer_with_react_router_v7.md +15 -91
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +15 -91
- package/docs/hi/intlayer_with_storybook.md +1 -37
- package/docs/hi/intlayer_with_svelte_kit.md +29 -71
- package/docs/hi/intlayer_with_tanstack+solid.md +14 -70
- package/docs/hi/intlayer_with_tanstack.md +14 -62
- package/docs/hi/intlayer_with_vanilla.md +28 -108
- package/docs/hi/intlayer_with_vite+lit.md +98 -156
- package/docs/hi/intlayer_with_vite+preact.md +98 -619
- package/docs/hi/intlayer_with_vite+react.md +123 -816
- package/docs/hi/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/hi/intlayer_with_vite+solid.md +79 -151
- package/docs/hi/intlayer_with_vite+svelte.md +104 -132
- package/docs/hi/intlayer_with_vite+vanilla.md +105 -87
- package/docs/hi/intlayer_with_vite+vue.md +92 -250
- package/docs/hi/introduction.md +2 -62
- package/docs/hi/packages/express-intlayer/t.md +6 -181
- package/docs/hi/packages/hono-intlayer/t.md +1 -45
- package/docs/hi/packages/intlayer/getConfiguration.md +2 -54
- package/docs/hi/packages/intlayer/getEnumeration.md +2 -60
- package/docs/hi/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/hi/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/hi/packages/intlayer/getLocaleName.md +1 -43
- package/docs/hi/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/hi/packages/intlayer/getMultilingualUrls.md +2 -62
- package/docs/hi/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/hi/packages/intlayer/getPrefix.md +1 -19
- package/docs/hi/packages/intlayer/getTranslation.md +3 -87
- package/docs/hi/packages/intlayer/getTranslationContent.md +3 -86
- package/docs/hi/packages/intlayer/index.md +4 -129
- package/docs/hi/packages/next-intlayer/t.md +5 -138
- package/docs/hi/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/hi/packages/next-intlayer/useIntlayer.md +3 -120
- package/docs/hi/packages/next-intlayer/useLocale.md +1 -51
- package/docs/hi/packages/react-intlayer/t.md +4 -106
- package/docs/hi/packages/react-intlayer/useDictionary.md +3 -115
- package/docs/hi/packages/react-intlayer/useI18n.md +3 -111
- package/docs/hi/packages/react-intlayer/useIntlayer.md +3 -113
- package/docs/hi/packages/react-intlayer/useLocale.md +3 -103
- package/docs/hi/per_locale_file.md +3 -34
- package/docs/id/dictionary/condition.md +2 -110
- package/docs/id/dictionary/content_file.md +2 -200
- package/docs/id/dictionary/enumeration.md +2 -116
- package/docs/id/dictionary/file.md +3 -105
- package/docs/id/dictionary/function_fetching.md +3 -103
- package/docs/id/dictionary/gender.md +2 -140
- package/docs/id/dictionary/insertion.md +3 -57
- package/docs/id/dictionary/nesting.md +3 -121
- package/docs/id/dictionary/translation.md +4 -147
- package/docs/id/interest_of_intlayer.md +2 -58
- package/docs/id/intlayer_CMS.md +3 -227
- package/docs/id/intlayer_visual_editor.md +1 -72
- package/docs/id/intlayer_with_adonisjs.md +3 -109
- package/docs/id/intlayer_with_analog.md +21 -41
- package/docs/id/intlayer_with_angular.md +15 -41
- package/docs/id/intlayer_with_astro.md +182 -64
- package/docs/id/intlayer_with_astro_lit.md +615 -0
- package/docs/id/intlayer_with_astro_preact.md +564 -0
- package/docs/id/intlayer_with_astro_react.md +562 -0
- package/docs/id/intlayer_with_astro_solid.md +562 -0
- package/docs/id/intlayer_with_astro_svelte.md +566 -0
- package/docs/id/intlayer_with_astro_vanilla.md +543 -0
- package/docs/id/intlayer_with_astro_vue.md +584 -0
- package/docs/id/intlayer_with_create_react_app.md +39 -694
- package/docs/id/intlayer_with_express.md +5 -181
- package/docs/id/intlayer_with_fastify.md +5 -193
- package/docs/id/intlayer_with_hono.md +2 -2
- package/docs/id/intlayer_with_lynx+react.md +3 -109
- package/docs/id/intlayer_with_nestjs.md +3 -31
- package/docs/id/intlayer_with_nextjs_14.md +59 -796
- package/docs/id/intlayer_with_nextjs_15.md +37 -815
- package/docs/id/intlayer_with_nextjs_16.md +41 -884
- package/docs/id/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +11 -501
- package/docs/id/intlayer_with_nextjs_page_router.md +102 -713
- package/docs/id/intlayer_with_nuxt.md +16 -99
- package/docs/id/intlayer_with_react_native+expo.md +31 -291
- package/docs/id/intlayer_with_react_router_v7.md +15 -99
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +15 -99
- package/docs/id/intlayer_with_storybook.md +1 -37
- package/docs/id/intlayer_with_svelte_kit.md +29 -71
- package/docs/id/intlayer_with_tanstack+solid.md +14 -70
- package/docs/id/intlayer_with_tanstack.md +14 -62
- package/docs/id/intlayer_with_vanilla.md +28 -108
- package/docs/id/intlayer_with_vite+lit.md +98 -156
- package/docs/id/intlayer_with_vite+preact.md +103 -712
- package/docs/id/intlayer_with_vite+react.md +115 -803
- package/docs/id/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/id/intlayer_with_vite+solid.md +79 -150
- package/docs/id/intlayer_with_vite+svelte.md +104 -132
- package/docs/id/intlayer_with_vite+vanilla.md +105 -155
- package/docs/id/intlayer_with_vite+vue.md +92 -258
- package/docs/id/introduction.md +2 -60
- package/docs/id/packages/express-intlayer/t.md +6 -181
- package/docs/id/packages/hono-intlayer/t.md +1 -45
- package/docs/id/packages/intlayer/getConfiguration.md +2 -54
- package/docs/id/packages/intlayer/getEnumeration.md +2 -60
- package/docs/id/packages/intlayer/getHTMLTextDir.md +2 -39
- package/docs/id/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/id/packages/intlayer/getLocaleName.md +1 -44
- package/docs/id/packages/intlayer/getLocalizedUrl.md +2 -59
- package/docs/id/packages/intlayer/getMultilingualUrls.md +2 -64
- package/docs/id/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/id/packages/intlayer/getPrefix.md +1 -12
- package/docs/id/packages/intlayer/getTranslation.md +3 -87
- package/docs/id/packages/intlayer/getTranslationContent.md +3 -86
- package/docs/id/packages/next-intlayer/t.md +5 -137
- package/docs/id/packages/next-intlayer/useDictionary.md +3 -121
- package/docs/id/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/id/packages/next-intlayer/useLocale.md +1 -51
- package/docs/id/packages/react-intlayer/t.md +4 -109
- package/docs/id/packages/react-intlayer/useDictionary.md +3 -113
- package/docs/id/packages/react-intlayer/useI18n.md +4 -123
- package/docs/id/packages/react-intlayer/useIntlayer.md +3 -109
- package/docs/id/packages/react-intlayer/useLocale.md +3 -103
- package/docs/id/per_locale_file.md +3 -35
- package/docs/it/dictionary/condition.md +2 -116
- package/docs/it/dictionary/content_file.md +2 -201
- package/docs/it/dictionary/enumeration.md +2 -116
- package/docs/it/dictionary/file.md +3 -100
- package/docs/it/dictionary/function_fetching.md +3 -103
- package/docs/it/dictionary/gender.md +2 -140
- package/docs/it/dictionary/insertion.md +3 -57
- package/docs/it/dictionary/nesting.md +3 -121
- package/docs/it/dictionary/translation.md +4 -146
- package/docs/it/interest_of_intlayer.md +2 -59
- package/docs/it/intlayer_CMS.md +3 -227
- package/docs/it/intlayer_visual_editor.md +1 -72
- package/docs/it/intlayer_with_adonisjs.md +3 -109
- package/docs/it/intlayer_with_analog.md +21 -41
- package/docs/it/intlayer_with_angular.md +15 -41
- package/docs/it/intlayer_with_astro.md +187 -61
- package/docs/it/intlayer_with_astro_lit.md +615 -0
- package/docs/it/intlayer_with_astro_preact.md +564 -0
- package/docs/it/intlayer_with_astro_react.md +562 -0
- package/docs/it/intlayer_with_astro_solid.md +562 -0
- package/docs/it/intlayer_with_astro_svelte.md +566 -0
- package/docs/it/intlayer_with_astro_vanilla.md +543 -0
- package/docs/it/intlayer_with_astro_vue.md +584 -0
- package/docs/it/intlayer_with_create_react_app.md +9 -551
- package/docs/it/intlayer_with_express.md +5 -182
- package/docs/it/intlayer_with_fastify.md +5 -193
- package/docs/it/intlayer_with_hono.md +2 -2
- package/docs/it/intlayer_with_lynx+react.md +2 -116
- package/docs/it/intlayer_with_nestjs.md +3 -31
- package/docs/it/intlayer_with_nextjs_14.md +51 -575
- package/docs/it/intlayer_with_nextjs_15.md +55 -813
- package/docs/it/intlayer_with_nextjs_16.md +40 -883
- package/docs/it/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +11 -498
- package/docs/it/intlayer_with_nextjs_page_router.md +37 -650
- package/docs/it/intlayer_with_nuxt.md +16 -101
- package/docs/it/intlayer_with_react_native+expo.md +31 -286
- package/docs/it/intlayer_with_react_router_v7.md +15 -93
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +15 -93
- package/docs/it/intlayer_with_storybook.md +1 -37
- package/docs/it/intlayer_with_svelte_kit.md +29 -71
- package/docs/it/intlayer_with_tanstack+solid.md +14 -70
- package/docs/it/intlayer_with_tanstack.md +14 -62
- package/docs/it/intlayer_with_vanilla.md +28 -108
- package/docs/it/intlayer_with_vite+lit.md +98 -162
- package/docs/it/intlayer_with_vite+preact.md +102 -711
- package/docs/it/intlayer_with_vite+react.md +112 -797
- package/docs/it/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/it/intlayer_with_vite+solid.md +79 -151
- package/docs/it/intlayer_with_vite+svelte.md +104 -132
- package/docs/it/intlayer_with_vite+vanilla.md +105 -155
- package/docs/it/intlayer_with_vite+vue.md +80 -281
- package/docs/it/introduction.md +2 -60
- package/docs/it/packages/express-intlayer/t.md +6 -181
- package/docs/it/packages/hono-intlayer/t.md +1 -45
- package/docs/it/packages/intlayer/getConfiguration.md +2 -54
- package/docs/it/packages/intlayer/getEnumeration.md +2 -60
- package/docs/it/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/it/packages/intlayer/getLocaleLang.md +1 -20
- package/docs/it/packages/intlayer/getLocaleName.md +1 -43
- package/docs/it/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/it/packages/intlayer/getMultilingualUrls.md +2 -62
- package/docs/it/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/it/packages/intlayer/getPrefix.md +1 -12
- package/docs/it/packages/intlayer/getTranslation.md +3 -86
- package/docs/it/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/it/packages/next-intlayer/t.md +5 -141
- package/docs/it/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/it/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/it/packages/next-intlayer/useLocale.md +1 -51
- package/docs/it/packages/react-intlayer/t.md +4 -109
- package/docs/it/packages/react-intlayer/useDictionary.md +3 -115
- package/docs/it/packages/react-intlayer/useI18n.md +4 -107
- package/docs/it/packages/react-intlayer/useIntlayer.md +3 -109
- package/docs/it/packages/react-intlayer/useLocale.md +3 -103
- package/docs/it/per_locale_file.md +3 -35
- package/docs/ja/dictionary/condition.md +2 -116
- package/docs/ja/dictionary/content_file.md +2 -204
- package/docs/ja/dictionary/enumeration.md +2 -116
- package/docs/ja/dictionary/file.md +3 -100
- package/docs/ja/dictionary/function_fetching.md +3 -103
- package/docs/ja/dictionary/gender.md +2 -140
- package/docs/ja/dictionary/insertion.md +3 -57
- package/docs/ja/dictionary/nesting.md +3 -121
- package/docs/ja/dictionary/translation.md +6 -160
- package/docs/ja/interest_of_intlayer.md +2 -58
- package/docs/ja/intlayer_CMS.md +3 -227
- package/docs/ja/intlayer_visual_editor.md +1 -75
- package/docs/ja/intlayer_with_adonisjs.md +3 -109
- package/docs/ja/intlayer_with_analog.md +21 -41
- package/docs/ja/intlayer_with_angular.md +15 -41
- package/docs/ja/intlayer_with_astro.md +184 -53
- package/docs/ja/intlayer_with_astro_lit.md +618 -0
- package/docs/ja/intlayer_with_astro_preact.md +572 -0
- package/docs/ja/intlayer_with_astro_react.md +565 -0
- package/docs/ja/intlayer_with_astro_solid.md +565 -0
- package/docs/ja/intlayer_with_astro_svelte.md +569 -0
- package/docs/ja/intlayer_with_astro_vanilla.md +546 -0
- package/docs/ja/intlayer_with_astro_vue.md +587 -0
- package/docs/ja/intlayer_with_create_react_app.md +7 -387
- package/docs/ja/intlayer_with_express.md +5 -182
- package/docs/ja/intlayer_with_fastify.md +5 -193
- package/docs/ja/intlayer_with_hono.md +2 -2
- package/docs/ja/intlayer_with_lynx+react.md +2 -116
- package/docs/ja/intlayer_with_nestjs.md +3 -31
- package/docs/ja/intlayer_with_nextjs_14.md +54 -682
- package/docs/ja/intlayer_with_nextjs_15.md +56 -836
- package/docs/ja/intlayer_with_nextjs_16.md +40 -883
- package/docs/ja/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +12 -551
- package/docs/ja/intlayer_with_nextjs_page_router.md +73 -745
- package/docs/ja/intlayer_with_nuxt.md +16 -99
- package/docs/ja/intlayer_with_react_native+expo.md +31 -287
- package/docs/ja/intlayer_with_react_router_v7.md +32 -61
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +15 -91
- package/docs/ja/intlayer_with_storybook.md +1 -37
- package/docs/ja/intlayer_with_svelte_kit.md +27 -69
- package/docs/ja/intlayer_with_tanstack+solid.md +14 -70
- package/docs/ja/intlayer_with_tanstack.md +13 -1
- package/docs/ja/intlayer_with_vanilla.md +28 -108
- package/docs/ja/intlayer_with_vite+lit.md +98 -162
- package/docs/ja/intlayer_with_vite+preact.md +88 -62
- package/docs/ja/intlayer_with_vite+react.md +88 -62
- package/docs/ja/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/ja/intlayer_with_vite+solid.md +80 -161
- package/docs/ja/intlayer_with_vite+svelte.md +104 -132
- package/docs/ja/intlayer_with_vite+vanilla.md +105 -155
- package/docs/ja/intlayer_with_vite+vue.md +92 -264
- package/docs/ja/introduction.md +2 -59
- package/docs/ja/packages/express-intlayer/t.md +6 -188
- package/docs/ja/packages/hono-intlayer/t.md +1 -45
- package/docs/ja/packages/intlayer/getConfiguration.md +2 -54
- package/docs/ja/packages/intlayer/getEnumeration.md +2 -60
- package/docs/ja/packages/intlayer/getHTMLTextDir.md +2 -39
- package/docs/ja/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/ja/packages/intlayer/getLocaleName.md +1 -43
- package/docs/ja/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/ja/packages/intlayer/getMultilingualUrls.md +2 -62
- package/docs/ja/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/ja/packages/intlayer/getPrefix.md +1 -12
- package/docs/ja/packages/intlayer/getTranslation.md +3 -87
- package/docs/ja/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/ja/packages/next-intlayer/t.md +5 -137
- package/docs/ja/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/ja/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/ja/packages/next-intlayer/useLocale.md +1 -51
- package/docs/ja/packages/react-intlayer/t.md +4 -109
- package/docs/ja/packages/react-intlayer/useDictionary.md +3 -115
- package/docs/ja/packages/react-intlayer/useI18n.md +4 -107
- package/docs/ja/packages/react-intlayer/useIntlayer.md +2 -95
- package/docs/ja/packages/react-intlayer/useLocale.md +3 -103
- package/docs/ja/per_locale_file.md +3 -34
- package/docs/ko/cli/index.md +1 -1
- package/docs/ko/dictionary/condition.md +2 -116
- package/docs/ko/dictionary/content_file.md +2 -201
- package/docs/ko/dictionary/enumeration.md +2 -116
- package/docs/ko/dictionary/file.md +3 -100
- package/docs/ko/dictionary/function_fetching.md +3 -103
- package/docs/ko/dictionary/gender.md +2 -140
- package/docs/ko/dictionary/insertion.md +3 -57
- package/docs/ko/dictionary/nesting.md +3 -121
- package/docs/ko/dictionary/translation.md +5 -161
- package/docs/ko/interest_of_intlayer.md +2 -60
- package/docs/ko/intlayer_CMS.md +3 -227
- package/docs/ko/intlayer_visual_editor.md +1 -72
- package/docs/ko/intlayer_with_adonisjs.md +3 -109
- package/docs/ko/intlayer_with_analog.md +21 -41
- package/docs/ko/intlayer_with_angular.md +15 -41
- package/docs/ko/intlayer_with_astro.md +169 -58
- package/docs/ko/intlayer_with_astro_lit.md +598 -0
- package/docs/ko/intlayer_with_astro_preact.md +552 -0
- package/docs/ko/intlayer_with_astro_react.md +545 -0
- package/docs/ko/intlayer_with_astro_solid.md +545 -0
- package/docs/ko/intlayer_with_astro_svelte.md +549 -0
- package/docs/ko/intlayer_with_astro_vanilla.md +526 -0
- package/docs/ko/intlayer_with_astro_vue.md +567 -0
- package/docs/ko/intlayer_with_create_react_app.md +38 -693
- package/docs/ko/intlayer_with_express.md +5 -182
- package/docs/ko/intlayer_with_fastify.md +5 -193
- package/docs/ko/intlayer_with_hono.md +2 -2
- package/docs/ko/intlayer_with_lynx+react.md +2 -116
- package/docs/ko/intlayer_with_nestjs.md +3 -31
- package/docs/ko/intlayer_with_nextjs_14.md +55 -693
- package/docs/ko/intlayer_with_nextjs_15.md +73 -859
- package/docs/ko/intlayer_with_nextjs_16.md +40 -883
- package/docs/ko/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +13 -548
- package/docs/ko/intlayer_with_nextjs_page_router.md +66 -652
- package/docs/ko/intlayer_with_nuxt.md +16 -99
- package/docs/ko/intlayer_with_react_native+expo.md +31 -286
- package/docs/ko/intlayer_with_react_router_v7.md +15 -91
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +15 -91
- package/docs/ko/intlayer_with_storybook.md +1 -37
- package/docs/ko/intlayer_with_svelte_kit.md +29 -71
- package/docs/ko/intlayer_with_tanstack+solid.md +14 -70
- package/docs/ko/intlayer_with_tanstack.md +13 -1
- package/docs/ko/intlayer_with_vanilla.md +28 -108
- package/docs/ko/intlayer_with_vite+lit.md +98 -162
- package/docs/ko/intlayer_with_vite+preact.md +102 -711
- package/docs/ko/intlayer_with_vite+react.md +123 -805
- package/docs/ko/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/ko/intlayer_with_vite+solid.md +79 -151
- package/docs/ko/intlayer_with_vite+svelte.md +104 -130
- package/docs/ko/intlayer_with_vite+vanilla.md +105 -155
- package/docs/ko/intlayer_with_vite+vue.md +92 -269
- package/docs/ko/introduction.md +2 -60
- package/docs/ko/packages/express-intlayer/t.md +5 -158
- package/docs/ko/packages/hono-intlayer/t.md +1 -45
- package/docs/ko/packages/intlayer/getConfiguration.md +2 -54
- package/docs/ko/packages/intlayer/getEnumeration.md +2 -60
- package/docs/ko/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/ko/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/ko/packages/intlayer/getLocaleName.md +1 -43
- package/docs/ko/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/ko/packages/intlayer/getMultilingualUrls.md +2 -64
- package/docs/ko/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/ko/packages/intlayer/getPrefix.md +1 -12
- package/docs/ko/packages/intlayer/getTranslation.md +3 -87
- package/docs/ko/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/ko/packages/next-intlayer/t.md +5 -139
- package/docs/ko/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/ko/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/ko/packages/next-intlayer/useLocale.md +1 -51
- package/docs/ko/packages/react-intlayer/t.md +5 -133
- package/docs/ko/packages/react-intlayer/useDictionary.md +3 -113
- package/docs/ko/packages/react-intlayer/useI18n.md +4 -107
- package/docs/ko/packages/react-intlayer/useIntlayer.md +3 -109
- package/docs/ko/packages/react-intlayer/useLocale.md +3 -103
- package/docs/ko/per_locale_file.md +3 -34
- package/docs/nl/intlayer_with_fastify.md +5 -193
- package/docs/nl/intlayer_with_hono.md +5 -158
- package/docs/nl/intlayer_with_storybook.md +1 -37
- package/docs/nl/intlayer_with_vanilla.md +28 -108
- package/docs/nl/intlayer_with_vite+lit.md +98 -156
- package/docs/nl/intlayer_with_vite+vanilla.md +105 -155
- package/docs/nl/introduction.md +2 -58
- package/docs/pl/dictionary/condition.md +2 -111
- package/docs/pl/dictionary/content_file.md +2 -205
- package/docs/pl/dictionary/enumeration.md +2 -116
- package/docs/pl/dictionary/file.md +3 -102
- package/docs/pl/dictionary/function_fetching.md +3 -103
- package/docs/pl/dictionary/gender.md +2 -141
- package/docs/pl/dictionary/insertion.md +3 -57
- package/docs/pl/dictionary/nesting.md +3 -121
- package/docs/pl/dictionary/translation.md +4 -147
- package/docs/pl/interest_of_intlayer.md +2 -58
- package/docs/pl/intlayer_CMS.md +3 -227
- package/docs/pl/intlayer_visual_editor.md +1 -72
- package/docs/pl/intlayer_with_adonisjs.md +3 -109
- package/docs/pl/intlayer_with_analog.md +21 -41
- package/docs/pl/intlayer_with_angular.md +15 -41
- package/docs/pl/intlayer_with_astro.md +179 -89
- package/docs/pl/intlayer_with_astro_lit.md +615 -0
- package/docs/pl/intlayer_with_astro_preact.md +564 -0
- package/docs/pl/intlayer_with_astro_react.md +562 -0
- package/docs/pl/intlayer_with_astro_solid.md +562 -0
- package/docs/pl/intlayer_with_astro_svelte.md +566 -0
- package/docs/pl/intlayer_with_astro_vanilla.md +543 -0
- package/docs/pl/intlayer_with_astro_vue.md +584 -0
- package/docs/pl/intlayer_with_create_react_app.md +39 -696
- package/docs/pl/intlayer_with_express.md +5 -180
- package/docs/pl/intlayer_with_fastify.md +5 -193
- package/docs/pl/intlayer_with_hono.md +2 -2
- package/docs/pl/intlayer_with_lynx+react.md +3 -109
- package/docs/pl/intlayer_with_nestjs.md +3 -31
- package/docs/pl/intlayer_with_nextjs_14.md +54 -789
- package/docs/pl/intlayer_with_nextjs_15.md +39 -843
- package/docs/pl/intlayer_with_nextjs_16.md +60 -903
- package/docs/pl/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +11 -499
- package/docs/pl/intlayer_with_nextjs_page_router.md +69 -751
- package/docs/pl/intlayer_with_nuxt.md +16 -100
- package/docs/pl/intlayer_with_react_native+expo.md +31 -292
- package/docs/pl/intlayer_with_react_router_v7.md +15 -101
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +16 -94
- package/docs/pl/intlayer_with_storybook.md +1 -37
- package/docs/pl/intlayer_with_svelte_kit.md +29 -71
- package/docs/pl/intlayer_with_tanstack+solid.md +14 -70
- package/docs/pl/intlayer_with_tanstack.md +14 -62
- package/docs/pl/intlayer_with_vanilla.md +28 -108
- package/docs/pl/intlayer_with_vite+lit.md +98 -156
- package/docs/pl/intlayer_with_vite+preact.md +102 -711
- package/docs/pl/intlayer_with_vite+react.md +121 -840
- package/docs/pl/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/pl/intlayer_with_vite+solid.md +79 -151
- package/docs/pl/intlayer_with_vite+svelte.md +104 -132
- package/docs/pl/intlayer_with_vite+vanilla.md +105 -155
- package/docs/pl/intlayer_with_vite+vue.md +92 -267
- package/docs/pl/introduction.md +2 -48
- package/docs/pl/packages/express-intlayer/t.md +6 -181
- package/docs/pl/packages/hono-intlayer/t.md +1 -45
- package/docs/pl/packages/intlayer/getConfiguration.md +2 -54
- package/docs/pl/packages/intlayer/getEnumeration.md +2 -60
- package/docs/pl/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/pl/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/pl/packages/intlayer/getLocaleName.md +1 -43
- package/docs/pl/packages/intlayer/getLocalizedUrl.md +2 -59
- package/docs/pl/packages/intlayer/getMultilingualUrls.md +2 -62
- package/docs/pl/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/pl/packages/intlayer/getPrefix.md +1 -19
- package/docs/pl/packages/intlayer/getTranslation.md +3 -87
- package/docs/pl/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/pl/packages/next-intlayer/t.md +5 -137
- package/docs/pl/packages/next-intlayer/useDictionary.md +3 -120
- package/docs/pl/packages/next-intlayer/useIntlayer.md +2 -82
- package/docs/pl/packages/next-intlayer/useLocale.md +1 -51
- package/docs/pl/packages/react-intlayer/t.md +4 -109
- package/docs/pl/packages/react-intlayer/useDictionary.md +3 -115
- package/docs/pl/packages/react-intlayer/useI18n.md +3 -91
- package/docs/pl/packages/react-intlayer/useIntlayer.md +3 -114
- package/docs/pl/packages/react-intlayer/useLocale.md +3 -103
- package/docs/pl/per_locale_file.md +3 -34
- package/docs/pt/dictionary/condition.md +2 -116
- package/docs/pt/dictionary/content_file.md +2 -202
- package/docs/pt/dictionary/enumeration.md +2 -116
- package/docs/pt/dictionary/file.md +3 -101
- package/docs/pt/dictionary/function_fetching.md +3 -103
- package/docs/pt/dictionary/gender.md +2 -140
- package/docs/pt/dictionary/insertion.md +3 -57
- package/docs/pt/dictionary/nesting.md +3 -121
- package/docs/pt/dictionary/translation.md +4 -146
- package/docs/pt/interest_of_intlayer.md +2 -60
- package/docs/pt/intlayer_CMS.md +3 -227
- package/docs/pt/intlayer_visual_editor.md +1 -72
- package/docs/pt/intlayer_with_adonisjs.md +3 -109
- package/docs/pt/intlayer_with_analog.md +21 -41
- package/docs/pt/intlayer_with_angular.md +15 -41
- package/docs/pt/intlayer_with_astro.md +184 -58
- package/docs/pt/intlayer_with_astro_lit.md +597 -0
- package/docs/pt/intlayer_with_astro_preact.md +564 -0
- package/docs/pt/intlayer_with_astro_react.md +562 -0
- package/docs/pt/intlayer_with_astro_solid.md +562 -0
- package/docs/pt/intlayer_with_astro_svelte.md +566 -0
- package/docs/pt/intlayer_with_astro_vanilla.md +543 -0
- package/docs/pt/intlayer_with_astro_vue.md +584 -0
- package/docs/pt/intlayer_with_create_react_app.md +53 -654
- package/docs/pt/intlayer_with_express.md +5 -183
- package/docs/pt/intlayer_with_fastify.md +5 -193
- package/docs/pt/intlayer_with_hono.md +2 -2
- package/docs/pt/intlayer_with_lynx+react.md +2 -116
- package/docs/pt/intlayer_with_nestjs.md +3 -33
- package/docs/pt/intlayer_with_nextjs_14.md +51 -575
- package/docs/pt/intlayer_with_nextjs_15.md +56 -819
- package/docs/pt/intlayer_with_nextjs_16.md +40 -883
- package/docs/pt/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +11 -499
- package/docs/pt/intlayer_with_nextjs_page_router.md +87 -707
- package/docs/pt/intlayer_with_nuxt.md +16 -98
- package/docs/pt/intlayer_with_react_native+expo.md +31 -283
- package/docs/pt/intlayer_with_react_router_v7.md +3 -98
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +15 -91
- package/docs/pt/intlayer_with_storybook.md +1 -37
- package/docs/pt/intlayer_with_svelte_kit.md +29 -71
- package/docs/pt/intlayer_with_tanstack+solid.md +14 -70
- package/docs/pt/intlayer_with_tanstack.md +14 -62
- package/docs/pt/intlayer_with_vanilla.md +28 -108
- package/docs/pt/intlayer_with_vite+lit.md +98 -162
- package/docs/pt/intlayer_with_vite+preact.md +100 -709
- package/docs/pt/intlayer_with_vite+react.md +104 -797
- package/docs/pt/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/pt/intlayer_with_vite+solid.md +79 -149
- package/docs/pt/intlayer_with_vite+svelte.md +104 -132
- package/docs/pt/intlayer_with_vite+vanilla.md +105 -155
- package/docs/pt/intlayer_with_vite+vue.md +80 -263
- package/docs/pt/introduction.md +2 -59
- package/docs/pt/packages/express-intlayer/t.md +6 -181
- package/docs/pt/packages/hono-intlayer/t.md +1 -45
- package/docs/pt/packages/intlayer/getConfiguration.md +2 -54
- package/docs/pt/packages/intlayer/getEnumeration.md +2 -60
- package/docs/pt/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/pt/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/pt/packages/intlayer/getLocaleName.md +1 -43
- package/docs/pt/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/pt/packages/intlayer/getMultilingualUrls.md +2 -60
- package/docs/pt/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/pt/packages/intlayer/getPrefix.md +1 -19
- package/docs/pt/packages/intlayer/getTranslation.md +3 -87
- package/docs/pt/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/pt/packages/next-intlayer/t.md +5 -137
- package/docs/pt/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/pt/packages/next-intlayer/useIntlayer.md +3 -119
- package/docs/pt/packages/next-intlayer/useLocale.md +1 -51
- package/docs/pt/packages/react-intlayer/t.md +4 -109
- package/docs/pt/packages/react-intlayer/useDictionary.md +3 -113
- package/docs/pt/packages/react-intlayer/useI18n.md +4 -107
- package/docs/pt/packages/react-intlayer/useIntlayer.md +3 -114
- package/docs/pt/packages/react-intlayer/useLocale.md +3 -103
- package/docs/pt/per_locale_file.md +3 -35
- package/docs/ru/dictionary/condition.md +2 -116
- package/docs/ru/dictionary/content_file.md +2 -204
- package/docs/ru/dictionary/enumeration.md +2 -116
- package/docs/ru/dictionary/file.md +3 -102
- package/docs/ru/dictionary/function_fetching.md +3 -103
- package/docs/ru/dictionary/gender.md +2 -140
- package/docs/ru/dictionary/insertion.md +3 -57
- package/docs/ru/dictionary/nesting.md +3 -121
- package/docs/ru/dictionary/translation.md +4 -147
- package/docs/ru/interest_of_intlayer.md +2 -60
- package/docs/ru/intlayer_CMS.md +3 -225
- package/docs/ru/intlayer_visual_editor.md +1 -72
- package/docs/ru/intlayer_with_adonisjs.md +3 -109
- package/docs/ru/intlayer_with_analog.md +21 -41
- package/docs/ru/intlayer_with_angular.md +15 -41
- package/docs/ru/intlayer_with_astro.md +172 -45
- package/docs/ru/intlayer_with_astro_lit.md +614 -0
- package/docs/ru/intlayer_with_astro_preact.md +568 -0
- package/docs/ru/intlayer_with_astro_react.md +561 -0
- package/docs/ru/intlayer_with_astro_solid.md +561 -0
- package/docs/ru/intlayer_with_astro_svelte.md +565 -0
- package/docs/ru/intlayer_with_astro_vanilla.md +542 -0
- package/docs/ru/intlayer_with_astro_vue.md +583 -0
- package/docs/ru/intlayer_with_create_react_app.md +9 -677
- package/docs/ru/intlayer_with_express.md +4 -112
- package/docs/ru/intlayer_with_fastify.md +5 -193
- package/docs/ru/intlayer_with_hono.md +2 -2
- package/docs/ru/intlayer_with_lynx+react.md +2 -116
- package/docs/ru/intlayer_with_nestjs.md +3 -33
- package/docs/ru/intlayer_with_nextjs_14.md +50 -534
- package/docs/ru/intlayer_with_nextjs_15.md +60 -834
- package/docs/ru/intlayer_with_nextjs_16.md +60 -903
- package/docs/ru/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +11 -542
- package/docs/ru/intlayer_with_nextjs_page_router.md +38 -610
- package/docs/ru/intlayer_with_nuxt.md +16 -100
- package/docs/ru/intlayer_with_react_native+expo.md +31 -286
- package/docs/ru/intlayer_with_react_router_v7.md +15 -91
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +15 -91
- package/docs/ru/intlayer_with_storybook.md +1 -37
- package/docs/ru/intlayer_with_svelte_kit.md +29 -71
- package/docs/ru/intlayer_with_tanstack+solid.md +14 -70
- package/docs/ru/intlayer_with_tanstack.md +14 -62
- package/docs/ru/intlayer_with_vanilla.md +28 -108
- package/docs/ru/intlayer_with_vite+lit.md +98 -162
- package/docs/ru/intlayer_with_vite+preact.md +102 -711
- package/docs/ru/intlayer_with_vite+react.md +111 -807
- package/docs/ru/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/ru/intlayer_with_vite+solid.md +79 -153
- package/docs/ru/intlayer_with_vite+svelte.md +104 -132
- package/docs/ru/intlayer_with_vite+vanilla.md +105 -155
- package/docs/ru/intlayer_with_vite+vue.md +92 -266
- package/docs/ru/introduction.md +2 -62
- package/docs/ru/packages/express-intlayer/t.md +6 -183
- package/docs/ru/packages/hono-intlayer/t.md +1 -45
- package/docs/ru/packages/intlayer/getConfiguration.md +2 -54
- package/docs/ru/packages/intlayer/getEnumeration.md +2 -60
- package/docs/ru/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/ru/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/ru/packages/intlayer/getLocaleName.md +1 -43
- package/docs/ru/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/ru/packages/intlayer/getMultilingualUrls.md +2 -62
- package/docs/ru/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/ru/packages/intlayer/getPrefix.md +1 -15
- package/docs/ru/packages/intlayer/getTranslation.md +3 -87
- package/docs/ru/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/ru/packages/next-intlayer/t.md +5 -139
- package/docs/ru/packages/next-intlayer/useDictionary.md +3 -119
- package/docs/ru/packages/next-intlayer/useIntlayer.md +3 -120
- package/docs/ru/packages/next-intlayer/useLocale.md +1 -51
- package/docs/ru/packages/react-intlayer/t.md +4 -111
- package/docs/ru/packages/react-intlayer/useDictionary.md +3 -115
- package/docs/ru/packages/react-intlayer/useI18n.md +4 -107
- package/docs/ru/packages/react-intlayer/useIntlayer.md +3 -118
- package/docs/ru/packages/react-intlayer/useLocale.md +2 -58
- package/docs/ru/per_locale_file.md +3 -35
- package/docs/tr/dictionary/condition.md +2 -116
- package/docs/tr/dictionary/content_file.md +2 -201
- package/docs/tr/dictionary/enumeration.md +2 -116
- package/docs/tr/dictionary/file.md +3 -100
- package/docs/tr/dictionary/function_fetching.md +3 -103
- package/docs/tr/dictionary/gender.md +2 -140
- package/docs/tr/dictionary/insertion.md +3 -57
- package/docs/tr/dictionary/nesting.md +3 -121
- package/docs/tr/dictionary/translation.md +4 -119
- package/docs/tr/interest_of_intlayer.md +2 -58
- package/docs/tr/intlayer_CMS.md +3 -227
- package/docs/tr/intlayer_visual_editor.md +1 -72
- package/docs/tr/intlayer_with_adonisjs.md +3 -109
- package/docs/tr/intlayer_with_analog.md +21 -41
- package/docs/tr/intlayer_with_angular.md +15 -41
- package/docs/tr/intlayer_with_astro.md +187 -61
- package/docs/tr/intlayer_with_astro_lit.md +615 -0
- package/docs/tr/intlayer_with_astro_preact.md +564 -0
- package/docs/tr/intlayer_with_astro_react.md +562 -0
- package/docs/tr/intlayer_with_astro_solid.md +562 -0
- package/docs/tr/intlayer_with_astro_svelte.md +566 -0
- package/docs/tr/intlayer_with_astro_vanilla.md +543 -0
- package/docs/tr/intlayer_with_astro_vue.md +584 -0
- package/docs/tr/intlayer_with_create_react_app.md +33 -685
- package/docs/tr/intlayer_with_express.md +5 -179
- package/docs/tr/intlayer_with_fastify.md +5 -193
- package/docs/tr/intlayer_with_hono.md +2 -2
- package/docs/tr/intlayer_with_lynx+react.md +2 -108
- package/docs/tr/intlayer_with_nestjs.md +3 -31
- package/docs/tr/intlayer_with_nextjs_14.md +12 -431
- package/docs/tr/intlayer_with_nextjs_15.md +59 -815
- package/docs/tr/intlayer_with_nextjs_16.md +60 -903
- package/docs/tr/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +11 -498
- package/docs/tr/intlayer_with_nextjs_page_router.md +37 -622
- package/docs/tr/intlayer_with_nuxt.md +16 -98
- package/docs/tr/intlayer_with_react_native+expo.md +31 -265
- package/docs/tr/intlayer_with_react_router_v7.md +15 -91
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +15 -91
- package/docs/tr/intlayer_with_storybook.md +1 -37
- package/docs/tr/intlayer_with_svelte_kit.md +29 -71
- package/docs/tr/intlayer_with_tanstack+solid.md +14 -70
- package/docs/tr/intlayer_with_tanstack.md +14 -62
- package/docs/tr/intlayer_with_vanilla.md +28 -108
- package/docs/tr/intlayer_with_vite+lit.md +98 -156
- package/docs/tr/intlayer_with_vite+preact.md +102 -711
- package/docs/tr/intlayer_with_vite+react.md +107 -791
- package/docs/tr/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/tr/intlayer_with_vite+solid.md +79 -149
- package/docs/tr/intlayer_with_vite+svelte.md +104 -132
- package/docs/tr/intlayer_with_vite+vanilla.md +105 -155
- package/docs/tr/intlayer_with_vite+vue.md +92 -196
- package/docs/tr/introduction.md +2 -58
- package/docs/tr/packages/express-intlayer/t.md +6 -181
- package/docs/tr/packages/hono-intlayer/t.md +1 -45
- package/docs/tr/packages/intlayer/getConfiguration.md +2 -54
- package/docs/tr/packages/intlayer/getEnumeration.md +2 -60
- package/docs/tr/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/tr/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/tr/packages/intlayer/getLocaleName.md +1 -43
- package/docs/tr/packages/intlayer/getLocalizedUrl.md +3 -79
- package/docs/tr/packages/intlayer/getMultilingualUrls.md +2 -60
- package/docs/tr/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/tr/packages/intlayer/getPrefix.md +1 -15
- package/docs/tr/packages/intlayer/getTranslation.md +3 -87
- package/docs/tr/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/tr/packages/next-intlayer/t.md +5 -137
- package/docs/tr/packages/next-intlayer/useDictionary.md +3 -118
- package/docs/tr/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/tr/packages/next-intlayer/useLocale.md +1 -51
- package/docs/tr/packages/react-intlayer/t.md +4 -109
- package/docs/tr/packages/react-intlayer/useDictionary.md +3 -113
- package/docs/tr/packages/react-intlayer/useI18n.md +8 -214
- package/docs/tr/packages/react-intlayer/useIntlayer.md +3 -109
- package/docs/tr/packages/react-intlayer/useLocale.md +3 -103
- package/docs/tr/per_locale_file.md +3 -33
- package/docs/uk/dictionary/condition.md +2 -116
- package/docs/uk/dictionary/content_file.md +2 -218
- package/docs/uk/dictionary/enumeration.md +2 -116
- package/docs/uk/dictionary/file.md +3 -100
- package/docs/uk/dictionary/function_fetching.md +3 -103
- package/docs/uk/dictionary/gender.md +2 -140
- package/docs/uk/dictionary/insertion.md +3 -57
- package/docs/uk/dictionary/nesting.md +3 -121
- package/docs/uk/dictionary/translation.md +4 -156
- package/docs/uk/interest_of_intlayer.md +2 -60
- package/docs/uk/intlayer_CMS.md +3 -227
- package/docs/uk/intlayer_visual_editor.md +1 -72
- package/docs/uk/intlayer_with_adonisjs.md +3 -109
- package/docs/uk/intlayer_with_analog.md +21 -41
- package/docs/uk/intlayer_with_angular.md +15 -41
- package/docs/uk/intlayer_with_astro.md +187 -70
- package/docs/uk/intlayer_with_astro_lit.md +615 -0
- package/docs/uk/intlayer_with_astro_preact.md +564 -0
- package/docs/uk/intlayer_with_astro_react.md +562 -0
- package/docs/uk/intlayer_with_astro_solid.md +562 -0
- package/docs/uk/intlayer_with_astro_svelte.md +566 -0
- package/docs/uk/intlayer_with_astro_vanilla.md +543 -0
- package/docs/uk/intlayer_with_astro_vue.md +584 -0
- package/docs/uk/intlayer_with_create_react_app.md +39 -697
- package/docs/uk/intlayer_with_express.md +5 -184
- package/docs/uk/intlayer_with_fastify.md +5 -193
- package/docs/uk/intlayer_with_hono.md +2 -2
- package/docs/uk/intlayer_with_lynx+react.md +3 -118
- package/docs/uk/intlayer_with_nestjs.md +3 -31
- package/docs/uk/intlayer_with_nextjs_14.md +54 -797
- package/docs/uk/intlayer_with_nextjs_15.md +42 -708
- package/docs/uk/intlayer_with_nextjs_16.md +60 -903
- package/docs/uk/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +11 -499
- package/docs/uk/intlayer_with_nextjs_page_router.md +37 -659
- package/docs/uk/intlayer_with_nuxt.md +16 -106
- package/docs/uk/intlayer_with_react_native+expo.md +31 -293
- package/docs/uk/intlayer_with_react_router_v7.md +15 -99
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +15 -93
- package/docs/uk/intlayer_with_storybook.md +1 -37
- package/docs/uk/intlayer_with_svelte_kit.md +28 -70
- package/docs/uk/intlayer_with_tanstack+solid.md +14 -70
- package/docs/uk/intlayer_with_tanstack.md +14 -62
- package/docs/uk/intlayer_with_vanilla.md +28 -108
- package/docs/uk/intlayer_with_vite+lit.md +98 -156
- package/docs/uk/intlayer_with_vite+preact.md +105 -714
- package/docs/uk/intlayer_with_vite+react.md +113 -822
- package/docs/uk/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/uk/intlayer_with_vite+solid.md +79 -151
- package/docs/uk/intlayer_with_vite+svelte.md +104 -132
- package/docs/uk/intlayer_with_vite+vanilla.md +105 -155
- package/docs/uk/intlayer_with_vite+vue.md +92 -268
- package/docs/uk/introduction.md +2 -61
- package/docs/uk/packages/express-intlayer/t.md +6 -187
- package/docs/uk/packages/hono-intlayer/t.md +1 -45
- package/docs/uk/packages/intlayer/getConfiguration.md +2 -54
- package/docs/uk/packages/intlayer/getEnumeration.md +2 -60
- package/docs/uk/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/uk/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/uk/packages/intlayer/getLocaleName.md +1 -43
- package/docs/uk/packages/intlayer/getLocalizedUrl.md +3 -71
- package/docs/uk/packages/intlayer/getMultilingualUrls.md +3 -79
- package/docs/uk/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/uk/packages/intlayer/getPrefix.md +1 -15
- package/docs/uk/packages/intlayer/getTranslation.md +3 -87
- package/docs/uk/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/uk/packages/next-intlayer/t.md +5 -141
- package/docs/uk/packages/next-intlayer/useDictionary.md +3 -126
- package/docs/uk/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/uk/packages/next-intlayer/useLocale.md +1 -51
- package/docs/uk/packages/react-intlayer/t.md +4 -113
- package/docs/uk/packages/react-intlayer/useDictionary.md +3 -118
- package/docs/uk/packages/react-intlayer/useI18n.md +4 -107
- package/docs/uk/packages/react-intlayer/useIntlayer.md +3 -109
- package/docs/uk/packages/react-intlayer/useLocale.md +3 -103
- package/docs/uk/per_locale_file.md +3 -34
- package/docs/ur/intlayer_with_fastify.md +5 -193
- package/docs/ur/intlayer_with_hono.md +5 -158
- package/docs/ur/intlayer_with_storybook.md +1 -37
- package/docs/ur/intlayer_with_vanilla.md +28 -108
- package/docs/ur/intlayer_with_vite+lit.md +98 -156
- package/docs/ur/intlayer_with_vite+vanilla.md +105 -155
- package/docs/ur/introduction.md +2 -58
- package/docs/vi/dictionary/condition.md +2 -116
- package/docs/vi/dictionary/content_file.md +2 -200
- package/docs/vi/dictionary/enumeration.md +2 -116
- package/docs/vi/dictionary/file.md +3 -102
- package/docs/vi/dictionary/function_fetching.md +3 -103
- package/docs/vi/dictionary/gender.md +2 -140
- package/docs/vi/dictionary/insertion.md +3 -57
- package/docs/vi/dictionary/nesting.md +3 -121
- package/docs/vi/dictionary/translation.md +4 -146
- package/docs/vi/interest_of_intlayer.md +2 -60
- package/docs/vi/intlayer_CMS.md +3 -227
- package/docs/vi/intlayer_visual_editor.md +1 -72
- package/docs/vi/intlayer_with_adonisjs.md +3 -109
- package/docs/vi/intlayer_with_analog.md +21 -41
- package/docs/vi/intlayer_with_angular.md +15 -41
- package/docs/vi/intlayer_with_astro.md +184 -66
- package/docs/vi/intlayer_with_astro_lit.md +615 -0
- package/docs/vi/intlayer_with_astro_preact.md +564 -0
- package/docs/vi/intlayer_with_astro_react.md +562 -0
- package/docs/vi/intlayer_with_astro_solid.md +562 -0
- package/docs/vi/intlayer_with_astro_svelte.md +566 -0
- package/docs/vi/intlayer_with_astro_vanilla.md +543 -0
- package/docs/vi/intlayer_with_astro_vue.md +584 -0
- package/docs/vi/intlayer_with_create_react_app.md +39 -693
- package/docs/vi/intlayer_with_express.md +5 -179
- package/docs/vi/intlayer_with_fastify.md +5 -193
- package/docs/vi/intlayer_with_hono.md +2 -2
- package/docs/vi/intlayer_with_lynx+react.md +3 -111
- package/docs/vi/intlayer_with_nestjs.md +3 -31
- package/docs/vi/intlayer_with_nextjs_14.md +54 -785
- package/docs/vi/intlayer_with_nextjs_15.md +34 -1171
- package/docs/vi/intlayer_with_nextjs_16.md +60 -903
- package/docs/vi/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +10 -516
- package/docs/vi/intlayer_with_nextjs_page_router.md +69 -742
- package/docs/vi/intlayer_with_nuxt.md +16 -98
- package/docs/vi/intlayer_with_react_native+expo.md +31 -293
- package/docs/vi/intlayer_with_react_router_v7.md +15 -101
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +15 -101
- package/docs/vi/intlayer_with_storybook.md +1 -37
- package/docs/vi/intlayer_with_svelte_kit.md +29 -71
- package/docs/vi/intlayer_with_tanstack+solid.md +14 -70
- package/docs/vi/intlayer_with_tanstack.md +14 -62
- package/docs/vi/intlayer_with_vanilla.md +28 -108
- package/docs/vi/intlayer_with_vite+lit.md +98 -156
- package/docs/vi/intlayer_with_vite+preact.md +103 -712
- package/docs/vi/intlayer_with_vite+react.md +105 -787
- package/docs/vi/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/vi/intlayer_with_vite+solid.md +79 -150
- package/docs/vi/intlayer_with_vite+svelte.md +104 -132
- package/docs/vi/intlayer_with_vite+vanilla.md +105 -155
- package/docs/vi/intlayer_with_vite+vue.md +92 -252
- package/docs/vi/introduction.md +2 -58
- package/docs/vi/packages/express-intlayer/t.md +6 -181
- package/docs/vi/packages/hono-intlayer/t.md +1 -45
- package/docs/vi/packages/intlayer/getConfiguration.md +2 -54
- package/docs/vi/packages/intlayer/getEnumeration.md +2 -62
- package/docs/vi/packages/intlayer/getHTMLTextDir.md +2 -38
- package/docs/vi/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/vi/packages/intlayer/getLocaleName.md +1 -54
- package/docs/vi/packages/intlayer/getLocalizedUrl.md +2 -59
- package/docs/vi/packages/intlayer/getMultilingualUrls.md +2 -62
- package/docs/vi/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/vi/packages/intlayer/getPrefix.md +1 -15
- package/docs/vi/packages/intlayer/getTranslation.md +3 -98
- package/docs/vi/packages/intlayer/getTranslationContent.md +3 -86
- package/docs/vi/packages/next-intlayer/t.md +5 -137
- package/docs/vi/packages/next-intlayer/useDictionary.md +3 -123
- package/docs/vi/packages/next-intlayer/useIntlayer.md +3 -117
- package/docs/vi/packages/next-intlayer/useLocale.md +1 -51
- package/docs/vi/packages/react-intlayer/t.md +4 -111
- package/docs/vi/packages/react-intlayer/useDictionary.md +3 -114
- package/docs/vi/packages/react-intlayer/useI18n.md +5 -124
- package/docs/vi/packages/react-intlayer/useIntlayer.md +3 -114
- package/docs/vi/packages/react-intlayer/useLocale.md +3 -103
- package/docs/vi/per_locale_file.md +3 -35
- package/docs/zh/dictionary/condition.md +2 -116
- package/docs/zh/dictionary/content_file.md +2 -201
- package/docs/zh/dictionary/enumeration.md +2 -116
- package/docs/zh/dictionary/file.md +3 -101
- package/docs/zh/dictionary/function_fetching.md +3 -103
- package/docs/zh/dictionary/gender.md +2 -140
- package/docs/zh/dictionary/insertion.md +3 -57
- package/docs/zh/dictionary/nesting.md +3 -121
- package/docs/zh/dictionary/translation.md +5 -159
- package/docs/zh/interest_of_intlayer.md +2 -59
- package/docs/zh/intlayer_CMS.md +3 -224
- package/docs/zh/intlayer_visual_editor.md +1 -72
- package/docs/zh/intlayer_with_adonisjs.md +3 -109
- package/docs/zh/intlayer_with_analog.md +21 -41
- package/docs/zh/intlayer_with_angular.md +15 -41
- package/docs/zh/intlayer_with_astro.md +169 -58
- package/docs/zh/intlayer_with_astro_lit.md +598 -0
- package/docs/zh/intlayer_with_astro_preact.md +547 -0
- package/docs/zh/intlayer_with_astro_react.md +545 -0
- package/docs/zh/intlayer_with_astro_solid.md +545 -0
- package/docs/zh/intlayer_with_astro_svelte.md +549 -0
- package/docs/zh/intlayer_with_astro_vanilla.md +526 -0
- package/docs/zh/intlayer_with_astro_vue.md +567 -0
- package/docs/zh/intlayer_with_create_react_app.md +33 -680
- package/docs/zh/intlayer_with_express.md +5 -182
- package/docs/zh/intlayer_with_fastify.md +5 -193
- package/docs/zh/intlayer_with_hono.md +5 -158
- package/docs/zh/intlayer_with_lynx+react.md +2 -116
- package/docs/zh/intlayer_with_nestjs.md +3 -31
- package/docs/zh/intlayer_with_nextjs_14.md +56 -597
- package/docs/zh/intlayer_with_nextjs_15.md +56 -818
- package/docs/zh/intlayer_with_nextjs_16.md +60 -903
- package/docs/zh/intlayer_with_nextjs_compiler.md +2 -62
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +11 -541
- package/docs/zh/intlayer_with_nextjs_page_router.md +39 -636
- package/docs/zh/intlayer_with_nuxt.md +16 -101
- package/docs/zh/intlayer_with_react_native+expo.md +31 -286
- package/docs/zh/intlayer_with_react_router_v7.md +15 -92
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +15 -92
- package/docs/zh/intlayer_with_storybook.md +1 -37
- package/docs/zh/intlayer_with_svelte_kit.md +29 -71
- package/docs/zh/intlayer_with_tanstack+solid.md +14 -70
- package/docs/zh/intlayer_with_tanstack.md +14 -2
- package/docs/zh/intlayer_with_vanilla.md +28 -108
- package/docs/zh/intlayer_with_vite+lit.md +98 -162
- package/docs/zh/intlayer_with_vite+preact.md +104 -713
- package/docs/zh/intlayer_with_vite+react.md +106 -786
- package/docs/zh/intlayer_with_vite+react_compiler.md +87 -1
- package/docs/zh/intlayer_with_vite+solid.md +79 -151
- package/docs/zh/intlayer_with_vite+svelte.md +104 -132
- package/docs/zh/intlayer_with_vite+vanilla.md +105 -155
- package/docs/zh/intlayer_with_vite+vue.md +92 -256
- package/docs/zh/introduction.md +2 -59
- package/docs/zh/packages/express-intlayer/t.md +6 -183
- package/docs/zh/packages/hono-intlayer/t.md +2 -70
- package/docs/zh/packages/intlayer/getConfiguration.md +2 -54
- package/docs/zh/packages/intlayer/getEnumeration.md +2 -60
- package/docs/zh/packages/intlayer/getHTMLTextDir.md +2 -39
- package/docs/zh/packages/intlayer/getLocaleLang.md +1 -19
- package/docs/zh/packages/intlayer/getLocaleName.md +1 -43
- package/docs/zh/packages/intlayer/getLocalizedUrl.md +2 -45
- package/docs/zh/packages/intlayer/getMultilingualUrls.md +2 -64
- package/docs/zh/packages/intlayer/getPathWithoutLocale.md +1 -19
- package/docs/zh/packages/intlayer/getPrefix.md +1 -12
- package/docs/zh/packages/intlayer/getTranslation.md +3 -87
- package/docs/zh/packages/intlayer/getTranslationContent.md +3 -87
- package/docs/zh/packages/next-intlayer/t.md +5 -139
- package/docs/zh/packages/next-intlayer/useDictionary.md +3 -120
- package/docs/zh/packages/next-intlayer/useIntlayer.md +3 -119
- package/docs/zh/packages/next-intlayer/useLocale.md +1 -51
- package/docs/zh/packages/react-intlayer/t.md +4 -107
- package/docs/zh/packages/react-intlayer/useDictionary.md +3 -116
- package/docs/zh/packages/react-intlayer/useI18n.md +4 -107
- package/docs/zh/packages/react-intlayer/useIntlayer.md +3 -109
- package/docs/zh/packages/react-intlayer/useLocale.md +3 -103
- package/docs/zh/per_locale_file.md +3 -35
- package/package.json +6 -6
- package/src/common.ts +2 -1
- package/src/generated/docs.entry.ts +140 -0
|
@@ -16,6 +16,7 @@ slugs:
|
|
|
16
16
|
- environment
|
|
17
17
|
- vite-and-react
|
|
18
18
|
applicationTemplate: https://github.com/aymericzip/intlayer-vite-react-template
|
|
19
|
+
applicationShowcase: https://intlayer-vite-react-template.vercel.app
|
|
19
20
|
youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4
|
|
20
21
|
history:
|
|
21
22
|
- version: 7.5.9
|
|
@@ -56,13 +57,24 @@ Với Intlayer, bạn có thể:
|
|
|
56
57
|
<Tab label="Code" value="code">
|
|
57
58
|
|
|
58
59
|
<iframe
|
|
59
|
-
src="https://
|
|
60
|
+
src="https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts"
|
|
60
61
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
61
62
|
title="Demo CodeSandbox - Cách quốc tế hóa ứng dụng của bạn bằng Intlayer"
|
|
62
63
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
63
64
|
loading="lazy"
|
|
64
65
|
/>
|
|
65
66
|
|
|
67
|
+
</Tab>
|
|
68
|
+
<Tab label="Bản demo" value="demo">
|
|
69
|
+
|
|
70
|
+
<iframe
|
|
71
|
+
src="https://intlayer-vite-react-template.vercel.app"
|
|
72
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
73
|
+
title="Bản demo — intlayer-vite-react-template"
|
|
74
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
75
|
+
loading="lazy"
|
|
76
|
+
/>
|
|
77
|
+
|
|
66
78
|
</Tab>
|
|
67
79
|
</Tabs>
|
|
68
80
|
|
|
@@ -110,7 +122,7 @@ bun x intlayer init
|
|
|
110
122
|
|
|
111
123
|
Tạo một file cấu hình để cấu hình các ngôn ngữ cho ứng dụng của bạn:
|
|
112
124
|
|
|
113
|
-
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
125
|
+
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
114
126
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
115
127
|
|
|
116
128
|
const config: IntlayerConfig = {
|
|
@@ -128,51 +140,13 @@ const config: IntlayerConfig = {
|
|
|
128
140
|
export default config;
|
|
129
141
|
```
|
|
130
142
|
|
|
131
|
-
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
132
|
-
import { Locales } from "intlayer";
|
|
133
|
-
|
|
134
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
135
|
-
const config = {
|
|
136
|
-
internationalization: {
|
|
137
|
-
locales: [
|
|
138
|
-
Locales.ENGLISH,
|
|
139
|
-
Locales.FRENCH,
|
|
140
|
-
Locales.SPANISH,
|
|
141
|
-
// Các ngôn ngữ khác của bạn
|
|
142
|
-
],
|
|
143
|
-
defaultLocale: Locales.ENGLISH,
|
|
144
|
-
},
|
|
145
|
-
};
|
|
146
|
-
|
|
147
|
-
export default config;
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
151
|
-
const { Locales } = require("intlayer");
|
|
152
|
-
|
|
153
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
154
|
-
const config = {
|
|
155
|
-
internationalization: {
|
|
156
|
-
locales: [
|
|
157
|
-
Locales.ENGLISH,
|
|
158
|
-
Locales.FRENCH,
|
|
159
|
-
Locales.SPANISH,
|
|
160
|
-
// Các ngôn ngữ khác của bạn
|
|
161
|
-
],
|
|
162
|
-
defaultLocale: Locales.ENGLISH,
|
|
163
|
-
},
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
module.exports = config;
|
|
167
|
-
```
|
|
168
|
-
|
|
169
143
|
> Thông qua tệp cấu hình này, bạn có thể thiết lập URL theo ngôn ngữ, chuyển hướng middleware, tên cookie, vị trí và phần mở rộng của các khai báo nội dung, tắt các log của Intlayer trên console, và nhiều hơn nữa. Để xem danh sách đầy đủ các tham số có sẵn, hãy tham khảo [tài liệu cấu hình](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md).
|
|
170
144
|
|
|
171
145
|
### Bước 3: Tích hợp Intlayer vào cấu hình Vite của bạn
|
|
172
146
|
|
|
173
147
|
Thêm plugin intlayer vào cấu hình của bạn.
|
|
174
148
|
|
|
175
|
-
```typescript fileName="vite.config.ts" codeFormat="typescript"
|
|
149
|
+
```typescript fileName="vite.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
176
150
|
import { defineConfig } from "vite";
|
|
177
151
|
import react from "@vitejs/plugin-react-swc";
|
|
178
152
|
import { intlayer } from "vite-intlayer";
|
|
@@ -183,35 +157,13 @@ export default defineConfig({
|
|
|
183
157
|
});
|
|
184
158
|
```
|
|
185
159
|
|
|
186
|
-
```javascript fileName="vite.config.mjs" codeFormat="esm"
|
|
187
|
-
import { defineConfig } from "vite";
|
|
188
|
-
import react from "@vitejs/plugin-react-swc";
|
|
189
|
-
import { intlayer } from "vite-intlayer";
|
|
190
|
-
|
|
191
|
-
// https://vitejs.dev/config/
|
|
192
|
-
export default defineConfig({
|
|
193
|
-
plugins: [react(), intlayer()],
|
|
194
|
-
});
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
```javascript fileName="vite.config.cjs" codeFormat="commonjs"
|
|
198
|
-
const { defineConfig } = require("vite");
|
|
199
|
-
const react = require("@vitejs/plugin-react-swc");
|
|
200
|
-
const { intlayer } = require("vite-intlayer");
|
|
201
|
-
|
|
202
|
-
// https://vitejs.dev/config/
|
|
203
|
-
module.exports = defineConfig({
|
|
204
|
-
plugins: [react(), intlayer()],
|
|
205
|
-
});
|
|
206
|
-
```
|
|
207
|
-
|
|
208
160
|
> Plugin Vite `intlayer()` được sử dụng để tích hợp Intlayer với Vite. Nó đảm bảo việc xây dựng các file khai báo nội dung và giám sát chúng trong chế độ phát triển. Nó định nghĩa các biến môi trường Intlayer trong ứng dụng Vite. Ngoài ra, nó còn cung cấp các bí danh để tối ưu hiệu suất.
|
|
209
161
|
|
|
210
162
|
### Bước 4: Khai báo Nội dung của Bạn
|
|
211
163
|
|
|
212
164
|
Tạo và quản lý các khai báo nội dung để lưu trữ bản dịch:
|
|
213
165
|
|
|
214
|
-
```tsx fileName="src/app.content.tsx" contentDeclarationFormat="typescript"
|
|
166
|
+
```tsx fileName="src/app.content.tsx" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
215
167
|
import { t, type Dictionary } from "intlayer";
|
|
216
168
|
import type { ReactNode } from "react";
|
|
217
169
|
|
|
@@ -266,125 +218,6 @@ const appContent = {
|
|
|
266
218
|
export default appContent;
|
|
267
219
|
```
|
|
268
220
|
|
|
269
|
-
```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
|
|
270
|
-
import { t } from "intlayer";
|
|
271
|
-
|
|
272
|
-
/** @type {import('intlayer').Dictionary} */
|
|
273
|
-
const appContent = {
|
|
274
|
-
key: "app",
|
|
275
|
-
content: {
|
|
276
|
-
viteLogo: t({
|
|
277
|
-
en: "Logo Vite",
|
|
278
|
-
fr: "Logo Vite",
|
|
279
|
-
es: "Logo Vite",
|
|
280
|
-
}),
|
|
281
|
-
reactLogo: t({
|
|
282
|
-
en: "Logo React",
|
|
283
|
-
fr: "Logo React",
|
|
284
|
-
es: "Logo React",
|
|
285
|
-
}),
|
|
286
|
-
|
|
287
|
-
title: "Vite + React",
|
|
288
|
-
|
|
289
|
-
count: t({
|
|
290
|
-
en: "số đếm là ",
|
|
291
|
-
fr: "le compte est ",
|
|
292
|
-
es: "el recuento es ",
|
|
293
|
-
}),
|
|
294
|
-
|
|
295
|
-
edit:
|
|
296
|
-
t <
|
|
297
|
-
ReactNode >
|
|
298
|
-
{
|
|
299
|
-
// Đừng quên import React nếu bạn sử dụng một React node trong nội dung của bạn
|
|
300
|
-
en: (
|
|
301
|
-
<>
|
|
302
|
-
Chỉnh sửa <code>src/App.tsx</code> và lưu để thử HMR
|
|
303
|
-
</>
|
|
304
|
-
),
|
|
305
|
-
fr: (
|
|
306
|
-
<>
|
|
307
|
-
Chỉnh sửa <code>src/App.tsx</code> và lưu để thử HMR
|
|
308
|
-
</>
|
|
309
|
-
),
|
|
310
|
-
es: (
|
|
311
|
-
<>
|
|
312
|
-
Chỉnh sửa <code>src/App.tsx</code> và lưu để thử HMR
|
|
313
|
-
</>
|
|
314
|
-
),
|
|
315
|
-
},
|
|
316
|
-
|
|
317
|
-
readTheDocs: t({
|
|
318
|
-
en: "Nhấn vào logo Vite và React để tìm hiểu thêm",
|
|
319
|
-
fr: "Cliquez sur les logos Vite et React pour en savoir plus",
|
|
320
|
-
es: "Haga clic en los logotipos de Vite y React para obtener más información",
|
|
321
|
-
}),
|
|
322
|
-
},
|
|
323
|
-
};
|
|
324
|
-
|
|
325
|
-
export default appContent;
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
|
|
329
|
-
const { t } = require("intlayer");
|
|
330
|
-
|
|
331
|
-
/** @type {import('intlayer').Dictionary} */
|
|
332
|
-
const appContent = {
|
|
333
|
-
key: "app",
|
|
334
|
-
content: {
|
|
335
|
-
viteLogo: t({
|
|
336
|
-
en: "Vite logo",
|
|
337
|
-
fr: "Logo Vite",
|
|
338
|
-
es: "Logo Vite",
|
|
339
|
-
}),
|
|
340
|
-
reactLogo: t({
|
|
341
|
-
en: "React logo",
|
|
342
|
-
fr: "Logo React",
|
|
343
|
-
es: "Logo React",
|
|
344
|
-
}),
|
|
345
|
-
|
|
346
|
-
title: "Vite + React",
|
|
347
|
-
|
|
348
|
-
count: t({
|
|
349
|
-
en: "count is ",
|
|
350
|
-
fr: "le compte est ",
|
|
351
|
-
es: "el recuento es ",
|
|
352
|
-
}),
|
|
353
|
-
|
|
354
|
-
edit:
|
|
355
|
-
t <
|
|
356
|
-
ReactNode >
|
|
357
|
-
{
|
|
358
|
-
// Đừng quên import React nếu bạn sử dụng một React node trong nội dung của bạn
|
|
359
|
-
en: (
|
|
360
|
-
<>
|
|
361
|
-
Edit <code>src/App.tsx</code> and save to test HMR
|
|
362
|
-
</>
|
|
363
|
-
),
|
|
364
|
-
fr: (
|
|
365
|
-
<>
|
|
366
|
-
Éditez <code>src/App.tsx</code> et enregistrez pour tester HMR
|
|
367
|
-
</>
|
|
368
|
-
),
|
|
369
|
-
es: (
|
|
370
|
-
<>
|
|
371
|
-
Edita <code>src/App.tsx</code> y guarda para probar HMR
|
|
372
|
-
</>
|
|
373
|
-
),
|
|
374
|
-
},
|
|
375
|
-
|
|
376
|
-
readTheDocs: t({
|
|
377
|
-
en: "Click on the Vite and React logos to learn more",
|
|
378
|
-
fr: "Cliquez sur les logos Vite et React pour en savoir plus",
|
|
379
|
-
es: "Haga clic en los logotipos de Vite y React para obtener más información",
|
|
380
|
-
vi: "Nhấn vào logo Vite và React để tìm hiểu thêm",
|
|
381
|
-
}),
|
|
382
|
-
},
|
|
383
|
-
};
|
|
384
|
-
|
|
385
|
-
module.exports = appContent;
|
|
386
|
-
```
|
|
387
|
-
|
|
388
221
|
```json fileName="src/app.content.json" contentDeclarationFormat="json"
|
|
389
222
|
{
|
|
390
223
|
"$schema": "https://intlayer.org/schema.json",
|
|
@@ -461,7 +294,7 @@ module.exports = appContent;
|
|
|
461
294
|
|
|
462
295
|
Truy cập các từ điển nội dung của bạn trong toàn bộ ứng dụng:
|
|
463
296
|
|
|
464
|
-
```tsx {5,9} fileName="src/App.tsx" codeFormat="typescript"
|
|
297
|
+
```tsx {5,9} fileName="src/App.tsx" codeFormat={["typescript", "esm"]}
|
|
465
298
|
import { useState, type FC } from "react";
|
|
466
299
|
import reactLogo from "./assets/react.svg";
|
|
467
300
|
import viteLogo from "/vite.svg";
|
|
@@ -508,100 +341,6 @@ const App: FC = () => (
|
|
|
508
341
|
export default App;
|
|
509
342
|
```
|
|
510
343
|
|
|
511
|
-
```tsx {5,9} fileName="src/App.msx" codeFormat="esm"
|
|
512
|
-
import { useState } from "react";
|
|
513
|
-
import reactLogo from "./assets/react.svg";
|
|
514
|
-
import viteLogo from "/vite.svg";
|
|
515
|
-
import "./App.css";
|
|
516
|
-
import { IntlayerProvider, useIntlayer } from "react-intlayer";
|
|
517
|
-
|
|
518
|
-
const AppContent = () => {
|
|
519
|
-
const [count, setCount] = useState(0);
|
|
520
|
-
const content = useIntlayer("app");
|
|
521
|
-
|
|
522
|
-
return (
|
|
523
|
-
<>
|
|
524
|
-
<div>
|
|
525
|
-
<a href="https://vitejs.dev" target="_blank">
|
|
526
|
-
<img src={viteLogo} className="logo" alt={content.viteLogo.value} />
|
|
527
|
-
</a>
|
|
528
|
-
<a href="https://react.dev" target="_blank">
|
|
529
|
-
<img
|
|
530
|
-
src={reactLogo}
|
|
531
|
-
className="logo react"
|
|
532
|
-
alt={content.reactLogo.value}
|
|
533
|
-
/>
|
|
534
|
-
</a>
|
|
535
|
-
</div>
|
|
536
|
-
<h1>{content.title}</h1>
|
|
537
|
-
<div className="card">
|
|
538
|
-
<button onClick={() => setCount((count) => count + 1)}>
|
|
539
|
-
{content.count}
|
|
540
|
-
{count}
|
|
541
|
-
</button>
|
|
542
|
-
<p>{content.edit}</p>
|
|
543
|
-
</div>
|
|
544
|
-
<p className="read-the-docs">{content.readTheDocs}</p>
|
|
545
|
-
</>
|
|
546
|
-
);
|
|
547
|
-
};
|
|
548
|
-
|
|
549
|
-
const App = () => (
|
|
550
|
-
<IntlayerProvider>
|
|
551
|
-
<AppContent />
|
|
552
|
-
</IntlayerProvider>
|
|
553
|
-
);
|
|
554
|
-
|
|
555
|
-
export default App;
|
|
556
|
-
```
|
|
557
|
-
|
|
558
|
-
```tsx {5,9} fileName="src/App.csx" codeFormat="commonjs"
|
|
559
|
-
const { useState } = require("react");
|
|
560
|
-
const reactLogo = require("./assets/react.svg");
|
|
561
|
-
const viteLogo = require("/vite.svg");
|
|
562
|
-
require("./App.css");
|
|
563
|
-
const { IntlayerProvider, useIntlayer } = require("react-intlayer");
|
|
564
|
-
|
|
565
|
-
const AppContent = () => {
|
|
566
|
-
const [count, setCount] = useState(0);
|
|
567
|
-
const content = useIntlayer("app");
|
|
568
|
-
|
|
569
|
-
return (
|
|
570
|
-
<>
|
|
571
|
-
<div>
|
|
572
|
-
<a href="https://vitejs.dev" target="_blank">
|
|
573
|
-
<img src={viteLogo} className="logo" alt={content.viteLogo.value} />
|
|
574
|
-
</a>
|
|
575
|
-
<a href="https://react.dev" target="_blank">
|
|
576
|
-
<img
|
|
577
|
-
src={reactLogo}
|
|
578
|
-
className="logo react"
|
|
579
|
-
alt={content.reactLogo.value}
|
|
580
|
-
/>
|
|
581
|
-
</a>
|
|
582
|
-
</div>
|
|
583
|
-
<h1>{content.title}</h1>
|
|
584
|
-
<div className="card">
|
|
585
|
-
<button onClick={() => setCount((count) => count + 1)}>
|
|
586
|
-
{content.count}
|
|
587
|
-
{count}
|
|
588
|
-
</button>
|
|
589
|
-
<p>{content.edit}</p>
|
|
590
|
-
</div>
|
|
591
|
-
<p className="read-the-docs">{content.readTheDocs}</p>
|
|
592
|
-
</>
|
|
593
|
-
);
|
|
594
|
-
};
|
|
595
|
-
|
|
596
|
-
const App = () => (
|
|
597
|
-
<IntlayerProvider>
|
|
598
|
-
<AppContent />
|
|
599
|
-
</IntlayerProvider>
|
|
600
|
-
);
|
|
601
|
-
|
|
602
|
-
module.exports = App;
|
|
603
|
-
```
|
|
604
|
-
|
|
605
344
|
> Nếu bạn muốn sử dụng nội dung của mình trong một thuộc tính `string`, chẳng hạn như `alt`, `title`, `href`, `aria-label`, v.v., bạn phải gọi giá trị của hàm, như sau:
|
|
606
345
|
|
|
607
346
|
> ```jsx
|
|
@@ -616,7 +355,7 @@ module.exports = App;
|
|
|
616
355
|
|
|
617
356
|
Để thay đổi ngôn ngữ cho nội dung của bạn, bạn có thể sử dụng hàm `setLocale` được cung cấp bởi hook `useLocale`. Hàm này cho phép bạn thiết lập locale của ứng dụng và cập nhật nội dung tương ứng.
|
|
618
357
|
|
|
619
|
-
```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
|
|
358
|
+
```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat={["typescript", "esm"]}
|
|
620
359
|
import type { FC } from "react";
|
|
621
360
|
import { Locales } from "intlayer";
|
|
622
361
|
import { useLocale } from "react-intlayer";
|
|
@@ -632,36 +371,6 @@ const LocaleSwitcher: FC = () => {
|
|
|
632
371
|
};
|
|
633
372
|
```
|
|
634
373
|
|
|
635
|
-
```jsx fileName="src/components/LocaleSwitcher.msx" codeFormat="esm"
|
|
636
|
-
import { Locales } from "intlayer";
|
|
637
|
-
import { useLocale } from "react-intlayer";
|
|
638
|
-
|
|
639
|
-
const LocaleSwitcher = () => {
|
|
640
|
-
const { setLocale } = useLocale();
|
|
641
|
-
|
|
642
|
-
return (
|
|
643
|
-
<button onClick={() => setLocale(Locales.English)}>
|
|
644
|
-
Thay đổi ngôn ngữ sang tiếng Anh
|
|
645
|
-
</button>
|
|
646
|
-
);
|
|
647
|
-
};
|
|
648
|
-
```
|
|
649
|
-
|
|
650
|
-
```jsx fileName="src/components/LocaleSwitcher.csx" codeFormat="commonjs"
|
|
651
|
-
const { Locales } = require("intlayer");
|
|
652
|
-
const { useLocale } = require("react-intlayer");
|
|
653
|
-
|
|
654
|
-
const LocaleSwitcher = () => {
|
|
655
|
-
const { setLocale } = useLocale();
|
|
656
|
-
|
|
657
|
-
return (
|
|
658
|
-
<button onClick={() => setLocale(Locales.English)}>
|
|
659
|
-
Thay đổi ngôn ngữ sang tiếng Anh
|
|
660
|
-
</button>
|
|
661
|
-
);
|
|
662
|
-
};
|
|
663
|
-
```
|
|
664
|
-
|
|
665
374
|
> Để tìm hiểu thêm về hook `useLocale`, hãy tham khảo [tài liệu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useLocale.md).
|
|
666
375
|
|
|
667
376
|
### (Tùy chọn) Bước 7: Thêm định tuyến theo ngôn ngữ vào ứng dụng của bạn
|
|
@@ -679,7 +388,7 @@ Ví dụ:
|
|
|
679
388
|
|
|
680
389
|
Để thêm định tuyến theo ngôn ngữ vào ứng dụng của bạn, bạn có thể tạo một thành phần `LocaleRouter` bao bọc các tuyến đường của ứng dụng và xử lý định tuyến dựa trên ngôn ngữ. Dưới đây là ví dụ sử dụng [React Router](https://reactrouter.com/home):
|
|
681
390
|
|
|
682
|
-
```tsx fileName="src/components/LocaleRouter.tsx"
|
|
391
|
+
```tsx fileName="src/components/LocaleRouter.tsx" codeFormat={["typescript", "esm"]}
|
|
683
392
|
import { localeMap } from "intlayer"; // Các hàm tiện ích và kiểu từ 'intlayer'
|
|
684
393
|
import type { FC, PropsWithChildren } from "react"; // Kiểu React cho các functional component và props
|
|
685
394
|
import { IntlayerProvider } from "react-intlayer"; // Provider cho ngữ cảnh quốc tế hóa
|
|
@@ -707,69 +416,11 @@ export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
|
|
|
707
416
|
);
|
|
708
417
|
```
|
|
709
418
|
|
|
710
|
-
```jsx fileName="src/components/LocaleRouter.mjx" codeFormat="esm"
|
|
711
|
-
import { localeMap } from 'intlayer'; // Các hàm tiện ích và kiểu từ 'intlayer'
|
|
712
|
-
import type { FC, PropsWithChildren } from 'react'; // Kiểu React cho các functional component và props
|
|
713
|
-
import { IntlayerProvider } from "react-intlayer"; // Provider cho ngữ cảnh quốc tế hóa
|
|
714
|
-
import { BrowserRouter, Route, Routes } from 'react-router-dom'; // Các thành phần Router để quản lý điều hướng
|
|
715
|
-
|
|
716
|
-
/**
|
|
717
|
-
* Một thành phần router thiết lập các tuyến đường theo ngôn ngữ cụ thể.
|
|
718
|
-
* Nó sử dụng React Router để quản lý điều hướng và hiển thị các thành phần được bản địa hóa.
|
|
719
|
-
*/
|
|
720
|
-
export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
|
|
721
|
-
<BrowserRouter>
|
|
722
|
-
<Routes>
|
|
723
|
-
{localeMap(({ locale, urlPrefix }) => (
|
|
724
|
-
<Route
|
|
725
|
-
// Mẫu tuyến đường để bắt ngôn ngữ (ví dụ: /en/, /fr/) và khớp với tất cả các đường dẫn tiếp theo
|
|
726
|
-
path={`${urlPrefix}/*`}
|
|
727
|
-
key={locale}
|
|
728
|
-
element={
|
|
729
|
-
<IntlayerProvider locale={locale}>{children}</IntlayerProvider>
|
|
730
|
-
} // Bao bọc các phần tử con với quản lý ngôn ngữ
|
|
731
|
-
/>
|
|
732
|
-
))}
|
|
733
|
-
</Routes>
|
|
734
|
-
</BrowserRouter>
|
|
735
|
-
);
|
|
736
|
-
```
|
|
737
|
-
|
|
738
|
-
```jsx fileName="src/components/LocaleRouter.cjx" codeFormat="commonjs"
|
|
739
|
-
const { localeMap } = require("intlayer"); // Các hàm tiện ích và kiểu từ 'intlayer'
|
|
740
|
-
const React = require("react"); // Nhập React
|
|
741
|
-
const { IntlayerProvider } = require("react-intlayer"); // Provider cho ngữ cảnh quốc tế hóa
|
|
742
|
-
const { BrowserRouter, Route, Routes } = require("react-router-dom"); // Các thành phần Router để quản lý điều hướng
|
|
743
|
-
|
|
744
|
-
/**
|
|
745
|
-
* Một thành phần router thiết lập các tuyến đường theo ngôn ngữ cụ thể.
|
|
746
|
-
* Nó sử dụng React Router để quản lý điều hướng và hiển thị các thành phần được bản địa hóa.
|
|
747
|
-
*/
|
|
748
|
-
const LocaleRouter = ({ children }) =>
|
|
749
|
-
React.createElement(
|
|
750
|
-
BrowserRouter,
|
|
751
|
-
{},
|
|
752
|
-
React.createElement(
|
|
753
|
-
Routes,
|
|
754
|
-
{},
|
|
755
|
-
localeMap(({ locale, urlPrefix }) =>
|
|
756
|
-
React.createElement(Route, {
|
|
757
|
-
path: `${urlPrefix}/*`,
|
|
758
|
-
key: locale,
|
|
759
|
-
element: React.createElement(IntlayerProvider, { locale }, children),
|
|
760
|
-
})
|
|
761
|
-
)
|
|
762
|
-
)
|
|
763
|
-
);
|
|
764
|
-
|
|
765
|
-
exports.LocaleRouter = LocaleRouter;
|
|
766
|
-
```
|
|
767
|
-
|
|
768
419
|
> Lưu ý: Nếu bạn sử dụng `routing.mode: 'no-prefix' | 'search-params'`, có thể bạn không cần sử dụng hàm `localeMap`.
|
|
769
420
|
|
|
770
421
|
Sau đó, bạn có thể sử dụng thành phần `LocaleRouter` trong ứng dụng của mình:
|
|
771
422
|
|
|
772
|
-
```tsx fileName="src/App.tsx" codeFormat="typescript"
|
|
423
|
+
```tsx fileName="src/App.tsx" codeFormat={["typescript", "esm"]}
|
|
773
424
|
import { LocaleRouter } from "./components/LocaleRouter";
|
|
774
425
|
import type { FC } from "react";
|
|
775
426
|
|
|
@@ -782,35 +433,11 @@ const App: FC = () => (
|
|
|
782
433
|
);
|
|
783
434
|
```
|
|
784
435
|
|
|
785
|
-
```jsx fileName="src/App.mjx" codeFormat="esm"
|
|
786
|
-
import { LocaleRouter } from "./components/LocaleRouter";
|
|
787
|
-
|
|
788
|
-
// ... Thành phần AppContent của bạn
|
|
789
|
-
|
|
790
|
-
const App = () => (
|
|
791
|
-
<LocaleRouter>
|
|
792
|
-
<AppContent />
|
|
793
|
-
</LocaleRouter>
|
|
794
|
-
);
|
|
795
|
-
```
|
|
796
|
-
|
|
797
|
-
```jsx fileName="src/App.cjx" codeFormat="commonjs"
|
|
798
|
-
const { LocaleRouter } = require("./components/LocaleRouter");
|
|
799
|
-
|
|
800
|
-
// ... Thành phần AppContent của bạn
|
|
801
|
-
|
|
802
|
-
const App = () => (
|
|
803
|
-
<LocaleRouter>
|
|
804
|
-
<AppContent />
|
|
805
|
-
</LocaleRouter>
|
|
806
|
-
);
|
|
807
|
-
```
|
|
808
|
-
|
|
809
436
|
Song song đó, bạn cũng có thể sử dụng `intlayerProxy` để thêm routing phía server cho ứng dụng của bạn. Plugin này sẽ tự động phát hiện locale hiện tại dựa trên URL và thiết lập cookie locale phù hợp. Nếu không có locale nào được chỉ định, plugin sẽ xác định locale phù hợp nhất dựa trên ngôn ngữ trình duyệt của người dùng. Nếu không phát hiện được locale nào, nó sẽ chuyển hướng đến locale mặc định.
|
|
810
437
|
|
|
811
438
|
> Lưu ý rằng để sử dụng `intlayerProxy` trong môi trường production, bạn cần chuyển gói `vite-intlayer` từ `devDependencies` sang `dependencies`.
|
|
812
439
|
|
|
813
|
-
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
440
|
+
```typescript {3,7} fileName="vite.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
814
441
|
import { defineConfig } from "vite";
|
|
815
442
|
import react from "@vitejs/plugin-react-swc";
|
|
816
443
|
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
@@ -825,106 +452,11 @@ export default defineConfig({
|
|
|
825
452
|
});
|
|
826
453
|
```
|
|
827
454
|
|
|
828
|
-
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
829
|
-
import { defineConfig } from "vite";
|
|
830
|
-
import react from "@vitejs/plugin-react-swc";
|
|
831
|
-
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
832
|
-
|
|
833
|
-
// https://vitejs.dev/config/
|
|
834
|
-
export default defineConfig({
|
|
835
|
-
plugins: [
|
|
836
|
-
intlayerProxy(), // should be placed first
|
|
837
|
-
react(),
|
|
838
|
-
intlayer(),
|
|
839
|
-
],
|
|
840
|
-
});
|
|
841
|
-
```
|
|
842
|
-
|
|
843
|
-
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
844
|
-
const { defineConfig } = require("vite");
|
|
845
|
-
const react = require("@vitejs/plugin-react-swc");
|
|
846
|
-
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
847
|
-
|
|
848
|
-
// https://vitejs.dev/config/
|
|
849
|
-
module.exports = defineConfig({
|
|
850
|
-
plugins: [
|
|
851
|
-
intlayerProxy(), // should be placed first
|
|
852
|
-
react(),
|
|
853
|
-
intlayer(),
|
|
854
|
-
],
|
|
855
|
-
});
|
|
856
|
-
```
|
|
857
|
-
|
|
858
455
|
### (Tùy chọn) Bước 8: Thay đổi URL khi thay đổi locale
|
|
859
456
|
|
|
860
457
|
Để thay đổi URL khi locale thay đổi, bạn có thể sử dụng prop `onLocaleChange` được cung cấp bởi hook `useLocale`. Đồng thời, bạn có thể sử dụng các hook `useLocation` và `useNavigate` từ `react-router-dom` để cập nhật đường dẫn URL.
|
|
861
458
|
|
|
862
|
-
```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
|
|
863
|
-
import { useLocation, useNavigate } from "react-router-dom";
|
|
864
|
-
import {
|
|
865
|
-
Locales,
|
|
866
|
-
getHTMLTextDir,
|
|
867
|
-
getLocaleName,
|
|
868
|
-
getLocalizedUrl,
|
|
869
|
-
} from "intlayer";
|
|
870
|
-
import { useLocale } from "react-intlayer";
|
|
871
|
-
import { type FC } from "react";
|
|
872
|
-
|
|
873
|
-
const LocaleSwitcher: FC = () => {
|
|
874
|
-
const { pathname, search } = useLocation(); // Lấy đường dẫn URL hiện tại. Ví dụ: /fr/about?foo=bar
|
|
875
|
-
const navigate = useNavigate();
|
|
876
|
-
|
|
877
|
-
const { locale, availableLocales, setLocale } = useLocale({
|
|
878
|
-
onLocaleChange: (locale) => {
|
|
879
|
-
// Tạo URL với locale được cập nhật
|
|
880
|
-
// Ví dụ: /es/about?foo=bar
|
|
881
|
-
const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
|
|
882
|
-
|
|
883
|
-
// Cập nhật đường dẫn URL
|
|
884
|
-
navigate(pathWithLocale);
|
|
885
|
-
},
|
|
886
|
-
});
|
|
887
|
-
|
|
888
|
-
return (
|
|
889
|
-
<div>
|
|
890
|
-
<button popoverTarget="localePopover">{getLocaleName(locale)}</button>
|
|
891
|
-
<div id="localePopover" popover="auto">
|
|
892
|
-
{availableLocales.map((localeItem) => (
|
|
893
|
-
<a
|
|
894
|
-
href={getLocalizedUrl(location.pathname, localeItem)}
|
|
895
|
-
hrefLang={localeItem}
|
|
896
|
-
aria-current={locale === localeItem ? "page" : undefined}
|
|
897
|
-
onClick={(e) => {
|
|
898
|
-
e.preventDefault();
|
|
899
|
-
setLocale(localeItem);
|
|
900
|
-
}}
|
|
901
|
-
key={localeItem}
|
|
902
|
-
>
|
|
903
|
-
<span>
|
|
904
|
-
{/* Ngôn ngữ - ví dụ: FR */}
|
|
905
|
-
{localeItem}
|
|
906
|
-
</span>
|
|
907
|
-
<span>
|
|
908
|
-
{/* Tên ngôn ngữ trong chính ngôn ngữ đó - ví dụ: Français */}
|
|
909
|
-
{getLocaleName(localeItem, locale)}
|
|
910
|
-
</span>
|
|
911
|
-
<span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
|
|
912
|
-
{/* Tên ngôn ngữ trong ngôn ngữ hiện tại - ví dụ: Francés khi locale hiện tại là Locales.SPANISH */}
|
|
913
|
-
{getLocaleName(localeItem)}
|
|
914
|
-
</span>
|
|
915
|
-
<span dir="ltr" lang={Locales.ENGLISH}>
|
|
916
|
-
{/* Ngôn ngữ bằng tiếng Anh - ví dụ: French */}
|
|
917
|
-
{getLocaleName(localeItem, Locales.ENGLISH)}
|
|
918
|
-
</span>
|
|
919
|
-
</a>
|
|
920
|
-
))}
|
|
921
|
-
</div>
|
|
922
|
-
</div>
|
|
923
|
-
);
|
|
924
|
-
};
|
|
925
|
-
```
|
|
926
|
-
|
|
927
|
-
```jsx fileName="src/components/LocaleSwitcher.msx" codeFormat="esm"
|
|
459
|
+
```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat={["typescript", "esm"]}
|
|
928
460
|
import { useLocation, useNavigate } from "react-router-dom";
|
|
929
461
|
import {
|
|
930
462
|
Locales,
|
|
@@ -933,8 +465,9 @@ import {
|
|
|
933
465
|
getLocalizedUrl,
|
|
934
466
|
} from "intlayer";
|
|
935
467
|
import { useLocale } from "react-intlayer";
|
|
468
|
+
import { type FC } from "react";
|
|
936
469
|
|
|
937
|
-
const LocaleSwitcher = () => {
|
|
470
|
+
const LocaleSwitcher: FC = () => {
|
|
938
471
|
const { pathname, search } = useLocation(); // Lấy đường dẫn URL hiện tại. Ví dụ: /fr/about?foo=bar
|
|
939
472
|
const navigate = useNavigate();
|
|
940
473
|
|
|
@@ -949,67 +482,6 @@ const LocaleSwitcher = () => {
|
|
|
949
482
|
},
|
|
950
483
|
});
|
|
951
484
|
|
|
952
|
-
return (
|
|
953
|
-
<div>
|
|
954
|
-
<button popoverTarget="localePopover">{getLocaleName(locale)}</button>
|
|
955
|
-
<div id="localePopover" popover="auto">
|
|
956
|
-
{availableLocales.map((localeItem) => (
|
|
957
|
-
<a
|
|
958
|
-
href={getLocalizedUrl(location.pathname, localeItem)}
|
|
959
|
-
hrefLang={localeItem}
|
|
960
|
-
aria-current={locale === localeItem ? "page" : undefined}
|
|
961
|
-
onClick={(e) => {
|
|
962
|
-
e.preventDefault();
|
|
963
|
-
setLocale(localeItem);
|
|
964
|
-
}}
|
|
965
|
-
key={localeItem}
|
|
966
|
-
>
|
|
967
|
-
<span>
|
|
968
|
-
{/* Mã ngôn ngữ - ví dụ: FR */}
|
|
969
|
-
{localeItem}
|
|
970
|
-
</span>
|
|
971
|
-
<span>
|
|
972
|
-
{/* Ngôn ngữ trong chính Locale của nó - ví dụ: Français */}
|
|
973
|
-
{getLocaleName(localeItem, locale)}
|
|
974
|
-
</span>
|
|
975
|
-
<span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
|
|
976
|
-
{/* Ngôn ngữ trong Locale hiện tại - ví dụ: Francés với locale hiện tại đặt là Locales.SPANISH */}
|
|
977
|
-
{getLocaleName(localeItem)}
|
|
978
|
-
</span>
|
|
979
|
-
<span dir="ltr" lang={Locales.ENGLISH}>
|
|
980
|
-
{/* Ngôn ngữ bằng tiếng Anh - ví dụ: French */}
|
|
981
|
-
{getLocaleName(localeItem, Locales.ENGLISH)}
|
|
982
|
-
</span>
|
|
983
|
-
</a>
|
|
984
|
-
))}
|
|
985
|
-
</div>
|
|
986
|
-
</div>
|
|
987
|
-
);
|
|
988
|
-
};
|
|
989
|
-
const { useLocation, useNavigate } = require("react-router-dom");
|
|
990
|
-
const {
|
|
991
|
-
Locales,
|
|
992
|
-
getHTMLTextDir,
|
|
993
|
-
getLocaleName,
|
|
994
|
-
getLocalizedUrl,
|
|
995
|
-
} = require("intlayer");
|
|
996
|
-
const { useLocale } = require("react-intlayer");
|
|
997
|
-
|
|
998
|
-
const LocaleSwitcher = () => {
|
|
999
|
-
const { pathname, search } = useLocation(); // Lấy đường dẫn URL hiện tại. Ví dụ: /fr/about?foo=bar
|
|
1000
|
-
const navigate = useNavigate();
|
|
1001
|
-
|
|
1002
|
-
const { locale, availableLocales, setLocale } = useLocale({
|
|
1003
|
-
onLocaleChange: (locale) => {
|
|
1004
|
-
// Xây dựng URL với locale được cập nhật
|
|
1005
|
-
// Ví dụ: /es/about?foo=bar
|
|
1006
|
-
const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
|
|
1007
|
-
|
|
1008
|
-
// Cập nhật đường dẫn URL
|
|
1009
|
-
navigate(pathWithLocale);
|
|
1010
|
-
},
|
|
1011
|
-
});
|
|
1012
|
-
|
|
1013
485
|
return (
|
|
1014
486
|
<div>
|
|
1015
487
|
<button popoverTarget="localePopover">{getLocaleName(locale)}</button>
|
|
@@ -1030,15 +502,15 @@ const LocaleSwitcher = () => {
|
|
|
1030
502
|
{localeItem}
|
|
1031
503
|
</span>
|
|
1032
504
|
<span>
|
|
1033
|
-
{/*
|
|
505
|
+
{/* Tên ngôn ngữ trong chính ngôn ngữ đó - ví dụ: Français */}
|
|
1034
506
|
{getLocaleName(localeItem, locale)}
|
|
1035
507
|
</span>
|
|
1036
508
|
<span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
|
|
1037
|
-
{/*
|
|
509
|
+
{/* Tên ngôn ngữ trong ngôn ngữ hiện tại - ví dụ: Francés khi locale hiện tại là Locales.SPANISH */}
|
|
1038
510
|
{getLocaleName(localeItem)}
|
|
1039
511
|
</span>
|
|
1040
512
|
<span dir="ltr" lang={Locales.ENGLISH}>
|
|
1041
|
-
{/* Ngôn ngữ bằng tiếng Anh - ví
|
|
513
|
+
{/* Ngôn ngữ bằng tiếng Anh - ví dụ: French */}
|
|
1042
514
|
{getLocaleName(localeItem, Locales.ENGLISH)}
|
|
1043
515
|
</span>
|
|
1044
516
|
</a>
|
|
@@ -1078,32 +550,7 @@ Bằng cách cập nhật các thuộc tính này một cách động khi locale
|
|
|
1078
550
|
|
|
1079
551
|
Tạo một hook tùy chỉnh để quản lý các thuộc tính HTML. Hook này lắng nghe sự thay đổi của locale và cập nhật các thuộc tính tương ứng:
|
|
1080
552
|
|
|
1081
|
-
```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx" codeFormat="typescript"
|
|
1082
|
-
import { useEffect } from "react";
|
|
1083
|
-
import { useLocale } from "react-intlayer";
|
|
1084
|
-
import { getHTMLTextDir } from "intlayer";
|
|
1085
|
-
|
|
1086
|
-
/**
|
|
1087
|
-
* Cập nhật các thuộc tính `lang` và `dir` của phần tử HTML <html> dựa trên locale hiện tại.
|
|
1088
|
-
* - `lang`: Thông báo cho trình duyệt và công cụ tìm kiếm về ngôn ngữ của trang.
|
|
1089
|
-
* - `dir`: Đảm bảo thứ tự đọc đúng (ví dụ: 'ltr' cho tiếng Anh, 'rtl' cho tiếng Ả Rập).
|
|
1090
|
-
*
|
|
1091
|
-
* Việc cập nhật động này rất cần thiết cho việc hiển thị văn bản đúng cách, khả năng tiếp cận và SEO.
|
|
1092
|
-
*/
|
|
1093
|
-
export const useI18nHTMLAttributes = () => {
|
|
1094
|
-
const { locale } = useLocale();
|
|
1095
|
-
|
|
1096
|
-
useEffect(() => {
|
|
1097
|
-
// Cập nhật thuộc tính ngôn ngữ theo locale hiện tại.
|
|
1098
|
-
document.documentElement.lang = locale;
|
|
1099
|
-
|
|
1100
|
-
// Đặt hướng văn bản dựa trên locale hiện tại.
|
|
1101
|
-
document.documentElement.dir = getHTMLTextDir(locale);
|
|
1102
|
-
}, [locale]);
|
|
1103
|
-
};
|
|
1104
|
-
```
|
|
1105
|
-
|
|
1106
|
-
```jsx fileName="src/hooks/useI18nHTMLAttributes.msx" codeFormat="esm"
|
|
553
|
+
```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx" codeFormat={["typescript", "esm"]}
|
|
1107
554
|
import { useEffect } from "react";
|
|
1108
555
|
import { useLocale } from "react-intlayer";
|
|
1109
556
|
import { getHTMLTextDir } from "intlayer";
|
|
@@ -1118,31 +565,6 @@ import { getHTMLTextDir } from "intlayer";
|
|
|
1118
565
|
export const useI18nHTMLAttributes = () => {
|
|
1119
566
|
const { locale } = useLocale();
|
|
1120
567
|
|
|
1121
|
-
useEffect(() => {
|
|
1122
|
-
// Cập nhật thuộc tính ngôn ngữ thành locale hiện tại.
|
|
1123
|
-
document.documentElement.lang = locale;
|
|
1124
|
-
|
|
1125
|
-
// Đặt hướng văn bản dựa trên locale hiện tại.
|
|
1126
|
-
document.documentElement.dir = getHTMLTextDir(locale);
|
|
1127
|
-
}, [locale]);
|
|
1128
|
-
};
|
|
1129
|
-
```
|
|
1130
|
-
|
|
1131
|
-
```jsx fileName="src/hooks/useI18nHTMLAttributes.csx" codeFormat="commonjs"
|
|
1132
|
-
const { useEffect } = require("react");
|
|
1133
|
-
const { useLocale } = require("react-intlayer");
|
|
1134
|
-
const { getHTMLTextDir } = require("intlayer");
|
|
1135
|
-
|
|
1136
|
-
/**
|
|
1137
|
-
* Cập nhật các thuộc tính `lang` và `dir` của phần tử HTML <html> dựa trên locale hiện tại.
|
|
1138
|
-
* - `lang`: Thông báo cho trình duyệt và công cụ tìm kiếm về ngôn ngữ của trang.
|
|
1139
|
-
* - `dir`: Đảm bảo thứ tự đọc đúng (ví dụ: 'ltr' cho tiếng Anh, 'rtl' cho tiếng Ả Rập).
|
|
1140
|
-
*
|
|
1141
|
-
* Việc cập nhật động này rất cần thiết cho việc hiển thị văn bản đúng, khả năng truy cập và SEO.
|
|
1142
|
-
*/
|
|
1143
|
-
const useI18nHTMLAttributes = () => {
|
|
1144
|
-
const { locale } = useLocale();
|
|
1145
|
-
|
|
1146
568
|
useEffect(() => {
|
|
1147
569
|
// Cập nhật thuộc tính ngôn ngữ theo locale hiện tại.
|
|
1148
570
|
document.documentElement.lang = locale;
|
|
@@ -1151,15 +573,13 @@ const useI18nHTMLAttributes = () => {
|
|
|
1151
573
|
document.documentElement.dir = getHTMLTextDir(locale);
|
|
1152
574
|
}, [locale]);
|
|
1153
575
|
};
|
|
1154
|
-
|
|
1155
|
-
module.exports = { useI18nHTMLAttributes };
|
|
1156
576
|
```
|
|
1157
577
|
|
|
1158
578
|
#### Sử dụng Hook trong Ứng dụng của Bạn
|
|
1159
579
|
|
|
1160
580
|
Tích hợp hook vào thành phần chính của bạn để các thuộc tính HTML được cập nhật mỗi khi locale thay đổi:
|
|
1161
581
|
|
|
1162
|
-
```tsx fileName="src/App.tsx" codeFormat="typescript"
|
|
582
|
+
```tsx fileName="src/App.tsx" codeFormat={["typescript", "esm"]}
|
|
1163
583
|
import type { FC } from "react";
|
|
1164
584
|
import { IntlayerProvider, useIntlayer } from "react-intlayer";
|
|
1165
585
|
import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
|
|
@@ -1181,49 +601,6 @@ const App: FC = () => (
|
|
|
1181
601
|
export default App;
|
|
1182
602
|
```
|
|
1183
603
|
|
|
1184
|
-
```jsx fileName="src/App.msx" codeFormat="esm"
|
|
1185
|
-
import { IntlayerProvider, useIntlayer } from "react-intlayer";
|
|
1186
|
-
import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
|
|
1187
|
-
import "./App.css";
|
|
1188
|
-
|
|
1189
|
-
const AppContent = () => {
|
|
1190
|
-
// Áp dụng hook để cập nhật các thuộc tính lang và dir của thẻ <html> dựa trên locale.
|
|
1191
|
-
useI18nHTMLAttributes();
|
|
1192
|
-
|
|
1193
|
-
// ... Phần còn lại của component
|
|
1194
|
-
};
|
|
1195
|
-
|
|
1196
|
-
const App = () => (
|
|
1197
|
-
<IntlayerProvider>
|
|
1198
|
-
<AppContent />
|
|
1199
|
-
</IntlayerProvider>
|
|
1200
|
-
);
|
|
1201
|
-
|
|
1202
|
-
export default App;
|
|
1203
|
-
```
|
|
1204
|
-
|
|
1205
|
-
```jsx fileName="src/App.csx" codeFormat="commonjs"
|
|
1206
|
-
const { FC } = require("react");
|
|
1207
|
-
const { IntlayerProvider, useIntlayer } = require("react-intlayer");
|
|
1208
|
-
const { useI18nHTMLAttributes } = require("./hooks/useI18nHTMLAttributes");
|
|
1209
|
-
require("./App.css");
|
|
1210
|
-
|
|
1211
|
-
const AppContent = () => {
|
|
1212
|
-
// Áp dụng hook để cập nhật các thuộc tính lang và dir của thẻ <html> dựa trên locale.
|
|
1213
|
-
useI18nHTMLAttributes();
|
|
1214
|
-
|
|
1215
|
-
// ... Phần còn lại của component của bạn
|
|
1216
|
-
};
|
|
1217
|
-
|
|
1218
|
-
const App = () => (
|
|
1219
|
-
<IntlayerProvider>
|
|
1220
|
-
<AppContent />
|
|
1221
|
-
</IntlayerProvider>
|
|
1222
|
-
);
|
|
1223
|
-
|
|
1224
|
-
module.exports = App;
|
|
1225
|
-
```
|
|
1226
|
-
|
|
1227
604
|
Bằng cách áp dụng những thay đổi này, ứng dụng của bạn sẽ:
|
|
1228
605
|
|
|
1229
606
|
- Đảm bảo thuộc tính **ngôn ngữ** (`lang`) phản ánh chính xác locale hiện tại, điều này quan trọng cho SEO và hành vi của trình duyệt.
|
|
@@ -1242,7 +619,7 @@ Hành vi này hữu ích vì một số lý do sau:
|
|
|
1242
619
|
|
|
1243
620
|
Dưới đây là triển khai của component `Link` đa ngôn ngữ bằng TypeScript:
|
|
1244
621
|
|
|
1245
|
-
```tsx fileName="src/components/Link.tsx" codeFormat="typescript"
|
|
622
|
+
```tsx fileName="src/components/Link.tsx" codeFormat={["typescript", "esm"]}
|
|
1246
623
|
import { getLocalizedUrl } from "intlayer";
|
|
1247
624
|
import {
|
|
1248
625
|
forwardRef,
|
|
@@ -1288,79 +665,6 @@ export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
|
|
|
1288
665
|
Link.displayName = "Link";
|
|
1289
666
|
```
|
|
1290
667
|
|
|
1291
|
-
```jsx fileName="src/components/Link.mjx" codeFormat="esm"
|
|
1292
|
-
import { getLocalizedUrl } from "intlayer";
|
|
1293
|
-
import { useLocale } from "react-intlayer";
|
|
1294
|
-
import { forwardRef } from "react";
|
|
1295
|
-
|
|
1296
|
-
/**
|
|
1297
|
-
* Hàm tiện ích để kiểm tra xem một URL có phải là liên kết ngoài không.
|
|
1298
|
-
* Nếu URL bắt đầu bằng http:// hoặc https://, nó được coi là liên kết ngoài.
|
|
1299
|
-
*/
|
|
1300
|
-
export const checkIsExternalLink = (href?: string): boolean =>
|
|
1301
|
-
/^https?:\/\//.test(href ?? "");
|
|
1302
|
-
|
|
1303
|
-
/**
|
|
1304
|
-
* Một component Link tùy chỉnh điều chỉnh thuộc tính href dựa trên locale hiện tại.
|
|
1305
|
-
* Đối với các liên kết nội bộ, nó sử dụng `getLocalizedUrl` để thêm tiền tố locale vào URL (ví dụ: /fr/about).
|
|
1306
|
-
* Điều này đảm bảo rằng việc điều hướng vẫn giữ trong cùng một ngữ cảnh locale.
|
|
1307
|
-
*/
|
|
1308
|
-
export const Link = forwardRef(({ href, children, ...props }, ref) => {
|
|
1309
|
-
const { locale } = useLocale();
|
|
1310
|
-
const isExternalLink = checkIsExternalLink(href);
|
|
1311
|
-
|
|
1312
|
-
// Nếu liên kết là nội bộ và href hợp lệ được cung cấp, lấy URL đã được địa phương hóa.
|
|
1313
|
-
const hrefI18n =
|
|
1314
|
-
href && !isExternalLink ? getLocalizedUrl(href, locale) : href;
|
|
1315
|
-
|
|
1316
|
-
return (
|
|
1317
|
-
<a href={hrefI18n} ref={ref} {...props}>
|
|
1318
|
-
{children}
|
|
1319
|
-
</a>
|
|
1320
|
-
);
|
|
1321
|
-
});
|
|
1322
|
-
|
|
1323
|
-
Link.displayName = "Link";
|
|
1324
|
-
```
|
|
1325
|
-
|
|
1326
|
-
```jsx fileName="src/components/Link.csx" codeFormat="commonjs"
|
|
1327
|
-
const { getLocalizedUrl } = require("intlayer");
|
|
1328
|
-
const { useLocale } = require("react-intlayer");
|
|
1329
|
-
const { forwardRef } = require("react");
|
|
1330
|
-
|
|
1331
|
-
/**
|
|
1332
|
-
* Hàm tiện ích để kiểm tra xem một URL có phải là liên kết ngoài hay không.
|
|
1333
|
-
* Nếu URL bắt đầu bằng http:// hoặc https://, nó được coi là liên kết ngoài.
|
|
1334
|
-
*/
|
|
1335
|
-
const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
|
|
1336
|
-
|
|
1337
|
-
/**
|
|
1338
|
-
* Một component Link tùy chỉnh điều chỉnh thuộc tính href dựa trên locale hiện tại.
|
|
1339
|
-
* Đối với các liên kết nội bộ, nó sử dụng `getLocalizedUrl` để thêm tiền tố locale vào URL (ví dụ: /fr/about).
|
|
1340
|
-
* Điều này đảm bảo rằng việc điều hướng vẫn giữ trong cùng một ngữ cảnh locale.
|
|
1341
|
-
*/
|
|
1342
|
-
const Link = forwardRef(({ href, children, ...props }, ref) => {
|
|
1343
|
-
const { locale } = useLocale();
|
|
1344
|
-
const isExternalLink = checkIsExternalLink(href);
|
|
1345
|
-
|
|
1346
|
-
// Nếu liên kết là nội bộ và có href hợp lệ, lấy URL đã được địa phương hóa.
|
|
1347
|
-
const localizedHref = isExternalLink ? href : getLocalizedUrl(href, locale);
|
|
1348
|
-
|
|
1349
|
-
return (
|
|
1350
|
-
<a
|
|
1351
|
-
href={localizedHref}
|
|
1352
|
-
ref={ref}
|
|
1353
|
-
{...props}
|
|
1354
|
-
aria-current={isExternalLink ? "external" : undefined}
|
|
1355
|
-
>
|
|
1356
|
-
{children}
|
|
1357
|
-
</a>
|
|
1358
|
-
);
|
|
1359
|
-
});
|
|
1360
|
-
|
|
1361
|
-
Link.displayName = "Link";
|
|
1362
|
-
```
|
|
1363
|
-
|
|
1364
668
|
#### Cách Hoạt Động
|
|
1365
669
|
|
|
1366
670
|
- **Phát hiện Liên kết Ngoài**:
|
|
@@ -1433,7 +737,7 @@ Nếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng ngh
|
|
|
1433
737
|
|
|
1434
738
|
Để thiết lập, bạn có thể thêm phần `compiler` vào tệp `intlayer.config.ts` của mình:
|
|
1435
739
|
|
|
1436
|
-
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
740
|
+
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
1437
741
|
import { type IntlayerConfig } from "intlayer";
|
|
1438
742
|
|
|
1439
743
|
const config: IntlayerConfig = {
|
|
@@ -1464,66 +768,6 @@ const config: IntlayerConfig = {
|
|
|
1464
768
|
export default config;
|
|
1465
769
|
```
|
|
1466
770
|
|
|
1467
|
-
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
1468
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
1469
|
-
const config = {
|
|
1470
|
-
// ... Phần còn lại của cấu hình
|
|
1471
|
-
compiler: {
|
|
1472
|
-
/**
|
|
1473
|
-
* Cho biết trình biên dịch có nên được bật hay không.
|
|
1474
|
-
*/
|
|
1475
|
-
enabled: true,
|
|
1476
|
-
|
|
1477
|
-
/**
|
|
1478
|
-
* Xác định đường dẫn các tệp đầu ra
|
|
1479
|
-
*/
|
|
1480
|
-
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1481
|
-
|
|
1482
|
-
/**
|
|
1483
|
-
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
1484
|
-
*/
|
|
1485
|
-
saveComponents: false,
|
|
1486
|
-
|
|
1487
|
-
/**
|
|
1488
|
-
* Tiền tố khóa từ điển
|
|
1489
|
-
*/
|
|
1490
|
-
dictionaryKeyPrefix: "",
|
|
1491
|
-
},
|
|
1492
|
-
};
|
|
1493
|
-
|
|
1494
|
-
export default config;
|
|
1495
|
-
```
|
|
1496
|
-
|
|
1497
|
-
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
1498
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
1499
|
-
const config = {
|
|
1500
|
-
// ... Phần còn lại của cấu hình
|
|
1501
|
-
compiler: {
|
|
1502
|
-
/**
|
|
1503
|
-
* Cho biết trình biên dịch có nên được bật hay không.
|
|
1504
|
-
*/
|
|
1505
|
-
enabled: true,
|
|
1506
|
-
|
|
1507
|
-
/**
|
|
1508
|
-
* Xác định đường dẫn các tệp đầu ra
|
|
1509
|
-
*/
|
|
1510
|
-
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1511
|
-
|
|
1512
|
-
/**
|
|
1513
|
-
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
1514
|
-
*/
|
|
1515
|
-
saveComponents: false,
|
|
1516
|
-
|
|
1517
|
-
/**
|
|
1518
|
-
* Tiền tố khóa từ điển
|
|
1519
|
-
*/
|
|
1520
|
-
dictionaryKeyPrefix: "",
|
|
1521
|
-
},
|
|
1522
|
-
};
|
|
1523
|
-
|
|
1524
|
-
module.exports = config;
|
|
1525
|
-
```
|
|
1526
|
-
|
|
1527
771
|
<Tabs>
|
|
1528
772
|
<Tab value='Lệnh trích xuất'>
|
|
1529
773
|
|
|
@@ -1581,6 +825,80 @@ bun run build # Or bun run dev
|
|
|
1581
825
|
</Tab>
|
|
1582
826
|
</Tabs>
|
|
1583
827
|
|
|
828
|
+
### (Tuỳ chọn) Sitemap và robots.txt (sinh lúc build)
|
|
829
|
+
|
|
830
|
+
Intlayer cung cấp `generateSitemap` và `getMultilingualUrls` để định dạng `sitemap.xml` đa ngôn ngữ và `robots.txt` cho crawler rồi tự ghi vào `public/`. Thường chạy một script Node nhỏ **trước** Vite (ví dụ hook npm `predev` / `prebuild`).
|
|
831
|
+
|
|
832
|
+
#### Sitemap
|
|
833
|
+
|
|
834
|
+
Trình tạo sitemap của Intlayer tôn trọng cấu hình locale và thêm metadata cho crawler.
|
|
835
|
+
|
|
836
|
+
> Sitemap hỗ trợ không gian tên `xhtml:link` (hreflang). Thay vì chỉ liệt kê URL phẳng, Intlayer nối hai chiều mọi bản địa phương của từng trang (ví dụ `/about`, `/fr/about` hoặc `/about?lang=fr` tùy chế độ routing).
|
|
837
|
+
|
|
838
|
+
#### Robots.txt
|
|
839
|
+
|
|
840
|
+
Dùng `getMultilingualUrls` để quy tắc `Disallow` áp dụng cho mọi biến thể URL của đường dẫn nhạy cảm.
|
|
841
|
+
|
|
842
|
+
#### 1. Thêm `generate-seo.mjs` ở thư mục gốc dự án
|
|
843
|
+
|
|
844
|
+
```javascript fileName="generate-seo.mjs"
|
|
845
|
+
import fs from "fs";
|
|
846
|
+
import path from "path";
|
|
847
|
+
import { fileURLToPath } from "url";
|
|
848
|
+
import { generateSitemap, getMultilingualUrls } from "intlayer";
|
|
849
|
+
|
|
850
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
851
|
+
|
|
852
|
+
const SITE_URL = (process.env.SITE_URL || "http://localhost:5173").replace(
|
|
853
|
+
/\/$/,
|
|
854
|
+
""
|
|
855
|
+
);
|
|
856
|
+
|
|
857
|
+
const pathList = [
|
|
858
|
+
{ path: "/", changefreq: "daily", priority: 1.0 },
|
|
859
|
+
{ path: "/about", changefreq: "monthly", priority: 0.7 },
|
|
860
|
+
];
|
|
861
|
+
|
|
862
|
+
const sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });
|
|
863
|
+
fs.writeFileSync(path.join(__dirname, "public", "sitemap.xml"), sitemapXml);
|
|
864
|
+
|
|
865
|
+
const getAllMultilingualUrls = (urls) =>
|
|
866
|
+
urls.flatMap((url) => Object.values(getMultilingualUrls(url)));
|
|
867
|
+
|
|
868
|
+
const disallowedPaths = getAllMultilingualUrls(["/admin", "/private"]);
|
|
869
|
+
|
|
870
|
+
const robotsTxt = [
|
|
871
|
+
"User-agent: *",
|
|
872
|
+
"Allow: /",
|
|
873
|
+
...disallowedPaths.map((path) => `Disallow: ${path}`),
|
|
874
|
+
"",
|
|
875
|
+
`Sitemap: ${SITE_URL}/sitemap.xml`,
|
|
876
|
+
].join("\n");
|
|
877
|
+
|
|
878
|
+
fs.writeFileSync(path.join(__dirname, "public", "robots.txt"), robotsTxt);
|
|
879
|
+
|
|
880
|
+
console.log("SEO files generated successfully.");
|
|
881
|
+
```
|
|
882
|
+
|
|
883
|
+
Cần cài `intlayer` để script import. Môi trường production đặt `SITE_URL` (ví dụ trong CI).
|
|
884
|
+
|
|
885
|
+
> Nên dùng `generate-seo.mjs` cho ESM của Node. Nếu dùng `generate-seo.js`, đặt `"type": "module"` trong `package.json` hoặc bật ESM tương đương.
|
|
886
|
+
|
|
887
|
+
#### 2. Chạy script trước Vite
|
|
888
|
+
|
|
889
|
+
```json fileName="package.json"
|
|
890
|
+
{
|
|
891
|
+
"scripts": {
|
|
892
|
+
"dev": "vite",
|
|
893
|
+
"prebuild": "node generate-seo.mjs",
|
|
894
|
+
"build": "vite build",
|
|
895
|
+
"preview": "vite preview"
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
```
|
|
899
|
+
|
|
900
|
+
Chỉnh lệnh nếu dùng pnpm hoặc yarn. Có thể gọi từ CI hoặc bước pipeline khác.
|
|
901
|
+
|
|
1584
902
|
### Tiến xa hơn
|
|
1585
903
|
|
|
1586
904
|
Để tiến xa hơn, bạn có thể triển khai [trình soạn thảo trực quan](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) hoặc tách nội dung của bạn ra ngoài bằng cách sử dụng [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md).
|