@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,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-05-20
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Статичний vs динамічний рендеринг з i18n у Next.js
|
|
5
|
+
description: Дізнайтеся, як використовувати статичний та динамічний рендеринг з i18n у Next.js.
|
|
6
|
+
keywords:
|
|
7
|
+
- статичний
|
|
8
|
+
- динамічний
|
|
9
|
+
- рендеринг
|
|
10
|
+
- i18n
|
|
11
|
+
- next.js
|
|
12
|
+
- next-intl
|
|
13
|
+
- intlayer
|
|
14
|
+
- фреймворк
|
|
15
|
+
- middleware
|
|
16
|
+
- конфігурація
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- static-rendering
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Статичний vs динамічний рендеринг з i18n у Next.js
|
|
23
|
+
|
|
24
|
+
## Проблема з **next-intl**
|
|
25
|
+
|
|
26
|
+
- **Що відбувається?**
|
|
27
|
+
Коли ви використовуєте `useTranslations`, `getTranslations`, або будь-який хелпер next-intl _всередині Server Component_ в застосунку з i18n-маршрутизацією (`/en/…`, `/fr/…`), Next.js позначає весь маршрут як **dynamic**. ([Next Intl][1])
|
|
28
|
+
|
|
29
|
+
- **Чому?**
|
|
30
|
+
next-intl визначає поточну локаль з заголовка, доступного лише в запиті (`x-next-intl-locale`) через `headers()`. Оскільки `headers()` — це **динамічний API**, будь-який компонент, який до нього звертається, втрачає статичну оптимізацію. ([Next Intl][1], [Next.js][2])
|
|
31
|
+
|
|
32
|
+
- **Офіційне рішення (boilerplate)**
|
|
33
|
+
1. Експортуйте `generateStaticParams` для кожної підтримуваної локалі.
|
|
34
|
+
2. Викликайте `setRequestLocale(locale)` у **кожному** layout/page _перед_ тим, як викликати `useTranslations`. ([Next Intl][1])
|
|
35
|
+
Це усуває залежність від заголовка, але додає додатковий код для підтримки та використовує нестабільний API у продакшені.
|
|
36
|
+
|
|
37
|
+
## Як **intlayer** обходить проблему
|
|
38
|
+
|
|
39
|
+
**Дизайн-рішення**
|
|
40
|
+
|
|
41
|
+
1. **Тільки параметр маршруту (route-param only)** – локаль береться з сегмента URL `[locale]`, який Next.js вже передає кожній сторінці.
|
|
42
|
+
2. **Бандли на етапі компіляції** – Переклади імпортуються як звичайні ES-модулі, тож вони піддаються tree-shaking і вбудовуються під час збірки.
|
|
43
|
+
3. **Без динамічних API** – `useT()` читає з React context, а не з `headers()` або `cookies()`.
|
|
44
|
+
4. **Жодної додаткової конфігурації** – Як тільки ваші сторінки розміщені під `app/[locale]/`, Next.js автоматично генерує по одному HTML‑файлу на кожну локаль.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-05-20
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Чи можна перекласти шлях URL?
|
|
5
|
+
description: Дізнайтеся, як перекласти шлях URL.
|
|
6
|
+
keywords:
|
|
7
|
+
- array
|
|
8
|
+
- content
|
|
9
|
+
- declaration
|
|
10
|
+
- intlayer
|
|
11
|
+
- middleware
|
|
12
|
+
- proxy
|
|
13
|
+
- rewrite
|
|
14
|
+
- prefix
|
|
15
|
+
- locale
|
|
16
|
+
- url
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- translated-path-url
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Чи можливо перекласти URL наступним чином:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
en -> /product (без префікса) або /en/product (з префіксом)
|
|
26
|
+
fr -> /fr/produit
|
|
27
|
+
es -> /es/producto
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
На жаль, Intlayer не дозволяє перекладати URL так, як зазначено вище. Щоб досягти цього, ви повинні використовувати власний middleware або proxy для перезапису (rewrite) URL.
|
|
31
|
+
|
|
32
|
+
Але ви можете використовувати функцію `getMultilingualUrl`, щоб вставити префікс у URL для заданої локалі.
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { getMultilingualUrl, Locales } from "intlayer";
|
|
36
|
+
|
|
37
|
+
const url = getMultilingualUrl("/product");
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* en -> /product (без префікса) або /en/product (з префіксом)
|
|
41
|
+
* fr -> /fr/product
|
|
42
|
+
* es -> /es/product
|
|
43
|
+
*/
|
|
44
|
+
console.log(url);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Або `getLocalizedUrl`
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
import { getLocalizedUrl, Locales } from "intlayer";
|
|
51
|
+
|
|
52
|
+
const url = getLocalizedUrl("/product", Locales.FRENCH);
|
|
53
|
+
|
|
54
|
+
console.log(url); // виведе: /fr/product
|
|
55
|
+
```
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-05-20
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Невідома команда
|
|
5
|
+
description: Дізнайтеся, як виправити помилку невідомої команди.
|
|
6
|
+
keywords:
|
|
7
|
+
- невідома
|
|
8
|
+
- команда
|
|
9
|
+
- помилка
|
|
10
|
+
- intlayer
|
|
11
|
+
- fill
|
|
12
|
+
- build
|
|
13
|
+
- verbose
|
|
14
|
+
- термінал
|
|
15
|
+
- перезапуск
|
|
16
|
+
- локально
|
|
17
|
+
slugs:
|
|
18
|
+
- frequent-questions
|
|
19
|
+
- unknown-command
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# помилка: невідома команда fill / build / тощо
|
|
23
|
+
|
|
24
|
+
Якщо `npx intlayer fill --verbose` видає:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
error: unknown command 'fill'
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
але ви впевнені, що команда `fill` _повинна_ існувати, ось кроки для вирішення:
|
|
31
|
+
|
|
32
|
+
## 1. **Переконайтеся, що ви використовуєте найновішу версію**
|
|
33
|
+
|
|
34
|
+
Запустіть:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx intlayer --version # поточна локальна версія intlayer
|
|
38
|
+
npx intlayer@latest --version # остання доступна версія intlayer
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Це змушує `npx` завантажити найновішу версію. Потім спробуйте ще раз:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx intlayer@latest build --verbose
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 2. **Перевірте, чи команда зареєстрована**
|
|
48
|
+
|
|
49
|
+
Ви можете перевірити за допомогою:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npx intlayer --help # надає інформацію про команди
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Перевірте, чи з'являється команда у списку команд.
|
|
56
|
+
|
|
57
|
+
Перейдіть у репозиторій та підтвердьте, що ваша команда експортується й зареєстрована в точці входу CLI. Intlayer використовує `commander` як фреймворк.
|
|
58
|
+
|
|
59
|
+
Код, що стосується CLI:
|
|
60
|
+
https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/cli/src/cli.ts
|
|
61
|
+
|
|
62
|
+
## 4. **Перезапустіть термінал**
|
|
63
|
+
|
|
64
|
+
Іноді потрібно перезапустити термінал, щоб він розпізнав нові команди.
|
|
65
|
+
|
|
66
|
+
## 5. **Якщо ви розробляєте `intlayer`, перебудуйте та підключіть його**
|
|
67
|
+
|
|
68
|
+
Якщо ви розробляєте `intlayer` локально:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# У директорії intlayer
|
|
72
|
+
npm install
|
|
73
|
+
npm run build
|
|
74
|
+
npm link
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Потім в іншому терміналі:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
intlayer fill --verbose
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Це використовує локальну версію, над якою ви працюєте.
|
|
84
|
+
|
|
85
|
+
## 6. **Очистіть кеш npx (якщо ви застрягли на старішій версії)**
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npx clear-npx-cache
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Або вручну видаліть кешовані пакети intlayer:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
rm -rf ~/.npm/_npx
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Перевірте еквівалентні команди, якщо ви використовуєте pnpm, yarn, bun або інший пакетний менеджер
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-11
|
|
3
|
+
updatedAt: 2026-01-11
|
|
4
|
+
title: `vite-env-only` & Intlayer – lỗi từ chối `node:fs` dương tính giả
|
|
5
|
+
description: Tại sao vite-env-only báo một import `node:fs` bị từ chối khi dùng Intlayer + React-Router + Vite và phải làm gì.
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- import bị từ chối
|
|
13
|
+
- alias
|
|
14
|
+
- bundle phía client
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vite-env-only từ chối `node:fs` với Intlayer
|
|
21
|
+
|
|
22
|
+
Nếu bạn đã sử dụng plugin **vite-env-only** (như được đề cập trong các gợi ý React-Router v7 cũ hơn) và thấy:
|
|
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
|
+
…mặc dù **không có `node:fs` trong bundle phía client của bạn**, đây là một **false positive (dương tính giả)**.
|
|
35
|
+
|
|
36
|
+
## Nguyên nhân gây ra
|
|
37
|
+
|
|
38
|
+
`vite-env-only` chạy một kiểm tra dựa trên Babel **rất sớm trong quá trình phân giải graph của Vite**, _trước khi_:
|
|
39
|
+
|
|
40
|
+
- aliasing (bao gồm ánh xạ browser vs node của Intlayer),
|
|
41
|
+
- dead-code elimination,
|
|
42
|
+
- SSR vs client resolution,
|
|
43
|
+
- các module ảo như của React-Router.
|
|
44
|
+
|
|
45
|
+
Các package của Intlayer chứa mã có thể chạy trên cả Node và trình duyệt. Ở một giai đoạn _trung gian_, một builtin của Node như `node:fs` có thể xuất hiện trong graph **trước khi** Vite loại bỏ nó khỏi build phía client. `vite-env-only` nhìn thấy điều đó và báo lỗi ngay lập tức, mặc dù bundle cuối cùng không chứa nó.
|
|
46
|
+
|
|
47
|
+
## React-Router và Server Modules
|
|
48
|
+
|
|
49
|
+
Trong tài liệu của React-Router về **server module conventions**
|
|
50
|
+
(https://reactrouter.com/api/framework-conventions/server-modules), nhóm **rõ ràng khuyến nghị sử dụng `vite-env-only`** để ngăn các import chỉ dành cho server bị rò rỉ vào bundle phía client.
|
|
51
|
+
|
|
52
|
+
Tuy nhiên, những quy ước đó dựa vào aliasing của Vite, conditional exports và tree-shaking để loại bỏ mã chỉ dành cho server. Trong khi aliasing và conditional exports đã được áp dụng, một số tiện ích dựa trên Node vẫn còn xuất hiện trong các package như `@intlayer/core` ở giai đoạn đó (mặc dù chúng không bao giờ được import vào client). Vì tree-shaking chưa chạy, các hàm đó vẫn bị Babel phân tích cú pháp, và `vite-env-only` phát hiện các import `node:` của chúng và báo dương tính giả — mặc dù chúng đã được loại bỏ chính xác khỏi bundle cuối cùng của client.
|
|
53
|
+
|
|
54
|
+
## Cách khắc phục / giải pháp tạm thời
|
|
55
|
+
|
|
56
|
+
### Khuyến nghị: Gỡ bỏ `vite-env-only`
|
|
57
|
+
|
|
58
|
+
Chỉ cần gỡ plugin. Trong nhiều trường hợp bạn không cần nó — Vite đã xử lý việc phân biệt imports client và server thông qua cơ chế resolution của nó.
|
|
59
|
+
|
|
60
|
+
Điều này sửa lỗi báo sai `node:fs` mà không cần thay đổi Intlayer.
|
|
61
|
+
|
|
62
|
+
### Thay vào đó, kiểm tra bản build cuối cùng
|
|
63
|
+
|
|
64
|
+
Nếu bạn vẫn muốn đảm bảo không có built-in của Node trong client, hãy làm điều đó **sau khi build**, ví dụ:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm build
|
|
68
|
+
grep -R "node:" dist/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Nếu không có kết quả, các bundle client của bạn sạch.
|
|
72
|
+
|
|
73
|
+
## Tóm tắt
|
|
74
|
+
|
|
75
|
+
- `vite-env-only` có thể báo lỗi về `node:fs` vì nó kiểm tra quá sớm.
|
|
76
|
+
- Vite + Intlayer + quy ước server modules của React-Router thường loại bỏ tham chiếu chỉ dành cho server một cách chính xác.
|
|
77
|
+
- Gỡ plugin hoặc kiểm tra _kết quả cuối cùng_ thường là giải pháp tốt nhất.
|
|
@@ -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: 为什么在 Intlayer + React-Router + Vite 的组合中,vite-env-only 报告 `node:fs` 导入被拒绝,以及应如何处理。
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- 导入被拒绝
|
|
13
|
+
- alias
|
|
14
|
+
- 客户端 bundle
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vite-env-only 在 Intlayer 中拒绝 `node:fs` 导入
|
|
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` 在 Vite 的依赖图解析过程中**较早运行一个基于 Babel 的检查**,_在以下步骤之前_:
|
|
39
|
+
|
|
40
|
+
- 别名重定向(包括 Intlayer 的 browser 与 node 映射),
|
|
41
|
+
- 死代码消除,
|
|
42
|
+
- SSR 与客户端解析,
|
|
43
|
+
- 像 React-Router 的虚拟模块。
|
|
44
|
+
|
|
45
|
+
Intlayer 的包包含可以在 Node 与浏览器上运行的代码。在一个 _中间_ 阶段,像 `node:fs` 这样的 Node 内置模块可能会在依赖图中出现,**在** Vite 将其从客户端构建中移除之前。`vite-env-only` 会看到该情况并立即报错,即使最终的 bundle 并不包含它。
|
|
46
|
+
|
|
47
|
+
## React-Router 与服务端模块
|
|
48
|
+
|
|
49
|
+
在 React-Router 关于 **服务端模块约定** 的文档中
|
|
50
|
+
(https://reactrouter.com/api/framework-conventions/server-modules),团队**明确建议使用 `vite-env-only`\*\*以防止仅用于服务器的导入泄漏到客户端包中。
|
|
51
|
+
|
|
52
|
+
然而,这些约定依赖于 Vite 的 aliasing、conditional exports 和 tree-shaking 来移除仅用于服务器的代码。尽管 aliasing 和 conditional exports 已经被应用,但在该阶段某些基于 Node 的实用工具仍然存在于像 `@intlayer/core` 这样的包中(即便它们从未在客户端被导入)。因为 tree-shaking 尚未运行,那些函数仍会被 Babel 解析,`vite-env-only` 检测到它们的 `node:` 导入并报出误报 —— 即便这些导入在最终的客户端包中已被正确清除。
|
|
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 + React-Router 的 server modules 约定通常会正确移除仅用于服务器的引用。
|
|
77
|
+
- 移除该插件或验证 _最终输出_ 通常是最佳解决方案。
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-04-18
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Повідомлення про конфіденційність Intlayer
|
|
5
|
+
description: Дізнайтеся, як Intlayer обробляє інформацію, зібрану через наш вебсайт та CMS. Дотримуйтеся документації, щоб зрозуміти різні формати та сценарії використання.
|
|
6
|
+
keywords:
|
|
7
|
+
- Інтернаціоналізація
|
|
8
|
+
- Документація
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Конфіденційність
|
|
11
|
+
- Повідомлення
|
|
12
|
+
- Файли cookie
|
|
13
|
+
- Відстеження
|
|
14
|
+
- Аналітика
|
|
15
|
+
- Google Analytics
|
|
16
|
+
- Meta (Facebook) Pixel
|
|
17
|
+
- Аутентифікація
|
|
18
|
+
- Дані користувача
|
|
19
|
+
slugs:
|
|
20
|
+
- privacy-notice
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Повідомлення про конфіденційність Intlayer
|
|
24
|
+
|
|
25
|
+
## Вступ
|
|
26
|
+
|
|
27
|
+
У Intlayer ми серйозно ставимося до конфіденційності. Це повідомлення пояснює, як ми обробляємо інформацію, що збирається через наш вебсайт та CMS.
|
|
28
|
+
|
|
29
|
+
## Контакти
|
|
30
|
+
|
|
31
|
+
Якщо у вас є питання чи занепокоєння щодо конфіденційності, будь ласка, зв'яжіться з нами за адресою: [contact@intlayer.org](mailto:contact@intlayer.org).
|
|
32
|
+
|
|
33
|
+
## Використання файлів cookie та технологій відстеження
|
|
34
|
+
|
|
35
|
+
Ми використовуємо **Google Analytics** та **Meta (Facebook) Pixel** для аналізу використання нашого вебсайту та покращення послуг. Ці інструменти генерують статистику та іншу інформацію про вебсайт за допомогою файлів cookie, які зберігаються на пристроях користувачів.
|
|
36
|
+
|
|
37
|
+
Для отримання додаткової інформації:
|
|
38
|
+
|
|
39
|
+
- [Політика конфіденційності Google](https://policies.google.com/privacy)
|
|
40
|
+
- [Політика конфіденційності Meta](https://www.facebook.com/privacy/policy)
|
|
41
|
+
|
|
42
|
+
## Аутентифікація та дані користувачів
|
|
43
|
+
|
|
44
|
+
Доступ до CMS Intlayer вимагає аутентифікації користувача. Ми пропонуємо автентифікацію за допомогою електронної пошти та пароля, а також вхід через сторонніх провайдерів — **Google** та **GitHub**.
|
|
45
|
+
|
|
46
|
+
Під час аутентифікації ми збираємо:
|
|
47
|
+
|
|
48
|
+
- Електронну адресу
|
|
49
|
+
- Відображуване ім'я (або обране ім'я)
|
|
50
|
+
|
|
51
|
+
Користувачі також можуть отримувати доступ до CMS за допомогою access tokens, пов'язаних із їхнім обліковим записом. Ці токени прив'язані до тих самих даних аутентифікації.
|
|
52
|
+
|
|
53
|
+
## Зберігання даних та безпека
|
|
54
|
+
|
|
55
|
+
Дані аутентифікації користувачів зберігаються в **MongoDB базі даних**, розміщеній на **cloud.mongodb.com**:
|
|
56
|
+
|
|
57
|
+
- **Регіон:** AWS / Oregon (us-west-2)
|
|
58
|
+
- **Тип:** Replica Set (3 nodes)
|
|
59
|
+
- **Безпека паролів:** Усі паролі хешуються відповідно до загальноприйнятих практик галузі.
|
|
60
|
+
|
|
61
|
+
Ми не зберігаємо жодних зайвих персональних даних понад ті, що необхідні для аутентифікації та безпечного доступу до CMS.
|
|
62
|
+
|
|
63
|
+
## Передача даних третім сторонам
|
|
64
|
+
|
|
65
|
+
Ми **не** продаємо та не передаємо ваші персональні дані третім сторонам, за винятком випадків, коли це необхідно для аналітики (Google Analytics, Facebook Pixel) або як частина процесу автентифікації (вхід через Google або GitHub).
|
|
66
|
+
|
|
67
|
+
## Права користувачів
|
|
68
|
+
|
|
69
|
+
Як користувач, ви маєте право:
|
|
70
|
+
|
|
71
|
+
- Отримувати доступ до персональних даних, які ми зберігаємо про вас
|
|
72
|
+
- Запитувати виправлення або видалення ваших даних
|
|
73
|
+
- Відкликати доступ або видалити свій акаунт
|
|
74
|
+
|
|
75
|
+
Для будь-яких запитів щодо ваших даних зв'яжіться з нами за адресою [contact@intlayer.org](mailto:contact@intlayer.org).
|
|
76
|
+
|
|
77
|
+
## Зміни до цього повідомлення
|
|
78
|
+
|
|
79
|
+
Ми можемо час від часу оновлювати це повідомлення про конфіденційність. Користувачам рекомендується регулярно перевіряти цю сторінку, щоб бути в курсі змін.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
Повідомте, якщо ви хочете більш формальний тон, додати згадки про GDPR/CCPA або адаптувати це для юридичної сторінки вашого сайту.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-04-18
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Умови використання Intlayer
|
|
5
|
+
description: Дізнайтеся, як Intlayer обробляє інформацію, зібрану через наш вебсайт і CMS. Дотримуйтесь документації, щоб зрозуміти різні формати та варіанти використання.
|
|
6
|
+
keywords:
|
|
7
|
+
- Інтернаціоналізація
|
|
8
|
+
- Документація
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Умови використання
|
|
11
|
+
- Послуга
|
|
12
|
+
- Використання
|
|
13
|
+
- Ліцензія
|
|
14
|
+
- Відповідальність
|
|
15
|
+
- Конфіденційність
|
|
16
|
+
- Внески
|
|
17
|
+
- Авторство
|
|
18
|
+
- Зміни умов
|
|
19
|
+
slugs:
|
|
20
|
+
- terms-of-service
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Умови використання Intlayer
|
|
24
|
+
|
|
25
|
+
## 1. Прийняття умов
|
|
26
|
+
|
|
27
|
+
Використовуючи Intlayer, ви погоджуєтеся дотримуватися цих умов використання. Якщо ви не приймаєте ці умови, будь ласка, не користуйтеся цим інструментом.
|
|
28
|
+
|
|
29
|
+
## 2. Ліцензія
|
|
30
|
+
|
|
31
|
+
Intlayer поширюється під **ліцензією Apache 2.0**, яка дозволяє використання, модифікацію та розповсюдження коду як для open-source, так і для комерційних проєктів. Користувачам дозволяється змінювати вихідний код і надсилати внески через pull requests згідно з вказівками, наведеними в нашому [керівництві з внесків](https://github.com/aymericzip/intlayer/blob/main/CONTRIBUTING.md). Крадіжка коду для комерційного використання суворо заборонена.
|
|
32
|
+
|
|
33
|
+
## 3. Комерційне використання
|
|
34
|
+
|
|
35
|
+
Вам дозволено використовувати Intlayer у комерційних проєктах. Проте повторне використання коду для створення прямих конкурентних інструментів на базі Intlayer без суттєвої трансформації або значного додавання вартості заборонено.
|
|
36
|
+
|
|
37
|
+
## 4. Відповідальність
|
|
38
|
+
|
|
39
|
+
Мейнтейнери Intlayer прагнуть виправляти помилки та проблеми безпеки одразу після їх виявлення. Проте вони не несуть відповідальності за збитки, що можуть виникнути внаслідок таких проблем в інфраструктурах користувачів. Ми закликаємо користувачів повідомляти про проблеми через нашу [систему відстеження проблем](https://github.com/aymericzip/intlayer/issues).
|
|
40
|
+
|
|
41
|
+
## 5. Конфіденційність
|
|
42
|
+
|
|
43
|
+
Intlayer не збирає і не зберігає жодних персональних даних користувачів.
|
|
44
|
+
|
|
45
|
+
## 6. Внески
|
|
46
|
+
|
|
47
|
+
Користувачів заохочують робити внесок у Intlayer, дотримуючись інструкцій, наведених у нашому contribution guide. Будь-який надісланий код повинен відповідати встановленим стандартам якості та буде переглянутий мейнтейнерами перед інтеграцією.
|
|
48
|
+
|
|
49
|
+
## 7. Визнання авторства
|
|
50
|
+
|
|
51
|
+
Будь-який інструмент, розроблений для розширення або використання коду Intlayer, повинен чітко вказувати Intlayer як основу цього коду. Це зазначення має бути видимим у вихідному коді, а також у будь-якій документації для користувачів або рекламних матеріалах.
|
|
52
|
+
|
|
53
|
+
## 8. Зміни умов
|
|
54
|
+
|
|
55
|
+
Ці умови використання можуть бути змінені в будь-який момент. Користувачів буде повідомлено про будь-які значні зміни умов використання, і вони повинні прийняти ці зміни, щоб продовжувати користуватися Intlayer.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intlayer/docs",
|
|
3
|
-
"version": "7.5.
|
|
3
|
+
"version": "7.5.13",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Intlayer documentation",
|
|
6
6
|
"keywords": [
|
|
@@ -73,13 +73,13 @@
|
|
|
73
73
|
"watch": "webpack --config ./webpack.config.ts --watch"
|
|
74
74
|
},
|
|
75
75
|
"dependencies": {
|
|
76
|
-
"@intlayer/config": "7.5.
|
|
77
|
-
"@intlayer/core": "7.5.
|
|
78
|
-
"@intlayer/types": "7.5.
|
|
76
|
+
"@intlayer/config": "7.5.13",
|
|
77
|
+
"@intlayer/core": "7.5.13",
|
|
78
|
+
"@intlayer/types": "7.5.13"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@intlayer/api": "7.5.
|
|
82
|
-
"@intlayer/cli": "7.5.
|
|
81
|
+
"@intlayer/api": "7.5.13",
|
|
82
|
+
"@intlayer/cli": "7.5.13",
|
|
83
83
|
"@types/node": "25.0.3",
|
|
84
84
|
"@utils/ts-config": "1.0.4",
|
|
85
85
|
"@utils/ts-config-types": "1.0.4",
|