@intlayer/docs 7.5.11 → 7.5.13
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/intlayer_with_i18next.md +0 -2
- package/blog/ar/intlayer_with_next-i18next.md +0 -2
- package/blog/ar/intlayer_with_react-i18next.md +0 -2
- package/blog/de/intlayer_with_i18next.md +0 -45
- package/blog/de/intlayer_with_next-i18next.md +0 -46
- package/blog/de/intlayer_with_react-i18next.md +0 -2
- package/blog/en/intlayer_with_i18next.md +0 -46
- package/blog/en/intlayer_with_next-i18next.md +0 -48
- package/blog/en/intlayer_with_next-intl.md +0 -44
- package/blog/en/intlayer_with_react-i18next.md +0 -44
- package/blog/en/intlayer_with_react-intl.md +0 -42
- package/blog/en/intlayer_with_vue-i18n.md +0 -44
- package/blog/en-GB/intlayer_with_i18next.md +0 -45
- package/blog/en-GB/intlayer_with_next-i18next.md +0 -47
- package/blog/en-GB/intlayer_with_next-intl.md +0 -42
- package/blog/en-GB/intlayer_with_react-i18next.md +0 -43
- package/blog/en-GB/intlayer_with_react-intl.md +0 -42
- package/blog/en-GB/intlayer_with_vue-i18n.md +0 -46
- package/blog/es/intlayer_with_i18next.md +0 -45
- package/blog/es/intlayer_with_next-i18next.md +0 -47
- package/blog/es/intlayer_with_next-intl.md +0 -42
- package/blog/es/intlayer_with_react-i18next.md +0 -43
- package/blog/es/intlayer_with_react-intl.md +0 -42
- package/blog/es/intlayer_with_vue-i18n.md +0 -46
- package/blog/fr/intlayer_with_i18next.md +0 -45
- package/blog/fr/intlayer_with_next-i18next.md +0 -47
- package/blog/fr/intlayer_with_next-intl.md +0 -42
- package/blog/fr/intlayer_with_react-i18next.md +0 -43
- package/blog/fr/intlayer_with_react-intl.md +0 -42
- package/blog/fr/intlayer_with_vue-i18n.md +0 -46
- package/blog/hi/intlayer_with_i18next.md +0 -2
- package/blog/hi/intlayer_with_next-i18next.md +0 -2
- package/blog/hi/intlayer_with_react-i18next.md +0 -2
- package/blog/id/intlayer_with_i18next.md +0 -2
- package/blog/id/intlayer_with_next-i18next.md +0 -2
- package/blog/id/intlayer_with_react-i18next.md +0 -2
- package/blog/it/intlayer_with_i18next.md +0 -2
- package/blog/it/intlayer_with_next-i18next.md +0 -2
- package/blog/it/intlayer_with_react-i18next.md +0 -2
- package/blog/ja/intlayer_with_i18next.md +0 -45
- package/blog/ja/intlayer_with_next-i18next.md +0 -46
- package/blog/ja/intlayer_with_next-intl.md +0 -42
- package/blog/ja/intlayer_with_react-i18next.md +0 -42
- package/blog/ja/intlayer_with_react-intl.md +0 -42
- package/blog/ja/intlayer_with_vue-i18n.md +0 -46
- package/blog/ko/intlayer_with_i18next.md +0 -2
- package/blog/ko/intlayer_with_next-i18next.md +0 -2
- package/blog/ko/intlayer_with_react-i18next.md +0 -1
- package/blog/pl/intlayer_with_i18next.md +0 -45
- package/blog/pl/intlayer_with_next-i18next.md +0 -46
- package/blog/pl/intlayer_with_next-intl.md +0 -42
- package/blog/pl/intlayer_with_react-i18next.md +0 -43
- package/blog/pl/intlayer_with_react-intl.md +0 -42
- package/blog/pl/intlayer_with_vue-i18n.md +0 -46
- package/blog/pt/intlayer_with_i18next.md +0 -2
- package/blog/pt/intlayer_with_next-i18next.md +0 -2
- package/blog/pt/intlayer_with_react-i18next.md +0 -2
- package/blog/ru/intlayer_with_i18next.md +0 -45
- package/blog/ru/intlayer_with_next-i18next.md +0 -47
- package/blog/ru/intlayer_with_next-intl.md +0 -42
- package/blog/ru/intlayer_with_react-i18next.md +0 -43
- package/blog/ru/intlayer_with_react-intl.md +0 -42
- package/blog/ru/intlayer_with_vue-i18n.md +0 -46
- package/blog/tr/intlayer_with_i18next.md +0 -2
- package/blog/tr/intlayer_with_next-i18next.md +0 -1
- package/blog/tr/intlayer_with_react-i18next.md +0 -2
- package/blog/uk/compiler_vs_declarative_i18n.md +224 -0
- package/blog/uk/i18n_using_next-i18next.md +1086 -0
- package/blog/uk/i18n_using_next-intl.md +760 -0
- package/blog/uk/index.md +69 -0
- package/blog/uk/internationalization_and_SEO.md +273 -0
- package/blog/uk/intlayer_with_i18next.md +211 -0
- package/blog/uk/intlayer_with_next-i18next.md +202 -0
- package/blog/uk/intlayer_with_next-intl.md +203 -0
- package/blog/uk/intlayer_with_react-i18next.md +200 -0
- package/blog/uk/intlayer_with_react-intl.md +202 -0
- package/blog/uk/intlayer_with_vue-i18n.md +206 -0
- package/blog/uk/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/uk/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/uk/l10n_platform_alternative/phrase.md +78 -0
- package/blog/uk/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/uk/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/uk/list_i18n_technologies/CMS/wordpress.md +189 -0
- package/blog/uk/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/uk/list_i18n_technologies/frameworks/flutter.md +128 -0
- package/blog/uk/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/uk/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/uk/list_i18n_technologies/frameworks/svelte.md +145 -0
- package/blog/uk/list_i18n_technologies/frameworks/vue.md +144 -0
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1499 -0
- package/blog/uk/nextjs-multilingual-seo-comparison.md +360 -0
- package/blog/uk/rag_powered_documentation_assistant.md +288 -0
- package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/uk/vue-i18n_vs_intlayer.md +279 -0
- package/blog/uk/what_is_internationalization.md +167 -0
- package/blog/vi/intlayer_with_i18next.md +0 -2
- package/blog/vi/intlayer_with_next-i18next.md +0 -2
- package/blog/vi/intlayer_with_react-i18next.md +0 -2
- package/blog/zh/intlayer_with_i18next.md +0 -2
- package/blog/zh/intlayer_with_next-i18next.md +0 -2
- package/blog/zh/intlayer_with_react-i18next.md +0 -2
- package/blog/zh/intlayer_with_vue-i18n.md +0 -46
- package/dist/cjs/generated/blog.entry.cjs +58 -29
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +218 -99
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +50 -15
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +4 -2
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +58 -29
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +218 -99
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +50 -15
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +4 -2
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/configuration.md +6 -1
- package/docs/ar/dictionary/content_file.md +6 -1
- package/docs/ar/intlayer_with_next-i18next.md +0 -1
- package/docs/ar/intlayer_with_nextjs_14.md +28 -0
- package/docs/ar/intlayer_with_nextjs_15.md +28 -0
- package/docs/ar/intlayer_with_nextjs_16.md +28 -0
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +1159 -0
- package/docs/ar/plugins/sync-json.md +6 -2
- package/docs/de/configuration.md +6 -1
- package/docs/de/dictionary/content_file.md +6 -1
- package/docs/de/intlayer_with_next-i18next.md +0 -1
- package/docs/de/intlayer_with_nextjs_14.md +28 -0
- package/docs/de/intlayer_with_nextjs_15.md +28 -0
- package/docs/de/intlayer_with_nextjs_16.md +28 -0
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +1152 -0
- package/docs/de/plugins/sync-json.md +6 -2
- package/docs/en/configuration.md +6 -1
- package/docs/en/dictionary/content_file.md +6 -1
- package/docs/en/intlayer_with_next-i18next.md +0 -1
- package/docs/en/intlayer_with_nextjs_14.md +28 -0
- package/docs/en/intlayer_with_nextjs_15.md +28 -0
- package/docs/en/intlayer_with_nextjs_16.md +31 -1
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +1132 -0
- package/docs/en/plugins/sync-json.md +6 -2
- package/docs/en-GB/configuration.md +6 -1
- package/docs/en-GB/dictionary/content_file.md +3 -1
- package/docs/en-GB/intlayer_with_next-i18next.md +0 -1
- package/docs/en-GB/intlayer_with_nextjs_14.md +28 -0
- package/docs/en-GB/intlayer_with_nextjs_15.md +28 -0
- package/docs/en-GB/intlayer_with_nextjs_16.md +28 -0
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +1154 -0
- package/docs/en-GB/plugins/sync-json.md +6 -2
- package/docs/es/configuration.md +6 -1
- package/docs/es/dictionary/content_file.md +6 -1
- package/docs/es/intlayer_with_next-i18next.md +0 -1
- package/docs/es/intlayer_with_nextjs_14.md +28 -0
- package/docs/es/intlayer_with_nextjs_15.md +28 -0
- package/docs/es/intlayer_with_nextjs_16.md +28 -0
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +1143 -0
- package/docs/es/plugins/sync-json.md +6 -2
- package/docs/fr/configuration.md +6 -1
- package/docs/fr/dictionary/content_file.md +3 -1
- package/docs/fr/intlayer_with_next-i18next.md +0 -1
- package/docs/fr/intlayer_with_nextjs_14.md +28 -0
- package/docs/fr/intlayer_with_nextjs_15.md +28 -0
- package/docs/fr/intlayer_with_nextjs_16.md +28 -0
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +1174 -0
- package/docs/fr/plugins/sync-json.md +9 -5
- package/docs/hi/configuration.md +6 -1
- package/docs/hi/dictionary/content_file.md +3 -1
- package/docs/hi/intlayer_with_next-i18next.md +0 -1
- package/docs/hi/intlayer_with_nextjs_14.md +28 -0
- package/docs/hi/intlayer_with_nextjs_15.md +28 -0
- package/docs/hi/intlayer_with_nextjs_16.md +28 -0
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +1151 -0
- package/docs/hi/plugins/sync-json.md +6 -2
- package/docs/id/configuration.md +6 -1
- package/docs/id/dictionary/content_file.md +3 -1
- package/docs/id/intlayer_with_next-i18next.md +0 -1
- package/docs/id/intlayer_with_nextjs_14.md +28 -0
- package/docs/id/intlayer_with_nextjs_15.md +28 -0
- package/docs/id/intlayer_with_nextjs_16.md +28 -0
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +1154 -0
- package/docs/id/plugins/sync-json.md +6 -2
- package/docs/it/configuration.md +6 -1
- package/docs/it/dictionary/content_file.md +3 -1
- package/docs/it/intlayer_with_next-i18next.md +0 -1
- package/docs/it/intlayer_with_nextjs_14.md +28 -0
- package/docs/it/intlayer_with_nextjs_15.md +28 -0
- package/docs/it/intlayer_with_nextjs_16.md +28 -0
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +1148 -0
- package/docs/it/plugins/sync-json.md +6 -2
- package/docs/ja/configuration.md +6 -1
- package/docs/ja/dictionary/content_file.md +3 -1
- package/docs/ja/intlayer_with_next-i18next.md +0 -1
- package/docs/ja/intlayer_with_nextjs_14.md +28 -0
- package/docs/ja/intlayer_with_nextjs_15.md +28 -0
- package/docs/ja/intlayer_with_nextjs_16.md +28 -0
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +1222 -0
- package/docs/ja/plugins/sync-json.md +6 -2
- package/docs/ko/configuration.md +6 -1
- package/docs/ko/dictionary/content_file.md +3 -1
- package/docs/ko/intlayer_with_next-i18next.md +0 -1
- package/docs/ko/intlayer_with_nextjs_14.md +28 -0
- package/docs/ko/intlayer_with_nextjs_15.md +28 -0
- package/docs/ko/intlayer_with_nextjs_16.md +28 -0
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +1205 -0
- package/docs/ko/plugins/sync-json.md +6 -2
- package/docs/pl/configuration.md +3 -1
- package/docs/pl/dictionary/content_file.md +3 -1
- package/docs/pl/intlayer_with_next-i18next.md +0 -1
- package/docs/pl/intlayer_with_nextjs_14.md +28 -0
- package/docs/pl/intlayer_with_nextjs_15.md +28 -0
- package/docs/pl/intlayer_with_nextjs_16.md +28 -0
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +1149 -0
- package/docs/pl/plugins/sync-json.md +6 -2
- package/docs/pt/configuration.md +6 -1
- package/docs/pt/dictionary/content_file.md +3 -1
- package/docs/pt/intlayer_with_next-i18next.md +0 -1
- package/docs/pt/intlayer_with_nextjs_14.md +28 -0
- package/docs/pt/intlayer_with_nextjs_15.md +28 -0
- package/docs/pt/intlayer_with_nextjs_16.md +28 -0
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +1152 -0
- package/docs/pt/plugins/sync-json.md +6 -2
- package/docs/ru/configuration.md +6 -1
- package/docs/ru/dictionary/content_file.md +6 -1
- package/docs/ru/intlayer_with_next-i18next.md +0 -1
- package/docs/ru/intlayer_with_nextjs_14.md +28 -0
- package/docs/ru/intlayer_with_nextjs_15.md +28 -0
- package/docs/ru/intlayer_with_nextjs_16.md +28 -0
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +1204 -0
- package/docs/ru/plugins/sync-json.md +6 -2
- package/docs/tr/configuration.md +6 -1
- package/docs/tr/dictionary/content_file.md +3 -1
- package/docs/tr/intlayer_with_next-i18next.md +0 -1
- package/docs/tr/intlayer_with_nextjs_14.md +28 -0
- package/docs/tr/intlayer_with_nextjs_15.md +28 -0
- package/docs/tr/intlayer_with_nextjs_16.md +28 -0
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +1159 -0
- package/docs/tr/plugins/sync-json.md +6 -2
- package/docs/uk/CI_CD.md +198 -0
- package/docs/uk/autoFill.md +307 -0
- package/docs/uk/bundle_optimization.md +185 -0
- package/docs/uk/cli/build.md +64 -0
- package/docs/uk/cli/ci.md +137 -0
- package/docs/uk/cli/configuration.md +63 -0
- package/docs/uk/cli/debug.md +46 -0
- package/docs/uk/cli/doc-review.md +43 -0
- package/docs/uk/cli/doc-translate.md +132 -0
- package/docs/uk/cli/editor.md +28 -0
- package/docs/uk/cli/fill.md +130 -0
- package/docs/uk/cli/index.md +190 -0
- package/docs/uk/cli/init.md +84 -0
- package/docs/uk/cli/list.md +90 -0
- package/docs/uk/cli/list_projects.md +128 -0
- package/docs/uk/cli/live.md +41 -0
- package/docs/uk/cli/login.md +157 -0
- package/docs/uk/cli/pull.md +78 -0
- package/docs/uk/cli/push.md +98 -0
- package/docs/uk/cli/sdk.md +71 -0
- package/docs/uk/cli/test.md +76 -0
- package/docs/uk/cli/transform.md +65 -0
- package/docs/uk/cli/version.md +24 -0
- package/docs/uk/cli/watch.md +37 -0
- package/docs/uk/compiler.md +133 -0
- package/docs/uk/component_i18n.md +194 -0
- package/docs/uk/configuration.md +742 -0
- package/docs/uk/dictionary/condition.md +237 -0
- package/docs/uk/dictionary/content_file.md +1134 -0
- package/docs/uk/dictionary/enumeration.md +245 -0
- package/docs/uk/dictionary/file.md +232 -0
- package/docs/uk/dictionary/function_fetching.md +212 -0
- package/docs/uk/dictionary/gender.md +273 -0
- package/docs/uk/dictionary/insertion.md +187 -0
- package/docs/uk/dictionary/markdown.md +383 -0
- package/docs/uk/dictionary/nesting.md +273 -0
- package/docs/uk/dictionary/translation.md +332 -0
- package/docs/uk/formatters.md +595 -0
- package/docs/uk/how_works_intlayer.md +256 -0
- package/docs/uk/index.md +175 -0
- package/docs/uk/interest_of_intlayer.md +297 -0
- package/docs/uk/intlayer_CMS.md +569 -0
- package/docs/uk/intlayer_visual_editor.md +292 -0
- package/docs/uk/intlayer_with_angular.md +710 -0
- package/docs/uk/intlayer_with_astro.md +256 -0
- package/docs/uk/intlayer_with_create_react_app.md +1258 -0
- package/docs/uk/intlayer_with_express.md +429 -0
- package/docs/uk/intlayer_with_fastify.md +446 -0
- package/docs/uk/intlayer_with_lynx+react.md +548 -0
- package/docs/uk/intlayer_with_nestjs.md +283 -0
- package/docs/uk/intlayer_with_next-i18next.md +640 -0
- package/docs/uk/intlayer_with_next-intl.md +456 -0
- package/docs/uk/intlayer_with_nextjs_14.md +1646 -0
- package/docs/uk/intlayer_with_nextjs_15.md +1910 -0
- package/docs/uk/intlayer_with_nextjs_16.md +1763 -0
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +1159 -0
- package/docs/uk/intlayer_with_nextjs_page_router.md +1541 -0
- package/docs/uk/intlayer_with_nuxt.md +711 -0
- package/docs/uk/intlayer_with_react_native+expo.md +715 -0
- package/docs/uk/intlayer_with_react_router_v7.md +600 -0
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +669 -0
- package/docs/uk/intlayer_with_svelte_kit.md +579 -0
- package/docs/uk/intlayer_with_tanstack.md +818 -0
- package/docs/uk/intlayer_with_vite+preact.md +1748 -0
- package/docs/uk/intlayer_with_vite+react.md +1449 -0
- package/docs/uk/intlayer_with_vite+solid.md +302 -0
- package/docs/uk/intlayer_with_vite+svelte.md +520 -0
- package/docs/uk/intlayer_with_vite+vue.md +1113 -0
- package/docs/uk/introduction.md +222 -0
- package/docs/uk/locale_mapper.md +242 -0
- package/docs/uk/mcp_server.md +211 -0
- package/docs/uk/packages/express-intlayer/t.md +465 -0
- package/docs/uk/packages/intlayer/getConfiguration.md +145 -0
- package/docs/uk/packages/intlayer/getEnumeration.md +159 -0
- package/docs/uk/packages/intlayer/getHTMLTextDir.md +121 -0
- package/docs/uk/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/uk/packages/intlayer/getLocaleName.md +135 -0
- package/docs/uk/packages/intlayer/getLocalizedUrl.md +338 -0
- package/docs/uk/packages/intlayer/getMultilingualUrls.md +359 -0
- package/docs/uk/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/uk/packages/intlayer/getPrefix.md +213 -0
- package/docs/uk/packages/intlayer/getTranslation.md +190 -0
- package/docs/uk/packages/intlayer/getTranslationContent.md +189 -0
- package/docs/uk/packages/next-intlayer/t.md +365 -0
- package/docs/uk/packages/next-intlayer/useDictionary.md +276 -0
- package/docs/uk/packages/next-intlayer/useIntlayer.md +263 -0
- package/docs/uk/packages/next-intlayer/useLocale.md +166 -0
- package/docs/uk/packages/react-intlayer/t.md +311 -0
- package/docs/uk/packages/react-intlayer/useDictionary.md +295 -0
- package/docs/uk/packages/react-intlayer/useI18n.md +250 -0
- package/docs/uk/packages/react-intlayer/useIntlayer.md +251 -0
- package/docs/uk/packages/react-intlayer/useLocale.md +210 -0
- package/docs/uk/per_locale_file.md +345 -0
- package/docs/uk/plugins/sync-json.md +398 -0
- package/docs/uk/readme.md +265 -0
- package/docs/uk/releases/v6.md +305 -0
- package/docs/uk/releases/v7.md +624 -0
- package/docs/uk/roadmap.md +346 -0
- package/docs/uk/testing.md +204 -0
- package/docs/uk/vs_code_extension.md +133 -0
- package/docs/vi/configuration.md +6 -1
- package/docs/vi/dictionary/content_file.md +6 -1
- package/docs/vi/intlayer_with_next-i18next.md +0 -1
- package/docs/vi/intlayer_with_nextjs_14.md +28 -0
- package/docs/vi/intlayer_with_nextjs_15.md +28 -0
- package/docs/vi/intlayer_with_nextjs_16.md +28 -0
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +1151 -0
- package/docs/vi/plugins/sync-json.md +6 -2
- package/docs/zh/configuration.md +6 -1
- package/docs/zh/dictionary/content_file.md +6 -1
- package/docs/zh/intlayer_with_next-i18next.md +0 -1
- package/docs/zh/intlayer_with_nextjs_14.md +28 -0
- package/docs/zh/intlayer_with_nextjs_15.md +28 -0
- package/docs/zh/intlayer_with_nextjs_16.md +28 -0
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +1206 -0
- package/docs/zh/plugins/sync-json.md +9 -5
- package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/ar/error-vite-env-only.md +77 -0
- package/frequent_questions/de/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/de/error-vite-env-only.md +77 -0
- package/frequent_questions/en/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/en/error-vite-env-only.md +77 -0
- package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/en-GB/error-vite-env-only.md +77 -0
- package/frequent_questions/es/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/es/error-vite-env-only.md +76 -0
- package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/fr/error-vite-env-only.md +77 -0
- package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/hi/error-vite-env-only.md +77 -0
- package/frequent_questions/id/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/id/error-vite-env-only.md +77 -0
- package/frequent_questions/it/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/it/error-vite-env-only.md +77 -0
- package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/ja/error-vite-env-only.md +77 -0
- package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/ko/error-vite-env-only.md +77 -0
- package/frequent_questions/pl/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/pl/error-vite-env-only.md +77 -0
- package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/pt/error-vite-env-only.md +77 -0
- package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/ru/error-vite-env-only.md +77 -0
- package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/tr/error-vite-env-only.md +77 -0
- package/frequent_questions/uk/SSR_Next_no_[locale].md +104 -0
- package/frequent_questions/uk/array_as_content_declaration.md +72 -0
- package/frequent_questions/uk/build_dictionaries.md +58 -0
- package/frequent_questions/uk/build_error_CI_CD.md +74 -0
- package/frequent_questions/uk/bun_set_up.md +53 -0
- package/frequent_questions/uk/customized_locale_list.md +64 -0
- package/frequent_questions/uk/domain_routing.md +113 -0
- package/frequent_questions/uk/error-vite-env-only.md +77 -0
- package/frequent_questions/uk/esbuild_error.md +29 -0
- package/frequent_questions/uk/get_locale_cookie.md +142 -0
- package/frequent_questions/uk/intlayer_command_undefined.md +155 -0
- package/frequent_questions/uk/locale_incorect_in_url.md +73 -0
- package/frequent_questions/uk/package_version_error.md +181 -0
- package/frequent_questions/uk/static_rendering.md +44 -0
- package/frequent_questions/uk/translated_path_url.md +55 -0
- package/frequent_questions/uk/unknown_command.md +97 -0
- package/frequent_questions/vi/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/vi/error-vite-env-only.md +77 -0
- package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/zh/error-vite-env-only.md +77 -0
- package/legal/uk/privacy_notice.md +83 -0
- package/legal/uk/terms_of_service.md +55 -0
- package/package.json +6 -6
- package/src/generated/blog.entry.ts +29 -0
- package/src/generated/docs.entry.ts +119 -0
- package/src/generated/frequentQuestions.entry.ts +35 -0
- package/src/generated/legal.entry.ts +2 -0
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-12-02
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Документація: функція `t` у `express-intlayer`
|
|
5
|
+
description: Дізнайтеся, як використовувати функцію `t` у пакеті `express-intlayer`
|
|
6
|
+
keywords:
|
|
7
|
+
- t
|
|
8
|
+
- переклад
|
|
9
|
+
- Intlayer
|
|
10
|
+
- інтернаціоналізація
|
|
11
|
+
- документація
|
|
12
|
+
- Express
|
|
13
|
+
- JavaScript
|
|
14
|
+
- React
|
|
15
|
+
slugs:
|
|
16
|
+
- doc
|
|
17
|
+
- packages
|
|
18
|
+
- express-intlayer
|
|
19
|
+
- t
|
|
20
|
+
history:
|
|
21
|
+
- version: 5.5.10
|
|
22
|
+
date: 2025-06-29
|
|
23
|
+
changes: Ініціалізація історії
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Документація: функція `t` у `express-intlayer`
|
|
27
|
+
|
|
28
|
+
Функція `t` у пакеті `express-intlayer` — це основна утиліта для надання локалізованих відповідей у вашому додатку Express. Вона спрощує інтернаціоналізацію (i18n), динамічно підбираючи контент залежно від бажаної мови користувача.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Огляд
|
|
33
|
+
|
|
34
|
+
Функція `t` використовується для визначення та отримання перекладів для заданого набору мов. Вона автоматично визначає відповідну мову для повернення на основі налаштувань запиту клієнта, таких як заголовок `Accept-Language`. Якщо бажана мова недоступна, вона коректно повертає локаль за замовчуванням, вказану у вашій конфігурації.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Ключові можливості
|
|
39
|
+
|
|
40
|
+
- **Динамічна локалізація**: автоматично обирає найвідповідніший переклад для клієнта.
|
|
41
|
+
- **Повернення до локалі за замовчуванням**: у разі недоступності бажаної мови використовується локаль за замовчуванням, що забезпечує безперервність користувацького досвіду.
|
|
42
|
+
- **Легкий і швидкий**: спроектовано для високопродуктивних застосунків, забезпечуючи мінімальні накладні витрати.
|
|
43
|
+
- **Підтримка Strict Mode**: Забезпечує суворе дотримання оголошених локалей для надійної роботи.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Підпис функції
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
t(translations: Record<string, string>): string;
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Параметри
|
|
54
|
+
|
|
55
|
+
- `translations`: Об'єкт, де ключі — це коди локалей (наприклад, `en`, `fr`, `es-MX`), а значення — відповідні перекладені рядки.
|
|
56
|
+
|
|
57
|
+
### Повертає
|
|
58
|
+
|
|
59
|
+
- Рядок, що представляє вміст мовою, яку віддає перевагу клієнт.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Завантаження обробника запитів інтернаціоналізації
|
|
64
|
+
|
|
65
|
+
Щоб забезпечити правильну роботу функціональності інтернаціоналізації, що надається `express-intlayer`, ви **повинні** завантажити middleware інтернаціоналізації на початку вашого Express-застосунку. Це активує функцію `t` і гарантує коректне визначення локалі та обробку перекладів.
|
|
66
|
+
|
|
67
|
+
Розмістіть middleware `app.use(intlayer())` **перед будь-якими маршрутами** у вашому додатку, щоб усі маршрути використовували інтернаціоналізацію:
|
|
68
|
+
|
|
69
|
+
```typescript {7} fileName="src/index.ts" codeFormat="typescript"
|
|
70
|
+
import express, { type Express } from "express";
|
|
71
|
+
import { intlayer } from "express-intlayer";
|
|
72
|
+
|
|
73
|
+
const app: Express = express();
|
|
74
|
+
|
|
75
|
+
// Завантажте обробник запитів інтернаціоналізації
|
|
76
|
+
app.use(intlayer());
|
|
77
|
+
|
|
78
|
+
// Визначте маршрути після завантаження middleware
|
|
79
|
+
app.get("/", (_req, res) => {
|
|
80
|
+
res.send(
|
|
81
|
+
t({
|
|
82
|
+
en: "Hello, World!",
|
|
83
|
+
fr: "Bonjour le monde!",
|
|
84
|
+
es: "¡Hola, Mundo!",
|
|
85
|
+
})
|
|
86
|
+
);
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```javascript {7} fileName="src/index.mjs" codeFormat="esm"
|
|
91
|
+
import express from "express";
|
|
92
|
+
import { intlayer } from "express-intlayer";
|
|
93
|
+
|
|
94
|
+
const app = express();
|
|
95
|
+
|
|
96
|
+
// Завантажити обробник запитів інтернаціоналізації
|
|
97
|
+
app.use(intlayer());
|
|
98
|
+
|
|
99
|
+
// Визначте маршрути після завантаження middleware
|
|
100
|
+
app.get("/", (_req, res) => {
|
|
101
|
+
res.send(
|
|
102
|
+
t({
|
|
103
|
+
en: "Hello, World!",
|
|
104
|
+
fr: "Bonjour le monde!",
|
|
105
|
+
es: "¡Hola, Mundo!",
|
|
106
|
+
})
|
|
107
|
+
);
|
|
108
|
+
});
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
```javascript {7} fileName="src/index.cjs" codeFormat="commonjs"
|
|
112
|
+
const express = require("express");
|
|
113
|
+
const { intlayer } = require("express-intlayer");
|
|
114
|
+
|
|
115
|
+
const app = express();
|
|
116
|
+
|
|
117
|
+
// Завантажити обробник запитів інтернаціоналізації
|
|
118
|
+
app.use(intlayer());
|
|
119
|
+
|
|
120
|
+
// Визначте маршрути після завантаження middleware
|
|
121
|
+
app.get("/", (_req, res) => {
|
|
122
|
+
res.send(
|
|
123
|
+
t({
|
|
124
|
+
en: "Hello, World!",
|
|
125
|
+
fr: "Bonjour le monde!",
|
|
126
|
+
es: "¡Hola, Mundo!",
|
|
127
|
+
})
|
|
128
|
+
);
|
|
129
|
+
});
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Чому це потрібно
|
|
133
|
+
|
|
134
|
+
- **Виявлення локалі**: проміжне ПЗ `intlayer` обробляє вхідні запити, щоб визначити переважну локаль користувача на основі заголовків, cookies або інших налаштованих методів.
|
|
135
|
+
- **Контекст перекладу**: встановлює необхідний контекст для функції `t`, щоб вона працювала правильно, гарантуючи повернення перекладів потрібною мовою.
|
|
136
|
+
- **Запобігання помилкам**: без цього middleware використання функції `t` призведе до помилок виконання, оскільки необхідна інформація про локаль не буде доступна.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Приклади використання
|
|
141
|
+
|
|
142
|
+
### Базовий приклад
|
|
143
|
+
|
|
144
|
+
Подача локалізованого контенту різними мовами:
|
|
145
|
+
|
|
146
|
+
```typescript fileName="src/index.ts" codeFormat="typescript"
|
|
147
|
+
app.get("/", (_req, res) => {
|
|
148
|
+
res.send(
|
|
149
|
+
t({
|
|
150
|
+
uk: "Ласкаво просимо!",
|
|
151
|
+
en: "Welcome!",
|
|
152
|
+
fr: "Bienvenue!",
|
|
153
|
+
es: "¡Bienvenido!",
|
|
154
|
+
})
|
|
155
|
+
);
|
|
156
|
+
});
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
```javascript fileName="src/index.mjs" codeFormat="esm"
|
|
160
|
+
app.get("/", (_req, res) => {
|
|
161
|
+
res.send(
|
|
162
|
+
t({
|
|
163
|
+
uk: "Ласкаво просимо!",
|
|
164
|
+
en: "Welcome!",
|
|
165
|
+
fr: "Bienvenue!",
|
|
166
|
+
es: "¡Bienvenido!",
|
|
167
|
+
})
|
|
168
|
+
);
|
|
169
|
+
});
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
```javascript fileName="src/index.cjs" codeFormat="commonjs"
|
|
173
|
+
app.get("/", (_req, res) => {
|
|
174
|
+
res.send(
|
|
175
|
+
t({
|
|
176
|
+
uk: "Ласкаво просимо!",
|
|
177
|
+
en: "Welcome!",
|
|
178
|
+
fr: "Bienvenue!",
|
|
179
|
+
es: "¡Bienvenido!",
|
|
180
|
+
})
|
|
181
|
+
);
|
|
182
|
+
});
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Запити клієнтів:**
|
|
186
|
+
|
|
187
|
+
- Клієнт з `Accept-Language: fr` отримає `Bienvenue!`.
|
|
188
|
+
- Клієнт з `Accept-Language: es` отримає `¡Bienvenido!`.
|
|
189
|
+
- Клієнт з `Accept-Language: de` отримає `Welcome!` (локаль за замовчуванням).
|
|
190
|
+
|
|
191
|
+
### Обробка помилок
|
|
192
|
+
|
|
193
|
+
Надайте повідомлення про помилки кількома мовами:
|
|
194
|
+
|
|
195
|
+
```typescript fileName="src/index.ts" codeFormat="typescript"
|
|
196
|
+
app.get("/error", (_req, res) => {
|
|
197
|
+
res.status(500).send(
|
|
198
|
+
t({
|
|
199
|
+
uk: "Сталася непередбачена помилка.",
|
|
200
|
+
en: "An unexpected error occurred.",
|
|
201
|
+
fr: "Une erreur inattendue s'est produite.",
|
|
202
|
+
es: "Ocurrió un error inesperado.",
|
|
203
|
+
})
|
|
204
|
+
);
|
|
205
|
+
});
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
```javascript fileName="src/index.mjs" codeFormat="esm"
|
|
209
|
+
app.get("/error", (_req, res) => {
|
|
210
|
+
res.status(500).send(
|
|
211
|
+
t({
|
|
212
|
+
uk: "Сталася непередбачена помилка.",
|
|
213
|
+
en: "An unexpected error occurred.",
|
|
214
|
+
fr: "Une erreur inattendue s'est produite.",
|
|
215
|
+
es: "Ocurrió un error inesperado.",
|
|
216
|
+
})
|
|
217
|
+
);
|
|
218
|
+
});
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
```javascript fileName="src/index.cjs" codeFormat="commonjs"
|
|
222
|
+
app.get("/error", (_req, res) => {
|
|
223
|
+
res.status(500).send(
|
|
224
|
+
t({
|
|
225
|
+
uk: "Сталася непередбачена помилка.",
|
|
226
|
+
en: "An unexpected error occurred.",
|
|
227
|
+
fr: "Une erreur inattendue s'est produite.",
|
|
228
|
+
es: "Ocurrió un error inesperado.",
|
|
229
|
+
})
|
|
230
|
+
);
|
|
231
|
+
});
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### Використання варіантів локалі
|
|
237
|
+
|
|
238
|
+
Specify translations for locale-specific variants:
|
|
239
|
+
|
|
240
|
+
```typescript fileName="src/index.ts" codeFormat="typescript"
|
|
241
|
+
app.get("/greet", (_req, res) => {
|
|
242
|
+
res.send(
|
|
243
|
+
t({
|
|
244
|
+
en: "Hello!",
|
|
245
|
+
"en-GB": "Hello, mate!",
|
|
246
|
+
fr: "Bonjour!",
|
|
247
|
+
"es-MX": "¡Hola, amigo!",
|
|
248
|
+
"es-ES": "¡Hola!",
|
|
249
|
+
})
|
|
250
|
+
);
|
|
251
|
+
});
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
```javascript fileName="src/index.cjs" codeFormat="commonjs"
|
|
255
|
+
app.get("/greet", (_req, res) => {
|
|
256
|
+
res.send(
|
|
257
|
+
t({
|
|
258
|
+
en: "Hello!",
|
|
259
|
+
"en-GB": "Hello, mate!",
|
|
260
|
+
fr: "Bonjour!",
|
|
261
|
+
"es-MX": "¡Hola, amigo!",
|
|
262
|
+
"es-ES": "¡Hola!",
|
|
263
|
+
})
|
|
264
|
+
);
|
|
265
|
+
});
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
```javascript fileName="src/index.mjs" codeFormat="esm"
|
|
269
|
+
app.get("/greet", (_req, res) => {
|
|
270
|
+
res.send(
|
|
271
|
+
t({
|
|
272
|
+
en: "Hello!",
|
|
273
|
+
"en-GB": "Hello, mate!",
|
|
274
|
+
fr: "Bonjour!",
|
|
275
|
+
"es-MX": "¡Hola, amigo!",
|
|
276
|
+
"es-ES": "¡Hola!",
|
|
277
|
+
})
|
|
278
|
+
);
|
|
279
|
+
});
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Додаткові теми
|
|
285
|
+
|
|
286
|
+
### Механізм fallback
|
|
287
|
+
|
|
288
|
+
Якщо бажана локаль недоступна, функція `t` підставить значення з локалі за замовчуванням, визначеної в конфігурації (`defaultLocale`):
|
|
289
|
+
|
|
290
|
+
```typescript {5-6} fileName="intlayer.config.ts" codeFormat="typescript"
|
|
291
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
292
|
+
|
|
293
|
+
const config = {
|
|
294
|
+
internationalization: {
|
|
295
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
296
|
+
defaultLocale: Locales.ENGLISH,
|
|
297
|
+
},
|
|
298
|
+
} satisfies IntlayerConfig;
|
|
299
|
+
|
|
300
|
+
export default config;
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
```javascript {5-6} fileName="intlayer.config.mjs" codeFormat="esm"
|
|
304
|
+
import { Locales } from "intlayer";
|
|
305
|
+
|
|
306
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
307
|
+
const config = {
|
|
308
|
+
internationalization: {
|
|
309
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
310
|
+
defaultLocale: Locales.ENGLISH,
|
|
311
|
+
},
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
export default config;
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
```javascript {5-6} fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
318
|
+
const { Locales } = require("intlayer");
|
|
319
|
+
|
|
320
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
321
|
+
const config = {
|
|
322
|
+
internationalization: {
|
|
323
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
324
|
+
defaultLocale: Locales.ENGLISH,
|
|
325
|
+
},
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
module.exports = config;
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Наприклад:
|
|
332
|
+
|
|
333
|
+
- Якщо `defaultLocale` встановлено в `Locales.CHINESE`, а клієнт запитує `Locales.DUTCH`, повернутий переклад за замовчуванням буде значенням `Locales.CHINESE`.
|
|
334
|
+
- Якщо `defaultLocale` не визначено, функція `t` використає значення `Locales.ENGLISH`.
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
### Примусове застосування режиму `strict`
|
|
339
|
+
|
|
340
|
+
Налаштуйте функцію `t` для забезпечення суворої відповідності задекларованим локалям:
|
|
341
|
+
|
|
342
|
+
| Режим | Поведінка |
|
|
343
|
+
| ----------- | ------------------------------------------------------------------------------------------------------- |
|
|
344
|
+
| `strict` | Усі задекларовані локалі повинні мати переклади. Відсутні локалі призведуть до помилок. |
|
|
345
|
+
| `inclusive` | Задекларовані локалі повинні мати переклади. Відсутні локалі спричиняють попередження, але приймаються. |
|
|
346
|
+
| `loose` | Будь-яка наявна локаль приймається, навіть якщо не задекларована. |
|
|
347
|
+
|
|
348
|
+
Приклад конфігурації:
|
|
349
|
+
|
|
350
|
+
```typescript {7} fileName="intlayer.config.ts" codeFormat="typescript"
|
|
351
|
+
import { type IntlayerConfig } from "intlayer";
|
|
352
|
+
|
|
353
|
+
const config = {
|
|
354
|
+
// ... Ваша існуюча конфігурація
|
|
355
|
+
internationalization: {
|
|
356
|
+
// ... Ваші існуючі налаштування інтернаціоналізації
|
|
357
|
+
strictMode: "strict", // Застосовує строгий режим
|
|
358
|
+
},
|
|
359
|
+
} satisfies IntlayerConfig;
|
|
360
|
+
|
|
361
|
+
export default config;
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
```javascript {7} fileName="intlayer.config.mjs" codeFormat="esm"
|
|
365
|
+
import { type IntlayerConfig } from "intlayer";
|
|
366
|
+
|
|
367
|
+
const config = {
|
|
368
|
+
// ... Ваша існуюча конфігурація
|
|
369
|
+
internationalization: {
|
|
370
|
+
// ... Ваші існуючі налаштування інтернаціоналізації
|
|
371
|
+
strictMode: "strict", // Застосовує строгий режим
|
|
372
|
+
},
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
export default config;
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
```javascript {7} fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
379
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
380
|
+
const config = {
|
|
381
|
+
// ... Ваша існуюча конфігурація
|
|
382
|
+
internationalization: {
|
|
383
|
+
// ... Ваша існуюча конфігурація інтернаціоналізації
|
|
384
|
+
strictMode: "strict", // Увімкнути строгий режим
|
|
385
|
+
},
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
module.exports = config;
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
### Інтеграція з TypeScript
|
|
394
|
+
|
|
395
|
+
Функція `t` є типобезпечною при використанні з TypeScript. Визначте типобезпечний об'єкт перекладів:
|
|
396
|
+
|
|
397
|
+
```typescript fileName="src/index.ts" codeFormat="typescript"
|
|
398
|
+
import { type LanguageContent } from "express-intlayer";
|
|
399
|
+
|
|
400
|
+
const translations: LanguageContent<string> = {
|
|
401
|
+
en: "Good morning!",
|
|
402
|
+
fr: "Bonjour!",
|
|
403
|
+
es: "¡Buenos días!",
|
|
404
|
+
};
|
|
405
|
+
|
|
406
|
+
app.get("/morning", (_req, res) => {
|
|
407
|
+
res.send(t(translations));
|
|
408
|
+
});
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
```javascript fileName="src/index.mjs" codeFormat="esm"
|
|
412
|
+
import { type LanguageContent } from "express-intlayer";
|
|
413
|
+
|
|
414
|
+
/** @type {import('express-intlayer').LanguageContent<string>} */
|
|
415
|
+
const translations = {
|
|
416
|
+
uk: "Доброго ранку!",
|
|
417
|
+
en: "Good morning!",
|
|
418
|
+
fr: "Bonjour!",
|
|
419
|
+
es: "¡Buenos días!",
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
app.get("/morning", (_req, res) => {
|
|
423
|
+
res.send(t(translations));
|
|
424
|
+
});
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
```javascript fileName="src/index.cjs" codeFormat="commonjs"
|
|
428
|
+
const { type LanguageContent } = require("express-intlayer");
|
|
429
|
+
|
|
430
|
+
/** @type {import('express-intlayer').LanguageContent<string>} */
|
|
431
|
+
const translations = {
|
|
432
|
+
uk: "Доброго ранку!",
|
|
433
|
+
en: "Good morning!",
|
|
434
|
+
fr: "Bonjour!",
|
|
435
|
+
es: "¡Buenos días!",
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
app.get("/morning", (_req, res) => {
|
|
439
|
+
res.send(t(translations));
|
|
440
|
+
});
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
---
|
|
444
|
+
|
|
445
|
+
### Загальні помилки та усунення неполадок
|
|
446
|
+
|
|
447
|
+
| Проблема | Причина | Рішення |
|
|
448
|
+
| ---------------------------- | ---------------------------------------- | ---------------------------------------------------------------- |
|
|
449
|
+
| `t` функція не працює | Middleware не підключено | Переконайтеся, що `app.use(intlayer())` додано перед маршрутами. |
|
|
450
|
+
| Помилка відсутніх перекладів | Увімкнено строгий режим без усіх локалей | Надайте всі необхідні переклади. |
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
## Поради для ефективного використання
|
|
455
|
+
|
|
456
|
+
1. **Централізуйте переклади**: Використовуйте централізований модуль або JSON-файли для керування перекладами, щоб покращити підтримуваність.
|
|
457
|
+
2. **Перевіряйте переклади**: Переконайтеся, що кожен мовний варіант має відповідний переклад, щоб уникнути непотрібного fallback.
|
|
458
|
+
3. **Поєднуйте з фронтенд i18n**: Синхронізуйте з фронтендовою інтернаціоналізацією для безперервного користувацького досвіду в додатку.
|
|
459
|
+
4. **Вимірюйте продуктивність**: Перевірте час відгуку вашого додатку при додаванні перекладів, щоб забезпечити мінімальний вплив.
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
## Висновок
|
|
464
|
+
|
|
465
|
+
Функція `t` — потужний інструмент для інтернаціоналізації бекенду. Правильно використовуючи її, ви можете створити більш інклюзивний та зручний додаток для глобальної аудиторії. Для просунутого використання та детальних опцій конфігурації див. [документацію](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md).
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
|
+
title: Документація функції getConfiguration | intlayer
|
|
5
|
+
description: Дізнайтесь, як використовувати функцію getConfiguration для пакета intlayer
|
|
6
|
+
keywords:
|
|
7
|
+
- getConfiguration
|
|
8
|
+
- переклад
|
|
9
|
+
- Intlayer
|
|
10
|
+
- intlayer
|
|
11
|
+
- інтернаціоналізація
|
|
12
|
+
- документація
|
|
13
|
+
- Next.js
|
|
14
|
+
- JavaScript
|
|
15
|
+
- React
|
|
16
|
+
slugs:
|
|
17
|
+
- doc
|
|
18
|
+
- packages
|
|
19
|
+
- intlayer
|
|
20
|
+
- getConfiguration
|
|
21
|
+
history:
|
|
22
|
+
- version: 5.5.10
|
|
23
|
+
date: 2025-06-29
|
|
24
|
+
changes: Ініціалізація історії
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Документація: функція `getConfiguration` у `intlayer`
|
|
28
|
+
|
|
29
|
+
## Опис
|
|
30
|
+
|
|
31
|
+
Функція `getConfiguration` отримує повну конфігурацію для застосунку `intlayer`, витягуючи змінні оточення. Ця функція дає змогу використовувати одну й ту саму конфігурацію як на клієнтській, так і на серверній стороні, забезпечуючи узгодженість по всьому застосунку.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Параметри
|
|
36
|
+
|
|
37
|
+
Функція не приймає жодних параметрів. Замість цього вона використовує змінні оточення для налаштування.
|
|
38
|
+
|
|
39
|
+
### Повертає
|
|
40
|
+
|
|
41
|
+
- **Тип**: `IntlayerConfig`
|
|
42
|
+
- **Опис**: Об'єкт, що містить повну конфігурацію для `intlayer`. Конфігурація включає такі розділи:
|
|
43
|
+
- `internationalization`: Налаштування, пов'язані з локалями та strict mode.
|
|
44
|
+
- `middleware`: Налаштування, пов'язані з керуванням URL та cookie.
|
|
45
|
+
- `content`: Налаштування, пов'язані з файлами контенту, директоріями та шаблонами.
|
|
46
|
+
- `editor`: Налаштування, специфічні для редактора.
|
|
47
|
+
|
|
48
|
+
Див. [документацію з конфігурації Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md) для отримання додаткової інформації.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Приклад використання
|
|
53
|
+
|
|
54
|
+
### Отримання повної конфігурації
|
|
55
|
+
|
|
56
|
+
```typescript codeFormat="typescript"
|
|
57
|
+
import { getConfiguration } from "intlayer";
|
|
58
|
+
|
|
59
|
+
const config = getConfiguration();
|
|
60
|
+
console.log(config);
|
|
61
|
+
// Вивід:
|
|
62
|
+
// {
|
|
63
|
+
// internationalization: { ... },
|
|
64
|
+
// middleware: { ... },
|
|
65
|
+
// content: { ... },
|
|
66
|
+
// editor: { ... }
|
|
67
|
+
// }
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```javascript codeFormat="esm"
|
|
71
|
+
import { getConfiguration } from "intlayer";
|
|
72
|
+
|
|
73
|
+
const config = getConfiguration();
|
|
74
|
+
console.log(config);
|
|
75
|
+
// Вивід:
|
|
76
|
+
// {
|
|
77
|
+
// internationalization: { ... },
|
|
78
|
+
// middleware: { ... },
|
|
79
|
+
// content: { ... },
|
|
80
|
+
// editor: { ... }
|
|
81
|
+
// }
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
```javascript codeFormat="commonjs"
|
|
85
|
+
const { getConfiguration } = require("intlayer");
|
|
86
|
+
|
|
87
|
+
const config = getConfiguration();
|
|
88
|
+
console.log(config);
|
|
89
|
+
// Вивід:
|
|
90
|
+
// {
|
|
91
|
+
// internationalization: { ... },
|
|
92
|
+
// middleware: { ... },
|
|
93
|
+
// content: { ... },
|
|
94
|
+
// editor: { ... }
|
|
95
|
+
// }
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Отримання `availableLocales` та `defaultLocale`
|
|
99
|
+
|
|
100
|
+
Розділ `internationalization` конфігурації надає налаштування, пов'язані з локалями, такі як `locales` (доступні локалі) та `defaultLocale` (мова за замовчуванням).
|
|
101
|
+
|
|
102
|
+
```typescript codeFormat="typescript"
|
|
103
|
+
import { getConfiguration } from "intlayer";
|
|
104
|
+
|
|
105
|
+
const { internationalization, middleware } = getConfiguration();
|
|
106
|
+
const { locales: availableLocales, defaultLocale } = internationalization;
|
|
107
|
+
const { cookieName } = middleware;
|
|
108
|
+
|
|
109
|
+
console.log(availableLocales); // Приклад виводу: ["en", "fr", "es"]
|
|
110
|
+
console.log(defaultLocale); // Приклад виводу: "en"
|
|
111
|
+
console.log(cookieName); // Вивід: "INTLAYER_LOCALE"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
```javascript codeFormat="esm"
|
|
115
|
+
import { getConfiguration } from "intlayer";
|
|
116
|
+
|
|
117
|
+
const { internationalization, middleware } = getConfiguration();
|
|
118
|
+
const { locales: availableLocales, defaultLocale } = internationalization;
|
|
119
|
+
const { cookieName } = middleware;
|
|
120
|
+
|
|
121
|
+
console.log(availableLocales); // Приклад виводу: ["en", "fr", "es"]
|
|
122
|
+
console.log(defaultLocale); // Приклад виводу: "en"
|
|
123
|
+
console.log(cookieName); // Вивід: "INTLAYER_LOCALE"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
```javascript codeFormat="commonjs"
|
|
127
|
+
const { getConfiguration } = require("intlayer");
|
|
128
|
+
|
|
129
|
+
const { internationalization, middleware } = getConfiguration();
|
|
130
|
+
const { locales: availableLocales, defaultLocale } = internationalization;
|
|
131
|
+
const { cookieName } = middleware;
|
|
132
|
+
|
|
133
|
+
console.log(availableLocales); // Приклад виводу: ["en", "fr", "es"]
|
|
134
|
+
console.log(defaultLocale); // Приклад виводу: "en"
|
|
135
|
+
console.log(cookieName); // Вивід: "INTLAYER_LOCALE"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Примітки
|
|
139
|
+
|
|
140
|
+
- Переконайтеся, що всі необхідні змінні середовища правильно встановлені перед викликом цієї функції. Відсутні змінні спричинять помилки під час ініціалізації.
|
|
141
|
+
- Цю функцію можна використовувати як на клієнті, так і на сервері, що робить її універсальним інструментом для керування конфігураціями в уніфікований спосіб.
|
|
142
|
+
|
|
143
|
+
## Використання в застосунках
|
|
144
|
+
|
|
145
|
+
Функція `getConfiguration` є ключовою утилітою для ініціалізації та керування конфігурацією застосунку `intlayer`. Надаючи доступ до налаштувань, таких як locales, middleware та content directories, вона забезпечує узгодженість і масштабованість багатомовних і контент-орієнтованих застосунків.
|