@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,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-11
|
|
3
|
+
updatedAt: 2026-01-11
|
|
4
|
+
title: `vite-env-only` & Intlayer – хибнопозитивна помилка відхилення `node:fs`
|
|
5
|
+
description: Чому vite-env-only повідомляє про відхилений імпорт `node:fs` з Intlayer + React-Router + Vite і що робити.
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- відхилений імпорт
|
|
13
|
+
- alias
|
|
14
|
+
- клієнтський бандл
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vite-env-only відхиляє `node:fs` в Intlayer
|
|
21
|
+
|
|
22
|
+
Якщо ви використовували плагін **vite-env-only** (як зазначено в старих рекомендаціях React-Router v7) і бачите:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
|
|
26
|
+
Error: [vite-env-only] Import denied
|
|
27
|
+
|
|
28
|
+
* Denied by specifier pattern: /^node:/
|
|
29
|
+
* Importer: index.html
|
|
30
|
+
* Import: "node:fs"
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
…незважаючи на те, що **в клієнтському бандлі немає `node:fs`**, це — **хибне спрацювання**.
|
|
35
|
+
|
|
36
|
+
## Чому це відбувається
|
|
37
|
+
|
|
38
|
+
`vite-env-only` виконує перевірку на основі Babel **на ранньому етапі резолюції графа Vite**, _перед_:
|
|
39
|
+
|
|
40
|
+
- aliasing (включаючи відповідності Intlayer для browser vs node),
|
|
41
|
+
- dead-code elimination,
|
|
42
|
+
- SSR vs client resolution,
|
|
43
|
+
- віртуальні модулі, як-от ті в React-Router.
|
|
44
|
+
|
|
45
|
+
Пакети Intlayer містять код, який може працювати як у Node, так і в браузері. На _проміжному_ етапі в графі може з'явитися вбудований модуль Node, наприклад `node:fs`, **перед тим як** Vite видалить його з клієнтської збірки. `vite-env-only` помічає це і відразу видає помилку, хоча у фінальному бандлі його немає.
|
|
46
|
+
|
|
47
|
+
## React-Router і серверні модулі
|
|
48
|
+
|
|
49
|
+
У документації React-Router щодо **конвенцій серверних модулів**
|
|
50
|
+
(https://reactrouter.com/api/framework-conventions/server-modules), команда **чітко рекомендує використовувати `vite-env-only`**, щоб запобігти потраплянню імпортів, призначених лише для сервера, у клієнтський бандл.
|
|
51
|
+
|
|
52
|
+
Однак ці конвенції покладаються на aliasing Vite, conditional exports і tree-shaking для видалення коду, призначеного лише для сервера. Хоча aliasing і conditional exports вже застосовані, деякі утиліти на основі Node все ще присутні в пакетах на кшталт `@intlayer/core` на цьому етапі (хоча вони ніколи не імпортуються на клієнті). Оскільки tree-shaking ще не відбувся, ці функції все ще парсяться Babel, і `vite-env-only` виявляє їхні імпорти `node:` та породжує false positive — хоча вони коректно очищуються з фінального клієнтського бандлу.
|
|
53
|
+
|
|
54
|
+
## Як виправити / обійти
|
|
55
|
+
|
|
56
|
+
### Рекомендовано: Видалити `vite-env-only`
|
|
57
|
+
|
|
58
|
+
Просто видаліть цей плагін. У багатьох випадках він не потрібен — Vite вже обробляє розрізнення імпортів для клієнта та сервера через власний механізм резолюції.
|
|
59
|
+
|
|
60
|
+
Це виправляє хибну відмову через `node:fs` без змін в Intlayer.
|
|
61
|
+
|
|
62
|
+
### Натомість перевірте фінальну збірку
|
|
63
|
+
|
|
64
|
+
Якщо ви все ще хочете переконатися, що в клієнтському бандлі немає вбудованих модулів Node, робіть це **після збірки**, наприклад:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm build
|
|
68
|
+
grep -R "node:" dist/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Якщо результатів немає, ваші клієнтські бандли чисті.
|
|
72
|
+
|
|
73
|
+
## Підсумок
|
|
74
|
+
|
|
75
|
+
- `vite-env-only` може видавати помилку на `node:fs`, оскільки перевіряє занадто рано.
|
|
76
|
+
- Vite + Intlayer + конвенції server modules у React-Router зазвичай правильно видаляють посилання, призначені тільки для сервера.
|
|
77
|
+
- Видалення плагіна або перевірка _фінального виводу_ зазвичай є найкращим рішенням.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-05-20
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Помилка ESBuild
|
|
5
|
+
description: Дізнайтеся, як виправляти помилки ESBuild.
|
|
6
|
+
keywords:
|
|
7
|
+
- esbuild
|
|
8
|
+
- error
|
|
9
|
+
- intlayer
|
|
10
|
+
- plugin
|
|
11
|
+
- framework
|
|
12
|
+
- next.js
|
|
13
|
+
- vite
|
|
14
|
+
- react-native
|
|
15
|
+
- lynx
|
|
16
|
+
slugs:
|
|
17
|
+
- frequent-questions
|
|
18
|
+
- esbuild-error
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Помилка ESBuild
|
|
22
|
+
|
|
23
|
+
Якщо під час збірки ви стикаєтеся з помилкою ESBuild, швидше за все плагін Intlayer налаштовано неправильно.
|
|
24
|
+
|
|
25
|
+
ESBuild відповідає за читання файлів декларації контенту (`.content.{ts,js,mjs,cjs,json}`) та генерацію відповідних словників у папці `.intlayer/dictionary`. А також за читання файлу конфігурації (`intlayer.config.ts`).
|
|
26
|
+
|
|
27
|
+
Intlayer надає плагіни для інтеграції з вашими бандлерами. Це призначено для створення псевдонімів (alias) для компонентів, які мають виконуватися лише на сервері.
|
|
28
|
+
|
|
29
|
+
Якщо ви використовуєте фреймворк, такий як Next.js (Webpack / Turbopack), Vite, React Native, Lynx тощо, Intlayer надає плагін, який можна використати для інтеграції Intlayer у ваш застосунок. Тому зверніться до специфічної документації вашого фреймворка, щоб дізнатися, як інтегрувати плагін.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-05-20
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Як отримати локаль із cookie / заголовків?
|
|
5
|
+
description: Дізнайтеся, як отримати локаль із cookie / заголовків.
|
|
6
|
+
keywords:
|
|
7
|
+
- cookie
|
|
8
|
+
- headers
|
|
9
|
+
- intlayer
|
|
10
|
+
- locale
|
|
11
|
+
- hook
|
|
12
|
+
- useLocale
|
|
13
|
+
- useLocaleCookie
|
|
14
|
+
- next.js
|
|
15
|
+
- react-intlayer
|
|
16
|
+
- vue-intlayer
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- get-locale-cookie
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Як отримати локаль із cookie / заголовків
|
|
23
|
+
|
|
24
|
+
## Використання хуків (рекомендується)
|
|
25
|
+
|
|
26
|
+
У більшості випадків рекомендовано отримувати поточну локаль за допомогою хука `useLocale`, оскільки вона вирішується автоматично. Це працює аналогічно до `useLocale` composable у Vue.js.
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
import { useLocale } from "next-intlayer";
|
|
30
|
+
// or import { useLocale } from "react-intlayer";
|
|
31
|
+
// або імпортуйте { useLocale } з "vue-intlayer";
|
|
32
|
+
|
|
33
|
+
// Використання на клієнті
|
|
34
|
+
const { locale } = useLocale();
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Для серверних компонентів ви можете імпортувати його з:
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
import { useLocale } from "next-intlayer/server";
|
|
41
|
+
|
|
42
|
+
const Test = () => {
|
|
43
|
+
const { locale } = useLocale();
|
|
44
|
+
return <>{locale}</>;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const Page = async ({ params }) => {
|
|
48
|
+
const { locale } = await params;
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<IntlayerServerProvider locale={locale}>
|
|
52
|
+
<Test />
|
|
53
|
+
</IntlayerServerProvider>
|
|
54
|
+
);
|
|
55
|
+
};
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Також існує хук `useLocaleCookie`, який лише повертає значення cookie.
|
|
59
|
+
|
|
60
|
+
## Ручна конфігурація cookie
|
|
61
|
+
|
|
62
|
+
Ви можете задати власну назву cookie, наприклад
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
import { type IntlayerConfig } from "intlayer";
|
|
66
|
+
|
|
67
|
+
const config: IntlayerConfig = {
|
|
68
|
+
middleware: {
|
|
69
|
+
cookieName: "myCustomLocaleCookie", // за замовчуванням 'intlayer-locale'
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export default config;
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
отримати його наступним чином
|
|
77
|
+
|
|
78
|
+
### На стороні клієнта
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
// Використання імені cookie за замовчуванням
|
|
82
|
+
const locale = document.cookie
|
|
83
|
+
.split("; ")
|
|
84
|
+
.find((row) => row.startsWith("intlayer-locale="))
|
|
85
|
+
?.split("=")[1];
|
|
86
|
+
|
|
87
|
+
// Використання користувацького імені cookie
|
|
88
|
+
const locale = document.cookie
|
|
89
|
+
.split("; ")
|
|
90
|
+
.find((row) => row.startsWith("myCustomLocaleCookie="))
|
|
91
|
+
?.split("=")[1];
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### На сервері (Next.js)
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
import { cookies } from "next/headers";
|
|
98
|
+
|
|
99
|
+
// Використання імені cookie за замовчуванням
|
|
100
|
+
const locale = cookies().get("intlayer-locale")?.value;
|
|
101
|
+
|
|
102
|
+
// Використання користувацького імені cookie
|
|
103
|
+
const locale = cookies().get("myCustomLocaleCookie")?.value;
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Якщо локаль ще не встановлена
|
|
107
|
+
|
|
108
|
+
Локаль встановлюється в cookie лише після того, як користувач явно вибере локаль. За замовчуванням для нових відвідувачів локаль визначається за полями заголовків.
|
|
109
|
+
|
|
110
|
+
Ви можете визначити бажану локаль користувача з заголовків запиту. Ось приклад, як це можна реалізувати:
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
/**
|
|
114
|
+
* Визначає локаль з заголовків запиту
|
|
115
|
+
*
|
|
116
|
+
* Заголовок accept-language є найважливішим для визначення локалі.
|
|
117
|
+
* Він містить список кодів мов зі значеннями якості (q-values), які вказують
|
|
118
|
+
* пріоритетні мови користувача в порядку переваги.
|
|
119
|
+
*
|
|
120
|
+
* Приклад: "en-US,en;q=0.9,fr;q=0.8,es;q=0.7"
|
|
121
|
+
* - en-US — основна мова (q=1.0 мається на увазі)
|
|
122
|
+
* - en — другий вибір (q=0.9)
|
|
123
|
+
* - fr — третій вибір (q=0.8)
|
|
124
|
+
* - es — четвертий вибір (q=0.7)
|
|
125
|
+
*/
|
|
126
|
+
import { localeDetector } from "@intlayer/core";
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Приклад negotiator headers, які зазвичай надсилають браузери
|
|
130
|
+
* Ці заголовки допомагають визначити переважну мову користувача
|
|
131
|
+
*/
|
|
132
|
+
const exampleNegotiatorHeaders: Record<string, string> = {
|
|
133
|
+
"accept-language": "en-US,en;q=0.9,fr;q=0.8,es;q=0.7",
|
|
134
|
+
"accept":
|
|
135
|
+
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
|
|
136
|
+
"user-agent":
|
|
137
|
+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
// Приклад використання:
|
|
141
|
+
const detectedLocale = localeDetector(exampleNegotiatorHeaders);
|
|
142
|
+
```
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-05-20
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Команда intlayer не визначена
|
|
5
|
+
description: Дізнайтеся, як виправити помилку «команда intlayer не визначена».
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- command
|
|
9
|
+
- undefined
|
|
10
|
+
- error
|
|
11
|
+
- vscode
|
|
12
|
+
- extension
|
|
13
|
+
- plugin
|
|
14
|
+
- framework
|
|
15
|
+
- next.js
|
|
16
|
+
- vite
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- intlayer-command-undefined
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Команда intlayer не визначена
|
|
23
|
+
|
|
24
|
+
## Огляд
|
|
25
|
+
|
|
26
|
+
Intlayer CLI надає зручний спосіб керування вашим вмістом intlayer, включно зі збіркою словників, відправкою перекладів та іншим. Однак він не є обов'язковим для роботи вашого проєкту. Якщо ви використовуєте bundler-плагін (наприклад, `withIntlayer()` для Next.js або `intlayer()` для Vite), Intlayer автоматично збирає словники під час збірки додатку або запуску dev-сервера. У режимі розробки він також відслідковує зміни та автоматично перебудовує файли декларацій вмісту.
|
|
27
|
+
|
|
28
|
+
Ви можете отримати доступ до команд intlayer різними способами:
|
|
29
|
+
|
|
30
|
+
- Використовуючи CLI-команду `intlayer` безпосередньо
|
|
31
|
+
- Використовуючи [розширення VSCode](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/vs_code_extension.md)
|
|
32
|
+
- Використовуючи SDK `@intlayer/cli`
|
|
33
|
+
|
|
34
|
+
## Проблема
|
|
35
|
+
|
|
36
|
+
Коли ви намагаєтеся використати команду `intlayer`, ви можете зіткнутися з цією помилкою:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
'intlayer' is not recognized as an internal or external command,
|
|
40
|
+
operable program or batch file.
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Рішення
|
|
44
|
+
|
|
45
|
+
Спробуйте ці рішення в порядку:
|
|
46
|
+
|
|
47
|
+
1. **Перевірте, що команда встановлена**
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx intlayer -h
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Очікуваний вивід:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
Usage: intlayer [options] [command]
|
|
57
|
+
|
|
58
|
+
Intlayer CLI
|
|
59
|
+
|
|
60
|
+
Options:
|
|
61
|
+
-V, --version output the version number
|
|
62
|
+
-h, --help display help for command
|
|
63
|
+
|
|
64
|
+
Commands:
|
|
65
|
+
dictionary|dictionaries Dictionaries operations
|
|
66
|
+
configuration|config Configuration operations
|
|
67
|
+
help [command] display help for command
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
2. **Встановіть пакет intlayer-cli глобально**
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm install intlayer-cli -g -g
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
> Це не має бути необхідним, якщо ви вже встановили пакет `intlayer`
|
|
77
|
+
|
|
78
|
+
3. **Встановіть пакет глобально**
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npm install intlayer -g
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
4. **Перезапустіть термінал**
|
|
85
|
+
Іноді потрібно перезапустити термінал, щоб він розпізнав нові команди.
|
|
86
|
+
|
|
87
|
+
5. **Очистіть і перевстановіть**
|
|
88
|
+
Якщо наведені вище рішення не допомогли:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
rm -rf node_modules package-lock.json
|
|
92
|
+
npm install
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
6. **Перевірте файли встановлення**
|
|
96
|
+
Якщо проблема зберігається, перевірте, що існують такі файли:
|
|
97
|
+
- `node_modules/intlayer/dist/cjs/cli.cjs`
|
|
98
|
+
- `node_modules/intlayer/package.json` (має містити поле `bin`, що посилається на `./dist/cjs/cli.cjs`)
|
|
99
|
+
|
|
100
|
+
7. **Перевірте змінну середовища PATH**
|
|
101
|
+
Переконайтеся, що директорія глобальних bin-файлів npm присутня у вашому PATH:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Для Unix-подібних систем (macOS/Linux)
|
|
105
|
+
echo $PATH
|
|
106
|
+
# Має містити щось на кшталт /usr/local/bin або ~/.npm-global/bin
|
|
107
|
+
|
|
108
|
+
# Для Windows
|
|
109
|
+
echo %PATH%
|
|
110
|
+
# Має містити каталог глобальних бінарних файлів npm
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
8. **Use npx with full path**
|
|
114
|
+
If the command is still not found, try using npx with the full path:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
npx ./node_modules/intlayer/ dictionaries build
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
9. **Check for conflicting installations**
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Перелічіть усі глобально встановлені пакети
|
|
124
|
+
npm list -g --depth=0
|
|
125
|
+
|
|
126
|
+
# Видаліть будь-які конфліктні глобальні встановлення
|
|
127
|
+
npm uninstall -g intlayer
|
|
128
|
+
npm uninstall -g intlayer-cli
|
|
129
|
+
# Потім перевстановіть
|
|
130
|
+
npm install -g intlayer
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
10. **Verify Node.js and npm versions**
|
|
134
|
+
Make sure you're using compatible versions:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
node --version
|
|
138
|
+
npm --version
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
If you're using an outdated version, consider updating Node.js and npm.
|
|
142
|
+
|
|
143
|
+
11. **Перевірте проблеми з дозволами**
|
|
144
|
+
Якщо ви отримуєте помилки доступу:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Для Unix-подібних систем
|
|
148
|
+
sudo npm install -g intlayer
|
|
149
|
+
|
|
150
|
+
# Або змініть каталог за замовчуванням для npm
|
|
151
|
+
mkdir ~/.npm-global
|
|
152
|
+
npm config set prefix '~/.npm-global'
|
|
153
|
+
# Додайте в ваш ~/.profile або ~/.bashrc:
|
|
154
|
+
export PATH=~/.npm-global/bin:$PATH
|
|
155
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-05-20
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Некоректна локаль, отримана з URL
|
|
5
|
+
description: Дізнайтеся, як виправити некоректну локаль, отриману з URL.
|
|
6
|
+
keywords:
|
|
7
|
+
- локаль
|
|
8
|
+
- url
|
|
9
|
+
- intlayer
|
|
10
|
+
- next.js
|
|
11
|
+
- vite
|
|
12
|
+
- фреймворк
|
|
13
|
+
- middleware
|
|
14
|
+
- конфігурація
|
|
15
|
+
- prefixDefault
|
|
16
|
+
- noPrefix
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- locale-incorect-in-url
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Некоректна локаль, отримана з URL
|
|
23
|
+
|
|
24
|
+
## Опис проблеми
|
|
25
|
+
|
|
26
|
+
Коли ви намагаєтеся отримати параметр locale з URL, ви можете зіткнутися з проблемою, коли значення локалі некоректне:
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
const { locale } = await params;
|
|
30
|
+
console.log(locale); // повертає "about" замість очікуваної локалі
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Рішення
|
|
34
|
+
|
|
35
|
+
### 1. Перевірте структуру файлів
|
|
36
|
+
|
|
37
|
+
Переконайтеся, що шлях у app router вашого Next.js відповідає цій структурі:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
src/app/[locale]/about/page.tsx
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 2. Перевірте конфігурацію middleware
|
|
44
|
+
|
|
45
|
+
Проблема часто виникає, коли middleware відсутній або не спрацьовує. Файл middleware має знаходитись за шляхом:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
src/middleware.ts
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Цей middleware відповідає за переписування маршрутів, коли `prefixDefault` встановлено в `false`. Наприклад, він переписує `/en/about` на `/about`.
|
|
52
|
+
|
|
53
|
+
### 3. Шаблони URL залежно від конфігурації
|
|
54
|
+
|
|
55
|
+
#### Конфігурація за замовчуванням (`prefixDefault: false`, `noPrefix: false`)
|
|
56
|
+
|
|
57
|
+
- Англійська: `/about`
|
|
58
|
+
- Французька: `/fr/about`
|
|
59
|
+
- Іспанська: `/es/about`
|
|
60
|
+
|
|
61
|
+
#### Якщо `prefixDefault: true`
|
|
62
|
+
|
|
63
|
+
- Англійська: `/en/about`
|
|
64
|
+
- Французька: `/fr/about`
|
|
65
|
+
- Іспанська: `/es/about`
|
|
66
|
+
|
|
67
|
+
#### Якщо `noPrefix: true`
|
|
68
|
+
|
|
69
|
+
- Англійська: `/about`
|
|
70
|
+
- Французька: `/about`
|
|
71
|
+
- Іспанська: `/about`
|
|
72
|
+
|
|
73
|
+
Для докладнішої інформації про ці параметри конфігурації перегляньте [Документацію з конфігурації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md).
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-05-20
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Отримую помилку, пов'язану з підпакетами `@intlayer/*`
|
|
5
|
+
description: Виправлення помилки, пов'язаної з підпакетами @intlayer/*.
|
|
6
|
+
keywords:
|
|
7
|
+
- @intlayer/*
|
|
8
|
+
- підпакети
|
|
9
|
+
- intlayer
|
|
10
|
+
slugs:
|
|
11
|
+
- frequent-questions
|
|
12
|
+
- package-version-error
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Отримую помилку, пов'язану з підпакетами `@intlayer/*`
|
|
16
|
+
|
|
17
|
+
Ця проблема зазвичай виникає після оновлення пакетів Intlayer.
|
|
18
|
+
|
|
19
|
+
Приклад повідомлення про помилку:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
Error: Cannot find module '@intlayer/types'
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
TypeError: (0 , __intlayer_config_client.colorize) is not a function
|
|
27
|
+
|
|
28
|
+
at import { colorize } from '@intlayer/config';
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
✖ ERROR No matching export in "node_modules/@intlayer/config/dist/esm/client.mjs" for import "clearModuleCache"
|
|
33
|
+
|
|
34
|
+
node_modules/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs:3:9:
|
|
35
|
+
3 | import { clearModuleCache, configESMxCJSRequire } from "@intlayer/config";
|
|
36
|
+
| ~~~~~~~~~~~~~~~~
|
|
37
|
+
|
|
38
|
+
✖ ERROR No matching export in "node_modules/@intlayer/config/dist/esm/client.mjs" for import "configESMxCJSRequire"
|
|
39
|
+
|
|
40
|
+
node_modules/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs:3:27:
|
|
41
|
+
3 | import { clearModuleCache, configESMxCJSRequire } from "@intlayer/config";
|
|
42
|
+
| ~~~~~~~~~~~~~~~~~~~~
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Причина
|
|
46
|
+
|
|
47
|
+
Базові пакети, такі як `intlayer`, `react-intlayer`, `react-native-intlayer`, `vue-intlayer`, повторно використовують ті самі суб-пакети `@intlayer/config`, `@intlayer/core`, `@intlayer/types`, щоб уникнути дублювання коду.
|
|
48
|
+
|
|
49
|
+
Між двома версіями експорти підпакетів не обов'язково збігаються. Щоб зменшити цю проблему, intlayer прив'язує версії підпакетів до версії головного пакета.
|
|
50
|
+
|
|
51
|
+
> Наприклад: `intlayer@1.0.0` використовує `@intlayer/config@1.0.0`, `@intlayer/core@1.0.0`, `@intlayer/types@1.0.0`
|
|
52
|
+
|
|
53
|
+
> (За винятком `@intlayer/swc`), підпакети `@intlayer/*` не призначені для прямого використання. Тому рекомендується не встановлювати їх безпосередньо.
|
|
54
|
+
|
|
55
|
+
## Вирішення
|
|
56
|
+
|
|
57
|
+
1. Переконайтеся, що версії головного пакета та підпакетів однакові.
|
|
58
|
+
|
|
59
|
+
```json5
|
|
60
|
+
{
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"intlayer": "7.0.1",
|
|
63
|
+
"react-intlayer": "7.0.0", // Неправильна версія, має бути 7.0.1
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"intlayer-editor": "7.0.1",
|
|
67
|
+
},
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
2. Спробуйте видалити lockfile та папку node_modules і перевстановити залежності.
|
|
72
|
+
|
|
73
|
+
Інколи пакетний менеджер зберігає стару версію sub-packages у lockfile або в кеші. Щоб виправити це, можна спробувати видалити lockfile та папку node_modules і перевстановити залежності.
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
rm -rf package-lock.json node_modules
|
|
77
|
+
|
|
78
|
+
npm install # або yarn install або pnpm install або bun pm install
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
3. Перевірте версії локальних залежностей
|
|
82
|
+
|
|
83
|
+
Може статися, що ваш пакетний менеджер зберігає стару версію sub-packages у lockfile або в кеші.
|
|
84
|
+
|
|
85
|
+
Приклад `intlayer@7.0.0` > `@intlayer/config@7.0.0` > `@intlayer/dictionary-entry@6.0.0`.
|
|
86
|
+
|
|
87
|
+
Щоб виявити невідповідність між версіями локальних залежностей і версіями sub-packages, ви можете використати наступну команду:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npm list --depth=3 | grep intlayer
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
yarn list --depth=3 | grep intlayer
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
pnpm list --depth=3 | grep intlayer
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
bun pm ls --depth=3 | grep intlayer
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
> На Windows замініть `| grep intlayer` на `| findstr intlayer` або використайте PowerShell з `Select-String -Pattern "intlayer"`.
|
|
106
|
+
|
|
107
|
+
4. Перевірте глобальну інсталяцію
|
|
108
|
+
|
|
109
|
+
Ми рекомендуємо встановити `intlayer` або `intlayer-cli` глобально, щоб мати доступ до CLI-команд. Якщо глобальна версія відрізняється від локальної версії, пакетний менеджер може обрати невірну версію.
|
|
110
|
+
|
|
111
|
+
**Перевірити, чи пакет встановлено глобально**
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
npm list -g --depth=3 | grep intlayer
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
yarn global list --depth=3 | grep intlayer
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pnpm list -g --depth=3 | grep intlayer
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
bun pm ls -g --depth=3 | grep intlayer
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
> На Windows замініть `| grep intlayer` на `| findstr intlayer` або використовуйте PowerShell з `Select-String -Pattern "intlayer"`.
|
|
130
|
+
|
|
131
|
+
**Виправте потенційні конфлікти глобальних залежностей**
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
npm uninstall -g intlayer intlayer-cli
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
yarn global remove intlayer intlayer-cli
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
pnpm remove -g intlayer intlayer-cli
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
bun pm rm -g intlayer intlayer-cli
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
5. Спробуйте очистити кеш
|
|
150
|
+
|
|
151
|
+
У деяких середовищах, таких як Docker, GitHub Actions або хостинг-платформи на зразок Vercel, може бути задіяний кеш. Спробуйте очистити кеш і повторити встановлення.
|
|
152
|
+
|
|
153
|
+
Ви також можете очистити кеш вашого пакетного менеджера за допомогою наступних команд:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
npm cache clean --force
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
yarn cache clean
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
pnpm cache clean
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
bun pm cache clean
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
6. Спробуйте видалити папку `.intlayer`
|
|
172
|
+
|
|
173
|
+
Intlayer кешує зібрану версію самої себе в папці `.intlayer/cache`.
|
|
174
|
+
|
|
175
|
+
Цей кеш може бути пошкоджений, якщо версія intlayer відрізняється від версії, збереженої в кеші.
|
|
176
|
+
|
|
177
|
+
Ви можете спробувати видалити папку `.intlayer` і повторити збірку.
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
rm -rf .intlayer
|
|
181
|
+
```
|