@intlayer/docs 8.0.0-canary.0 → 8.0.0-canary.2
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/next-i18next_vs_next-intl_vs_intlayer.md +48 -48
- package/blog/ar/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/de/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +56 -56
- package/blog/en/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/en-GB/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/es/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/fr/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/hi/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +56 -56
- package/blog/id/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/it/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/ja/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/ko/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +56 -56
- package/blog/pl/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/pt/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/ru/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/tr/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +56 -56
- package/blog/uk/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +56 -56
- package/blog/vi/nextjs-multilingual-seo-comparison.md +6 -6
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +40 -40
- package/blog/zh/nextjs-multilingual-seo-comparison.md +8 -8
- package/dist/cjs/generated/docs.entry.cjs +719 -19
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +719 -19
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/blog.d.ts.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/doc.d.ts.map +1 -1
- package/dist/types/frequentQuestions.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +36 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/dist/types/legal.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +7 -6
- package/docs/ar/configuration.md +42 -9
- package/docs/ar/dictionary/content_file.md +8 -8
- package/docs/ar/intlayer_CMS.md +12 -6
- package/docs/ar/intlayer_with_nextjs_16.md +108 -228
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +7 -7
- package/docs/ar/intlayer_with_nuxt.md +6 -6
- package/docs/ar/intlayer_with_react_router_v7.md +6 -6
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/ar/intlayer_with_tanstack.md +215 -218
- package/docs/ar/intlayer_with_vite+preact.md +19 -0
- package/docs/ar/intlayer_with_vite+react.md +6 -6
- package/docs/ar/intlayer_with_vite+solid.md +295 -7
- package/docs/ar/intlayer_with_vite+vue.md +6 -6
- package/docs/de/bundle_optimization.md +7 -6
- package/docs/de/configuration.md +35 -6
- package/docs/de/dictionary/content_file.md +7 -7
- package/docs/de/intlayer_CMS.md +12 -6
- package/docs/de/intlayer_with_nextjs_16.md +24 -9
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/de/intlayer_with_nuxt.md +6 -6
- package/docs/de/intlayer_with_react_router_v7.md +6 -6
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/de/intlayer_with_tanstack.md +202 -220
- package/docs/de/intlayer_with_vite+preact.md +19 -0
- package/docs/de/intlayer_with_vite+react.md +6 -6
- package/docs/de/intlayer_with_vite+solid.md +294 -8
- package/docs/de/intlayer_with_vite+vue.md +6 -6
- package/docs/en/bundle_optimization.md +4 -2
- package/docs/en/configuration.md +110 -4
- package/docs/en/custom_url_rewrites.md +183 -0
- package/docs/en/dictionary/content_file.md +1 -1
- package/docs/en/dictionary/html.md +287 -641
- package/docs/en/dictionary/markdown.md +293 -163
- package/docs/en/how_works_intlayer.md +1 -1
- package/docs/en/intlayer_CMS.md +11 -5
- package/docs/en/intlayer_with_nextjs_14.md +1 -1
- package/docs/en/intlayer_with_nextjs_15.md +7 -7
- package/docs/en/intlayer_with_nextjs_16.md +7 -7
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/en/intlayer_with_nuxt.md +6 -6
- package/docs/en/intlayer_with_react_router_v7.md +6 -6
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/en/intlayer_with_tanstack.md +106 -122
- package/docs/en/intlayer_with_vite+preact.md +18 -9
- package/docs/en/intlayer_with_vite+react.md +6 -6
- package/docs/en/intlayer_with_vite+solid.md +430 -31
- package/docs/en/intlayer_with_vite+vue.md +6 -6
- package/docs/en/packages/angular-intlayer/exports.md +62 -0
- package/docs/en/packages/angular-intlayer.md +50 -0
- package/docs/en/packages/astro-intlayer/exports.md +54 -0
- package/docs/en/packages/astro-intlayer.md +37 -0
- package/docs/en/packages/express-intlayer/exports.md +59 -0
- package/docs/en/packages/express-intlayer/intlayer.md +58 -0
- package/docs/en/packages/fastify-intlayer/exports.md +59 -0
- package/docs/en/packages/fastify-intlayer/intlayer.md +58 -0
- package/docs/en/packages/intlayer/exports.md +144 -0
- package/docs/en/packages/intlayer/getCanonicalPath.md +133 -0
- package/docs/en/packages/intlayer/getEnumeration.md +3 -1
- package/docs/en/packages/intlayer/getLocale.md +46 -0
- package/docs/en/packages/intlayer/getLocalizedPath.md +133 -0
- package/docs/en/packages/intlayer/getTranslation.md +3 -1
- package/docs/en/packages/intlayer/validatePrefix.md +46 -0
- package/docs/en/packages/intlayer-cli/exports.md +55 -0
- package/docs/en/packages/intlayer-cli.md +46 -0
- package/docs/en/packages/lynx-intlayer/exports.md +58 -0
- package/docs/en/packages/next-intlayer/exports.md +134 -0
- package/docs/en/packages/next-intlayer/intlayerMiddleware.md +50 -0
- package/docs/en/packages/next-intlayer.md +70 -0
- package/docs/en/packages/nuxt-intlayer/exports.md +54 -0
- package/docs/en/packages/preact-intlayer/exports.md +54 -0
- package/docs/en/packages/react-intlayer/IntlayerProvider.md +44 -0
- package/docs/en/packages/react-intlayer/MarkdownRenderer.md +44 -0
- package/docs/en/packages/react-intlayer/exports.md +138 -0
- package/docs/en/packages/react-intlayer/useDictionary.md +32 -258
- package/docs/en/packages/react-intlayer/useIntlayer.md +17 -217
- package/docs/en/packages/react-native-intlayer/exports.md +72 -0
- package/docs/en/packages/solid-intlayer/IntlayerProvider.md +57 -0
- package/docs/en/packages/solid-intlayer/exports.md +75 -0
- package/docs/en/packages/solid-intlayer/useIntlayer.md +63 -0
- package/docs/en/packages/solid-intlayer/useLocale.md +63 -0
- package/docs/en/packages/svelte-intlayer/exports.md +85 -0
- package/docs/en/packages/vite-intlayer/exports.md +49 -0
- package/docs/en/packages/vite-intlayer/intlayer.md +48 -0
- package/docs/en/packages/vite-intlayer/intlayerPrune.md +44 -0
- package/docs/en/packages/vue-intlayer/exports.md +87 -0
- package/docs/en/packages/vue-intlayer.md +59 -0
- package/docs/en/releases/v8.md +184 -15
- package/docs/en-GB/bundle_optimization.md +7 -7
- package/docs/en-GB/configuration.md +42 -9
- package/docs/en-GB/dictionary/content_file.md +8 -8
- package/docs/en-GB/how_works_intlayer.md +1 -1
- package/docs/en-GB/intlayer_CMS.md +6 -4
- package/docs/en-GB/intlayer_with_nextjs_16.md +6 -6
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +7 -7
- package/docs/en-GB/intlayer_with_nuxt.md +6 -6
- package/docs/en-GB/intlayer_with_react_router_v7.md +6 -6
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/en-GB/intlayer_with_tanstack.md +159 -165
- package/docs/en-GB/intlayer_with_vite+preact.md +19 -0
- package/docs/en-GB/intlayer_with_vite+react.md +6 -6
- package/docs/en-GB/intlayer_with_vite+solid.md +295 -7
- package/docs/en-GB/intlayer_with_vite+vue.md +6 -6
- package/docs/es/bundle_optimization.md +7 -7
- package/docs/es/configuration.md +36 -9
- package/docs/es/dictionary/content_file.md +8 -8
- package/docs/es/how_works_intlayer.md +1 -1
- package/docs/es/intlayer_CMS.md +12 -6
- package/docs/es/intlayer_with_nextjs_16.md +24 -9
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/es/intlayer_with_nuxt.md +6 -6
- package/docs/es/intlayer_with_react_router_v7.md +6 -6
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/es/intlayer_with_tanstack.md +232 -241
- package/docs/es/intlayer_with_vite+preact.md +19 -0
- package/docs/es/intlayer_with_vite+react.md +6 -6
- package/docs/es/intlayer_with_vite+solid.md +294 -8
- package/docs/es/intlayer_with_vite+vue.md +6 -6
- package/docs/fr/bundle_optimization.md +7 -7
- package/docs/fr/configuration.md +41 -9
- package/docs/fr/dictionary/content_file.md +8 -8
- package/docs/fr/how_works_intlayer.md +1 -1
- package/docs/fr/intlayer_CMS.md +12 -6
- package/docs/fr/intlayer_with_nextjs_16.md +24 -9
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/fr/intlayer_with_nuxt.md +6 -6
- package/docs/fr/intlayer_with_react_router_v7.md +6 -6
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/fr/intlayer_with_tanstack.md +200 -213
- package/docs/fr/intlayer_with_vite+preact.md +19 -0
- package/docs/fr/intlayer_with_vite+react.md +6 -6
- package/docs/fr/intlayer_with_vite+solid.md +294 -8
- package/docs/fr/intlayer_with_vite+vue.md +6 -6
- package/docs/hi/bundle_optimization.md +7 -6
- package/docs/hi/configuration.md +36 -9
- package/docs/hi/dictionary/content_file.md +7 -7
- package/docs/hi/intlayer_CMS.md +12 -6
- package/docs/hi/intlayer_with_nextjs_16.md +121 -264
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/hi/intlayer_with_nuxt.md +6 -6
- package/docs/hi/intlayer_with_react_router_v7.md +6 -6
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/hi/intlayer_with_tanstack.md +252 -246
- package/docs/hi/intlayer_with_vite+preact.md +19 -0
- package/docs/hi/intlayer_with_vite+react.md +6 -6
- package/docs/hi/intlayer_with_vite+solid.md +294 -8
- package/docs/hi/intlayer_with_vite+vue.md +6 -6
- package/docs/id/bundle_optimization.md +7 -6
- package/docs/id/configuration.md +36 -9
- package/docs/id/dictionary/content_file.md +7 -7
- package/docs/id/intlayer_CMS.md +15 -9
- package/docs/id/intlayer_with_nextjs_15.md +6 -6
- package/docs/id/intlayer_with_nextjs_16.md +66 -192
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +7 -7
- package/docs/id/intlayer_with_nuxt.md +6 -6
- package/docs/id/intlayer_with_react_router_v7.md +6 -6
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/id/intlayer_with_tanstack.md +228 -224
- package/docs/id/intlayer_with_vite+preact.md +19 -0
- package/docs/id/intlayer_with_vite+react.md +6 -6
- package/docs/id/intlayer_with_vite+solid.md +291 -7
- package/docs/id/intlayer_with_vite+vue.md +6 -6
- package/docs/it/bundle_optimization.md +7 -6
- package/docs/it/configuration.md +42 -9
- package/docs/it/dictionary/content_file.md +8 -8
- package/docs/it/intlayer_CMS.md +12 -6
- package/docs/it/intlayer_with_nextjs_16.md +6 -6
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/it/intlayer_with_nuxt.md +6 -6
- package/docs/it/intlayer_with_react_router_v7.md +6 -6
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/it/intlayer_with_tanstack.md +214 -240
- package/docs/it/intlayer_with_vite+preact.md +19 -0
- package/docs/it/intlayer_with_vite+react.md +6 -6
- package/docs/it/intlayer_with_vite+solid.md +295 -7
- package/docs/it/intlayer_with_vite+vue.md +6 -6
- package/docs/ja/bundle_optimization.md +7 -6
- package/docs/ja/configuration.md +38 -9
- package/docs/ja/dictionary/content_file.md +7 -7
- package/docs/ja/intlayer_CMS.md +12 -6
- package/docs/ja/intlayer_with_nextjs_16.md +6 -6
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +7 -7
- package/docs/ja/intlayer_with_nuxt.md +6 -6
- package/docs/ja/intlayer_with_react_router_v7.md +6 -6
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/ja/intlayer_with_tanstack.md +259 -257
- package/docs/ja/intlayer_with_vite+preact.md +19 -0
- package/docs/ja/intlayer_with_vite+react.md +6 -6
- package/docs/ja/intlayer_with_vite+solid.md +295 -7
- package/docs/ja/intlayer_with_vite+vue.md +6 -6
- package/docs/ko/bundle_optimization.md +7 -6
- package/docs/ko/configuration.md +36 -9
- package/docs/ko/dictionary/content_file.md +7 -7
- package/docs/ko/intlayer_CMS.md +12 -6
- package/docs/ko/intlayer_with_nextjs_16.md +6 -6
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/ko/intlayer_with_nuxt.md +6 -6
- package/docs/ko/intlayer_with_react_router_v7.md +6 -6
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/ko/intlayer_with_tanstack.md +219 -224
- package/docs/ko/intlayer_with_vite+preact.md +19 -0
- package/docs/ko/intlayer_with_vite+react.md +6 -6
- package/docs/ko/intlayer_with_vite+solid.md +295 -7
- package/docs/ko/intlayer_with_vite+vue.md +6 -6
- package/docs/pl/bundle_optimization.md +7 -6
- package/docs/pl/configuration.md +36 -9
- package/docs/pl/dictionary/content_file.md +8 -8
- package/docs/pl/intlayer_CMS.md +15 -9
- package/docs/pl/intlayer_with_nextjs_14.md +1 -1
- package/docs/pl/intlayer_with_nextjs_15.md +7 -7
- package/docs/pl/intlayer_with_nextjs_16.md +121 -165
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/pl/intlayer_with_nuxt.md +6 -6
- package/docs/pl/intlayer_with_react_router_v7.md +6 -6
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +12 -12
- package/docs/pl/intlayer_with_tanstack.md +187 -181
- package/docs/pl/intlayer_with_vite+preact.md +19 -0
- package/docs/pl/intlayer_with_vite+react.md +6 -6
- package/docs/pl/intlayer_with_vite+solid.md +290 -6
- package/docs/pl/intlayer_with_vite+vue.md +6 -6
- package/docs/pt/bundle_optimization.md +7 -7
- package/docs/pt/configuration.md +36 -9
- package/docs/pt/dictionary/content_file.md +8 -8
- package/docs/pt/intlayer_CMS.md +12 -6
- package/docs/pt/intlayer_with_nextjs_16.md +6 -6
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/pt/intlayer_with_nuxt.md +6 -6
- package/docs/pt/intlayer_with_react_router_v7.md +6 -6
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/pt/intlayer_with_tanstack.md +144 -159
- package/docs/pt/intlayer_with_vite+preact.md +19 -0
- package/docs/pt/intlayer_with_vite+react.md +6 -6
- package/docs/pt/intlayer_with_vite+solid.md +294 -8
- package/docs/pt/intlayer_with_vite+vue.md +6 -6
- package/docs/ru/bundle_optimization.md +7 -6
- package/docs/ru/configuration.md +36 -9
- package/docs/ru/dictionary/content_file.md +8 -8
- package/docs/ru/intlayer_CMS.md +6 -4
- package/docs/ru/intlayer_with_nextjs_16.md +6 -6
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/ru/intlayer_with_nuxt.md +6 -6
- package/docs/ru/intlayer_with_react_router_v7.md +6 -6
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/ru/intlayer_with_tanstack.md +175 -181
- package/docs/ru/intlayer_with_vite+preact.md +19 -0
- package/docs/ru/intlayer_with_vite+react.md +6 -6
- package/docs/ru/intlayer_with_vite+solid.md +295 -7
- package/docs/ru/intlayer_with_vite+vue.md +6 -6
- package/docs/tr/bundle_optimization.md +7 -7
- package/docs/tr/configuration.md +42 -9
- package/docs/tr/dictionary/content_file.md +7 -7
- package/docs/tr/intlayer_CMS.md +12 -6
- package/docs/tr/intlayer_with_nextjs_16.md +6 -6
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/tr/intlayer_with_nuxt.md +6 -6
- package/docs/tr/intlayer_with_react_router_v7.md +6 -6
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/tr/intlayer_with_tanstack.md +143 -151
- package/docs/tr/intlayer_with_vite+preact.md +19 -0
- package/docs/tr/intlayer_with_vite+react.md +6 -6
- package/docs/tr/intlayer_with_vite+solid.md +295 -7
- package/docs/tr/intlayer_with_vite+vue.md +6 -6
- package/docs/uk/bundle_optimization.md +7 -6
- package/docs/uk/configuration.md +12 -7
- package/docs/uk/dictionary/content_file.md +8 -8
- package/docs/uk/intlayer_CMS.md +15 -9
- package/docs/uk/intlayer_with_nextjs_14.md +1 -1
- package/docs/uk/intlayer_with_nextjs_15.md +7 -7
- package/docs/uk/intlayer_with_nextjs_16.md +8 -8
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/uk/intlayer_with_nuxt.md +6 -6
- package/docs/uk/intlayer_with_react_router_v7.md +6 -6
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/uk/intlayer_with_tanstack.md +117 -137
- package/docs/uk/intlayer_with_vite+preact.md +19 -0
- package/docs/uk/intlayer_with_vite+react.md +6 -6
- package/docs/uk/intlayer_with_vite+solid.md +295 -13
- package/docs/uk/intlayer_with_vite+vue.md +6 -6
- package/docs/vi/bundle_optimization.md +7 -6
- package/docs/vi/configuration.md +36 -9
- package/docs/vi/dictionary/content_file.md +8 -8
- package/docs/vi/intlayer_CMS.md +15 -9
- package/docs/vi/intlayer_with_nextjs_14.md +1 -1
- package/docs/vi/intlayer_with_nextjs_15.md +7 -7
- package/docs/vi/intlayer_with_nextjs_16.md +6 -6
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +8 -8
- package/docs/vi/intlayer_with_nuxt.md +6 -6
- package/docs/vi/intlayer_with_react_router_v7.md +6 -6
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/vi/intlayer_with_tanstack.md +154 -158
- package/docs/vi/intlayer_with_vite+preact.md +19 -0
- package/docs/vi/intlayer_with_vite+react.md +6 -6
- package/docs/vi/intlayer_with_vite+solid.md +291 -7
- package/docs/vi/intlayer_with_vite+vue.md +6 -6
- package/docs/zh/bundle_optimization.md +7 -6
- package/docs/zh/configuration.md +42 -9
- package/docs/zh/dictionary/content_file.md +7 -7
- package/docs/zh/intlayer_CMS.md +12 -6
- package/docs/zh/intlayer_with_nextjs_16.md +6 -6
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +7 -7
- package/docs/zh/intlayer_with_nuxt.md +6 -6
- package/docs/zh/intlayer_with_react_router_v7.md +6 -6
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +6 -6
- package/docs/zh/intlayer_with_tanstack.md +183 -174
- package/docs/zh/intlayer_with_vite+preact.md +19 -0
- package/docs/zh/intlayer_with_vite+react.md +6 -6
- package/docs/zh/intlayer_with_vite+solid.md +295 -7
- package/docs/zh/intlayer_with_vite+vue.md +6 -6
- package/package.json +8 -8
- package/src/generated/docs.entry.ts +722 -19
- package/docs/en/packages/intlayer/getTranslationContent.md +0 -191
|
@@ -336,9 +336,9 @@ slugs:
|
|
|
336
336
|
|
|
337
337
|
هيكل التطبيق مهم لضمان سهولة صيانة قاعدة الشيفرة الخاصة بك.
|
|
338
338
|
|
|
339
|
-
<
|
|
339
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
340
340
|
|
|
341
|
-
<
|
|
341
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
342
342
|
|
|
343
343
|
```bash
|
|
344
344
|
.
|
|
@@ -363,8 +363,8 @@ slugs:
|
|
|
363
363
|
└── ServerComponent.tsx
|
|
364
364
|
```
|
|
365
365
|
|
|
366
|
-
</
|
|
367
|
-
<
|
|
366
|
+
</Tab>
|
|
367
|
+
<Tab label="next-intl" value="next-intl">
|
|
368
368
|
|
|
369
369
|
```bash
|
|
370
370
|
.
|
|
@@ -391,8 +391,8 @@ slugs:
|
|
|
391
391
|
└── index.tsx
|
|
392
392
|
```
|
|
393
393
|
|
|
394
|
-
</
|
|
395
|
-
<
|
|
394
|
+
</Tab>
|
|
395
|
+
<Tab label="intlayer" value="intlayer">
|
|
396
396
|
|
|
397
397
|
```bash
|
|
398
398
|
.
|
|
@@ -411,8 +411,8 @@ slugs:
|
|
|
411
411
|
└── index.content.ts
|
|
412
412
|
```
|
|
413
413
|
|
|
414
|
-
</
|
|
415
|
-
</
|
|
414
|
+
</Tab>
|
|
415
|
+
</Tabs>
|
|
416
416
|
|
|
417
417
|
#### المقارنة
|
|
418
418
|
|
|
@@ -424,8 +424,8 @@ slugs:
|
|
|
424
424
|
كما ذُكر سابقًا، يجب عليك تحسين كيفية استيراد كل ملف JSON إلى كودك.
|
|
425
425
|
كيفية تعامل المكتبة مع تحميل المحتوى أمر مهم.
|
|
426
426
|
|
|
427
|
-
<
|
|
428
|
-
<
|
|
427
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
428
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
429
429
|
|
|
430
430
|
```ts fileName="i18n.config.ts"
|
|
431
431
|
export const locales = ["en", "fr"] as const;
|
|
@@ -593,8 +593,8 @@ export default async function AboutPage({
|
|
|
593
593
|
}
|
|
594
594
|
```
|
|
595
595
|
|
|
596
|
-
</
|
|
597
|
-
<
|
|
596
|
+
</Tab>
|
|
597
|
+
<Tab label="next-intl" value="next-intl">
|
|
598
598
|
|
|
599
599
|
```tsx fileName="src/i18n.ts"
|
|
600
600
|
import { getRequestConfig } from "next-intl/server";
|
|
@@ -701,8 +701,8 @@ export default async function AboutPage({
|
|
|
701
701
|
}
|
|
702
702
|
```
|
|
703
703
|
|
|
704
|
-
</
|
|
705
|
-
<
|
|
704
|
+
</Tab>
|
|
705
|
+
<Tab label="intlayer" value="intlayer">
|
|
706
706
|
|
|
707
707
|
```tsx fileName="intlayer.config.ts"
|
|
708
708
|
import { type IntlayerConfig, Locales } from "intlayer";
|
|
@@ -768,8 +768,8 @@ const LandingPage: NextPageIntlayer = async ({ params }) => {
|
|
|
768
768
|
export default LandingPage;
|
|
769
769
|
```
|
|
770
770
|
|
|
771
|
-
</
|
|
772
|
-
</
|
|
771
|
+
</Tab>
|
|
772
|
+
</Tabs>
|
|
773
773
|
|
|
774
774
|
#### مقارنة
|
|
775
775
|
|
|
@@ -785,8 +785,8 @@ export default LandingPage;
|
|
|
785
785
|
|
|
786
786
|
لنأخذ مثالاً على مكون عميل يعرض عدادًا.
|
|
787
787
|
|
|
788
|
-
<
|
|
789
|
-
<
|
|
788
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
789
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
790
790
|
|
|
791
791
|
**الترجمات (one JSON per namespace under `src/locales/...`)**
|
|
792
792
|
|
|
@@ -845,8 +845,8 @@ export default ClientComponent;
|
|
|
845
845
|
> Ensure the page/provider includes only the namespaces you need (e.g. `about`).
|
|
846
846
|
> If you use React < 19, memoize heavy formatters like `Intl.NumberFormat`.
|
|
847
847
|
|
|
848
|
-
</
|
|
849
|
-
<
|
|
848
|
+
</Tab>
|
|
849
|
+
<Tab label="next-intl" value="next-intl">
|
|
850
850
|
|
|
851
851
|
**الترجمات (shape reused; load them into next-intl messages as you prefer)**
|
|
852
852
|
|
|
@@ -898,8 +898,8 @@ const ClientComponentExample = () => {
|
|
|
898
898
|
|
|
899
899
|
> Don't forget to add "about" message on the page client message
|
|
900
900
|
|
|
901
|
-
</
|
|
902
|
-
<
|
|
901
|
+
</Tab>
|
|
902
|
+
<Tab label="intlayer" value="intlayer">
|
|
903
903
|
|
|
904
904
|
**المحتوى**
|
|
905
905
|
|
|
@@ -941,8 +941,8 @@ const ClientComponentExample = () => {
|
|
|
941
941
|
};
|
|
942
942
|
```
|
|
943
943
|
|
|
944
|
-
</
|
|
945
|
-
</
|
|
944
|
+
</Tab>
|
|
945
|
+
</Tabs>
|
|
946
946
|
|
|
947
947
|
#### المقارنة
|
|
948
948
|
|
|
@@ -965,8 +965,8 @@ const ClientComponentExample = () => {
|
|
|
965
965
|
|
|
966
966
|
We will take the case of a UI component. This component is a server component, and should be able to be inserted as a child of a client component. (page (server component) -> client component -> server component). As this component can be inserted as a child of a client component, it cannot be async.
|
|
967
967
|
|
|
968
|
-
<
|
|
969
|
-
<
|
|
968
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
969
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
970
970
|
|
|
971
971
|
```tsx fileName="src/components/ServerComponent.tsx"
|
|
972
972
|
type ServerComponentProps = {
|
|
@@ -989,8 +989,8 @@ const ServerComponent = ({ t, locale, count }: ServerComponentProps) => {
|
|
|
989
989
|
export default ServerComponent;
|
|
990
990
|
```
|
|
991
991
|
|
|
992
|
-
</
|
|
993
|
-
<
|
|
992
|
+
</Tab>
|
|
993
|
+
<Tab label="next-intl" value="next-intl">
|
|
994
994
|
|
|
995
995
|
```tsx fileName="src/components/ServerComponent.tsx"
|
|
996
996
|
type ServerComponentProps = {
|
|
@@ -1023,8 +1023,8 @@ export default ServerComponent;
|
|
|
1023
1023
|
> - `const t = await getTranslations("about.counter");`
|
|
1024
1024
|
> - `const formatter = await getFormatter().then((formatter) => formatter.number());`
|
|
1025
1025
|
|
|
1026
|
-
</
|
|
1027
|
-
<
|
|
1026
|
+
</Tab>
|
|
1027
|
+
<Tab label="intlayer" value="intlayer">
|
|
1028
1028
|
|
|
1029
1029
|
```tsx fileName="src/components/ServerComponent.tsx"
|
|
1030
1030
|
import { useIntlayer, useNumber } from "next-intlayer/server";
|
|
@@ -1046,8 +1046,8 @@ const ServerComponent = ({ count }: ServerComponentProps) => {
|
|
|
1046
1046
|
};
|
|
1047
1047
|
```
|
|
1048
1048
|
|
|
1049
|
-
</
|
|
1050
|
-
</
|
|
1049
|
+
</Tab>
|
|
1050
|
+
</Tabs>
|
|
1051
1051
|
|
|
1052
1052
|
> Intlayer exposes **server-safe** hooks via `next-intlayer/server`. To work, `useIntlayer` and `useNumber` use hooks-like syntax, similar to the client hooks, but depend under the hood on the server context (`IntlayerServerProvider`).
|
|
1053
1053
|
|
|
@@ -1068,9 +1068,9 @@ Here's a list of good practices regarding multilingual SEO.
|
|
|
1068
1068
|
|
|
1069
1069
|
Developers often forget to properly reference their pages across locales.
|
|
1070
1070
|
|
|
1071
|
-
<
|
|
1071
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
1072
1072
|
|
|
1073
|
-
<
|
|
1073
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
1074
1074
|
|
|
1075
1075
|
```ts fileName="i18n.config.ts"
|
|
1076
1076
|
export const locales = ["en", "fr"] as const;
|
|
@@ -1168,8 +1168,8 @@ export default function robots(): MetadataRoute.Robots {
|
|
|
1168
1168
|
}
|
|
1169
1169
|
```
|
|
1170
1170
|
|
|
1171
|
-
</
|
|
1172
|
-
<
|
|
1171
|
+
</Tab>
|
|
1172
|
+
<Tab label="next-intl" value="next-intl">
|
|
1173
1173
|
|
|
1174
1174
|
```tsx fileName="src/app/[locale]/about/layout.tsx"
|
|
1175
1175
|
import type { Metadata } from "next";
|
|
@@ -1258,8 +1258,8 @@ export default function robots(): MetadataRoute.Robots {
|
|
|
1258
1258
|
}
|
|
1259
1259
|
```
|
|
1260
1260
|
|
|
1261
|
-
</
|
|
1262
|
-
<
|
|
1261
|
+
</Tab>
|
|
1262
|
+
<Tab label="intlayer" value="intlayer">
|
|
1263
1263
|
|
|
1264
1264
|
```typescript fileName="src/app/[locale]/about/layout.tsx"
|
|
1265
1265
|
import { getIntlayer, getMultilingualUrls } from "intlayer";
|
|
@@ -1321,8 +1321,8 @@ const robots = (): MetadataRoute.Robots => ({
|
|
|
1321
1321
|
export default robots;
|
|
1322
1322
|
```
|
|
1323
1323
|
|
|
1324
|
-
</
|
|
1325
|
-
</
|
|
1324
|
+
</Tab>
|
|
1325
|
+
</Tabs>
|
|
1326
1326
|
|
|
1327
1327
|
> Intlayer provides a `getMultilingualUrls` function to generate multilingual URLs for your sitemap.
|
|
1328
1328
|
|
|
@@ -1330,8 +1330,8 @@ export default robots;
|
|
|
1330
1330
|
|
|
1331
1331
|
### Middleware for locale routing
|
|
1332
1332
|
|
|
1333
|
-
<
|
|
1334
|
-
<
|
|
1333
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
1334
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
1335
1335
|
|
|
1336
1336
|
Add a middleware to handle locale detection and routing:
|
|
1337
1337
|
|
|
@@ -1372,8 +1372,8 @@ export const config = {
|
|
|
1372
1372
|
};
|
|
1373
1373
|
```
|
|
1374
1374
|
|
|
1375
|
-
</
|
|
1376
|
-
<
|
|
1375
|
+
</Tab>
|
|
1376
|
+
<Tab label="next-intl" value="next-intl">
|
|
1377
1377
|
|
|
1378
1378
|
Add a middleware to handle locale detection and routing:
|
|
1379
1379
|
|
|
@@ -1393,8 +1393,8 @@ export const config = {
|
|
|
1393
1393
|
};
|
|
1394
1394
|
```
|
|
1395
1395
|
|
|
1396
|
-
</
|
|
1397
|
-
<
|
|
1396
|
+
</Tab>
|
|
1397
|
+
<Tab label="intlayer" value="intlayer">
|
|
1398
1398
|
|
|
1399
1399
|
Intlayer provides built-in middleware handling through the `next-intlayer` package configuration.
|
|
1400
1400
|
|
|
@@ -1411,8 +1411,8 @@ export const config = {
|
|
|
1411
1411
|
|
|
1412
1412
|
The set up of the middleware centralized in the `intlayer.config.ts` file.
|
|
1413
1413
|
|
|
1414
|
-
</
|
|
1415
|
-
</
|
|
1414
|
+
</Tab>
|
|
1415
|
+
</Tabs>
|
|
1416
1416
|
|
|
1417
1417
|
---
|
|
1418
1418
|
|
|
@@ -65,7 +65,7 @@ slugs:
|
|
|
65
65
|
### **next-intl**
|
|
66
66
|
|
|
67
67
|
<Tabs>
|
|
68
|
-
<
|
|
68
|
+
<Tab label="next-intl">
|
|
69
69
|
|
|
70
70
|
```tsx fileName="src/app/[locale]/about/layout.tsx
|
|
71
71
|
import type { Metadata } from "next";
|
|
@@ -157,8 +157,8 @@ export default function robots(): MetadataRoute.Robots {
|
|
|
157
157
|
|
|
158
158
|
### **next-i18next**
|
|
159
159
|
|
|
160
|
-
</
|
|
161
|
-
<
|
|
160
|
+
</Tab>
|
|
161
|
+
<Tab label="next-i18next">
|
|
162
162
|
|
|
163
163
|
```ts fileName="i18n.config.ts"
|
|
164
164
|
export const locales = ["en", "fr"] as const;
|
|
@@ -260,8 +260,8 @@ export default function robots(): MetadataRoute.Robots {
|
|
|
260
260
|
|
|
261
261
|
### **إنتلاير**
|
|
262
262
|
|
|
263
|
-
</
|
|
264
|
-
<
|
|
263
|
+
</Tab>
|
|
264
|
+
<Tab label="intlayer">
|
|
265
265
|
|
|
266
266
|
````typescript fileName="src/app/[locale]/about/layout.tsx"
|
|
267
267
|
import { getIntlayer, getMultilingualUrls } from "intlayer";
|
|
@@ -341,7 +341,7 @@ export default robots;
|
|
|
341
341
|
|
|
342
342
|
> توفر Intlayer دالة `getMultilingualUrls` لإنشاء روابط متعددة اللغات لخريطة الموقع الخاصة بك.
|
|
343
343
|
|
|
344
|
-
</
|
|
344
|
+
</Tab>
|
|
345
345
|
</Tabs>
|
|
346
346
|
|
|
347
347
|
---
|
|
@@ -346,9 +346,9 @@ Dieser Abschnitt bietet einen tiefgehenden Vergleich der drei Lösungen. Anstatt
|
|
|
346
346
|
|
|
347
347
|
Die App-Struktur ist wichtig, um eine gute Wartbarkeit Ihres Codes sicherzustellen.
|
|
348
348
|
|
|
349
|
-
<
|
|
349
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
350
350
|
|
|
351
|
-
<
|
|
351
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
352
352
|
|
|
353
353
|
```bash
|
|
354
354
|
.
|
|
@@ -373,8 +373,8 @@ Die App-Struktur ist wichtig, um eine gute Wartbarkeit Ihres Codes sicherzustell
|
|
|
373
373
|
└── ServerComponent.tsx
|
|
374
374
|
```
|
|
375
375
|
|
|
376
|
-
</
|
|
377
|
-
<
|
|
376
|
+
</Tab>
|
|
377
|
+
<Tab label="next-intl" value="next-intl">
|
|
378
378
|
|
|
379
379
|
```bash
|
|
380
380
|
.
|
|
@@ -401,8 +401,8 @@ Die App-Struktur ist wichtig, um eine gute Wartbarkeit Ihres Codes sicherzustell
|
|
|
401
401
|
└── index.tsx
|
|
402
402
|
```
|
|
403
403
|
|
|
404
|
-
</
|
|
405
|
-
<
|
|
404
|
+
</Tab>
|
|
405
|
+
<Tab label="intlayer" value="intlayer">
|
|
406
406
|
|
|
407
407
|
```bash
|
|
408
408
|
.
|
|
@@ -421,8 +421,8 @@ Die App-Struktur ist wichtig, um eine gute Wartbarkeit Ihres Codes sicherzustell
|
|
|
421
421
|
└── index.content.ts
|
|
422
422
|
```
|
|
423
423
|
|
|
424
|
-
</
|
|
425
|
-
</
|
|
424
|
+
</Tab>
|
|
425
|
+
</Tabs>
|
|
426
426
|
|
|
427
427
|
#### Vergleich
|
|
428
428
|
|
|
@@ -434,8 +434,8 @@ Die App-Struktur ist wichtig, um eine gute Wartbarkeit Ihres Codes sicherzustell
|
|
|
434
434
|
Wie bereits erwähnt, müssen Sie optimieren, wie jede JSON-Datei in Ihren Code importiert wird.
|
|
435
435
|
Wie die Bibliothek das Laden von Inhalten handhabt, ist wichtig.
|
|
436
436
|
|
|
437
|
-
<
|
|
438
|
-
<
|
|
437
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
438
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
439
439
|
|
|
440
440
|
```ts fileName="i18n.config.ts"
|
|
441
441
|
export const locales = ["en", "fr"] as const;
|
|
@@ -603,8 +603,8 @@ export default async function AboutPage({
|
|
|
603
603
|
}
|
|
604
604
|
```
|
|
605
605
|
|
|
606
|
-
</
|
|
607
|
-
<
|
|
606
|
+
</Tab>
|
|
607
|
+
<Tab label="next-intl" value="next-intl">
|
|
608
608
|
|
|
609
609
|
```tsx fileName="src/i18n.ts"
|
|
610
610
|
import { getRequestConfig } from "next-intl/server";
|
|
@@ -711,8 +711,8 @@ export default async function AboutPage({
|
|
|
711
711
|
}
|
|
712
712
|
```
|
|
713
713
|
|
|
714
|
-
</
|
|
715
|
-
<
|
|
714
|
+
</Tab>
|
|
715
|
+
<Tab label="intlayer" value="intlayer">
|
|
716
716
|
|
|
717
717
|
```tsx fileName="intlayer.config.ts"
|
|
718
718
|
import { type IntlayerConfig, Locales } from "intlayer";
|
|
@@ -778,8 +778,8 @@ const LandingPage: NextPageIntlayer = async ({ params }) => {
|
|
|
778
778
|
export default LandingPage;
|
|
779
779
|
```
|
|
780
780
|
|
|
781
|
-
</
|
|
782
|
-
</
|
|
781
|
+
</Tab>
|
|
782
|
+
</Tabs>
|
|
783
783
|
|
|
784
784
|
#### Vergleich
|
|
785
785
|
|
|
@@ -795,8 +795,8 @@ Wählen Sie je nach Teampräferenz zwischen expliziter Kontrolle und Automatisie
|
|
|
795
795
|
|
|
796
796
|
Nehmen wir ein Beispiel einer Client-Komponente, die einen Zähler rendert.
|
|
797
797
|
|
|
798
|
-
<
|
|
799
|
-
<
|
|
798
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
799
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
800
800
|
|
|
801
801
|
**Übersetzungen (müssen echtes JSON in `public/locales/...` sein)**
|
|
802
802
|
|
|
@@ -850,8 +850,8 @@ const ClientComponentExample = () => {
|
|
|
850
850
|
> Vergessen Sie nicht, den Namespace "about" bei den serverSideTranslations der Seite hinzuzufügen
|
|
851
851
|
> Hier verwenden wir die Version React 19.x.x, aber bei niedrigeren Versionen müssen Sie useMemo verwenden, um die Instanz des Formatierers zu speichern, da dies eine ressourcenintensive Funktion ist
|
|
852
852
|
|
|
853
|
-
</
|
|
854
|
-
<
|
|
853
|
+
</Tab>
|
|
854
|
+
<Tab label="next-intl" value="next-intl">
|
|
855
855
|
|
|
856
856
|
**Übersetzungen (Struktur wiederverwendet; laden Sie sie in die next-intl-Nachrichten, wie Sie möchten)**
|
|
857
857
|
|
|
@@ -903,8 +903,8 @@ const ClientComponentExample = () => {
|
|
|
903
903
|
|
|
904
904
|
> Vergessen Sie nicht, die "about"-Nachricht auf der Client-Seite der Seite hinzuzufügen
|
|
905
905
|
|
|
906
|
-
</
|
|
907
|
-
<
|
|
906
|
+
</Tab>
|
|
907
|
+
<Tab label="intlayer" value="intlayer">
|
|
908
908
|
|
|
909
909
|
**Inhalt**
|
|
910
910
|
|
|
@@ -946,8 +946,8 @@ const ClientComponentExample = () => {
|
|
|
946
946
|
};
|
|
947
947
|
```
|
|
948
948
|
|
|
949
|
-
</
|
|
950
|
-
</
|
|
949
|
+
</Tab>
|
|
950
|
+
</Tabs>
|
|
951
951
|
|
|
952
952
|
#### Vergleich
|
|
953
953
|
|
|
@@ -970,8 +970,8 @@ const ClientComponentExample = () => {
|
|
|
970
970
|
|
|
971
971
|
Wir betrachten den Fall einer UI-Komponente. Diese Komponente ist eine Server-Komponente und sollte als Kind einer Client-Komponente eingefügt werden können. (Seite (Server-Komponente) -> Client-Komponente -> Server-Komponente). Da diese Komponente als Kind einer Client-Komponente eingefügt werden kann, darf sie nicht asynchron sein.
|
|
972
972
|
|
|
973
|
-
<
|
|
974
|
-
<
|
|
973
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
974
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
975
975
|
|
|
976
976
|
```tsx fileName="src/pages/about.tsx"
|
|
977
977
|
import type { GetStaticProps } from "next";
|
|
@@ -996,8 +996,8 @@ const ServerComponent = ({ count }: ServerComponentProps) => {
|
|
|
996
996
|
|
|
997
997
|
> Da die Server-Komponente nicht asynchron sein kann, müssen die Übersetzungen und die Formatierungsfunktion als Props übergeben werden.
|
|
998
998
|
|
|
999
|
-
</
|
|
1000
|
-
<
|
|
999
|
+
</Tab>
|
|
1000
|
+
<Tab label="next-intl" value="next-intl">
|
|
1001
1001
|
|
|
1002
1002
|
```tsx fileName="src/components/ServerComponent.tsx"
|
|
1003
1003
|
type ServerComponentProps = {
|
|
@@ -1023,8 +1023,8 @@ const ServerComponent = ({ t, count, formatter }: ServerComponentProps) => {
|
|
|
1023
1023
|
> - `const t = await getTranslations("about.counter");`
|
|
1024
1024
|
> - `const formatter = await getFormatter().then((formatter) => formatter.number());`
|
|
1025
1025
|
|
|
1026
|
-
</
|
|
1027
|
-
<
|
|
1026
|
+
</Tab>
|
|
1027
|
+
<Tab label="intlayer" value="intlayer">
|
|
1028
1028
|
|
|
1029
1029
|
```tsx fileName="src/components/ServerComponent.tsx"
|
|
1030
1030
|
import { useIntlayer, useNumber } from "next-intlayer/server";
|
|
@@ -1042,8 +1042,8 @@ const ServerComponent = ({ count }: { count: number }) => {
|
|
|
1042
1042
|
};
|
|
1043
1043
|
```
|
|
1044
1044
|
|
|
1045
|
-
</
|
|
1046
|
-
</
|
|
1045
|
+
</Tab>
|
|
1046
|
+
</Tabs>
|
|
1047
1047
|
|
|
1048
1048
|
> Intlayer stellt **server-sichere** Hooks über `next-intlayer/server` bereit. Damit sie funktionieren, verwenden `useIntlayer` und `useNumber` eine hook-ähnliche Syntax, ähnlich wie die Client-Hooks, basieren aber im Hintergrund auf dem Server-Kontext (`IntlayerServerProvider`).
|
|
1049
1049
|
|
|
@@ -1064,9 +1064,9 @@ Hier ist eine Liste von Best Practices bezüglich mehrsprachigem SEO.
|
|
|
1064
1064
|
|
|
1065
1065
|
Entwickler vergessen oft, ihre Seiten über verschiedene Sprachversionen hinweg korrekt zu referenzieren.
|
|
1066
1066
|
|
|
1067
|
-
<
|
|
1067
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
1068
1068
|
|
|
1069
|
-
<
|
|
1069
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
1070
1070
|
|
|
1071
1071
|
```ts fileName="i18n.config.ts"
|
|
1072
1072
|
export const locales = ["en", "fr"] as const;
|
|
@@ -1165,8 +1165,8 @@ export default function robots(): MetadataRoute.Robots {
|
|
|
1165
1165
|
}
|
|
1166
1166
|
```
|
|
1167
1167
|
|
|
1168
|
-
</
|
|
1169
|
-
<
|
|
1168
|
+
</Tab>
|
|
1169
|
+
<Tab label="next-intl" value="next-intl">
|
|
1170
1170
|
|
|
1171
1171
|
```tsx fileName="src/app/[locale]/about/layout.tsx"
|
|
1172
1172
|
import type { Metadata } from "next";
|
|
@@ -1255,8 +1255,8 @@ export default function robots(): MetadataRoute.Robots {
|
|
|
1255
1255
|
}
|
|
1256
1256
|
```
|
|
1257
1257
|
|
|
1258
|
-
</
|
|
1259
|
-
<
|
|
1258
|
+
</Tab>
|
|
1259
|
+
<Tab label="intlayer" value="intlayer">
|
|
1260
1260
|
|
|
1261
1261
|
```typescript fileName="src/app/[locale]/about/layout.tsx"
|
|
1262
1262
|
import { getIntlayer, getMultilingualUrls } from "intlayer";
|
|
@@ -1319,8 +1319,8 @@ const robots = (): MetadataRoute.Robots => ({
|
|
|
1319
1319
|
export default robots;
|
|
1320
1320
|
```
|
|
1321
1321
|
|
|
1322
|
-
</
|
|
1323
|
-
</
|
|
1322
|
+
</Tab>
|
|
1323
|
+
</Tabs>
|
|
1324
1324
|
|
|
1325
1325
|
> Intlayer stellt eine `getMultilingualUrls`-Funktion bereit, um mehrsprachige URLs für Ihre Sitemap zu generieren.
|
|
1326
1326
|
|
|
@@ -65,7 +65,7 @@ Entwickler vergessen oft, ihre Seiten über verschiedene Sprachversionen hinweg
|
|
|
65
65
|
### **next-intl**
|
|
66
66
|
|
|
67
67
|
<Tabs>
|
|
68
|
-
<
|
|
68
|
+
<Tab label="next-intl">
|
|
69
69
|
|
|
70
70
|
```tsx fileName="src/app/[locale]/about/layout.tsx"
|
|
71
71
|
import type { Metadata } from "next";
|
|
@@ -155,8 +155,8 @@ export default function robots(): MetadataRoute.Robots {
|
|
|
155
155
|
|
|
156
156
|
### **next-i18next**
|
|
157
157
|
|
|
158
|
-
</
|
|
159
|
-
<
|
|
158
|
+
</Tab>
|
|
159
|
+
<Tab label="next-i18next">
|
|
160
160
|
|
|
161
161
|
```ts fileName="i18n.config.ts"
|
|
162
162
|
export const locales = ["en", "fr"] as const;
|
|
@@ -259,8 +259,8 @@ export default function robots(): MetadataRoute.Robots {
|
|
|
259
259
|
|
|
260
260
|
### **Intlayer**
|
|
261
261
|
|
|
262
|
-
</
|
|
263
|
-
<
|
|
262
|
+
</Tab>
|
|
263
|
+
<Tab label="intlayer">
|
|
264
264
|
|
|
265
265
|
````typescript fileName="src/app/[locale]/about/layout.tsx"
|
|
266
266
|
import { getIntlayer, getMultilingualUrls } from "intlayer";
|
|
@@ -339,7 +339,7 @@ export default robots;
|
|
|
339
339
|
|
|
340
340
|
> Intlayer stellt eine Funktion `getMultilingualUrls` zur Verfügung, um mehrsprachige URLs für Ihre Sitemap zu generieren.
|
|
341
341
|
|
|
342
|
-
</
|
|
342
|
+
</Tab>
|
|
343
343
|
</Tabs>
|
|
344
344
|
|
|
345
345
|
---
|