@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,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-11-25
|
|
3
|
+
updatedAt: 2025-11-25
|
|
4
|
+
title: Оптимізація розміру бандла та продуктивності i18n
|
|
5
|
+
description: Зменшіть розмір бандла застосунку, оптимізуючи контент інтернаціоналізації (i18n). Дізнайтесь, як використовувати tree shaking та lazy loading для словників з Intlayer.
|
|
6
|
+
keywords:
|
|
7
|
+
- Оптимізація bundle
|
|
8
|
+
- Автоматизація контенту
|
|
9
|
+
- Динамічний контент
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Next.js
|
|
12
|
+
- JavaScript
|
|
13
|
+
- React
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- concept
|
|
17
|
+
- bundle-optimization
|
|
18
|
+
history:
|
|
19
|
+
- version: 6.0.0
|
|
20
|
+
date: 2025-11-25
|
|
21
|
+
changes: Init history
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Оптимізація розміру бандла та продуктивності i18n
|
|
25
|
+
|
|
26
|
+
Одна з найпоширеніших проблем традиційних i18n-рішень, що базуються на JSON-файлах — це керування розміром контенту. Якщо розробники не розділяють контент вручну по неймспейсах, користувачі часто в кінцевому підсумку завантажують переклади для всіх сторінок і, можливо, для всіх мов лише для перегляду однієї сторінки.
|
|
27
|
+
|
|
28
|
+
Наприклад, застосунок з 10 сторінками, перекладеними на 10 мов, може призвести до того, що користувач завантажує контент 100 сторінок, хоча йому потрібна лише **одна** (поточна сторінка поточною мовою). Це призводить до марної витрати трафіку та повільнішого завантаження.
|
|
29
|
+
|
|
30
|
+
> Щоб виявити це, ви можете використовувати аналізатор бандлу, такий як `rollup-plugin-visualizer` (vite), `@next/bundle-analyzer` (next.js) або `webpack-bundle-analyzer` (React CRA / Angular / тощо).
|
|
31
|
+
|
|
32
|
+
**Intlayer вирішує цю проблему через оптимізацію під час збірки.** Він аналізує ваш код, щоб визначити, які словники фактично використовуються для кожного компонента, і повторно вбудовує в бандл лише необхідний вміст.
|
|
33
|
+
|
|
34
|
+
## Зміст
|
|
35
|
+
|
|
36
|
+
<TOC />
|
|
37
|
+
|
|
38
|
+
## Як це працює
|
|
39
|
+
|
|
40
|
+
Intlayer використовує **підхід на рівні компонентів**. На відміну від глобальних JSON-файлів, ваш вміст визначається поруч із компонентами або всередині них. Під час процесу збірки Intlayer:
|
|
41
|
+
|
|
42
|
+
1. **Аналізує** ваш код, щоб знайти виклики `useIntlayer`.
|
|
43
|
+
2. **Формує** відповідний вміст словників.
|
|
44
|
+
3. **Замінює** виклик `useIntlayer` на оптимізований код відповідно до вашої конфігурації.
|
|
45
|
+
|
|
46
|
+
Це гарантує, що:
|
|
47
|
+
|
|
48
|
+
- Якщо компонент не імпортується, його вміст не включається до бандла (видалення мертвого коду — Dead Code Elimination).
|
|
49
|
+
- Якщо компонент завантажується lazy-loaded, його вміст також завантажується lazy-loaded.
|
|
50
|
+
|
|
51
|
+
## Налаштування за платформою
|
|
52
|
+
|
|
53
|
+
### Next.js
|
|
54
|
+
|
|
55
|
+
Next.js вимагає плагін `@intlayer/swc` для обробки трансформації, оскільки Next.js використовує SWC для збірок.
|
|
56
|
+
|
|
57
|
+
> Цей плагін встановлено за замовчуванням, оскільки SWC-плагіни досі експериментальні для Next.js. Це може змінитися в майбутньому.
|
|
58
|
+
|
|
59
|
+
### Vite
|
|
60
|
+
|
|
61
|
+
Vite використовує плагін `@intlayer/babel`, який включений як залежність `vite-intlayer`. Оптимізація увімкнена за замовчуванням.
|
|
62
|
+
|
|
63
|
+
### Webpack
|
|
64
|
+
|
|
65
|
+
Щоб увімкнути оптимізацію бандла з Intlayer на Webpack, потрібно встановити та налаштувати відповідний плагін Babel (`@intlayer/babel`) або SWC (`@intlayer/swc`).
|
|
66
|
+
|
|
67
|
+
### Expo / Lynx
|
|
68
|
+
|
|
69
|
+
Оптимізація бандла **ще недоступна** для цієї платформи. Підтримка буде додана в майбутньому релізі.
|
|
70
|
+
|
|
71
|
+
## Конфігурація
|
|
72
|
+
|
|
73
|
+
Ви можете контролювати, як Intlayer оптимізує ваш бандл через властивість `build` у файлі `intlayer.config.ts`.
|
|
74
|
+
|
|
75
|
+
```typescript fileName="intlayer.config.ts"
|
|
76
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
77
|
+
|
|
78
|
+
const config: IntlayerConfig = {
|
|
79
|
+
internationalization: {
|
|
80
|
+
locales: [Locales.ENGLISH, Locales.FRENCH],
|
|
81
|
+
defaultLocale: Locales.ENGLISH,
|
|
82
|
+
},
|
|
83
|
+
build: {
|
|
84
|
+
optimize: true,
|
|
85
|
+
importMode: "static", // або 'dynamic'
|
|
86
|
+
traversePattern: ["**/*.{js,ts,mjs,cjs,jsx,tsx}", "!**/node_modules/**"],
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export default config;
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
> У більшості випадків рекомендовано залишати опцію `optimize` за замовчуванням.
|
|
94
|
+
|
|
95
|
+
> Див. документацію з конфігурації для більш детальної інформації: [Конфігурація](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md)
|
|
96
|
+
|
|
97
|
+
### Параметри збірки
|
|
98
|
+
|
|
99
|
+
Наступні параметри доступні в об'єкті конфігурації `build`:
|
|
100
|
+
|
|
101
|
+
| Властивість | Тип | Значення за замовчуванням | Опис |
|
|
102
|
+
| :-------------------- | :------------------------------ | :------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
103
|
+
| **`optimize`** | `boolean` | `undefined` | Керує тим, чи увімкнена оптимізація під час збірки. Якщо `true`, Intlayer замінює виклики словників на оптимізовані інжекти. Якщо `false`, оптимізація вимкнена. Рекомендовано встановлювати `true` у production. |
|
|
104
|
+
| **`importMode`** | `'static' , 'dynamic' , 'live'` | `'static'` | Визначає, як завантажуються словники (див. деталі нижче). |
|
|
105
|
+
| **`traversePattern`** | `string[]` | `['**/*.{js,ts,jsx,tsx}', ...]` | Glob-шаблони, що визначають, які файли Intlayer має сканувати для оптимізації. Використовуйте це, щоб виключати несуміжні файли та прискорити збірку. |
|
|
106
|
+
| **`outputFormat`** | `'esm', 'cjs'` | `'esm', 'cjs'` | Керує форматом згенерованих словників. |
|
|
107
|
+
|
|
108
|
+
## Режими імпорту
|
|
109
|
+
|
|
110
|
+
Налаштування `importMode` визначає, як вміст словника вставляється у ваш компонент.
|
|
111
|
+
|
|
112
|
+
### 1. Статичний режим (`default`)
|
|
113
|
+
|
|
114
|
+
У статичному режимі Intlayer замінює `useIntlayer` на `useDictionary` і вбудовує словник безпосередньо в JavaScript-бандл.
|
|
115
|
+
|
|
116
|
+
- **Переваги:** Миттєвий рендеринг (синхронно), відсутність додаткових мережевих запитів під час гідратації.
|
|
117
|
+
- **Недоліки:** Бандл містить переклади для **усіх** доступних мов для цього конкретного компонента.
|
|
118
|
+
- **Найкраще для:** односторінкових додатків (SPA).
|
|
119
|
+
|
|
120
|
+
**Приклад трансформованого коду:**
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
// Ваш код
|
|
124
|
+
const content = useIntlayer("my-key");
|
|
125
|
+
|
|
126
|
+
// Оптимізований код (Статичний)
|
|
127
|
+
const content = useDictionary({
|
|
128
|
+
key: "my-key",
|
|
129
|
+
content: {
|
|
130
|
+
nodeType: "translation",
|
|
131
|
+
translation: {
|
|
132
|
+
uk: "Мій заголовок",
|
|
133
|
+
en: "My title",
|
|
134
|
+
fr: "Mon titre",
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 2. Динамічний режим
|
|
141
|
+
|
|
142
|
+
У динамічному режимі Intlayer замінює `useIntlayer` на `useDictionaryAsync`. Це використовує `import()` (механізм, схожий на Suspense) для лінивого підвантаження саме JSON для поточної локалі.
|
|
143
|
+
|
|
144
|
+
- **Плюси:** **Tree-shaking на рівні локалі.** Користувач, який переглядає англійську версію, завантажить _лише_ англійський словник. Французький словник ніколи не завантажується.
|
|
145
|
+
- **Мінуси:** Під час гідратації ініціюється мережевий запит (завантаження ресурсу) для кожного компонента.
|
|
146
|
+
- **Кращий вибір для:** Великих текстових блоків, статей або застосунків з підтримкою багатьох мов, де розмір бандла критично важливий.
|
|
147
|
+
|
|
148
|
+
**Приклад трансформованого коду:**
|
|
149
|
+
|
|
150
|
+
```tsx
|
|
151
|
+
// Ваш код
|
|
152
|
+
const content = useIntlayer("my-key");
|
|
153
|
+
|
|
154
|
+
// Оптимізований код (Динамічний)
|
|
155
|
+
const content = useDictionaryAsync({
|
|
156
|
+
en: () =>
|
|
157
|
+
import(".intlayer/dynamic_dictionary/my-key/en.json").then(
|
|
158
|
+
(mod) => mod.default
|
|
159
|
+
),
|
|
160
|
+
fr: () =>
|
|
161
|
+
import(".intlayer/dynamic_dictionary/my-key/fr.json").then(
|
|
162
|
+
(mod) => mod.default
|
|
163
|
+
),
|
|
164
|
+
});
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
> Коли ви використовуєте `importMode: 'dynamic'`, якщо на одній сторінці 100 компонентів використовують `useIntlayer`, браузер спробує виконати 100 окремих запитів. Щоб уникнути цього «водоспаду» запитів, групуйте контент у меншу кількість `.content` файлів (наприклад, по одному словнику на секцію сторінки), замість одного файлу на кожен атом-компонент.
|
|
168
|
+
|
|
169
|
+
> Наразі `importMode: 'dynamic'` не повністю підтримується для Vue та Svelte. Рекомендується використовувати `importMode: 'static'` для цих фреймворків до наступних оновлень.
|
|
170
|
+
|
|
171
|
+
### 3. Живий режим
|
|
172
|
+
|
|
173
|
+
Працює аналогічно динамічному режиму, але спочатку намагається отримати словники з Intlayer Live Sync API. Якщо виклик API не вдасться або вміст не позначено для живих оновлень, виконується відкат до динамічного імпорту.
|
|
174
|
+
|
|
175
|
+
> Див. документацію CMS для детальнішої інформації: [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md)
|
|
176
|
+
|
|
177
|
+
## Підсумок: Статичний vs Динамічний
|
|
178
|
+
|
|
179
|
+
| Особливість | Статичний режим | Динамічний режим |
|
|
180
|
+
| :------------------------- | :---------------------------------------- | :---------------------------------------------- |
|
|
181
|
+
| **Розмір JS-бандла** | Більший (включає всі мови для компонента) | Найменший (тільки код, без контенту) |
|
|
182
|
+
| **Початкове завантаження** | Миттєво (вміст у bundle) | Невелика затримка (завантажує JSON) |
|
|
183
|
+
| **Мережеві запити** | 0 додаткових запитів | 1 запит на словник |
|
|
184
|
+
| **Tree Shaking** | На рівні компонентів | На рівні компонентів + на рівні локалі |
|
|
185
|
+
| **Найкраще використання** | UI Components, невеликі додатки | Сторінки з великою кількістю тексту, багато мов |
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-08-11
|
|
3
|
+
updatedAt: 2025-11-22
|
|
4
|
+
title: Побудова словників
|
|
5
|
+
description: Дізнайтеся, як побудувати словники Intlayer зі файлів декларації контенту.
|
|
6
|
+
keywords:
|
|
7
|
+
- Build
|
|
8
|
+
- Dictionaries
|
|
9
|
+
- CLI
|
|
10
|
+
- Intlayer
|
|
11
|
+
slugs:
|
|
12
|
+
- doc
|
|
13
|
+
- concept
|
|
14
|
+
- cli
|
|
15
|
+
- build
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Побудова словників
|
|
19
|
+
|
|
20
|
+
Щоб побудувати ваші словники, ви можете виконати команди:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx intlayer build
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
або в режимі відстеження
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx intlayer build --watch
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Ця команда за замовчуванням знайде ваші файли декларації контенту за шляхом `./src/**/*.content.{ts|js|mjs|cjs|json|tsx|jsx}` і побудує словники в директорії `.intlayer`.
|
|
33
|
+
|
|
34
|
+
## Аліаси:
|
|
35
|
+
|
|
36
|
+
- `npx intlayer dictionaries build`
|
|
37
|
+
- `npx intlayer dictionary build`
|
|
38
|
+
- `npx intlayer dic build`
|
|
39
|
+
|
|
40
|
+
## Аргументи:
|
|
41
|
+
|
|
42
|
+
- **`--base-dir`**: Вказати базовий каталог проєкту. Щоб знайти конфігурацію intlayer, команда шукатиме файл `intlayer.config.{ts,js,json,cjs,mjs}` у базовому каталозі.
|
|
43
|
+
|
|
44
|
+
> Приклад: `npx intlayer build --base-dir ./src`
|
|
45
|
+
|
|
46
|
+
- **`--env`**: Вказати середовище (наприклад, `development`, `production`). Корисно, якщо ви використовуєте змінні середовища в файлі конфігурації intlayer.
|
|
47
|
+
|
|
48
|
+
> Приклад: `npx intlayer build --env production`
|
|
49
|
+
|
|
50
|
+
- **`--env-file`**: Вказати кастомний файл середовища, звідки завантажувати змінні. Корисно, якщо ви використовуєте змінні середовища в файлі конфігурації intlayer.
|
|
51
|
+
|
|
52
|
+
> Приклад: `npx intlayer build --env-file .env.production.local`
|
|
53
|
+
|
|
54
|
+
- **`--with`**: Запустити команду паралельно зі збіркою.
|
|
55
|
+
|
|
56
|
+
> Приклад: `npx intlayer build --with "next dev --turbopack"`
|
|
57
|
+
|
|
58
|
+
- **`--skip-prepare`**: Пропустити крок підготовки.
|
|
59
|
+
|
|
60
|
+
> Приклад: `npx intlayer build --skip-prepare`
|
|
61
|
+
|
|
62
|
+
- **`--no-cache`**: Вимкнути кеш.
|
|
63
|
+
|
|
64
|
+
> Приклад: `npx intlayer build --no-cache`
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-06
|
|
3
|
+
updatedAt: 2026-01-06
|
|
4
|
+
title: Команда CI
|
|
5
|
+
description: Дізнайтеся, як використовувати команду Intlayer CI для запуску команд Intlayer з автоматично підставленими обліковими даними у CI/CD пайплайнах та монорепозиторіях.
|
|
6
|
+
keywords:
|
|
7
|
+
- CI
|
|
8
|
+
- CI/CD
|
|
9
|
+
- Automation
|
|
10
|
+
- Monorepo
|
|
11
|
+
- Credentials
|
|
12
|
+
- CLI
|
|
13
|
+
- Intlayer
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- concept
|
|
17
|
+
- cli
|
|
18
|
+
- ci
|
|
19
|
+
history:
|
|
20
|
+
- version: 7.5.11
|
|
21
|
+
date: 2026-01-06
|
|
22
|
+
changes: Додано команду CI
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Команда CI
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx intlayer ci <command...>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Команда CI призначена для автоматизації та CI/CD-пайплайнів. Вона автоматично підставляє облікові дані зі змінної оточення `INTLAYER_PROJECT_CREDENTIALS` і може виконувати команди Intlayer для кількох проєктів у монорепозиторії.
|
|
32
|
+
|
|
33
|
+
## Як це працює
|
|
34
|
+
|
|
35
|
+
Команда CI працює в двох режимах:
|
|
36
|
+
|
|
37
|
+
1. **Режим одного проєкту**: Якщо поточний робочий каталог відповідає одному зі шляхів проєктів у `INTLAYER_PROJECT_CREDENTIALS`, команда запускається лише для цього конкретного проєкту.
|
|
38
|
+
|
|
39
|
+
2. **Режим ітерації**: Якщо контекст конкретного проєкту не виявлено, вона перебирає всі налаштовані проєкти й виконує команду для кожного з них.
|
|
40
|
+
|
|
41
|
+
## Змінна середовища
|
|
42
|
+
|
|
43
|
+
Команда вимагає встановленої змінної середовища `INTLAYER_PROJECT_CREDENTIALS`. Ця змінна повинна містити JSON-обʼєкт, який відображає шляхи проєктів на їхні облікові дані:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"packages/app": {
|
|
48
|
+
"clientId": "your-client-id-1",
|
|
49
|
+
"clientSecret": "your-client-secret-1"
|
|
50
|
+
},
|
|
51
|
+
"packages/admin": {
|
|
52
|
+
"clientId": "your-client-id-2",
|
|
53
|
+
"clientSecret": "your-client-secret-2"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Визначення менеджера пакетів
|
|
59
|
+
|
|
60
|
+
Команда CI автоматично визначає, який package manager використовується (npm, yarn, pnpm або bun) на основі змінної середовища `npm_config_user_agent` і використовує відповідну команду для запуску Intlayer.
|
|
61
|
+
|
|
62
|
+
## Аргументи
|
|
63
|
+
|
|
64
|
+
- **`<command...>`**: Команда Intlayer для виконання (наприклад, `fill`, `push`, `build`). Ви можете передати будь-яку команду Intlayer та її аргументи.
|
|
65
|
+
|
|
66
|
+
> Приклад: `npx intlayer ci fill --verbose`
|
|
67
|
+
>
|
|
68
|
+
> Приклад: `npx intlayer ci push`
|
|
69
|
+
>
|
|
70
|
+
> Приклад: `npx intlayer ci build`
|
|
71
|
+
|
|
72
|
+
## Приклади
|
|
73
|
+
|
|
74
|
+
### Запустити команду в режимі одного проекту
|
|
75
|
+
|
|
76
|
+
Якщо ви перебуваєте в директорії проекту, що відповідає одному з шляхів у `INTLAYER_PROJECT_CREDENTIALS`:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
cd packages/app
|
|
80
|
+
npx intlayer ci fill
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Це запустить команду `fill` з автоматично підставленими обліковими даними для проєкту `packages/app`.
|
|
84
|
+
|
|
85
|
+
### Запустити команду для всіх проєктів
|
|
86
|
+
|
|
87
|
+
Якщо ви перебуваєте в каталозі, який не відповідає жодному шляху проєкту, команда пройде по всіх налаштованих проєктах:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
cd /path/to/monorepo
|
|
91
|
+
npx intlayer ci push
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Це виконає команду `push` для кожного проєкту, налаштованого в `INTLAYER_PROJECT_CREDENTIALS`.
|
|
95
|
+
|
|
96
|
+
### Передача додаткових прапорів
|
|
97
|
+
|
|
98
|
+
Ви можете передати будь-які прапори в базову команду Intlayer:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npx intlayer ci fill --verbose --mode complete
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Використання в CI/CD пайплайнах
|
|
105
|
+
|
|
106
|
+
У вашій конфігурації CI/CD (наприклад, GitHub Actions, GitLab CI) встановіть `INTLAYER_PROJECT_CREDENTIALS` як секрет:
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
# Приклад GitHub Actions
|
|
110
|
+
env:
|
|
111
|
+
INTLAYER_PROJECT_CREDENTIALS: ${{ secrets.INTLAYER_PROJECT_CREDENTIALS }}
|
|
112
|
+
|
|
113
|
+
steps:
|
|
114
|
+
- name: Fill dictionaries
|
|
115
|
+
run: npx intlayer ci fill
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Обробка помилок
|
|
119
|
+
|
|
120
|
+
- Якщо `INTLAYER_PROJECT_CREDENTIALS` не встановлено, команда завершиться з помилкою.
|
|
121
|
+
- Якщо `INTLAYER_PROJECT_CREDENTIALS` не є валідним JSON, команда завершиться з помилкою.
|
|
122
|
+
- Якщо шлях до проекту не існує, він буде пропущений з попередженням.
|
|
123
|
+
- Якщо будь-який проект зазнає невдачі, команда завершиться з кодом стану, відмінним від нуля.
|
|
124
|
+
|
|
125
|
+
## Випадки використання
|
|
126
|
+
|
|
127
|
+
- **Автоматизація монорепо**: Виконувати команди Intlayer для кількох проектів у монорепозиторії
|
|
128
|
+
- **Конвеєри CI/CD**: Автоматизувати керування словниками в процесах безперервної інтеграції
|
|
129
|
+
- **Масові операції**: Виконувати одну й ту саму операцію одночасно для кількох проектів Intlayer
|
|
130
|
+
- **Управління секретами**: Безпечно керуйте обліковими даними для кількох проєктів за допомогою змінних середовища
|
|
131
|
+
|
|
132
|
+
## Кращі практики безпеки
|
|
133
|
+
|
|
134
|
+
- Зберігайте `INTLAYER_PROJECT_CREDENTIALS` як зашифровані секрети на вашій платформі CI/CD
|
|
135
|
+
- Ніколи не комітіть облікові дані у систему контролю версій
|
|
136
|
+
- Використовуйте окремі облікові дані для різних середовищ розгортання
|
|
137
|
+
- Регулярно проводьте ротацію облікових даних
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-08-11
|
|
3
|
+
updatedAt: 2025-11-22
|
|
4
|
+
title: Керування конфігурацією
|
|
5
|
+
description: Дізнайтеся, як отримувати та завантажувати вашу конфігурацію Intlayer у CMS.
|
|
6
|
+
keywords:
|
|
7
|
+
- Конфігурація
|
|
8
|
+
- Налаштування
|
|
9
|
+
- CLI
|
|
10
|
+
- Intlayer
|
|
11
|
+
- CMS
|
|
12
|
+
slugs:
|
|
13
|
+
- doc
|
|
14
|
+
- concept
|
|
15
|
+
- cli
|
|
16
|
+
- configuration
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Керування конфігурацією
|
|
20
|
+
|
|
21
|
+
## Отримати конфігурацію
|
|
22
|
+
|
|
23
|
+
Команда `configuration get` отримує поточну конфігурацію для Intlayer, зокрема налаштування локалі. Це корисно для перевірки вашої установки.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx intlayer configuration get
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Аліаси:
|
|
30
|
+
|
|
31
|
+
- `npx intlayer config get`
|
|
32
|
+
- `npx intlayer conf get`
|
|
33
|
+
|
|
34
|
+
## Аргументи:
|
|
35
|
+
|
|
36
|
+
- **`--env`**: Вкажіть середовище (наприклад, `development`, `production`).
|
|
37
|
+
- **`--env-file`**: Надайте власний файл середовища для завантаження змінних.
|
|
38
|
+
- **`--base-dir`**: Вказати базовий каталог проекту.
|
|
39
|
+
- **`--verbose`**: Увімкнути детальне логування для відлагодження. (за замовчуванням true при використанні CLI)
|
|
40
|
+
- **`--no-cache`**: Вимкнути кеш.
|
|
41
|
+
|
|
42
|
+
## Надіслати конфігурацію
|
|
43
|
+
|
|
44
|
+
Команда `configuration push` завантажує вашу конфігурацію в Intlayer CMS та редактор. Цей крок необхідний для увімкнення використання віддалених словників в Intlayer Visual Editor.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx intlayer configuration push
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Аліаси:
|
|
51
|
+
|
|
52
|
+
- `npx intlayer config push`
|
|
53
|
+
- `npx intlayer conf push`
|
|
54
|
+
|
|
55
|
+
## Аргументи:
|
|
56
|
+
|
|
57
|
+
- **`--env`**: Вказати середовище (наприклад, `development`, `production`).
|
|
58
|
+
- **`--env-file`**: Надати власний файл середовища для завантаження змінних.
|
|
59
|
+
- **`--base-dir`**: Вказати базовий каталог проекту.
|
|
60
|
+
- **`--verbose`**: Увімкнути детальне логування для налагодження. (за замовчуванням true при використанні CLI)
|
|
61
|
+
- **`--no-cache`**: Вимкнути кеш.
|
|
62
|
+
|
|
63
|
+
Після пушу конфігурації ваш проєкт повністю інтегрується з Intlayer CMS, що дозволяє безшовне керування словниками між командами.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-08-11
|
|
3
|
+
updatedAt: 2025-11-22
|
|
4
|
+
title: Налагодження команди Intlayer
|
|
5
|
+
description: Дізнайтеся, як налагоджувати та усувати неполадки в Intlayer CLI.
|
|
6
|
+
keywords:
|
|
7
|
+
- Налагодження
|
|
8
|
+
- Усунення неполадок
|
|
9
|
+
- CLI
|
|
10
|
+
- Intlayer
|
|
11
|
+
slugs:
|
|
12
|
+
- doc
|
|
13
|
+
- concept
|
|
14
|
+
- cli
|
|
15
|
+
- debug
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Налагодження команди Intlayer
|
|
19
|
+
|
|
20
|
+
## 1. **Переконайтеся, що ви використовуєте останню версію**
|
|
21
|
+
|
|
22
|
+
Виконайте:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx intlayer --version # поточна локальна версія intlayer
|
|
26
|
+
npx intlayer@latest --version # остання доступна версія intlayer
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 2. **Перевірте, чи команда зареєстрована**
|
|
30
|
+
|
|
31
|
+
Перевірити можна за допомогою:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx intlayer --help # Показує список доступних команд та інформацію про використання
|
|
35
|
+
npx intlayer dictionary build --help # Показує список доступних опцій для команди
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 3. **Перезапустіть термінал**
|
|
39
|
+
|
|
40
|
+
Іноді потрібно перезапустити термінал, щоб він розпізнав нові команди.
|
|
41
|
+
|
|
42
|
+
## 4. **Очистіть кеш npx (якщо ви застрягли на старішій версії)**
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx clear-npx-cache
|
|
46
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-08-11
|
|
3
|
+
updatedAt: 2025-11-22
|
|
4
|
+
title: Перевірка документа
|
|
5
|
+
description: Дізнайтеся, як перевіряти файли документації на предмет якості, узгодженості та повноти для різних локалей.
|
|
6
|
+
keywords:
|
|
7
|
+
- Перевірка
|
|
8
|
+
- Документ
|
|
9
|
+
- Документація
|
|
10
|
+
- AI
|
|
11
|
+
- CLI
|
|
12
|
+
- Intlayer
|
|
13
|
+
slugs:
|
|
14
|
+
- doc
|
|
15
|
+
- concept
|
|
16
|
+
- cli
|
|
17
|
+
- doc-review
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Перевірка документа
|
|
21
|
+
|
|
22
|
+
Команда `doc review` аналізує файли документації на предмет якості, узгодженості та повноти в різних локалях.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx intlayer doc review
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Її можна використовувати для перевірки файлів, які вже перекладені, а також для оцінки коректності перекладу.
|
|
29
|
+
|
|
30
|
+
У більшості випадків,
|
|
31
|
+
|
|
32
|
+
- віддавайте перевагу використанню `doc translate` коли перекладена версія цього файлу недоступна.
|
|
33
|
+
- надавайте перевагу використанню `doc review`, коли перекладена версія цього файлу вже існує.
|
|
34
|
+
|
|
35
|
+
> Зауважте, що процес рев'ю споживає більше вхідних токенів, ніж процес перекладу для повного перегляду того самого файлу. Проте процес рев'ю оптимізує chunks для перегляду і пропускатиме ті частини, які не були змінені.
|
|
36
|
+
|
|
37
|
+
## Аргументи:
|
|
38
|
+
|
|
39
|
+
Команда `doc review` приймає ті самі аргументи, що й `doc translate`, що дозволяє переглядати конкретні документаційні файли та застосовувати перевірки якості.
|
|
40
|
+
|
|
41
|
+
Якщо ви активували одну з опцій git, команда перегляне лише ту частину файлів, яка була змінена. Скрипт обробляє файл, розбиваючи його на chunks, і перевіряє кожен chunk. Якщо в chunk немає змін, скрипт пропустить його, щоб пришвидшити процес рев'ю та зменшити витрати на API постачальника AI.
|
|
42
|
+
|
|
43
|
+
Для повного переліку аргументів див. документацію команди [Translate Document](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/doc-translate.md).
|