@intlayer/docs 7.0.6 → 7.0.8-canary.0
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/i18n_using_next-i18next.md +1068 -0
- package/blog/ar/i18n_using_next-intl.md +768 -0
- package/blog/ar/intlayer_with_react-intl.md +0 -4
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +5 -4
- package/blog/de/i18n_using_next-i18next.md +1107 -0
- package/blog/de/i18n_using_next-intl.md +760 -0
- package/blog/de/intlayer_with_react-intl.md +0 -4
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/en/i18n_using_next-i18next.md +1073 -0
- package/blog/en/i18n_using_next-intl.md +757 -0
- package/blog/en/intlayer_with_i18next.md +71 -8
- package/blog/en/intlayer_with_next-i18next.md +71 -8
- package/blog/en/intlayer_with_next-intl.md +71 -8
- package/blog/en/intlayer_with_react-i18next.md +69 -8
- package/blog/en/intlayer_with_react-intl.md +68 -9
- package/blog/en/intlayer_with_vue-i18n.md +68 -7
- package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/blog/en/vue-i18n_vs_intlayer.md +2 -0
- package/blog/en-GB/i18n_using_next-i18next.md +1074 -0
- package/blog/en-GB/i18n_using_next-intl.md +757 -0
- package/blog/en-GB/intlayer_with_i18next.md +15 -6
- package/blog/en-GB/intlayer_with_next-i18next.md +16 -6
- package/blog/en-GB/intlayer_with_next-intl.md +16 -6
- package/blog/en-GB/intlayer_with_react-i18next.md +16 -7
- package/blog/en-GB/intlayer_with_react-intl.md +14 -9
- package/blog/en-GB/intlayer_with_vue-i18n.md +16 -7
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/blog/en-GB/vue-i18n_vs_intlayer.md +2 -0
- package/blog/es/i18n_using_next-i18next.md +1066 -0
- package/blog/es/i18n_using_next-intl.md +757 -0
- package/blog/es/intlayer_with_react-intl.md +0 -4
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/fr/i18n_using_next-i18next.md +1078 -0
- package/blog/fr/i18n_using_next-intl.md +759 -0
- package/blog/fr/intlayer_with_react-intl.md +0 -4
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/hi/i18n_using_next-i18next.md +1068 -0
- package/blog/hi/i18n_using_next-intl.md +758 -0
- package/blog/hi/intlayer_with_react-intl.md +0 -4
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/id/i18n_using_next-i18next.md +1078 -0
- package/blog/id/i18n_using_next-intl.md +757 -0
- package/blog/id/index.md +69 -0
- package/blog/id/internationalization_and_SEO.md +364 -0
- package/blog/id/intlayer_with_react-intl.md +0 -4
- package/blog/id/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/id/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/id/list_i18n_technologies/CMS/wordpress.md +188 -0
- package/blog/id/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/id/list_i18n_technologies/frameworks/flutter.md +150 -0
- package/blog/id/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/id/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/id/list_i18n_technologies/frameworks/svelte.md +131 -0
- package/blog/id/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1500 -0
- package/blog/id/nextjs-multilingual-seo-comparison.md +361 -0
- package/blog/id/rag_powered_documentation_assistant.md +288 -0
- package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/id/vue-i18n_vs_intlayer.md +278 -0
- package/blog/id/what_is_internationalization.md +166 -0
- package/blog/it/i18n_using_next-i18next.md +1078 -0
- package/blog/it/i18n_using_next-intl.md +758 -0
- package/blog/it/intlayer_with_react-intl.md +0 -4
- package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +4 -0
- package/blog/it/vue-i18n_vs_intlayer.md +2 -0
- package/blog/ja/i18n_using_next-i18next.md +1078 -0
- package/blog/ja/i18n_using_next-intl.md +758 -0
- package/blog/ja/intlayer_with_react-intl.md +0 -4
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/ko/i18n_using_next-i18next.md +1075 -0
- package/blog/ko/i18n_using_next-intl.md +759 -0
- package/blog/ko/intlayer_with_react-intl.md +0 -4
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/pl/i18n_using_next-i18next.md +1078 -0
- package/blog/pl/i18n_using_next-intl.md +758 -0
- package/blog/pl/index.md +69 -0
- package/blog/pl/internationalization_and_SEO.md +363 -0
- package/blog/pl/intlayer_with_react-intl.md +0 -4
- package/blog/pl/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/pl/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/pl/list_i18n_technologies/CMS/wordpress.md +196 -0
- package/blog/pl/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/pl/list_i18n_technologies/frameworks/flutter.md +151 -0
- package/blog/pl/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/pl/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/pl/list_i18n_technologies/frameworks/svelte.md +131 -0
- package/blog/pl/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +1501 -0
- package/blog/pl/nextjs-multilingual-seo-comparison.md +362 -0
- package/blog/pl/rag_powered_documentation_assistant.md +288 -0
- package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/pl/vue-i18n_vs_intlayer.md +278 -0
- package/blog/pl/what_is_internationalization.md +167 -0
- package/blog/pt/i18n_using_next-i18next.md +1067 -0
- package/blog/pt/i18n_using_next-intl.md +760 -0
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/ru/i18n_using_next-i18next.md +1106 -0
- package/blog/ru/i18n_using_next-intl.md +759 -0
- package/blog/ru/intlayer_with_react-intl.md +0 -4
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/tr/i18n_using_next-i18next.md +1078 -0
- package/blog/tr/i18n_using_next-intl.md +760 -0
- package/blog/tr/intlayer_with_react-intl.md +0 -4
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/blog/tr/vue-i18n_vs_intlayer.md +2 -0
- package/blog/vi/i18n_using_next-i18next.md +1080 -0
- package/blog/vi/i18n_using_next-intl.md +758 -0
- package/blog/vi/index.md +69 -0
- package/blog/vi/internationalization_and_SEO.md +363 -0
- package/blog/vi/intlayer_with_react-intl.md +0 -4
- package/blog/vi/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/vi/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/vi/list_i18n_technologies/CMS/wordpress.md +188 -0
- package/blog/vi/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/vi/list_i18n_technologies/frameworks/flutter.md +150 -0
- package/blog/vi/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/vi/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/vi/list_i18n_technologies/frameworks/svelte.md +131 -0
- package/blog/vi/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1520 -0
- package/blog/vi/nextjs-multilingual-seo-comparison.md +362 -0
- package/blog/vi/rag_powered_documentation_assistant.md +288 -0
- package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/vi/vue-i18n_vs_intlayer.md +278 -0
- package/blog/vi/what_is_internationalization.md +168 -0
- package/blog/zh/i18n_using_next-i18next.md +1105 -0
- package/blog/zh/i18n_using_next-intl.md +758 -0
- package/blog/zh/intlayer_with_react-intl.md +0 -4
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/dist/cjs/common.cjs +0 -4
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +38 -6
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +0 -6
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +0 -6
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +0 -6
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +38 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +2 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/docs/ar/component_i18n.md +1 -1
- package/docs/ar/configuration.md +6 -0
- package/docs/ar/intlayer_cli.md +8 -3
- package/docs/ar/intlayer_with_next-i18next.md +619 -0
- package/docs/ar/intlayer_with_next-intl.md +446 -0
- package/docs/ar/intlayer_with_nextjs_16.md +21 -0
- package/docs/ar/intlayer_with_tanstack.md +4 -0
- package/docs/ar/intlayer_with_vite+react.md +4 -0
- package/docs/de/component_i18n.md +1 -1
- package/docs/de/configuration.md +6 -0
- package/docs/de/intlayer_cli.md +8 -3
- package/docs/de/intlayer_with_next-i18next.md +627 -0
- package/docs/de/intlayer_with_next-intl.md +451 -0
- package/docs/de/intlayer_with_nextjs_16.md +21 -0
- package/docs/de/intlayer_with_tanstack.md +4 -0
- package/docs/de/intlayer_with_vite+react.md +4 -0
- package/docs/en/component_i18n.md +1 -1
- package/docs/en/intlayer_cli.md +8 -1
- package/docs/en/intlayer_with_astro.md +10 -2
- package/docs/en/intlayer_with_create_react_app.md +8 -0
- package/docs/en/intlayer_with_lynx+react.md +8 -0
- package/docs/en/intlayer_with_nestjs.md +10 -0
- package/docs/en/intlayer_with_nextjs_14.md +10 -2
- package/docs/en/intlayer_with_nextjs_15.md +21 -4
- package/docs/en/intlayer_with_nextjs_16.md +17 -0
- package/docs/en/intlayer_with_nuxt.md +8 -0
- package/docs/en/intlayer_with_react_native+expo.md +10 -2
- package/docs/en/intlayer_with_react_router_v7.md +8 -0
- package/docs/en/intlayer_with_tanstack.md +10 -0
- package/docs/en/intlayer_with_vite+preact.md +10 -2
- package/docs/en/intlayer_with_vite+react.md +21 -4
- package/docs/en/intlayer_with_vite+vue.md +10 -2
- package/docs/en-GB/component_i18n.md +1 -1
- package/docs/en-GB/configuration.md +6 -0
- package/docs/en-GB/intlayer_cli.md +8 -3
- package/docs/en-GB/intlayer_with_angular.md +4 -4
- package/docs/en-GB/intlayer_with_express.md +4 -4
- package/docs/en-GB/intlayer_with_lynx+react.md +12 -12
- package/{blog/en/_intlayer_with_next-i18next.md → docs/en-GB/intlayer_with_next-i18next.md} +241 -42
- package/{blog/en/_intlayer_with_next-intl.md → docs/en-GB/intlayer_with_next-intl.md} +144 -29
- package/docs/en-GB/intlayer_with_nextjs_16.md +21 -0
- package/docs/en-GB/intlayer_with_tanstack.md +5 -1
- package/docs/en-GB/intlayer_with_vite+react.md +4 -0
- package/docs/en-GB/packages/next-intlayer/t.md +2 -2
- package/docs/es/component_i18n.md +1 -1
- package/docs/es/configuration.md +6 -0
- package/docs/es/intlayer_cli.md +8 -3
- package/docs/es/intlayer_with_next-i18next.md +628 -0
- package/docs/es/intlayer_with_next-intl.md +446 -0
- package/docs/es/intlayer_with_nextjs_16.md +21 -0
- package/docs/es/intlayer_with_tanstack.md +4 -0
- package/docs/es/intlayer_with_vite+react.md +4 -0
- package/docs/fr/configuration.md +6 -0
- package/docs/fr/intlayer_cli.md +8 -3
- package/docs/fr/intlayer_with_next-i18next.md +628 -0
- package/docs/fr/intlayer_with_next-intl.md +446 -0
- package/docs/fr/intlayer_with_nextjs_16.md +23 -2
- package/docs/fr/intlayer_with_tanstack.md +4 -0
- package/docs/fr/intlayer_with_vite+react.md +4 -0
- package/docs/hi/component_i18n.md +1 -1
- package/docs/hi/configuration.md +6 -0
- package/docs/hi/intlayer_cli.md +8 -0
- package/docs/hi/intlayer_with_next-i18next.md +628 -0
- package/docs/hi/intlayer_with_next-intl.md +446 -0
- package/docs/hi/intlayer_with_nextjs_16.md +21 -0
- package/docs/hi/intlayer_with_tanstack.md +4 -0
- package/docs/hi/intlayer_with_vite+react.md +4 -0
- package/docs/id/CI_CD.md +198 -0
- package/docs/id/autoFill.md +284 -0
- package/docs/id/component_i18n.md +186 -0
- package/docs/id/configuration.md +710 -0
- package/docs/id/dictionary/condition.md +231 -0
- package/docs/id/dictionary/content_file.md +1092 -0
- package/docs/id/dictionary/enumeration.md +245 -0
- package/docs/id/dictionary/file.md +237 -0
- package/docs/id/dictionary/function_fetching.md +214 -0
- package/docs/id/dictionary/gender.md +273 -0
- package/docs/id/dictionary/insertion.md +192 -0
- package/docs/id/dictionary/markdown.md +381 -0
- package/docs/id/dictionary/nesting.md +273 -0
- package/docs/id/dictionary/translation.md +310 -0
- package/docs/id/formatters.md +596 -0
- package/docs/id/how_works_intlayer.md +256 -0
- package/docs/id/index.md +176 -0
- package/docs/id/interest_of_intlayer.md +293 -0
- package/docs/id/intlayer_CMS.md +549 -0
- package/docs/id/intlayer_cli.md +850 -0
- package/docs/id/intlayer_visual_editor.md +288 -0
- package/docs/id/intlayer_with_angular.md +694 -0
- package/docs/id/intlayer_with_astro.md +252 -0
- package/docs/id/intlayer_with_create_react_app.md +1233 -0
- package/docs/id/intlayer_with_express.md +411 -0
- package/docs/id/intlayer_with_lynx+react.md +518 -0
- package/docs/id/intlayer_with_nestjs.md +272 -0
- package/docs/id/intlayer_with_next-i18next.md +628 -0
- package/docs/id/intlayer_with_next-intl.md +446 -0
- package/docs/id/intlayer_with_nextjs_14.md +1617 -0
- package/docs/id/intlayer_with_nextjs_15.md +1698 -0
- package/docs/id/intlayer_with_nextjs_16.md +21 -0
- package/docs/id/intlayer_with_nextjs_page_router.md +1478 -0
- package/docs/id/intlayer_with_nuxt.md +808 -0
- package/docs/id/intlayer_with_react_native+expo.md +699 -0
- package/docs/id/intlayer_with_react_router_v7.md +496 -0
- package/docs/id/intlayer_with_tanstack.md +564 -0
- package/docs/id/intlayer_with_vite+preact.md +1737 -0
- package/docs/id/intlayer_with_vite+react.md +1413 -0
- package/docs/id/intlayer_with_vite+solid.md +289 -0
- package/docs/id/intlayer_with_vite+svelte.md +289 -0
- package/docs/id/intlayer_with_vite+vue.md +1088 -0
- package/docs/id/introduction.md +218 -0
- package/docs/id/locale_mapper.md +242 -0
- package/docs/id/mcp_server.md +211 -0
- package/docs/id/packages/express-intlayer/t.md +458 -0
- package/docs/id/packages/intlayer/getConfiguration.md +145 -0
- package/docs/id/packages/intlayer/getEnumeration.md +159 -0
- package/docs/id/packages/intlayer/getHTMLTextDir.md +122 -0
- package/docs/id/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/id/packages/intlayer/getLocaleName.md +119 -0
- package/docs/id/packages/intlayer/getLocalizedUrl.md +309 -0
- package/docs/id/packages/intlayer/getMultilingualUrls.md +223 -0
- package/docs/id/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/id/packages/intlayer/getTranslation.md +190 -0
- package/docs/id/packages/intlayer/getTranslationContent.md +188 -0
- package/docs/id/packages/next-intlayer/t.md +352 -0
- package/docs/id/packages/next-intlayer/useDictionary.md +271 -0
- package/docs/id/packages/next-intlayer/useIntlayer.md +264 -0
- package/docs/id/packages/next-intlayer/useLocale.md +166 -0
- package/docs/id/packages/react-intlayer/t.md +303 -0
- package/docs/id/packages/react-intlayer/useDictionary.md +287 -0
- package/docs/id/packages/react-intlayer/useI18n.md +267 -0
- package/docs/id/packages/react-intlayer/useIntlayer.md +254 -0
- package/docs/id/packages/react-intlayer/useLocale.md +210 -0
- package/docs/id/per_locale_file.md +323 -0
- package/docs/id/readme.md +261 -0
- package/docs/id/releases/v6.md +305 -0
- package/docs/id/roadmap.md +362 -0
- package/docs/id/testing.md +202 -0
- package/docs/id/vs_code_extension.md +126 -0
- package/docs/it/component_i18n.md +1 -1
- package/docs/it/configuration.md +6 -0
- package/docs/it/intlayer_cli.md +8 -3
- package/docs/it/intlayer_with_next-i18next.md +628 -0
- package/docs/it/intlayer_with_next-intl.md +446 -0
- package/docs/it/intlayer_with_nextjs_16.md +21 -0
- package/docs/it/intlayer_with_tanstack.md +4 -0
- package/docs/it/intlayer_with_vite+react.md +4 -0
- package/docs/ja/component_i18n.md +1 -1
- package/docs/ja/configuration.md +6 -0
- package/docs/ja/intlayer_cli.md +8 -3
- package/docs/ja/intlayer_with_next-i18next.md +627 -0
- package/docs/ja/intlayer_with_next-intl.md +446 -0
- package/docs/ja/intlayer_with_nextjs_16.md +21 -0
- package/docs/ja/intlayer_with_tanstack.md +4 -0
- package/docs/ja/intlayer_with_vite+react.md +4 -0
- package/docs/ko/configuration.md +6 -0
- package/docs/ko/intlayer_cli.md +8 -3
- package/docs/ko/intlayer_with_next-i18next.md +627 -0
- package/docs/ko/intlayer_with_next-intl.md +446 -0
- package/docs/ko/intlayer_with_nextjs_16.md +21 -0
- package/docs/ko/intlayer_with_tanstack.md +4 -0
- package/docs/ko/intlayer_with_vite+react.md +4 -0
- package/docs/pl/CI_CD.md +198 -0
- package/docs/pl/autoFill.md +284 -0
- package/docs/pl/component_i18n.md +186 -0
- package/docs/pl/configuration.md +710 -0
- package/docs/pl/dictionary/condition.md +232 -0
- package/docs/pl/dictionary/content_file.md +1130 -0
- package/docs/pl/dictionary/enumeration.md +245 -0
- package/docs/pl/dictionary/file.md +234 -0
- package/docs/pl/dictionary/function_fetching.md +214 -0
- package/docs/pl/dictionary/gender.md +276 -0
- package/docs/pl/dictionary/insertion.md +188 -0
- package/docs/pl/dictionary/markdown.md +408 -0
- package/docs/pl/dictionary/nesting.md +273 -0
- package/docs/pl/dictionary/translation.md +310 -0
- package/docs/pl/formatters.md +596 -0
- package/docs/pl/how_works_intlayer.md +256 -0
- package/docs/pl/index.md +176 -0
- package/docs/pl/interest_of_intlayer.md +291 -0
- package/docs/pl/intlayer_CMS.md +549 -0
- package/docs/pl/intlayer_cli.md +857 -0
- package/docs/pl/intlayer_visual_editor.md +288 -0
- package/docs/pl/intlayer_with_angular.md +690 -0
- package/docs/pl/intlayer_with_astro.md +280 -0
- package/docs/pl/intlayer_with_create_react_app.md +1235 -0
- package/docs/pl/intlayer_with_express.md +411 -0
- package/docs/pl/intlayer_with_lynx+react.md +518 -0
- package/docs/pl/intlayer_with_nestjs.md +272 -0
- package/docs/pl/intlayer_with_next-i18next.md +628 -0
- package/docs/pl/intlayer_with_next-intl.md +446 -0
- package/docs/pl/intlayer_with_nextjs_14.md +1594 -0
- package/docs/pl/intlayer_with_nextjs_15.md +1701 -0
- package/docs/pl/intlayer_with_nextjs_16.md +21 -0
- package/docs/pl/intlayer_with_nextjs_page_router.md +1513 -0
- package/docs/pl/intlayer_with_nuxt.md +885 -0
- package/docs/pl/intlayer_with_react_native+expo.md +698 -0
- package/docs/pl/intlayer_with_react_router_v7.md +503 -0
- package/docs/pl/intlayer_with_tanstack.md +562 -0
- package/docs/pl/intlayer_with_vite+preact.md +1736 -0
- package/docs/pl/intlayer_with_vite+react.md +1438 -0
- package/docs/pl/intlayer_with_vite+solid.md +290 -0
- package/docs/pl/intlayer_with_vite+svelte.md +289 -0
- package/docs/pl/intlayer_with_vite+vue.md +1116 -0
- package/docs/pl/introduction.md +209 -0
- package/docs/pl/locale_mapper.md +242 -0
- package/docs/pl/mcp_server.md +211 -0
- package/docs/pl/packages/express-intlayer/t.md +458 -0
- package/docs/pl/packages/intlayer/getConfiguration.md +146 -0
- package/docs/pl/packages/intlayer/getEnumeration.md +160 -0
- package/docs/pl/packages/intlayer/getHTMLTextDir.md +121 -0
- package/docs/pl/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/pl/packages/intlayer/getLocaleName.md +118 -0
- package/docs/pl/packages/intlayer/getLocalizedUrl.md +300 -0
- package/docs/pl/packages/intlayer/getMultilingualUrls.md +221 -0
- package/docs/pl/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/pl/packages/intlayer/getTranslation.md +190 -0
- package/docs/pl/packages/intlayer/getTranslationContent.md +189 -0
- package/docs/pl/packages/next-intlayer/t.md +353 -0
- package/docs/pl/packages/next-intlayer/useDictionary.md +270 -0
- package/docs/pl/packages/next-intlayer/useIntlayer.md +263 -0
- package/docs/pl/packages/next-intlayer/useLocale.md +166 -0
- package/docs/pl/packages/react-intlayer/t.md +303 -0
- package/docs/pl/packages/react-intlayer/useDictionary.md +289 -0
- package/docs/pl/packages/react-intlayer/useI18n.md +249 -0
- package/docs/pl/packages/react-intlayer/useIntlayer.md +256 -0
- package/docs/pl/packages/react-intlayer/useLocale.md +210 -0
- package/docs/pl/per_locale_file.md +321 -0
- package/docs/pl/readme.md +261 -0
- package/docs/pl/releases/v6.md +305 -0
- package/docs/pl/roadmap.md +362 -0
- package/docs/pl/testing.md +202 -0
- package/docs/pl/vs_code_extension.md +126 -0
- package/docs/pt/component_i18n.md +1 -1
- package/docs/pt/configuration.md +6 -0
- package/docs/pt/intlayer_cli.md +8 -3
- package/docs/pt/intlayer_with_next-i18next.md +627 -0
- package/docs/pt/intlayer_with_next-intl.md +446 -0
- package/docs/pt/intlayer_with_nextjs_16.md +21 -0
- package/docs/pt/intlayer_with_tanstack.md +4 -0
- package/docs/pt/intlayer_with_vite+react.md +4 -0
- package/docs/ru/component_i18n.md +1 -1
- package/docs/ru/configuration.md +6 -0
- package/docs/ru/intlayer_cli.md +301 -22
- package/docs/ru/intlayer_with_next-i18next.md +629 -0
- package/docs/ru/intlayer_with_next-intl.md +448 -0
- package/docs/ru/intlayer_with_nextjs_16.md +21 -0
- package/docs/ru/intlayer_with_tanstack.md +4 -0
- package/docs/ru/intlayer_with_vite+react.md +4 -0
- package/docs/tr/component_i18n.md +1 -1
- package/docs/tr/configuration.md +6 -0
- package/docs/tr/intlayer_cli.md +8 -0
- package/docs/tr/intlayer_with_next-i18next.md +627 -0
- package/docs/tr/intlayer_with_next-intl.md +446 -0
- package/docs/tr/intlayer_with_nextjs_16.md +21 -0
- package/docs/tr/intlayer_with_tanstack.md +4 -0
- package/docs/tr/intlayer_with_vite+react.md +4 -0
- package/docs/vi/CI_CD.md +198 -0
- package/docs/vi/autoFill.md +284 -0
- package/docs/vi/component_i18n.md +186 -0
- package/docs/vi/configuration.md +710 -0
- package/docs/vi/dictionary/condition.md +237 -0
- package/docs/vi/dictionary/content_file.md +1115 -0
- package/docs/vi/dictionary/enumeration.md +255 -0
- package/docs/vi/dictionary/file.md +234 -0
- package/docs/vi/dictionary/function_fetching.md +212 -0
- package/docs/vi/dictionary/gender.md +275 -0
- package/docs/vi/dictionary/insertion.md +191 -0
- package/docs/vi/dictionary/markdown.md +381 -0
- package/docs/vi/dictionary/nesting.md +273 -0
- package/docs/vi/dictionary/translation.md +309 -0
- package/docs/vi/formatters.md +595 -0
- package/docs/vi/how_works_intlayer.md +256 -0
- package/docs/vi/index.md +174 -0
- package/docs/vi/interest_of_intlayer.md +292 -0
- package/docs/vi/intlayer_CMS.md +549 -0
- package/docs/vi/intlayer_cli.md +850 -0
- package/docs/vi/intlayer_visual_editor.md +288 -0
- package/docs/vi/intlayer_with_angular.md +692 -0
- package/docs/vi/intlayer_with_astro.md +252 -0
- package/docs/vi/intlayer_with_create_react_app.md +1230 -0
- package/docs/vi/intlayer_with_express.md +409 -0
- package/docs/vi/intlayer_with_lynx+react.md +520 -0
- package/docs/vi/intlayer_with_nestjs.md +272 -0
- package/docs/vi/intlayer_with_next-i18next.md +628 -0
- package/docs/vi/intlayer_with_next-intl.md +446 -0
- package/docs/vi/intlayer_with_nextjs_14.md +1584 -0
- package/docs/vi/intlayer_with_nextjs_15.md +1738 -0
- package/docs/vi/intlayer_with_nextjs_16.md +21 -0
- package/docs/vi/intlayer_with_nextjs_page_router.md +1504 -0
- package/docs/vi/intlayer_with_nuxt.md +821 -0
- package/docs/vi/intlayer_with_react_native+expo.md +700 -0
- package/docs/vi/intlayer_with_react_router_v7.md +498 -0
- package/docs/vi/intlayer_with_tanstack.md +562 -0
- package/docs/vi/intlayer_with_vite+preact.md +1722 -0
- package/docs/vi/intlayer_with_vite+react.md +1407 -0
- package/docs/vi/intlayer_with_vite+solid.md +287 -0
- package/docs/vi/intlayer_with_vite+svelte.md +289 -0
- package/docs/vi/intlayer_with_vite+vue.md +1071 -0
- package/docs/vi/introduction.md +215 -0
- package/docs/vi/locale_mapper.md +242 -0
- package/docs/vi/mcp_server.md +211 -0
- package/docs/vi/packages/express-intlayer/t.md +457 -0
- package/docs/vi/packages/intlayer/getConfiguration.md +145 -0
- package/docs/vi/packages/intlayer/getEnumeration.md +162 -0
- package/docs/vi/packages/intlayer/getHTMLTextDir.md +121 -0
- package/docs/vi/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/vi/packages/intlayer/getLocaleName.md +129 -0
- package/docs/vi/packages/intlayer/getLocalizedUrl.md +309 -0
- package/docs/vi/packages/intlayer/getMultilingualUrls.md +221 -0
- package/docs/vi/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/vi/packages/intlayer/getTranslation.md +201 -0
- package/docs/vi/packages/intlayer/getTranslationContent.md +188 -0
- package/docs/vi/packages/next-intlayer/t.md +352 -0
- package/docs/vi/packages/next-intlayer/useDictionary.md +273 -0
- package/docs/vi/packages/next-intlayer/useIntlayer.md +264 -0
- package/docs/vi/packages/next-intlayer/useLocale.md +166 -0
- package/docs/vi/packages/react-intlayer/t.md +304 -0
- package/docs/vi/packages/react-intlayer/useDictionary.md +288 -0
- package/docs/vi/packages/react-intlayer/useI18n.md +295 -0
- package/docs/vi/packages/react-intlayer/useIntlayer.md +256 -0
- package/docs/vi/packages/react-intlayer/useLocale.md +210 -0
- package/docs/vi/per_locale_file.md +326 -0
- package/docs/vi/readme.md +261 -0
- package/docs/vi/releases/v6.md +305 -0
- package/docs/vi/roadmap.md +346 -0
- package/docs/vi/testing.md +202 -0
- package/docs/vi/vs_code_extension.md +126 -0
- package/docs/zh/configuration.md +6 -0
- package/docs/zh/intlayer_cli.md +8 -3
- package/docs/zh/intlayer_with_next-i18next.md +628 -0
- package/docs/zh/intlayer_with_next-intl.md +448 -0
- package/docs/zh/intlayer_with_nextjs_16.md +21 -0
- package/docs/zh/intlayer_with_tanstack.md +4 -0
- package/docs/zh/intlayer_with_vite+react.md +4 -0
- package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ar/array_as_content_declaration.md +1 -2
- package/frequent_questions/ar/build_dictionaries.md +1 -2
- package/frequent_questions/ar/build_error_CI_CD.md +1 -2
- package/frequent_questions/ar/bun_set_up.md +1 -2
- package/frequent_questions/ar/customized_locale_list.md +1 -2
- package/frequent_questions/ar/domain_routing.md +1 -2
- package/frequent_questions/ar/esbuild_error.md +1 -2
- package/frequent_questions/ar/get_locale_cookie.md +1 -2
- package/frequent_questions/ar/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ar/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ar/static_rendering.md +1 -3
- package/frequent_questions/ar/translated_path_url.md +1 -2
- package/frequent_questions/ar/unknown_command.md +1 -2
- package/frequent_questions/de/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/de/array_as_content_declaration.md +1 -2
- package/frequent_questions/de/build_dictionaries.md +1 -2
- package/frequent_questions/de/build_error_CI_CD.md +1 -2
- package/frequent_questions/de/bun_set_up.md +1 -2
- package/frequent_questions/de/customized_locale_list.md +1 -2
- package/frequent_questions/de/domain_routing.md +1 -2
- package/frequent_questions/de/esbuild_error.md +1 -2
- package/frequent_questions/de/get_locale_cookie.md +1 -2
- package/frequent_questions/de/intlayer_command_undefined.md +1 -2
- package/frequent_questions/de/locale_incorect_in_url.md +1 -2
- package/frequent_questions/de/static_rendering.md +1 -3
- package/frequent_questions/de/translated_path_url.md +1 -2
- package/frequent_questions/de/unknown_command.md +1 -2
- package/frequent_questions/en/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/en/array_as_content_declaration.md +1 -2
- package/frequent_questions/en/build_dictionaries.md +1 -2
- package/frequent_questions/en/build_error_CI_CD.md +1 -2
- package/frequent_questions/en/bun_set_up.md +1 -2
- package/frequent_questions/en/customized_locale_list.md +1 -2
- package/frequent_questions/en/domain_routing.md +1 -2
- package/frequent_questions/en/esbuild_error.md +1 -2
- package/frequent_questions/en/get_locale_cookie.md +1 -2
- package/frequent_questions/en/intlayer_command_undefined.md +1 -2
- package/frequent_questions/en/locale_incorect_in_url.md +1 -2
- package/frequent_questions/en/static_rendering.md +1 -3
- package/frequent_questions/en/translated_path_url.md +1 -2
- package/frequent_questions/en/unknown_command.md +1 -2
- package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/en-GB/array_as_content_declaration.md +1 -2
- package/frequent_questions/en-GB/build_dictionaries.md +1 -2
- package/frequent_questions/en-GB/build_error_CI_CD.md +1 -2
- package/frequent_questions/en-GB/bun_set_up.md +1 -2
- package/frequent_questions/en-GB/customized_locale_list.md +1 -2
- package/frequent_questions/en-GB/domain_routing.md +1 -2
- package/frequent_questions/en-GB/esbuild_error.md +1 -2
- package/frequent_questions/en-GB/get_locale_cookie.md +1 -2
- package/frequent_questions/en-GB/intlayer_command_undefined.md +1 -2
- package/frequent_questions/en-GB/locale_incorect_in_url.md +1 -2
- package/frequent_questions/en-GB/static_rendering.md +1 -3
- package/frequent_questions/en-GB/translated_path_url.md +1 -2
- package/frequent_questions/en-GB/unknown_command.md +1 -2
- package/frequent_questions/es/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/es/array_as_content_declaration.md +1 -2
- package/frequent_questions/es/build_dictionaries.md +1 -2
- package/frequent_questions/es/build_error_CI_CD.md +1 -2
- package/frequent_questions/es/bun_set_up.md +1 -2
- package/frequent_questions/es/customized_locale_list.md +1 -2
- package/frequent_questions/es/domain_routing.md +1 -2
- package/frequent_questions/es/esbuild_error.md +1 -2
- package/frequent_questions/es/get_locale_cookie.md +1 -2
- package/frequent_questions/es/intlayer_command_undefined.md +1 -2
- package/frequent_questions/es/locale_incorect_in_url.md +1 -2
- package/frequent_questions/es/static_rendering.md +1 -3
- package/frequent_questions/es/translated_path_url.md +1 -2
- package/frequent_questions/es/unknown_command.md +1 -2
- package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/fr/array_as_content_declaration.md +1 -2
- package/frequent_questions/fr/build_dictionaries.md +1 -2
- package/frequent_questions/fr/build_error_CI_CD.md +1 -2
- package/frequent_questions/fr/bun_set_up.md +1 -2
- package/frequent_questions/fr/customized_locale_list.md +1 -2
- package/frequent_questions/fr/domain_routing.md +1 -2
- package/frequent_questions/fr/esbuild_error.md +1 -2
- package/frequent_questions/fr/get_locale_cookie.md +1 -2
- package/frequent_questions/fr/intlayer_command_undefined.md +1 -2
- package/frequent_questions/fr/locale_incorect_in_url.md +1 -2
- package/frequent_questions/fr/static_rendering.md +1 -3
- package/frequent_questions/fr/translated_path_url.md +1 -2
- package/frequent_questions/fr/unknown_command.md +1 -2
- package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/hi/array_as_content_declaration.md +1 -2
- package/frequent_questions/hi/build_dictionaries.md +1 -2
- package/frequent_questions/hi/build_error_CI_CD.md +1 -2
- package/frequent_questions/hi/bun_set_up.md +1 -2
- package/frequent_questions/hi/customized_locale_list.md +1 -2
- package/frequent_questions/hi/domain_routing.md +1 -2
- package/frequent_questions/hi/esbuild_error.md +1 -2
- package/frequent_questions/hi/get_locale_cookie.md +1 -2
- package/frequent_questions/hi/intlayer_command_undefined.md +1 -2
- package/frequent_questions/hi/locale_incorect_in_url.md +1 -2
- package/frequent_questions/hi/static_rendering.md +1 -3
- package/frequent_questions/hi/translated_path_url.md +1 -2
- package/frequent_questions/hi/unknown_command.md +1 -2
- package/frequent_questions/id/SSR_Next_no_[locale].md +104 -0
- package/frequent_questions/id/array_as_content_declaration.md +71 -0
- package/frequent_questions/id/build_dictionaries.md +58 -0
- package/frequent_questions/id/build_error_CI_CD.md +74 -0
- package/frequent_questions/id/bun_set_up.md +53 -0
- package/frequent_questions/id/customized_locale_list.md +64 -0
- package/frequent_questions/id/domain_routing.md +113 -0
- package/frequent_questions/id/esbuild_error.md +29 -0
- package/frequent_questions/id/get_locale_cookie.md +142 -0
- package/frequent_questions/id/intlayer_command_undefined.md +155 -0
- package/frequent_questions/id/locale_incorect_in_url.md +73 -0
- package/frequent_questions/id/static_rendering.md +44 -0
- package/frequent_questions/id/translated_path_url.md +55 -0
- package/frequent_questions/id/unknown_command.md +97 -0
- package/frequent_questions/it/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/it/array_as_content_declaration.md +1 -2
- package/frequent_questions/it/build_dictionaries.md +1 -2
- package/frequent_questions/it/build_error_CI_CD.md +1 -2
- package/frequent_questions/it/bun_set_up.md +1 -2
- package/frequent_questions/it/customized_locale_list.md +1 -2
- package/frequent_questions/it/domain_routing.md +1 -2
- package/frequent_questions/it/esbuild_error.md +1 -2
- package/frequent_questions/it/get_locale_cookie.md +1 -2
- package/frequent_questions/it/intlayer_command_undefined.md +1 -2
- package/frequent_questions/it/locale_incorect_in_url.md +1 -2
- package/frequent_questions/it/static_rendering.md +1 -3
- package/frequent_questions/it/translated_path_url.md +1 -2
- package/frequent_questions/it/unknown_command.md +1 -2
- package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ja/array_as_content_declaration.md +1 -2
- package/frequent_questions/ja/build_dictionaries.md +1 -2
- package/frequent_questions/ja/build_error_CI_CD.md +1 -2
- package/frequent_questions/ja/bun_set_up.md +1 -2
- package/frequent_questions/ja/customized_locale_list.md +1 -2
- package/frequent_questions/ja/domain_routing.md +1 -2
- package/frequent_questions/ja/esbuild_error.md +1 -2
- package/frequent_questions/ja/get_locale_cookie.md +1 -2
- package/frequent_questions/ja/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ja/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ja/static_rendering.md +1 -3
- package/frequent_questions/ja/translated_path_url.md +1 -2
- package/frequent_questions/ja/unknown_command.md +1 -2
- package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ko/array_as_content_declaration.md +1 -2
- package/frequent_questions/ko/build_dictionaries.md +1 -2
- package/frequent_questions/ko/build_error_CI_CD.md +1 -2
- package/frequent_questions/ko/bun_set_up.md +1 -2
- package/frequent_questions/ko/customized_locale_list.md +1 -2
- package/frequent_questions/ko/domain_routing.md +1 -2
- package/frequent_questions/ko/esbuild_error.md +1 -2
- package/frequent_questions/ko/get_locale_cookie.md +1 -2
- package/frequent_questions/ko/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ko/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ko/static_rendering.md +1 -3
- package/frequent_questions/ko/translated_path_url.md +1 -2
- package/frequent_questions/ko/unknown_command.md +1 -2
- package/frequent_questions/pl/SSR_Next_no_[locale].md +104 -0
- package/frequent_questions/pl/array_as_content_declaration.md +71 -0
- package/frequent_questions/pl/build_dictionaries.md +58 -0
- package/frequent_questions/pl/build_error_CI_CD.md +74 -0
- package/frequent_questions/pl/bun_set_up.md +54 -0
- package/frequent_questions/pl/customized_locale_list.md +64 -0
- package/frequent_questions/pl/domain_routing.md +113 -0
- package/frequent_questions/pl/esbuild_error.md +29 -0
- package/frequent_questions/pl/get_locale_cookie.md +142 -0
- package/frequent_questions/pl/intlayer_command_undefined.md +155 -0
- package/frequent_questions/pl/locale_incorect_in_url.md +73 -0
- package/frequent_questions/pl/static_rendering.md +44 -0
- package/frequent_questions/pl/translated_path_url.md +55 -0
- package/frequent_questions/pl/unknown_command.md +97 -0
- package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/pt/array_as_content_declaration.md +1 -2
- package/frequent_questions/pt/build_dictionaries.md +1 -2
- package/frequent_questions/pt/build_error_CI_CD.md +1 -2
- package/frequent_questions/pt/bun_set_up.md +1 -2
- package/frequent_questions/pt/customized_locale_list.md +1 -2
- package/frequent_questions/pt/domain_routing.md +1 -2
- package/frequent_questions/pt/esbuild_error.md +1 -2
- package/frequent_questions/pt/get_locale_cookie.md +1 -2
- package/frequent_questions/pt/intlayer_command_undefined.md +1 -2
- package/frequent_questions/pt/locale_incorect_in_url.md +1 -2
- package/frequent_questions/pt/static_rendering.md +1 -3
- package/frequent_questions/pt/translated_path_url.md +1 -2
- package/frequent_questions/pt/unknown_command.md +1 -2
- package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ru/array_as_content_declaration.md +1 -2
- package/frequent_questions/ru/build_dictionaries.md +1 -2
- package/frequent_questions/ru/build_error_CI_CD.md +1 -2
- package/frequent_questions/ru/bun_set_up.md +1 -2
- package/frequent_questions/ru/customized_locale_list.md +1 -2
- package/frequent_questions/ru/domain_routing.md +1 -2
- package/frequent_questions/ru/esbuild_error.md +1 -2
- package/frequent_questions/ru/get_locale_cookie.md +1 -2
- package/frequent_questions/ru/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ru/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ru/static_rendering.md +1 -2
- package/frequent_questions/ru/translated_path_url.md +1 -2
- package/frequent_questions/ru/unknown_command.md +1 -2
- package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/tr/array_as_content_declaration.md +1 -2
- package/frequent_questions/tr/build_dictionaries.md +1 -2
- package/frequent_questions/tr/build_error_CI_CD.md +1 -2
- package/frequent_questions/tr/bun_set_up.md +1 -2
- package/frequent_questions/tr/customized_locale_list.md +1 -2
- package/frequent_questions/tr/domain_routing.md +1 -2
- package/frequent_questions/tr/esbuild_error.md +1 -2
- package/frequent_questions/tr/get_locale_cookie.md +1 -2
- package/frequent_questions/tr/intlayer_command_undefined.md +1 -2
- package/frequent_questions/tr/locale_incorect_in_url.md +1 -2
- package/frequent_questions/tr/static_rendering.md +1 -2
- package/frequent_questions/tr/translated_path_url.md +1 -2
- package/frequent_questions/tr/unknown_command.md +1 -2
- package/frequent_questions/vi/SSR_Next_no_[locale].md +106 -0
- package/frequent_questions/vi/array_as_content_declaration.md +71 -0
- package/frequent_questions/vi/build_dictionaries.md +58 -0
- package/frequent_questions/vi/build_error_CI_CD.md +74 -0
- package/frequent_questions/vi/bun_set_up.md +53 -0
- package/frequent_questions/vi/customized_locale_list.md +64 -0
- package/frequent_questions/vi/domain_routing.md +113 -0
- package/frequent_questions/vi/esbuild_error.md +29 -0
- package/frequent_questions/vi/get_locale_cookie.md +142 -0
- package/frequent_questions/vi/intlayer_command_undefined.md +155 -0
- package/frequent_questions/vi/locale_incorect_in_url.md +73 -0
- package/frequent_questions/vi/static_rendering.md +44 -0
- package/frequent_questions/vi/translated_path_url.md +55 -0
- package/frequent_questions/vi/unknown_command.md +97 -0
- package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/zh/array_as_content_declaration.md +1 -2
- package/frequent_questions/zh/build_dictionaries.md +1 -2
- package/frequent_questions/zh/build_error_CI_CD.md +1 -2
- package/frequent_questions/zh/bun_set_up.md +1 -2
- package/frequent_questions/zh/customized_locale_list.md +1 -2
- package/frequent_questions/zh/domain_routing.md +1 -2
- package/frequent_questions/zh/esbuild_error.md +1 -2
- package/frequent_questions/zh/get_locale_cookie.md +1 -2
- package/frequent_questions/zh/intlayer_command_undefined.md +1 -2
- package/frequent_questions/zh/locale_incorect_in_url.md +1 -2
- package/frequent_questions/zh/static_rendering.md +1 -3
- package/frequent_questions/zh/translated_path_url.md +1 -2
- package/frequent_questions/zh/unknown_command.md +1 -2
- package/legal/id/privacy_notice.md +83 -0
- package/legal/id/terms_of_service.md +55 -0
- package/legal/pl/privacy_notice.md +83 -0
- package/legal/pl/terms_of_service.md +55 -0
- package/legal/vi/privacy_notice.md +83 -0
- package/legal/vi/terms_of_service.md +55 -0
- package/package.json +19 -18
- package/src/generated/blog.entry.ts +38 -0
|
@@ -0,0 +1,885 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-06-18
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Jak przetłumaczyć swoją aplikację Nuxt i Vue – przewodnik i18n 2025
|
|
5
|
+
description: Dowiedz się, jak uczynić swoją stronę Nuxt i Vue wielojęzyczną. Postępuj zgodnie z dokumentacją, aby zinternacjonalizować (i18n) i przetłumaczyć ją.
|
|
6
|
+
keywords:
|
|
7
|
+
- Internacjonalizacja
|
|
8
|
+
- Dokumentacja
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Nuxt
|
|
11
|
+
- Vue
|
|
12
|
+
- JavaScript
|
|
13
|
+
slugs:
|
|
14
|
+
- doc
|
|
15
|
+
- environment
|
|
16
|
+
- nuxt-and-vue
|
|
17
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-nuxt-template
|
|
18
|
+
history:
|
|
19
|
+
- version: 5.5.10
|
|
20
|
+
date: 2025-06-29
|
|
21
|
+
changes: Inicjalizacja historii
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Przetłumacz swoją stronę Nuxt i Vue za pomocą Intlayer | Internacjonalizacja (i18n)
|
|
25
|
+
|
|
26
|
+
Zobacz [Application Template](https://github.com/aymericzip/intlayer-nuxt-template) na GitHub.
|
|
27
|
+
|
|
28
|
+
## Spis treści
|
|
29
|
+
|
|
30
|
+
<TOC/>
|
|
31
|
+
|
|
32
|
+
## Czym jest Intlayer?
|
|
33
|
+
|
|
34
|
+
**Intlayer** to innowacyjna, open-source'owa biblioteka do internacjonalizacji (i18n), zaprojektowana, aby uprościć obsługę wielojęzyczności we współczesnych aplikacjach webowych.
|
|
35
|
+
|
|
36
|
+
Dzięki Intlayer możesz:
|
|
37
|
+
|
|
38
|
+
- **Łatwo zarządzać tłumaczeniami** za pomocą deklaratywnych słowników na poziomie komponentów.
|
|
39
|
+
- **Dynamicznie lokalizować metadane**, trasy i treści.
|
|
40
|
+
- **Zapewnić wsparcie dla TypeScript** dzięki automatycznie generowanym typom, co poprawia autouzupełnianie i wykrywanie błędów.
|
|
41
|
+
- **Korzystać z zaawansowanych funkcji**, takich jak dynamiczne wykrywanie i przełączanie lokalizacji.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Przewodnik krok po kroku, jak skonfigurować Intlayer w aplikacji Nuxt
|
|
46
|
+
|
|
47
|
+
<iframe
|
|
48
|
+
src="https://stackblitz.com/github/aymericzip/intlayer-nuxt-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
49
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
50
|
+
title="Demo CodeSandbox - Jak internacjonalizować swoją aplikację za pomocą Intlayer"
|
|
51
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
52
|
+
loading="lazy"
|
|
53
|
+
/>
|
|
54
|
+
|
|
55
|
+
### Krok 1: Instalacja zależności
|
|
56
|
+
|
|
57
|
+
Zainstaluj niezbędne pakiety za pomocą npm:
|
|
58
|
+
|
|
59
|
+
```bash packageManager="npm"
|
|
60
|
+
npm install intlayer vue-intlayer
|
|
61
|
+
npm install --save-dev nuxt-intlayer
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```bash packageManager="pnpm"
|
|
65
|
+
pnpm add intlayer vue-intlayer
|
|
66
|
+
pnpm add --save-dev nuxt-intlayer
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```bash packageManager="yarn"
|
|
70
|
+
yarn add intlayer vue-intlayer
|
|
71
|
+
yarn add --save-dev nuxt-intlayer
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
- **intlayer**
|
|
75
|
+
|
|
76
|
+
- **intlayer**
|
|
77
|
+
|
|
78
|
+
Podstawowy pakiet, który dostarcza narzędzia do internacjonalizacji do zarządzania konfiguracją, tłumaczeń, [deklaracji treści](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/content_file.md), transpilecji oraz [poleceń CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_cli.md).
|
|
79
|
+
|
|
80
|
+
- **vue-intlayer**
|
|
81
|
+
Pakiet integrujący Intlayer z aplikacją Vue. Zawiera composables dla komponentów Vue.
|
|
82
|
+
|
|
83
|
+
- **nuxt-intlayer**
|
|
84
|
+
Moduł Nuxt integrujący Intlayer z aplikacjami Nuxt. Zapewnia automatyczną konfigurację, middleware do wykrywania lokalizacji, zarządzanie ciasteczkami oraz przekierowania URL.
|
|
85
|
+
|
|
86
|
+
### Krok 2: Konfiguracja Twojego projektu
|
|
87
|
+
|
|
88
|
+
Utwórz plik konfiguracyjny, aby skonfigurować języki swojej aplikacji:
|
|
89
|
+
|
|
90
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
91
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
92
|
+
|
|
93
|
+
const config: IntlayerConfig = {
|
|
94
|
+
internationalization: {
|
|
95
|
+
locales: [
|
|
96
|
+
Locales.ENGLISH,
|
|
97
|
+
Locales.FRENCH,
|
|
98
|
+
Locales.SPANISH,
|
|
99
|
+
// Twoje inne lokalizacje
|
|
100
|
+
],
|
|
101
|
+
defaultLocale: Locales.ENGLISH,
|
|
102
|
+
},
|
|
103
|
+
content: {
|
|
104
|
+
contentDir: ["."], // Domyślnie Intlayer będzie obserwować pliki deklaracji treści z katalogu `./src`
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export default config;
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
112
|
+
import { Locales } from "intlayer";
|
|
113
|
+
|
|
114
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
115
|
+
const config = {
|
|
116
|
+
internationalization: {
|
|
117
|
+
locales: [
|
|
118
|
+
Locales.ENGLISH,
|
|
119
|
+
Locales.FRENCH,
|
|
120
|
+
Locales.SPANISH,
|
|
121
|
+
// Twoje inne lokalizacje
|
|
122
|
+
],
|
|
123
|
+
defaultLocale: Locales.ENGLISH,
|
|
124
|
+
},
|
|
125
|
+
content: {
|
|
126
|
+
contentDir: ["."],
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
export default config;
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
134
|
+
const { Locales } = require("intlayer");
|
|
135
|
+
|
|
136
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
137
|
+
const config = {
|
|
138
|
+
internationalization: {
|
|
139
|
+
locales: [
|
|
140
|
+
Locales.ENGLISH,
|
|
141
|
+
Locales.FRENCH,
|
|
142
|
+
Locales.SPANISH,
|
|
143
|
+
// Twoje inne lokalizacje
|
|
144
|
+
],
|
|
145
|
+
defaultLocale: Locales.ENGLISH,
|
|
146
|
+
},
|
|
147
|
+
content: {
|
|
148
|
+
contentDir: ["."],
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
module.exports = config;
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
> Za pomocą tego pliku konfiguracyjnego możesz ustawić lokalizowane adresy URL, przekierowania w middleware, nazwy ciasteczek, lokalizację i rozszerzenie deklaracji treści, wyłączyć logi Intlayer w konsoli i wiele więcej. Pełną listę dostępnych parametrów znajdziesz w [dokumentacji konfiguracyjnej](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md).
|
|
156
|
+
|
|
157
|
+
### Krok 3: Zintegruj Intlayer w swojej konfiguracji Nuxt
|
|
158
|
+
|
|
159
|
+
Dodaj moduł intlayer do swojej konfiguracji Nuxt:
|
|
160
|
+
|
|
161
|
+
```typescript fileName="nuxt.config.ts"
|
|
162
|
+
import { defineNuxtConfig } from "nuxt/config";
|
|
163
|
+
|
|
164
|
+
export default defineNuxtConfig({
|
|
165
|
+
// ... Twoja istniejąca konfiguracja Nuxt
|
|
166
|
+
modules: ["nuxt-intlayer"],
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
> Moduł `nuxt-intlayer` automatycznie obsługuje integrację Intlayer z Nuxt. Konfiguruje budowanie deklaracji treści, monitoruje pliki w trybie deweloperskim, dostarcza middleware do wykrywania lokalizacji oraz zarządza lokalizowanym routingiem.
|
|
171
|
+
|
|
172
|
+
### Krok 4: Zadeklaruj swoją treść
|
|
173
|
+
|
|
174
|
+
Twórz i zarządzaj deklaracjami treści, aby przechowywać tłumaczenia:
|
|
175
|
+
|
|
176
|
+
```tsx fileName="components/helloWorld.content.ts" contentDeclarationFormat="typescript"
|
|
177
|
+
import { t, type Dictionary } from "intlayer";
|
|
178
|
+
|
|
179
|
+
const helloWorldContent = {
|
|
180
|
+
key: "helloworld",
|
|
181
|
+
content: {
|
|
182
|
+
count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es " }),
|
|
183
|
+
edit: t({
|
|
184
|
+
en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
|
|
185
|
+
fr: "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
|
|
186
|
+
es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
|
|
187
|
+
}),
|
|
188
|
+
checkOut: t({
|
|
189
|
+
pl: "Sprawdź ",
|
|
190
|
+
en: "Check out ",
|
|
191
|
+
fr: "Vérifiez ",
|
|
192
|
+
es: "Compruebe ",
|
|
193
|
+
}),
|
|
194
|
+
nuxtIntlayer: t({
|
|
195
|
+
pl: "Dokumentacja Nuxt Intlayer",
|
|
196
|
+
en: "Nuxt Intlayer documentation",
|
|
197
|
+
fr: "Documentation de Nuxt Intlayer",
|
|
198
|
+
es: "Documentación de Nuxt Intlayer",
|
|
199
|
+
}),
|
|
200
|
+
learnMore: t({
|
|
201
|
+
pl: "Dowiedz się więcej o Nuxt w ",
|
|
202
|
+
en: "Learn more about Nuxt in the ",
|
|
203
|
+
fr: "En savoir plus sur Nuxt dans la ",
|
|
204
|
+
es: "Aprenda más sobre Nuxt en la ",
|
|
205
|
+
}),
|
|
206
|
+
nuxtDocs: t({
|
|
207
|
+
pl: "Dokumentacja Nuxt",
|
|
208
|
+
en: "Nuxt Documentation",
|
|
209
|
+
fr: "Documentation Nuxt",
|
|
210
|
+
es: "Documentación de Nuxt",
|
|
211
|
+
}),
|
|
212
|
+
readTheDocs: t({
|
|
213
|
+
pl: "Kliknij logo Nuxt, aby dowiedzieć się więcej",
|
|
214
|
+
en: "Click on the Nuxt logo to learn more",
|
|
215
|
+
pl: "Kliknij na logo Nuxt, aby dowiedzieć się więcej",
|
|
216
|
+
fr: "Cliquez sur le logo Nuxt pour en savoir plus",
|
|
217
|
+
es: "Haga clic en el logotipo de Nuxt para obtener más información",
|
|
218
|
+
}),
|
|
219
|
+
},
|
|
220
|
+
} satisfies Dictionary;
|
|
221
|
+
|
|
222
|
+
export default helloWorldContent;
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
```javascript fileName="components/helloWorld.content.mjs" contentDeclarationFormat="esm"
|
|
226
|
+
import { t } from "intlayer";
|
|
227
|
+
|
|
228
|
+
/** @type {import('intlayer').Dictionary} */
|
|
229
|
+
const helloWorldContent = {
|
|
230
|
+
key: "helloworld",
|
|
231
|
+
content: {
|
|
232
|
+
count: t({
|
|
233
|
+
pl: "licznik to ",
|
|
234
|
+
en: "count is ",
|
|
235
|
+
fr: "le compte est ",
|
|
236
|
+
es: "el recuento es ",
|
|
237
|
+
}),
|
|
238
|
+
edit: t({
|
|
239
|
+
pl: "Edytuj <code>components/HelloWorld.vue</code> i zapisz, aby przetestować HMR",
|
|
240
|
+
en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
|
|
241
|
+
fr: "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
|
|
242
|
+
es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
|
|
243
|
+
}),
|
|
244
|
+
checkOut: t({
|
|
245
|
+
pl: "Sprawdź ",
|
|
246
|
+
en: "Check out ",
|
|
247
|
+
fr: "Vérifiez ",
|
|
248
|
+
es: "Compruebe ",
|
|
249
|
+
}),
|
|
250
|
+
nuxtIntlayer: t({
|
|
251
|
+
pl: "Dokumentacja Nuxt Intlayer",
|
|
252
|
+
en: "Nuxt Intlayer documentation",
|
|
253
|
+
fr: "Documentation de Nuxt Intlayer",
|
|
254
|
+
es: "Documentación de Nuxt Intlayer",
|
|
255
|
+
}),
|
|
256
|
+
learnMore: t({
|
|
257
|
+
pl: "Dowiedz się więcej o Nuxt w ",
|
|
258
|
+
en: "Learn more about Nuxt in the ",
|
|
259
|
+
fr: "En savoir plus sur Nuxt dans la ",
|
|
260
|
+
es: "Aprenda más sobre Nuxt en la ",
|
|
261
|
+
}),
|
|
262
|
+
nuxtDocs: t({
|
|
263
|
+
pl: "Dokumentacja Nuxt",
|
|
264
|
+
en: "Nuxt Documentation",
|
|
265
|
+
fr: "Documentation Nuxt",
|
|
266
|
+
es: "Documentación de Nuxt",
|
|
267
|
+
}),
|
|
268
|
+
readTheDocs: t({
|
|
269
|
+
pl: "Kliknij na logo Nuxt, aby dowiedzieć się więcej",
|
|
270
|
+
en: "Click on the Nuxt logo to learn more",
|
|
271
|
+
fr: "Cliquez sur le logo Nuxt pour en savoir plus",
|
|
272
|
+
es: "Haga clic en el logotipo de Nuxt para obtener más información",
|
|
273
|
+
}),
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
export default helloWorldContent;
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
```javascript fileName="components/helloWorld.content.cjs" contentDeclarationFormat="commonjs"
|
|
281
|
+
const { t } = require("intlayer");
|
|
282
|
+
|
|
283
|
+
/** @type {import('intlayer').Dictionary} */
|
|
284
|
+
const helloWorldContent = {
|
|
285
|
+
key: "helloworld",
|
|
286
|
+
content: {
|
|
287
|
+
count: t({ pl: "licznik to ", en: "count is ", fr: "le compte est ", es: "el recuento es " }),
|
|
288
|
+
edit: t({
|
|
289
|
+
pl: "Edytuj <code>components/HelloWorld.vue</code> i zapisz, aby przetestować HMR",
|
|
290
|
+
en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
|
|
291
|
+
fr: "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
|
|
292
|
+
es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
|
|
293
|
+
}),
|
|
294
|
+
checkOut: t({ pl: "Sprawdź ", en: "Check out ", fr: "Vérifiez ", es: "Compruebe " }),
|
|
295
|
+
nuxtIntlayer: t({
|
|
296
|
+
pl: "Dokumentacja Nuxt Intlayer",
|
|
297
|
+
en: "Nuxt Intlayer documentation",
|
|
298
|
+
fr: "Documentation de Nuxt Intlayer",
|
|
299
|
+
es: "Documentación de Nuxt Intlayer",
|
|
300
|
+
}),
|
|
301
|
+
learnMore: t({
|
|
302
|
+
pl: "Dowiedz się więcej o Nuxt w ",
|
|
303
|
+
en: "Learn more about Nuxt in the ",
|
|
304
|
+
fr: "En savoir plus sur Nuxt dans la ",
|
|
305
|
+
es: "Aprenda más sobre Nuxt en la ",
|
|
306
|
+
}),
|
|
307
|
+
nuxtDocs: t({
|
|
308
|
+
pl: "Dokumentacja Nuxt",
|
|
309
|
+
en: "Nuxt Documentation",
|
|
310
|
+
fr: "Documentation Nuxt",
|
|
311
|
+
es: "Documentación de Nuxt",
|
|
312
|
+
}),
|
|
313
|
+
readTheDocs: t({
|
|
314
|
+
pl: "Kliknij logo Nuxt, aby dowiedzieć się więcej",
|
|
315
|
+
en: "Click on the Nuxt logo to learn more",
|
|
316
|
+
fr: "Cliquez sur le logo Nuxt pour en savoir plus",
|
|
317
|
+
es: "Haga clic en el logotipo de Nuxt para obtener más información",
|
|
318
|
+
}),
|
|
319
|
+
},
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
module.exports = helloWorldContent;
|
|
323
|
+
es: "Documentación de Nuxt Intlayer",
|
|
324
|
+
}),
|
|
325
|
+
learnMore: t({
|
|
326
|
+
pl: "Dowiedz się więcej o Nuxt w ",
|
|
327
|
+
en: "Learn more about Nuxt in the ",
|
|
328
|
+
fr: "En savoir plus sur Nuxt dans la ",
|
|
329
|
+
es: "Aprenda más sobre Nuxt en la ",
|
|
330
|
+
}),
|
|
331
|
+
nuxtDocs: t({
|
|
332
|
+
pl: "Dokumentacja Nuxt",
|
|
333
|
+
en: "Nuxt Documentation",
|
|
334
|
+
fr: "Documentation Nuxt",
|
|
335
|
+
es: "Documentación de Nuxt",
|
|
336
|
+
}),
|
|
337
|
+
readTheDocs: t({
|
|
338
|
+
pl: "Kliknij na logo Nuxt, aby dowiedzieć się więcej",
|
|
339
|
+
en: "Click on the Nuxt logo to learn more",
|
|
340
|
+
fr: "Cliquez sur le logo Nuxt pour en savoir plus",
|
|
341
|
+
es: "Haga clic en el logotipo de Nuxt para obtener más información",
|
|
342
|
+
}),
|
|
343
|
+
},
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
module.exports = helloWorldContent;
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
```json fileName="components/helloWorld.content.json" contentDeclarationFormat="json"
|
|
350
|
+
{
|
|
351
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
352
|
+
"key": "helloworld",
|
|
353
|
+
"content": {
|
|
354
|
+
"count": {
|
|
355
|
+
"nodeType": "translation",
|
|
356
|
+
"translation": {
|
|
357
|
+
"pl": "licznik to ",
|
|
358
|
+
"en": "count is ",
|
|
359
|
+
"fr": "le compte est ",
|
|
360
|
+
"es": "el recuento es "
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
"edit": {
|
|
364
|
+
"nodeType": "translation",
|
|
365
|
+
"translation": {
|
|
366
|
+
"pl": "Edytuj <code>components/HelloWorld.vue</code> i zapisz, aby przetestować HMR",
|
|
367
|
+
"en": "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
|
|
368
|
+
"fr": "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
|
|
369
|
+
"es": "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR"
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
"checkOut": {
|
|
373
|
+
"nodeType": "translation",
|
|
374
|
+
"translation": {
|
|
375
|
+
"pl": "Sprawdź ",
|
|
376
|
+
"en": "Check out ",
|
|
377
|
+
"fr": "Vérifiez ",
|
|
378
|
+
"es": "Compruebe "
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
"nuxtIntlayer": {
|
|
382
|
+
"nodeType": "translation",
|
|
383
|
+
"translation": {
|
|
384
|
+
"nodeType": "translation",
|
|
385
|
+
"translation": {
|
|
386
|
+
"pl": "licznik to ",
|
|
387
|
+
"en": "count is ",
|
|
388
|
+
"fr": "le compte est ",
|
|
389
|
+
"es": "el recuento es "
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
"edit": {
|
|
393
|
+
"nodeType": "translation",
|
|
394
|
+
"translation": {
|
|
395
|
+
"pl": "Edytuj <code>components/HelloWorld.vue</code> i zapisz, aby przetestować HMR",
|
|
396
|
+
"en": "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
|
|
397
|
+
"fr": "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
|
|
398
|
+
"es": "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR"
|
|
399
|
+
}
|
|
400
|
+
},
|
|
401
|
+
"checkOut": {
|
|
402
|
+
"nodeType": "translation",
|
|
403
|
+
"translation": {
|
|
404
|
+
"pl": "Sprawdź ",
|
|
405
|
+
"en": "Check out ",
|
|
406
|
+
"fr": "Vérifiez ",
|
|
407
|
+
"es": "Compruebe "
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
"nuxtIntlayer": {
|
|
411
|
+
"nodeType": "translation",
|
|
412
|
+
"translation": {
|
|
413
|
+
"pl": "Dokumentacja Nuxt Intlayer",
|
|
414
|
+
"en": "Nuxt Intlayer documentation",
|
|
415
|
+
"fr": "Documentation de Nuxt Intlayer",
|
|
416
|
+
"es": "Documentación de Nuxt Intlayer"
|
|
417
|
+
}
|
|
418
|
+
},
|
|
419
|
+
"learnMore": {
|
|
420
|
+
"nodeType": "translation",
|
|
421
|
+
"translation": {
|
|
422
|
+
"pl": "Dowiedz się więcej o Nuxt w ",
|
|
423
|
+
"en": "Learn more about Nuxt in the ",
|
|
424
|
+
"fr": "En savoir plus sur Nuxt dans la ",
|
|
425
|
+
"es": "Aprenda más sobre Nuxt en la "
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
"nuxtDocs": {
|
|
429
|
+
"nodeType": "translation",
|
|
430
|
+
"translation": {
|
|
431
|
+
"pl": "Dokumentacja Nuxt",
|
|
432
|
+
"en": "Nuxt Documentation",
|
|
433
|
+
"fr": "Documentation Nuxt",
|
|
434
|
+
"es": "Documentación de Nuxt"
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
"readTheDocs": {
|
|
438
|
+
"nodeType": "translation",
|
|
439
|
+
"translation": {
|
|
440
|
+
"pl": "Kliknij logo Nuxt, aby dowiedzieć się więcej",
|
|
441
|
+
"en": "Click on the Nuxt logo to learn more",
|
|
442
|
+
"fr": "Cliquez sur le logo Nuxt pour en savoir plus",
|
|
443
|
+
"es": "Haga clic en el logotipo de Nuxt para obtener más información"
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
> Twoje deklaracje zawartości mogą być zdefiniowane w dowolnym miejscu w Twojej aplikacji, pod warunkiem, że znajdują się w katalogu `contentDir` (domyślnie `./src`). I pasują do rozszerzenia pliku deklaracji zawartości (domyślnie `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
451
|
+
|
|
452
|
+
> Aby uzyskać więcej szczegółów, zapoznaj się z [dokumentacją deklaracji zawartości](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/content_file.md).
|
|
453
|
+
|
|
454
|
+
### Krok 5: Wykorzystaj Intlayer w swoim kodzie
|
|
455
|
+
|
|
456
|
+
Uzyskaj dostęp do swoich słowników zawartości w całej aplikacji Nuxt, korzystając z composable `useIntlayer`:
|
|
457
|
+
|
|
458
|
+
```vue fileName="components/HelloWorld.vue"
|
|
459
|
+
<script setup lang="ts">
|
|
460
|
+
import { ref } from "vue";
|
|
461
|
+
import { useIntlayer } from "vue-intlayer";
|
|
462
|
+
|
|
463
|
+
defineProps({
|
|
464
|
+
msg: String,
|
|
465
|
+
});
|
|
466
|
+
|
|
467
|
+
const {
|
|
468
|
+
count,
|
|
469
|
+
edit,
|
|
470
|
+
checkOut,
|
|
471
|
+
nuxtIntlayer,
|
|
472
|
+
learnMore,
|
|
473
|
+
nuxtDocs,
|
|
474
|
+
readTheDocs,
|
|
475
|
+
} = useIntlayer("helloworld");
|
|
476
|
+
const countRef = ref(0);
|
|
477
|
+
</script>
|
|
478
|
+
|
|
479
|
+
<template>
|
|
480
|
+
<h1>{{ msg }}</h1>
|
|
481
|
+
|
|
482
|
+
<div class="card">
|
|
483
|
+
<button type="button" @click="countRef++">
|
|
484
|
+
<count />
|
|
485
|
+
{{ countRef }}
|
|
486
|
+
</button>
|
|
487
|
+
<p v-html="edit"></p>
|
|
488
|
+
</div>
|
|
489
|
+
|
|
490
|
+
<p>
|
|
491
|
+
<checkOut />
|
|
492
|
+
<a href="https://nuxt.com/docs/getting-started/introduction" target="_blank"
|
|
493
|
+
>Nuxt</a
|
|
494
|
+
>, <nuxtIntlayer />
|
|
495
|
+
</p>
|
|
496
|
+
<p>
|
|
497
|
+
<learnMore />
|
|
498
|
+
<a href="https://nuxt.com" target="_blank"><nuxtDocs /></a>.
|
|
499
|
+
</p>
|
|
500
|
+
<p class="read-the-docs"><readTheDocs /></p>
|
|
501
|
+
<p class="read-the-docs">{{ readTheDocs }}</p>
|
|
502
|
+
</template>
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
#### Dostęp do treści w Intlayer
|
|
506
|
+
|
|
507
|
+
Intlayer oferuje różne API do dostępu do Twoich treści:
|
|
508
|
+
|
|
509
|
+
- **Składnia oparta na komponentach** (zalecana):
|
|
510
|
+
Użyj składni `<myContent />` lub `<Component :is="myContent" />`, aby wyrenderować treść jako węzeł Intlayer. Integruje się to bezproblemowo z [Visual Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_visual_editor.md) oraz [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md).
|
|
511
|
+
|
|
512
|
+
- **Składnia oparta na łańcuchu znaków**:
|
|
513
|
+
Użyj `{{ myContent }}`, aby wyrenderować treść jako zwykły tekst, bez wsparcia Visual Editor.
|
|
514
|
+
|
|
515
|
+
- **Składnia surowego HTML**:
|
|
516
|
+
Użyj `<div v-html="myContent" />`, aby wyrenderować treść jako surowy HTML, bez wsparcia Visual Editor.
|
|
517
|
+
|
|
518
|
+
- **Składnia destrukturyzacji**:
|
|
519
|
+
`useIntlayer` composable zwraca Proxy z zawartością. Ten proxy można zdestrukturyzować, aby uzyskać dostęp do zawartości, zachowując rekatywność.
|
|
520
|
+
- Użyj `const content = useIntlayer("myContent");` oraz `{{ content.myContent }}` / `<content.myContent />`.
|
|
521
|
+
- Lub użyj `const { myContent } = useIntlayer("myContent");` oraz `{{ myContent }}` / `<myContent/>` do zdestrukturyzowania zawartości.
|
|
522
|
+
|
|
523
|
+
### (Opcjonalnie) Krok 6: Zmień język swojej zawartości
|
|
524
|
+
|
|
525
|
+
Aby zmienić język swojej zawartości, możesz użyć funkcji `setLocale` dostarczonej przez composable `useLocale`. Funkcja ta pozwala ustawić lokalizację aplikacji i odpowiednio zaktualizować zawartość.
|
|
526
|
+
|
|
527
|
+
Utwórz komponent do przełączania między językami:
|
|
528
|
+
|
|
529
|
+
```vue fileName="components/LocaleSwitcher.vue"
|
|
530
|
+
<template>
|
|
531
|
+
<div class="locale-switcher">
|
|
532
|
+
<select v-model="selectedLocale" @change="changeLocale">
|
|
533
|
+
<option v-for="loc in availableLocales" :key="loc" :value="loc">
|
|
534
|
+
{{ getLocaleName(loc) }}
|
|
535
|
+
</option>
|
|
536
|
+
</select>
|
|
537
|
+
</div>
|
|
538
|
+
</template>
|
|
539
|
+
|
|
540
|
+
<script setup lang="ts">
|
|
541
|
+
import { ref, watch } from "vue";
|
|
542
|
+
import { getLocaleName } from "intlayer";
|
|
543
|
+
import { useLocale } from "vue-intlayer";
|
|
544
|
+
|
|
545
|
+
// Pobierz informacje o lokalizacji oraz funkcję setLocale
|
|
546
|
+
const { locale, availableLocales, setLocale } = useLocale();
|
|
547
|
+
|
|
548
|
+
// Śledź wybraną lokalizację za pomocą ref
|
|
549
|
+
const selectedLocale = ref(locale.value);
|
|
550
|
+
|
|
551
|
+
// Aktualizuj lokalizację po zmianie wyboru
|
|
552
|
+
const changeLocale = () => setLocale(selectedLocale.value);
|
|
553
|
+
|
|
554
|
+
// Synchronizuj selectedLocale z globalną lokalizacją
|
|
555
|
+
watch(
|
|
556
|
+
() => locale.value,
|
|
557
|
+
(newLocale) => {
|
|
558
|
+
selectedLocale.value = newLocale;
|
|
559
|
+
}
|
|
560
|
+
);
|
|
561
|
+
</script>
|
|
562
|
+
</template>
|
|
563
|
+
|
|
564
|
+
<style scoped>
|
|
565
|
+
.locale-switcher {
|
|
566
|
+
margin: 1rem 0;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
select {
|
|
570
|
+
padding: 0.5rem;
|
|
571
|
+
border-radius: 0.25rem;
|
|
572
|
+
border: 1px solid #ccc;
|
|
573
|
+
}
|
|
574
|
+
</style>
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
Następnie użyj tego komponentu na swoich stronach lub w layoucie:
|
|
578
|
+
|
|
579
|
+
```vue fileName="app.vue"
|
|
580
|
+
<script setup lang="ts">
|
|
581
|
+
import { useIntlayer } from "vue-intlayer";
|
|
582
|
+
import LocaleSwitcher from "~/components/LocaleSwitcher.vue";
|
|
583
|
+
|
|
584
|
+
const content = useIntlayer("app"); // Utwórz powiązany plik deklaracji intlayer
|
|
585
|
+
</script>
|
|
586
|
+
|
|
587
|
+
<template>
|
|
588
|
+
<div>
|
|
589
|
+
<header>
|
|
590
|
+
<LocaleSwitcher />
|
|
591
|
+
</header>
|
|
592
|
+
<main>
|
|
593
|
+
<NuxtPage />
|
|
594
|
+
</main>
|
|
595
|
+
</div>
|
|
596
|
+
</template>
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
### (Opcjonalny) Krok 7: Dodaj lokalizowane routingi do swojej aplikacji
|
|
600
|
+
|
|
601
|
+
Nuxt automatycznie obsługuje lokalizowane routingi podczas korzystania z modułu `nuxt-intlayer`. Tworzy to trasy dla każdego języka automatycznie na podstawie struktury katalogu stron.
|
|
602
|
+
|
|
603
|
+
Przykład:
|
|
604
|
+
|
|
605
|
+
```plaintext
|
|
606
|
+
pages/
|
|
607
|
+
├── index.vue → /, /fr, /es
|
|
608
|
+
├── about.vue → /about, /fr/about, /es/about
|
|
609
|
+
└── contact/
|
|
610
|
+
└── index.vue → /contact, /fr/contact, /es/contact
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
Aby utworzyć lokalizowaną stronę, po prostu stwórz swoje pliki Vue w katalogu `pages/`:
|
|
614
|
+
|
|
615
|
+
```vue fileName="pages/about.vue"
|
|
616
|
+
<script setup lang="ts">
|
|
617
|
+
import { useIntlayer } from "vue-intlayer";
|
|
618
|
+
|
|
619
|
+
const content = useIntlayer("about");
|
|
620
|
+
</script>
|
|
621
|
+
|
|
622
|
+
<template>
|
|
623
|
+
<div>
|
|
624
|
+
<h1>{{ content.title }}</h1>
|
|
625
|
+
<p>{{ content.description }}</p>
|
|
626
|
+
</div>
|
|
627
|
+
</template>
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
Moduł `nuxt-intlayer` automatycznie:
|
|
631
|
+
|
|
632
|
+
- Wykrywa preferowany język użytkownika
|
|
633
|
+
- Obsługuje przełączanie języka przez URL
|
|
634
|
+
- Ustawia odpowiedni atrybut `<html lang="">`
|
|
635
|
+
- Zarządza ciasteczkami językowymi
|
|
636
|
+
- Przekierowuje użytkowników na odpowiedni zlokalizowany URL
|
|
637
|
+
|
|
638
|
+
### (Opcjonalny) Krok 8: Tworzenie komponentu Lokalizowanego Linku
|
|
639
|
+
|
|
640
|
+
Aby zapewnić, że nawigacja w Twojej aplikacji respektuje aktualny język, możesz stworzyć niestandardowy komponent `LocalizedLink`. Komponent ten automatycznie dodaje prefiks języka do wewnętrznych adresów URL.
|
|
641
|
+
|
|
642
|
+
```vue fileName="components/LocalizedLink.vue"
|
|
643
|
+
<template>
|
|
644
|
+
<NuxtLink :to="localizedHref" v-bind="$attrs">
|
|
645
|
+
<slot />
|
|
646
|
+
</NuxtLink>
|
|
647
|
+
</template>
|
|
648
|
+
|
|
649
|
+
<script setup lang="ts">
|
|
650
|
+
import { computed } from "vue";
|
|
651
|
+
import { getLocalizedUrl } from "intlayer";
|
|
652
|
+
import { useLocale } from "vue-intlayer";
|
|
653
|
+
|
|
654
|
+
const props = defineProps({
|
|
655
|
+
to: {
|
|
656
|
+
type: String,
|
|
657
|
+
required: true,
|
|
658
|
+
},
|
|
659
|
+
});
|
|
660
|
+
|
|
661
|
+
const { locale } = useLocale();
|
|
662
|
+
|
|
663
|
+
// Sprawdź, czy link jest zewnętrzny
|
|
664
|
+
const isExternalLink = computed(() => /^https?:\/\//.test(props.to || ""));
|
|
665
|
+
|
|
666
|
+
// Utwórz zlokalizowany href dla linków wewnętrznych
|
|
667
|
+
const localizedHref = computed(() =>
|
|
668
|
+
isExternalLink.value ? props.to : getLocalizedUrl(props.to, locale.value)
|
|
669
|
+
);
|
|
670
|
+
</script>
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
Następnie użyj tego komponentu w całej aplikacji:
|
|
674
|
+
|
|
675
|
+
```vue fileName="pages/index.vue"
|
|
676
|
+
<template>
|
|
677
|
+
<div>
|
|
678
|
+
<LocalizedLink to="/about">
|
|
679
|
+
{{ content.aboutLink }}
|
|
680
|
+
</LocalizedLink>
|
|
681
|
+
<LocalizedLink to="/contact">
|
|
682
|
+
{{ content.contactLink }}
|
|
683
|
+
</LocalizedLink>
|
|
684
|
+
</div>
|
|
685
|
+
</template>
|
|
686
|
+
|
|
687
|
+
<script setup lang="ts">
|
|
688
|
+
import { useIntlayer } from "vue-intlayer";
|
|
689
|
+
import LocalizedLink from "~/components/LocalizedLink.vue";
|
|
690
|
+
|
|
691
|
+
const content = useIntlayer("home");
|
|
692
|
+
</script>
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
### (Opcjonalny) Krok 9: Obsługa metadanych i SEO
|
|
696
|
+
|
|
697
|
+
Nuxt oferuje doskonałe możliwości SEO. Możesz użyć Intlayer do obsługi zlokalizowanych metadanych:
|
|
698
|
+
|
|
699
|
+
```vue fileName="pages/about.vue"
|
|
700
|
+
<script setup lang="ts">
|
|
701
|
+
import { useSeoMeta } from "nuxt/app";
|
|
702
|
+
import { getIntlayer } from "intlayer";
|
|
703
|
+
import { useLocale } from "vue-intlayer";
|
|
704
|
+
|
|
705
|
+
const { locale } = useLocale();
|
|
706
|
+
const content = getIntlayer("about-meta", locale.value);
|
|
707
|
+
|
|
708
|
+
useSeoMeta({
|
|
709
|
+
title: content.title,
|
|
710
|
+
description: content.description,
|
|
711
|
+
});
|
|
712
|
+
</script>
|
|
713
|
+
|
|
714
|
+
<template>
|
|
715
|
+
<div>
|
|
716
|
+
<h1>{{ content.pageTitle }}</h1>
|
|
717
|
+
<p>{{ content.pageContent }}</p>
|
|
718
|
+
</div>
|
|
719
|
+
</template>
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
Utwórz odpowiadającą deklarację zawartości:
|
|
723
|
+
|
|
724
|
+
```ts fileName="pages/about-meta.content.ts"
|
|
725
|
+
import { t, type Dictionary } from "intlayer";
|
|
726
|
+
import type { useSeoMeta } from "nuxt/app";
|
|
727
|
+
|
|
728
|
+
const aboutMetaContent = {
|
|
729
|
+
key: "about-meta",
|
|
730
|
+
content: {
|
|
731
|
+
title: t({
|
|
732
|
+
pl: "O nas - Moja Firma",
|
|
733
|
+
en: "About Us - My Company",
|
|
734
|
+
fr: "À Propos - Ma Société",
|
|
735
|
+
es: "Acerca de Nosotros - Mi Empresa",
|
|
736
|
+
}),
|
|
737
|
+
description: t({
|
|
738
|
+
pl: "Dowiedz się więcej o naszej firmie i naszej misji",
|
|
739
|
+
en: "Learn more about our company and our mission",
|
|
740
|
+
fr: "En savoir plus sur notre société et notre mission",
|
|
741
|
+
es: "Conozca más sobre nuestra empresa y nuestra misión",
|
|
742
|
+
}),
|
|
743
|
+
},
|
|
744
|
+
} satisfies Dictionary<Parameters<typeof useSeoMeta>[0]>;
|
|
745
|
+
|
|
746
|
+
export default aboutMetaContent;
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
```typescript fileName="pages/about-meta.content.mjs" contentDeclarationFormat="esm"
|
|
750
|
+
import { t } from "intlayer";
|
|
751
|
+
|
|
752
|
+
/** @type {import('intlayer').Dictionary} */
|
|
753
|
+
const aboutMetaContent = {
|
|
754
|
+
key: "about-meta",
|
|
755
|
+
content: {
|
|
756
|
+
title: t({
|
|
757
|
+
zh: "关于我们 - 我的公司",
|
|
758
|
+
en: "About Us - My Company",
|
|
759
|
+
fr: "À Propos - Ma Société",
|
|
760
|
+
es: "Acerca de Nosotros - Mi Empresa",
|
|
761
|
+
pl: "O nas - Moja Firma",
|
|
762
|
+
}),
|
|
763
|
+
description: t({
|
|
764
|
+
zh: "了解更多关于我们公司和我们的使命",
|
|
765
|
+
en: "Learn more about our company and our mission",
|
|
766
|
+
fr: "En savoir plus sur notre société et notre mission",
|
|
767
|
+
es: "Conozca más sobre nuestra empresa y nuestra misión",
|
|
768
|
+
pl: "Dowiedz się więcej o naszej firmie i naszej misji",
|
|
769
|
+
}),
|
|
770
|
+
},
|
|
771
|
+
};
|
|
772
|
+
|
|
773
|
+
export default aboutMetaContent;
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
```typescript fileName="pages/about-meta.content.js" contentDeclarationFormat="cjs"
|
|
777
|
+
const { t } = require("intlayer");
|
|
778
|
+
|
|
779
|
+
/** @type {import('intlayer').Dictionary} */
|
|
780
|
+
const aboutMetaContent = {
|
|
781
|
+
key: "about-meta",
|
|
782
|
+
content: {
|
|
783
|
+
title: t({
|
|
784
|
+
zh: "关于我们 - 我的公司",
|
|
785
|
+
en: "About Us - My Company",
|
|
786
|
+
fr: "À Propos - Ma Société",
|
|
787
|
+
es: "Acerca de Nosotros - Mi Empresa",
|
|
788
|
+
pl: "O nas - Moja Firma",
|
|
789
|
+
}),
|
|
790
|
+
fr: "À Propos - Ma Société",
|
|
791
|
+
es: "Acerca de Nosotros - Mi Empresa",
|
|
792
|
+
}),
|
|
793
|
+
description: t({
|
|
794
|
+
zh: "了解更多关于我们公司和我们的使命",
|
|
795
|
+
en: "Learn more about our company and our mission",
|
|
796
|
+
fr: "En savoir plus sur notre société et notre mission",
|
|
797
|
+
es: "Conozca más sobre nuestra empresa y nuestra misión",
|
|
798
|
+
pl: "Dowiedz się więcej o naszej firmie i naszej misji",
|
|
799
|
+
}),
|
|
800
|
+
},
|
|
801
|
+
};
|
|
802
|
+
|
|
803
|
+
module.exports = aboutMetaContent;
|
|
804
|
+
```
|
|
805
|
+
|
|
806
|
+
```json fileName="pages/about-meta.content.json" contentDeclarationFormat="json"
|
|
807
|
+
{
|
|
808
|
+
"key": "about-meta",
|
|
809
|
+
"content": {
|
|
810
|
+
"title": {
|
|
811
|
+
"nodeType": "translation",
|
|
812
|
+
"translations": {
|
|
813
|
+
"zh": "关于我们 - 我的公司",
|
|
814
|
+
"en": "About Us - My Company",
|
|
815
|
+
"fr": "À Propos - Ma Société",
|
|
816
|
+
"es": "Acerca de Nosotros - Mi Empresa",
|
|
817
|
+
"pl": "O nas - Moja firma"
|
|
818
|
+
}
|
|
819
|
+
},
|
|
820
|
+
"description": {
|
|
821
|
+
"nodeType": "translation",
|
|
822
|
+
"translations": {
|
|
823
|
+
"zh": "了解更多关于我们公司和我们的使命",
|
|
824
|
+
"en": "Learn more about our company and our mission",
|
|
825
|
+
"fr": "En savoir plus sur notre société et notre mission",
|
|
826
|
+
"es": "Conozca más sobre nuestra empresa y nuestra misión"
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
```
|
|
832
|
+
|
|
833
|
+
### Konfiguracja TypeScript
|
|
834
|
+
|
|
835
|
+
Intlayer wykorzystuje rozszerzenia modułów (module augmentation), aby korzystać z zalet TypeScript i uczynić Twoją bazę kodu bardziej solidną.
|
|
836
|
+
|
|
837
|
+

|
|
838
|
+
|
|
839
|
+

|
|
840
|
+
|
|
841
|
+
Upewnij się, że Twoja konfiguracja TypeScript zawiera automatycznie generowane typy.
|
|
842
|
+
|
|
843
|
+
```json5 fileName="tsconfig.json"
|
|
844
|
+
{
|
|
845
|
+
// ... Twoje istniejące konfiguracje TypeScript
|
|
846
|
+
"include": [
|
|
847
|
+
// ... Twoje istniejące konfiguracje TypeScript
|
|
848
|
+
".intlayer/**/*.ts", // Dołącz automatycznie generowane typy
|
|
849
|
+
],
|
|
850
|
+
}
|
|
851
|
+
```
|
|
852
|
+
|
|
853
|
+
### Konfiguracja Git
|
|
854
|
+
|
|
855
|
+
Zaleca się ignorowanie plików generowanych przez Intlayer. Pozwala to uniknąć ich commitowania do repozytorium Git.
|
|
856
|
+
|
|
857
|
+
Aby to zrobić, możesz dodać następujące instrukcje do pliku `.gitignore`:
|
|
858
|
+
|
|
859
|
+
```plaintext fileName=".gitignore"
|
|
860
|
+
# Ignoruj pliki generowane przez Intlayer
|
|
861
|
+
.intlayer
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
### Rozszerzenie VS Code
|
|
865
|
+
|
|
866
|
+
Aby poprawić doświadczenie programistyczne z Intlayer, możesz zainstalować oficjalne **rozszerzenie Intlayer dla VS Code**.
|
|
867
|
+
|
|
868
|
+
[Zainstaluj z VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
869
|
+
|
|
870
|
+
To rozszerzenie oferuje:
|
|
871
|
+
|
|
872
|
+
- **Autouzupełnianie** kluczy tłumaczeń.
|
|
873
|
+
- **Wykrywanie błędów w czasie rzeczywistym** dla brakujących tłumaczeń.
|
|
874
|
+
- **Podglądy w linii** przetłumaczonej zawartości.
|
|
875
|
+
- **Szybkie akcje** umożliwiające łatwe tworzenie i aktualizowanie tłumaczeń.
|
|
876
|
+
|
|
877
|
+
Aby uzyskać więcej informacji na temat korzystania z rozszerzenia, zapoznaj się z [dokumentacją rozszerzenia Intlayer VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
878
|
+
|
|
879
|
+
---
|
|
880
|
+
|
|
881
|
+
### Idź dalej
|
|
882
|
+
|
|
883
|
+
Aby pójść dalej, możesz zaimplementować [edytor wizualny](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_visual_editor.md) lub zewnętrznie zarządzać swoją zawartością za pomocą [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md).
|
|
884
|
+
|
|
885
|
+
---
|