@intlayer/docs 7.0.7 → 7.0.8
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,1130 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-02-07
|
|
3
|
+
updatedAt: 2025-09-20
|
|
4
|
+
title: Plik z Treścią
|
|
5
|
+
description: Dowiedz się, jak dostosować rozszerzenia dla plików deklaracji treści. Postępuj zgodnie z tą dokumentacją, aby efektywnie wdrażać warunki w swoim projekcie.
|
|
6
|
+
keywords:
|
|
7
|
+
- Plik z Treścią
|
|
8
|
+
- Dokumentacja
|
|
9
|
+
- Intlayer
|
|
10
|
+
slugs:
|
|
11
|
+
- doc
|
|
12
|
+
- concept
|
|
13
|
+
- content
|
|
14
|
+
history:
|
|
15
|
+
- version: 7.0.0
|
|
16
|
+
date: 2025-10-23
|
|
17
|
+
changes: Zmiana nazwy `autoFill` na `fill`
|
|
18
|
+
- version: 6.0.0
|
|
19
|
+
date: 2025-09-20
|
|
20
|
+
changes: Dodano dokumentację pól
|
|
21
|
+
- version: 5.5.10
|
|
22
|
+
date: 2025-06-29
|
|
23
|
+
changes: Inicjalizacja historii
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Plik z Treścią
|
|
27
|
+
|
|
28
|
+
<iframe title="i18n, Markdown, JSON… jedno rozwiązanie do zarządzania wszystkim | Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/1VHgSY_j9_I?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
29
|
+
|
|
30
|
+
## Czym jest Plik z Treścią?
|
|
31
|
+
|
|
32
|
+
Plik z treścią w Intlayer to plik zawierający definicje słowników.
|
|
33
|
+
Te pliki deklarują tekstową zawartość Twojej aplikacji, tłumaczenia oraz zasoby.
|
|
34
|
+
Pliki z treścią są przetwarzane przez Intlayer w celu wygenerowania słowników.
|
|
35
|
+
|
|
36
|
+
Słowniki będą ostatecznym wynikiem, który Twoja aplikacja zaimportuje za pomocą hooka `useIntlayer`.
|
|
37
|
+
|
|
38
|
+
### Kluczowe Pojęcia
|
|
39
|
+
|
|
40
|
+
#### Słownik
|
|
41
|
+
|
|
42
|
+
Słownik to uporządkowany zbiór treści zorganizowany według kluczy. Każdy słownik zawiera:
|
|
43
|
+
|
|
44
|
+
- **Key**: Unikalny identyfikator słownika
|
|
45
|
+
- **Content**: Rzeczywiste wartości treści (tekst, liczby, obiekty itp.)
|
|
46
|
+
- **Metadata**: Dodatkowe informacje, takie jak tytuł, opis, tagi itp.
|
|
47
|
+
|
|
48
|
+
#### Plik z Treścią
|
|
49
|
+
|
|
50
|
+
Przykład pliku z treścią:
|
|
51
|
+
|
|
52
|
+
```tsx fileName="src/example.content.tsx" contentDeclarationFormat="typescript"
|
|
53
|
+
import { type ReactNode } from "react";
|
|
54
|
+
import {
|
|
55
|
+
t,
|
|
56
|
+
enu,
|
|
57
|
+
cond,
|
|
58
|
+
nest,
|
|
59
|
+
md,
|
|
60
|
+
insert,
|
|
61
|
+
file,
|
|
62
|
+
type Dictionary,
|
|
63
|
+
} from "intlayer";
|
|
64
|
+
|
|
65
|
+
interface Content {
|
|
66
|
+
imbricatedContent: {
|
|
67
|
+
imbricatedContent2: {
|
|
68
|
+
stringContent: string;
|
|
69
|
+
numberContent: number;
|
|
70
|
+
booleanContent: boolean;
|
|
71
|
+
javaScriptContent: string;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
multilingualContent: string;
|
|
75
|
+
quantityContent: string;
|
|
76
|
+
conditionalContent: string;
|
|
77
|
+
markdownContent: never;
|
|
78
|
+
externalContent: string;
|
|
79
|
+
insertionContent: string;
|
|
80
|
+
nestedContent: string;
|
|
81
|
+
fileContent: string;
|
|
82
|
+
jsxContent: ReactNode;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export default {
|
|
86
|
+
key: "page",
|
|
87
|
+
content: {
|
|
88
|
+
imbricatedContent: {
|
|
89
|
+
imbricatedContent2: {
|
|
90
|
+
stringContent: "Hello World",
|
|
91
|
+
numberContent: 123,
|
|
92
|
+
booleanContent: true,
|
|
93
|
+
javaScriptContent: `${process.env.NODE_ENV}`,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
multilingualContent: t({
|
|
97
|
+
en: "English content",
|
|
98
|
+
"en-GB": "English content (UK)",
|
|
99
|
+
fr: "French content",
|
|
100
|
+
es: "Spanish content",
|
|
101
|
+
}),
|
|
102
|
+
quantityContent: enu({
|
|
103
|
+
"<-1": "Mniej niż minus jeden samochód",
|
|
104
|
+
"-1": "Minus jeden samochód",
|
|
105
|
+
"0": "Brak samochodów",
|
|
106
|
+
"1": "Jeden samochód",
|
|
107
|
+
">5": "Kilka samochodów",
|
|
108
|
+
">19": "Wiele samochodów",
|
|
109
|
+
}),
|
|
110
|
+
conditionalContent: cond({
|
|
111
|
+
true: "Walidacja jest włączona",
|
|
112
|
+
false: "Walidacja jest wyłączona",
|
|
113
|
+
}),
|
|
114
|
+
insertionContent: insert("Witaj {{name}}!"),
|
|
115
|
+
nestedContent: nest(
|
|
116
|
+
"navbar", // Klucz słownika do zagnieżdżenia
|
|
117
|
+
"login.button" // [Opcjonalnie] Ścieżka do zawartości do zagnieżdżenia
|
|
118
|
+
),
|
|
119
|
+
fileContent: file("./path/to/file.txt"),
|
|
120
|
+
externalContent: fetch("https://example.com").then((res) => res.json()),
|
|
121
|
+
markdownContent: md("# Przykład Markdown"),
|
|
122
|
+
|
|
123
|
+
/*
|
|
124
|
+
* Dostępne tylko przy użyciu `react-intlayer` lub `next-intlayer`
|
|
125
|
+
*/
|
|
126
|
+
jsxContent: <h1>Mój tytuł</h1>,
|
|
127
|
+
},
|
|
128
|
+
} satisfies Dictionary<Content>; // [opcjonalnie] Dictionary jest generyczny i pozwala na wzmocnienie formatowania słownika
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
```javascript fileName="src/example.content.mjx" contentDeclarationFormat="esm"
|
|
132
|
+
import { t, enu, cond, nest, md, insert, file } from "intlayer";
|
|
133
|
+
|
|
134
|
+
/** @type {import('intlayer').Dictionary} */
|
|
135
|
+
export default {
|
|
136
|
+
key: "page",
|
|
137
|
+
content: {
|
|
138
|
+
imbricatedContent: {
|
|
139
|
+
imbricatedContent2: {
|
|
140
|
+
stringContent: "Witaj świecie", // Zawartość tekstowa
|
|
141
|
+
numberContent: 123, // Zawartość liczbowa
|
|
142
|
+
booleanContent: true, // Zawartość logiczna
|
|
143
|
+
javaScriptContent: `${process.env.NODE_ENV}`, // Zawartość JavaScript
|
|
144
|
+
},
|
|
145
|
+
imbricatedArray: [1, 2, 3], // Zagnieżdżona tablica
|
|
146
|
+
},
|
|
147
|
+
multilingualContent: t({
|
|
148
|
+
en: "English content",
|
|
149
|
+
"en-GB": "English content (UK)",
|
|
150
|
+
fr: "French content",
|
|
151
|
+
es: "Spanish content",
|
|
152
|
+
}),
|
|
153
|
+
quantityContent: enu({
|
|
154
|
+
"<-1": "Mniej niż minus jeden samochód",
|
|
155
|
+
"-1": "Minus jeden samochód",
|
|
156
|
+
"0": "Brak samochodów",
|
|
157
|
+
"1": "Jeden samochód",
|
|
158
|
+
">5": "Kilka samochodów",
|
|
159
|
+
">19": "Wiele samochodów",
|
|
160
|
+
}),
|
|
161
|
+
conditionalContent: cond({
|
|
162
|
+
true: "Walidacja jest włączona",
|
|
163
|
+
false: "Walidacja jest wyłączona",
|
|
164
|
+
}),
|
|
165
|
+
insertionContent: insert("Witaj {{name}}!"),
|
|
166
|
+
nestedContent: nest(
|
|
167
|
+
"navbar", // Klucz słownika do zagnieżdżenia
|
|
168
|
+
"login.button" // [Opcjonalnie] Ścieżka do zawartości do zagnieżdżenia
|
|
169
|
+
),
|
|
170
|
+
markdownContent: md("# Przykład Markdown"),
|
|
171
|
+
fileContent: file("./path/to/file.txt"),
|
|
172
|
+
externalContent: fetch("https://example.com").then((res) => res.json())
|
|
173
|
+
|
|
174
|
+
// Dostępne tylko przy użyciu `react-intlayer` lub `next-intlayer`
|
|
175
|
+
jsxContent: <h1>Mój tytuł</h1>,
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```javascript fileName="src/example.content.cjx" contentDeclarationFormat="commonjs"
|
|
181
|
+
const { t, enu, cond, nest, md, insert, file } = require("intlayer");
|
|
182
|
+
|
|
183
|
+
/** @type {import('intlayer').Dictionary} */
|
|
184
|
+
module.exports = {
|
|
185
|
+
key: "page",
|
|
186
|
+
content: {
|
|
187
|
+
imbricatedContent: {
|
|
188
|
+
imbricatedContent2: {
|
|
189
|
+
stringContent: "Hello World", // Zawartość tekstowa
|
|
190
|
+
numberContent: 123, // Zawartość liczbowa
|
|
191
|
+
booleanContent: true, // Zawartość logiczna
|
|
192
|
+
javaScriptContent: `${process.env.NODE_ENV}`, // Zawartość JavaScript
|
|
193
|
+
},
|
|
194
|
+
imbricatedArray: [1, 2, 3], // Zagnieżdżona tablica
|
|
195
|
+
},
|
|
196
|
+
multilingualContent: t({
|
|
197
|
+
en: "English content",
|
|
198
|
+
"en-GB": "English content (UK)",
|
|
199
|
+
fr: "French content",
|
|
200
|
+
es: "Spanish content",
|
|
201
|
+
}),
|
|
202
|
+
quantityContent: enu({
|
|
203
|
+
"<-1": "Mniej niż minus jeden samochód",
|
|
204
|
+
"-1": "Minus jeden samochód",
|
|
205
|
+
"0": "Brak samochodów",
|
|
206
|
+
"1": "Jeden samochód",
|
|
207
|
+
">5": "Kilka samochodów",
|
|
208
|
+
">19": "Wiele samochodów",
|
|
209
|
+
}),
|
|
210
|
+
conditionalContent: cond({
|
|
211
|
+
true: "Walidacja jest włączona",
|
|
212
|
+
false: "Walidacja jest wyłączona",
|
|
213
|
+
}),
|
|
214
|
+
insertionContent: insert("Witaj {{name}}!"),
|
|
215
|
+
nestedContent: nest(
|
|
216
|
+
"navbar", // Klucz słownika do zagnieżdżenia
|
|
217
|
+
"login.button" // [Opcjonalne] Ścieżka do zawartości do zagnieżdżenia
|
|
218
|
+
),
|
|
219
|
+
markdownContent: md("# Przykład Markdown"),
|
|
220
|
+
fileContent: file("./path/to/file.txt"),
|
|
221
|
+
externalContent: fetch("https://example.com").then((res) => res.json())
|
|
222
|
+
|
|
223
|
+
// Dostępne tylko przy użyciu `react-intlayer` lub `next-intlayer`
|
|
224
|
+
jsxContent: <h1>Mój tytuł</h1>,
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
```json5 fileName="src/example.content.json" contentDeclarationFormat="json"
|
|
230
|
+
{
|
|
231
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
232
|
+
"key": "page",
|
|
233
|
+
"content": {
|
|
234
|
+
"imbricatedContent": {
|
|
235
|
+
"imbricatedContent2": {
|
|
236
|
+
"stringContent": "Witaj świecie",
|
|
237
|
+
"numberContent": 123,
|
|
238
|
+
"booleanContent": true,
|
|
239
|
+
},
|
|
240
|
+
"imbricatedArray": [1, 2, 3],
|
|
241
|
+
},
|
|
242
|
+
"multilingualContent": {
|
|
243
|
+
"nodeType": "translation",
|
|
244
|
+
"translation": {
|
|
245
|
+
"en": "English content",
|
|
246
|
+
"en-GB": "English content (UK)",
|
|
247
|
+
"fr": "French content",
|
|
248
|
+
"es": "Spanish content",
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
"quantityContent": {
|
|
252
|
+
"nodeType": "enumeration",
|
|
253
|
+
"enumeration": {
|
|
254
|
+
"0": "Brak samochodów",
|
|
255
|
+
"1": "Jeden samochód",
|
|
256
|
+
"<-1": "Mniej niż minus jeden samochód",
|
|
257
|
+
"-1": "Minus jeden samochód",
|
|
258
|
+
">5": "Kilka samochodów",
|
|
259
|
+
">19": "Wiele samochodów",
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
"conditionalContent": {
|
|
263
|
+
"nodeType": "condition",
|
|
264
|
+
"condition": {
|
|
265
|
+
"true": "Walidacja jest włączona",
|
|
266
|
+
"false": "Walidacja jest wyłączona",
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
"insertionContent": {
|
|
270
|
+
"nodeType": "insertion",
|
|
271
|
+
"insertion": "Witaj {{name}}!",
|
|
272
|
+
},
|
|
273
|
+
"nestedContent": {
|
|
274
|
+
"nodeType": "nested",
|
|
275
|
+
"nested": { "dictionaryKey": "app" },
|
|
276
|
+
},
|
|
277
|
+
"markdownContent": {
|
|
278
|
+
"nodeType": "markdown",
|
|
279
|
+
"markdown": "# Przykład Markdown",
|
|
280
|
+
},
|
|
281
|
+
"fileContent": {
|
|
282
|
+
"nodeType": "file",
|
|
283
|
+
"file": "./path/to/file.txt",
|
|
284
|
+
},
|
|
285
|
+
"jsxContent": {
|
|
286
|
+
"type": "h1",
|
|
287
|
+
"key": null,
|
|
288
|
+
"ref": null,
|
|
289
|
+
"props": {
|
|
290
|
+
"children": ["Mój tytuł"],
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
#### Węzły treści
|
|
298
|
+
|
|
299
|
+
Węzły treści są podstawowymi elementami zawartości słownika. Mogą to być:
|
|
300
|
+
|
|
301
|
+
- **Wartości prymitywne**: łańcuchy znaków, liczby, wartości logiczne, null, undefined
|
|
302
|
+
- **Węzły typowane**: Specjalne typy zawartości, takie jak tłumaczenia, warunki, markdown itp.
|
|
303
|
+
- **Funkcje**: Dynamiczna zawartość, która może być oceniana w czasie wykonywania [zobacz Pobieranie funkcji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/function_fetching.md)
|
|
304
|
+
- **Zagnieżdżona zawartość**: Odwołania do innych słowników
|
|
305
|
+
|
|
306
|
+
#### Typy zawartości
|
|
307
|
+
|
|
308
|
+
Intlayer obsługuje różne typy zawartości poprzez węzły typowane:
|
|
309
|
+
|
|
310
|
+
- **Zawartość tłumaczenia**: Wielojęzyczny tekst z wartościami specyficznymi dla lokalizacji [zobacz Zawartość tłumaczenia](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/translation_content.md)
|
|
311
|
+
- **Zawartość warunkowa**: Zawartość warunkowa oparta na wyrażeniach logicznych [zobacz Zawartość warunkową](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/condition_content.md)
|
|
312
|
+
- **Zawartość enumeracji**: Zawartość zmieniająca się w zależności od wartości enumerowanych [zobacz Zawartość enumeracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/enumeration_content.md)
|
|
313
|
+
- **Zawartość wstawiania**: Zawartość, którą można wstawić do innej zawartości [zobacz Zawartość wstawiania](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/insertion_content.md)
|
|
314
|
+
- **Zawartość Markdown**: Zawartość tekstu sformatowanego w formacie Markdown [zobacz Zawartość Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/markdown_content.md)
|
|
315
|
+
- **Zagnieżdżona zawartość**: Odwołania do innych słowników [zobacz Zagnieżdżoną zawartość](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/nested_content.md)
|
|
316
|
+
- **Zawartość zależna od płci**: Zawartość zmieniająca się w zależności od płci [zobacz Zawartość zależną od płci](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/gender_content.md)
|
|
317
|
+
- **Zawartość plikowa**: Odwołania do plików zewnętrznych [zobacz Zawartość plikową](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/file_content.md)
|
|
318
|
+
|
|
319
|
+
## Struktura słownika
|
|
320
|
+
|
|
321
|
+
Słownik w Intlayer jest definiowany przez typ `Dictionary` i zawiera kilka właściwości, które kontrolują jego zachowanie:
|
|
322
|
+
|
|
323
|
+
### Wymagane właściwości
|
|
324
|
+
|
|
325
|
+
#### `key` (string)
|
|
326
|
+
|
|
327
|
+
Identyfikator słownika. Jeśli wiele słowników ma ten sam klucz, Intlayer automatycznie je połączy.
|
|
328
|
+
|
|
329
|
+
> Używaj konwencji nazewnictwa kebab-case (np. `"about-page-meta"`).
|
|
330
|
+
|
|
331
|
+
#### Content (string | number | boolean | object | array | function)
|
|
332
|
+
|
|
333
|
+
Właściwość `content` zawiera rzeczywiste dane słownika i obsługuje:
|
|
334
|
+
|
|
335
|
+
- **Wartości prymitywne**: łańcuchy znaków, liczby, wartości logiczne, null, undefined
|
|
336
|
+
- **Typowane węzły**: Specjalne typy zawartości wykorzystujące funkcje pomocnicze Intlayer
|
|
337
|
+
- **Zagnieżdżone obiekty**: Złożone struktury danych
|
|
338
|
+
- **Tablice**: Kolekcje zawartości
|
|
339
|
+
- **Funkcje**: Dynamiczna ewaluacja zawartości
|
|
340
|
+
|
|
341
|
+
### Właściwości opcjonalne
|
|
342
|
+
|
|
343
|
+
#### `title` (string)
|
|
344
|
+
|
|
345
|
+
Czytelny dla człowieka tytuł słownika, który pomaga go zidentyfikować w edytorach i systemach CMS. Jest to szczególnie przydatne podczas zarządzania dużą liczbą słowników lub pracy z interfejsami do zarządzania treścią.
|
|
346
|
+
|
|
347
|
+
**Przykład:**
|
|
348
|
+
|
|
349
|
+
```typescript
|
|
350
|
+
{
|
|
351
|
+
key: "about-page-meta",
|
|
352
|
+
title: "Metadane strony O nas",
|
|
353
|
+
content: { /* ... */ }
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
#### `description` (string)
|
|
358
|
+
|
|
359
|
+
Szczegółowy opis wyjaśniający cel słownika, zasady jego użycia oraz wszelkie specjalne uwagi. Ten opis jest również wykorzystywany jako kontekst dla generowania tłumaczeń wspomaganych przez AI, co jest cenne dla utrzymania jakości i spójności tłumaczeń.
|
|
360
|
+
|
|
361
|
+
**Przykład:**
|
|
362
|
+
|
|
363
|
+
```typescript
|
|
364
|
+
{
|
|
365
|
+
key: "about-page-meta",
|
|
366
|
+
description: [
|
|
367
|
+
"Ten słownik zarządza metadanymi strony O nas",
|
|
368
|
+
"Rozważ dobre praktyki SEO:",
|
|
369
|
+
"- Tytuł powinien mieć od 50 do 60 znaków",
|
|
370
|
+
"- Opis powinien mieć od 150 do 160 znaków",
|
|
371
|
+
].join('\n'),
|
|
372
|
+
content: { /* ... */ }
|
|
373
|
+
}
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
#### `tags` (string[])
|
|
377
|
+
|
|
378
|
+
Tablica łańcuchów znaków służąca do kategoryzacji i organizacji słowników. Tagi dostarczają dodatkowego kontekstu i mogą być używane do filtrowania, wyszukiwania lub organizowania słowników w edytorach i systemach CMS.
|
|
379
|
+
|
|
380
|
+
**Przykład:**
|
|
381
|
+
|
|
382
|
+
```typescript
|
|
383
|
+
{
|
|
384
|
+
key: "about-page-meta",
|
|
385
|
+
tags: ["metadata", "about-page", "seo"],
|
|
386
|
+
content: { /* ... */ }
|
|
387
|
+
}
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
#### `locale` (LocalesValues)
|
|
391
|
+
|
|
392
|
+
Przekształca słownik w słownik per-lokalizacyjny, gdzie każde pole zadeklarowane w zawartości zostanie automatycznie przekształcone w węzeł tłumaczenia. Gdy ta właściwość jest ustawiona:
|
|
393
|
+
|
|
394
|
+
- Słownik jest traktowany jako słownik dla pojedynczego języka
|
|
395
|
+
- Każde pole staje się węzłem tłumaczenia dla tego konkretnego języka
|
|
396
|
+
- Nie należy używać węzłów tłumaczenia (`t()`) w zawartości podczas korzystania z tej właściwości
|
|
397
|
+
- Jeśli właściwość jest pominięta, słownik będzie traktowany jako wielojęzyczny
|
|
398
|
+
|
|
399
|
+
> Zobacz [Deklarację zawartości per-locale w Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/per_locale_file.md) po więcej informacji.
|
|
400
|
+
|
|
401
|
+
**Przykład:**
|
|
402
|
+
|
|
403
|
+
```json
|
|
404
|
+
// Słownik per-locale
|
|
405
|
+
{
|
|
406
|
+
"key": "about-page",
|
|
407
|
+
"locale": "en",
|
|
408
|
+
"content": {
|
|
409
|
+
"title": "About Us", // To staje się węzłem tłumaczenia dla 'en'
|
|
410
|
+
"description": "Learn more about our company"
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
#### `fill` (Fill)
|
|
416
|
+
|
|
417
|
+
Instrukcje dotyczące automatycznego wypełniania zawartości słownika z zewnętrznych źródeł. Można to skonfigurować globalnie w `intlayer.config.ts` lub dla poszczególnych słowników. Obsługuje wiele formatów:
|
|
418
|
+
|
|
419
|
+
- **`true`**: Włącz wypełnianie dla wszystkich lokalizacji
|
|
420
|
+
- **`false`**: Wyłącz wypełnianie dla wszystkich lokalizacji
|
|
421
|
+
- **`string`**: Ścieżka do pojedynczego pliku lub szablon z zmiennymi
|
|
422
|
+
- **`object`**: Ścieżki do plików dla poszczególnych lokalizacji
|
|
423
|
+
|
|
424
|
+
**Przykłady:**
|
|
425
|
+
|
|
426
|
+
```json
|
|
427
|
+
// Wyłącz wypełnianie
|
|
428
|
+
{
|
|
429
|
+
"fill": false
|
|
430
|
+
}
|
|
431
|
+
// Pojedynczy plik
|
|
432
|
+
{
|
|
433
|
+
"fill": "./translations/aboutPage.content.json"
|
|
434
|
+
}
|
|
435
|
+
// Szablon ze zmiennymi
|
|
436
|
+
{
|
|
437
|
+
"fill": "/messages/{{locale}}/{{key}}/{{fileName}}.content.json"
|
|
438
|
+
}
|
|
439
|
+
// Szczegółowa konfiguracja per-locale
|
|
440
|
+
{
|
|
441
|
+
"fill": {
|
|
442
|
+
"en": "./translations/en/aboutPage.content.json",
|
|
443
|
+
"fr": "./translations/fr/aboutPage.content.json",
|
|
444
|
+
"es": "./translations/es/aboutPage.content.json"
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
**Dostępne zmienne:**
|
|
450
|
+
|
|
451
|
+
- `{{locale}}` – Kod lokalizacji (np. `fr`, `es`)
|
|
452
|
+
- `{{fileName}}` – Nazwa pliku (np. `example`)
|
|
453
|
+
- `{{key}}` – Klucz słownika (np. `example`)
|
|
454
|
+
|
|
455
|
+
> Zobacz [Konfiguracja automatycznego wypełniania w Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/fill.md) po więcej informacji.
|
|
456
|
+
|
|
457
|
+
##### `priority` (number)
|
|
458
|
+
|
|
459
|
+
Wskazuje priorytet słownika do rozwiązywania konfliktów. Gdy wiele słowników zawiera ten sam klucz, słownik z najwyższym numerem priorytetu nadpisze pozostałe. Jest to przydatne do zarządzania hierarchią treści i nadpisaniami.
|
|
460
|
+
|
|
461
|
+
**Przykład:**
|
|
462
|
+
|
|
463
|
+
```typescript
|
|
464
|
+
// Słownik bazowy
|
|
465
|
+
{
|
|
466
|
+
key: "welcome-message",
|
|
467
|
+
priority: 1,
|
|
468
|
+
content: { message: "Welcome!" }
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// Słownik nadpisujący
|
|
472
|
+
{
|
|
473
|
+
key: "welcome-message",
|
|
474
|
+
priority: 10,
|
|
475
|
+
content: { message: "Witamy w naszej usłudze premium!" }
|
|
476
|
+
}
|
|
477
|
+
// To nadpisze słownik bazowy
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
### Właściwości CMS
|
|
481
|
+
|
|
482
|
+
##### `version` (string)
|
|
483
|
+
|
|
484
|
+
Identyfikator wersji dla zdalnych słowników. Pomaga śledzić, która wersja słownika jest aktualnie używana, co jest szczególnie przydatne podczas pracy z zdalnymi systemami zarządzania treścią.
|
|
485
|
+
|
|
486
|
+
##### `live` (boolean)
|
|
487
|
+
|
|
488
|
+
Dla zdalnych słowników wskazuje, czy słownik powinien być pobierany na żywo podczas działania aplikacji. Gdy jest włączone:
|
|
489
|
+
|
|
490
|
+
- Wymaga ustawienia `importMode` na "live" w pliku `intlayer.config.ts`
|
|
491
|
+
- Wymaga uruchomionego serwera na żywo
|
|
492
|
+
- Słownik będzie pobierany w czasie działania za pomocą API synchronizacji na żywo
|
|
493
|
+
- Jeśli tryb live jest włączony, ale pobieranie się nie powiedzie, następuje powrót do wartości dynamicznej
|
|
494
|
+
- Jeśli nie jest na żywo, słownik jest przekształcany podczas budowania dla optymalnej wydajności
|
|
495
|
+
|
|
496
|
+
### Właściwości systemowe (Generowane automatycznie)
|
|
497
|
+
|
|
498
|
+
Te właściwości są automatycznie generowane przez Intlayer i nie powinny być modyfikowane ręcznie:
|
|
499
|
+
|
|
500
|
+
##### `$schema` (string)
|
|
501
|
+
|
|
502
|
+
Schemat JSON używany do walidacji struktury słownika. Automatycznie dodawany przez Intlayer, aby zapewnić integralność słownika.
|
|
503
|
+
|
|
504
|
+
##### `id` (string)
|
|
505
|
+
|
|
506
|
+
Dla słowników zdalnych, jest to unikalny identyfikator słownika na zdalnym serwerze. Używany do pobierania i zarządzania zdalną zawartością.
|
|
507
|
+
|
|
508
|
+
##### `projectIds` (string[])
|
|
509
|
+
|
|
510
|
+
Dla słowników zdalnych, ta tablica zawiera identyfikatory projektów, które mogą korzystać z tego słownika. Słownik zdalny może być współdzielony między wieloma projektami.
|
|
511
|
+
|
|
512
|
+
##### `localId` (LocalDictionaryId)
|
|
513
|
+
|
|
514
|
+
Unikalny identyfikator dla lokalnych słowników. Automatycznie generowany przez Intlayer, aby pomóc zidentyfikować słownik oraz określić, czy jest lokalny czy zdalny, wraz z jego lokalizacją.
|
|
515
|
+
|
|
516
|
+
##### `localIds` (LocalDictionaryId[])
|
|
517
|
+
|
|
518
|
+
Dla scalonych słowników, ta tablica zawiera identyfikatory wszystkich słowników, które zostały połączone. Przydatne do śledzenia źródła scalonej zawartości.
|
|
519
|
+
|
|
520
|
+
##### `filePath` (string)
|
|
521
|
+
|
|
522
|
+
Ścieżka pliku lokalnego słownika, wskazująca, z którego pliku `.content` słownik został wygenerowany. Pomaga w debugowaniu i śledzeniu źródła.
|
|
523
|
+
|
|
524
|
+
##### `versions` (string[])
|
|
525
|
+
|
|
526
|
+
Dla zdalnych słowników, ta tablica zawiera wszystkie dostępne wersje słownika. Pomaga śledzić, które wersje są dostępne do użycia.
|
|
527
|
+
|
|
528
|
+
##### `filled` (true)
|
|
529
|
+
|
|
530
|
+
Wskazuje, czy słownik został automatycznie wypełniony z zewnętrznych źródeł. W przypadku konfliktów, słowniki bazowe mają pierwszeństwo nad automatycznie wypełnionymi słownikami.
|
|
531
|
+
|
|
532
|
+
##### `location` ('distant' | 'locale')
|
|
533
|
+
|
|
534
|
+
Wskazuje lokalizację słownika:
|
|
535
|
+
|
|
536
|
+
- `'locale'`: Słownik lokalny (z plików zawartości)
|
|
537
|
+
- `'distant'`: Słownik zdalny (z zewnętrznego źródła)
|
|
538
|
+
|
|
539
|
+
## Typy węzłów zawartości
|
|
540
|
+
|
|
541
|
+
Intlayer udostępnia kilka specjalizowanych typów węzłów zawartości, które rozszerzają podstawowe wartości prymitywne:
|
|
542
|
+
|
|
543
|
+
### Zawartość tłumaczenia (`t`)
|
|
544
|
+
|
|
545
|
+
Wielojęzyczna zawartość zmieniająca się w zależności od lokalizacji:
|
|
546
|
+
|
|
547
|
+
```typescript
|
|
548
|
+
import { t } from "intlayer";
|
|
549
|
+
|
|
550
|
+
// TypeScript/JavaScript
|
|
551
|
+
multilingualContent: t({
|
|
552
|
+
en: "Welcome to our website",
|
|
553
|
+
fr: "Bienvenue sur notre site web",
|
|
554
|
+
es: "Bienvenido a nuestro sitio web",
|
|
555
|
+
});
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
### Zawartość warunkowa (`cond`)
|
|
559
|
+
|
|
560
|
+
Treść, która zmienia się w zależności od warunków logicznych (boolean):
|
|
561
|
+
|
|
562
|
+
```typescript
|
|
563
|
+
import { cond } from "intlayer";
|
|
564
|
+
|
|
565
|
+
conditionalContent: cond({
|
|
566
|
+
true: "Użytkownik jest zalogowany",
|
|
567
|
+
false: "Proszę się zalogować, aby kontynuować",
|
|
568
|
+
});
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
### Treść enumeracyjna (`enu`)
|
|
572
|
+
|
|
573
|
+
Treść, która zmienia się w zależności od wartości enumeracyjnych:
|
|
574
|
+
|
|
575
|
+
```typescript
|
|
576
|
+
import { enu } from "intlayer";
|
|
577
|
+
|
|
578
|
+
statusContent: enu({
|
|
579
|
+
pending: "Twoje żądanie jest w toku",
|
|
580
|
+
approved: "Twoje żądanie zostało zatwierdzone",
|
|
581
|
+
rejected: "Twoje żądanie zostało odrzucone",
|
|
582
|
+
});
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
### Treść wstawiana (`insert`)
|
|
586
|
+
|
|
587
|
+
Treść, którą można wstawić do innej treści:
|
|
588
|
+
|
|
589
|
+
```typescript
|
|
590
|
+
import { insert } from "intlayer";
|
|
591
|
+
|
|
592
|
+
insertionContent: insert("Ten tekst można wstawić w dowolne miejsce");
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
### Treść zagnieżdżona (`nest`)
|
|
596
|
+
|
|
597
|
+
Odniesienia do innych słowników:
|
|
598
|
+
|
|
599
|
+
```typescript
|
|
600
|
+
import { nest } from "intlayer";
|
|
601
|
+
|
|
602
|
+
nestedContent: nest("about-page");
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
### Zawartość Markdown (`md`)
|
|
606
|
+
|
|
607
|
+
Treść sformatowana w Markdown:
|
|
608
|
+
|
|
609
|
+
```typescript
|
|
610
|
+
import { md } from "intlayer";
|
|
611
|
+
|
|
612
|
+
markdownContent: md(
|
|
613
|
+
"# Witamy\n\nTo jest **pogrubiony** tekst z [linkami](https://example.com)"
|
|
614
|
+
);
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### Zawartość według płci (`gender`)
|
|
618
|
+
|
|
619
|
+
Treść zmieniająca się w zależności od płci:
|
|
620
|
+
|
|
621
|
+
```typescript
|
|
622
|
+
import { gender } from "intlayer";
|
|
623
|
+
|
|
624
|
+
genderContent: gender({
|
|
625
|
+
male: "On jest programistą",
|
|
626
|
+
female: "Ona jest programistką",
|
|
627
|
+
other: "Oni są programistami",
|
|
628
|
+
});
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
### Zawartość pliku (`file`)
|
|
632
|
+
|
|
633
|
+
Odniesienia do plików zewnętrznych:
|
|
634
|
+
|
|
635
|
+
```typescript
|
|
636
|
+
import { file } from "intlayer";
|
|
637
|
+
|
|
638
|
+
fileContent: file("./path/to/content.txt");
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
## Tworzenie plików z zawartością
|
|
642
|
+
|
|
643
|
+
### Podstawowa struktura pliku z zawartością
|
|
644
|
+
|
|
645
|
+
Plik z zawartością eksportuje domyślny obiekt spełniający typ `Dictionary`:
|
|
646
|
+
|
|
647
|
+
```typescript
|
|
648
|
+
// example.content.ts
|
|
649
|
+
import { t, cond, nest, md, insert, file } from "intlayer";
|
|
650
|
+
|
|
651
|
+
export default {
|
|
652
|
+
key: "welcome-page",
|
|
653
|
+
title: "Zawartość strony powitalnej",
|
|
654
|
+
description:
|
|
655
|
+
"Zawartość głównej strony powitalnej, w tym sekcja hero i funkcje",
|
|
656
|
+
tags: ["page", "welcome", "homepage"],
|
|
657
|
+
content: {
|
|
658
|
+
hero: {
|
|
659
|
+
title: t({
|
|
660
|
+
en: "Welcome to Our Platform",
|
|
661
|
+
fr: "Bienvenue sur Notre Plateforme",
|
|
662
|
+
es: "Bienvenido a Nuestra Plataforma",
|
|
663
|
+
}),
|
|
664
|
+
subtitle: t({
|
|
665
|
+
en: "Build amazing applications with ease",
|
|
666
|
+
fr: "Construisez des applications incroyables avec facilité",
|
|
667
|
+
es: "Construye aplicaciones increíbles con facilidad",
|
|
668
|
+
}),
|
|
669
|
+
cta: cond({
|
|
670
|
+
true: t({
|
|
671
|
+
en: "Get Started",
|
|
672
|
+
fr: "Commencer",
|
|
673
|
+
es: "Comenzar",
|
|
674
|
+
}),
|
|
675
|
+
false: t({
|
|
676
|
+
en: "Sign Up",
|
|
677
|
+
fr: "S'inscrire",
|
|
678
|
+
es: "Registrarse",
|
|
679
|
+
}),
|
|
680
|
+
}),
|
|
681
|
+
},
|
|
682
|
+
features: [
|
|
683
|
+
{
|
|
684
|
+
title: t({
|
|
685
|
+
en: "Easy to Use",
|
|
686
|
+
fr: "Facile à Utiliser",
|
|
687
|
+
es: "Fácil de Usar",
|
|
688
|
+
}),
|
|
689
|
+
description: t({
|
|
690
|
+
en: "Intuitive interface for all skill levels",
|
|
691
|
+
fr: "Interface intuitive pour tous les niveaux",
|
|
692
|
+
es: "Interfaz intuitiva para todos los niveles",
|
|
693
|
+
}),
|
|
694
|
+
},
|
|
695
|
+
],
|
|
696
|
+
documentation: nest("documentation"),
|
|
697
|
+
readme: file("./README.md"),
|
|
698
|
+
},
|
|
699
|
+
} satisfies Dictionary;
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
### Plik zawartości JSON
|
|
703
|
+
|
|
704
|
+
Możesz również tworzyć pliki zawartości w formacie JSON:
|
|
705
|
+
|
|
706
|
+
```json
|
|
707
|
+
{
|
|
708
|
+
"key": "welcome-page",
|
|
709
|
+
"title": "Zawartość strony powitalnej",
|
|
710
|
+
"description": "Zawartość głównej strony powitalnej",
|
|
711
|
+
"tags": ["page", "welcome"],
|
|
712
|
+
"content": {
|
|
713
|
+
"hero": {
|
|
714
|
+
"title": {
|
|
715
|
+
"nodeType": "translation",
|
|
716
|
+
"translation": {
|
|
717
|
+
"en": "Welcome to Our Platform",
|
|
718
|
+
"fr": "Bienvenue sur Notre Plateforme"
|
|
719
|
+
}
|
|
720
|
+
},
|
|
721
|
+
"subtitle": {
|
|
722
|
+
"nodeType": "translation",
|
|
723
|
+
"translation": {
|
|
724
|
+
"en": "Build amazing applications with ease",
|
|
725
|
+
"fr": "Construisez des applications incroyables avec facilité"
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
### Pliki zawartości per-locale
|
|
734
|
+
|
|
735
|
+
Dla słowników per-locale określ właściwość `locale`:
|
|
736
|
+
|
|
737
|
+
Możesz również tworzyć pliki z zawartością w formacie JSON:
|
|
738
|
+
|
|
739
|
+
```json
|
|
740
|
+
{
|
|
741
|
+
"key": "welcome-page",
|
|
742
|
+
"title": "Zawartość strony powitalnej",
|
|
743
|
+
"description": "Zawartość głównej strony powitalnej",
|
|
744
|
+
"tags": ["strona", "powitanie"],
|
|
745
|
+
"content": {
|
|
746
|
+
"hero": {
|
|
747
|
+
"title": {
|
|
748
|
+
"nodeType": "translation",
|
|
749
|
+
"translation": {
|
|
750
|
+
"en": "Welcome to Our Platform",
|
|
751
|
+
"fr": "Bienvenue sur Notre Plateforme"
|
|
752
|
+
}
|
|
753
|
+
},
|
|
754
|
+
"subtitle": {
|
|
755
|
+
"nodeType": "translation",
|
|
756
|
+
"translation": {
|
|
757
|
+
"en": "Build amazing applications with ease",
|
|
758
|
+
"fr": "Construisez des applications incroyables avec facilité"
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
### Pliki zawartości dla poszczególnych lokalizacji
|
|
767
|
+
|
|
768
|
+
Dla słowników specyficznych dla lokalizacji, określ właściwość `locale`:
|
|
769
|
+
|
|
770
|
+
```typescript
|
|
771
|
+
typescript;
|
|
772
|
+
// welcome-page.en.content.ts
|
|
773
|
+
export default {
|
|
774
|
+
key: "welcome-page",
|
|
775
|
+
locale: "en",
|
|
776
|
+
content: {
|
|
777
|
+
hero: {
|
|
778
|
+
title: "Welcome to Our Platform",
|
|
779
|
+
subtitle: "Build amazing applications with ease",
|
|
780
|
+
},
|
|
781
|
+
},
|
|
782
|
+
} satisfies Dictionary;
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
```typescript
|
|
786
|
+
// welcome-page.fr.content.ts
|
|
787
|
+
export default {
|
|
788
|
+
key: "welcome-page",
|
|
789
|
+
locale: "fr",
|
|
790
|
+
content: {
|
|
791
|
+
hero: {
|
|
792
|
+
title: "Bienvenue sur Notre Plateforme",
|
|
793
|
+
subtitle: "Construisez des applications incroyables avec facilité",
|
|
794
|
+
},
|
|
795
|
+
},
|
|
796
|
+
} satisfies Dictionary;
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
## Rozszerzenia plików z zawartością
|
|
800
|
+
|
|
801
|
+
Intlayer pozwala na dostosowanie rozszerzeń plików deklarujących zawartość. Ta możliwość daje elastyczność w zarządzaniu dużymi projektami i pomaga unikać konfliktów z innymi modułami.
|
|
802
|
+
|
|
803
|
+
### Domyślne rozszerzenia
|
|
804
|
+
|
|
805
|
+
Domyślnie Intlayer monitoruje wszystkie pliki o następujących rozszerzeniach dla deklaracji zawartości:
|
|
806
|
+
|
|
807
|
+
- `.content.json`
|
|
808
|
+
- `.content.ts`
|
|
809
|
+
- `.content.tsx`
|
|
810
|
+
- `.content.js`
|
|
811
|
+
- `.content.jsx`
|
|
812
|
+
- `.content.mjs`
|
|
813
|
+
- `.content.mjx`
|
|
814
|
+
- `.content.cjs`
|
|
815
|
+
- `.content.cjx`
|
|
816
|
+
|
|
817
|
+
Te domyślne rozszerzenia są odpowiednie dla większości aplikacji. Jednak gdy masz specyficzne potrzeby, możesz zdefiniować niestandardowe rozszerzenia, aby usprawnić proces budowania i zmniejszyć ryzyko konfliktów z innymi komponentami.
|
|
818
|
+
|
|
819
|
+
> Aby dostosować rozszerzenia plików, których Intlayer używa do identyfikacji plików deklaracji zawartości, możesz określić je w pliku konfiguracyjnym Intlayer. To podejście jest korzystne dla projektów na dużą skalę, gdzie ograniczenie zakresu procesu monitorowania poprawia wydajność budowania.
|
|
820
|
+
|
|
821
|
+
## Zaawansowane Koncepcje
|
|
822
|
+
|
|
823
|
+
### Scalanie słowników
|
|
824
|
+
|
|
825
|
+
Gdy wiele słowników ma ten sam klucz, Intlayer automatycznie je łączy. Zachowanie podczas łączenia zależy od kilku czynników:
|
|
826
|
+
|
|
827
|
+
- **Priorytet**: Słowniki z wyższą wartością `priority` nadpisują te z niższą
|
|
828
|
+
- **Auto-fill vs Base**: Słowniki bazowe nadpisują słowniki uzupełniane automatycznie
|
|
829
|
+
- **Lokalizacja**: Słowniki lokalne nadpisują słowniki zdalne (gdy priorytety są równe)
|
|
830
|
+
|
|
831
|
+
### Bezpieczeństwo typów
|
|
832
|
+
|
|
833
|
+
Intlayer zapewnia pełne wsparcie TypeScript dla plików z zawartością:
|
|
834
|
+
|
|
835
|
+
```typescript
|
|
836
|
+
// Definiuj swój typ zawartości
|
|
837
|
+
interface WelcomePageContent {
|
|
838
|
+
hero: {
|
|
839
|
+
title: string;
|
|
840
|
+
subtitle: string;
|
|
841
|
+
cta: string;
|
|
842
|
+
};
|
|
843
|
+
features: Array<{
|
|
844
|
+
title: string;
|
|
845
|
+
description: string;
|
|
846
|
+
}>;
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
// Użyj tego w swoim słowniku
|
|
850
|
+
export default {
|
|
851
|
+
key: "welcome-page",
|
|
852
|
+
content: {
|
|
853
|
+
// TypeScript zapewni autouzupełnianie i sprawdzanie typów
|
|
854
|
+
hero: {
|
|
855
|
+
title: "Witamy",
|
|
856
|
+
subtitle: "Twórz niesamowite aplikacje",
|
|
857
|
+
cta: "Zacznij",
|
|
858
|
+
},
|
|
859
|
+
},
|
|
860
|
+
} satisfies Dictionary<WelcomePageContent>;
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
### Zagnieżdżanie węzłów
|
|
864
|
+
|
|
865
|
+
Możesz bez problemu zagnieżdżać funkcje w innych funkcjach.
|
|
866
|
+
|
|
867
|
+
Przykład:
|
|
868
|
+
|
|
869
|
+
```javascript fileName="src/example.content.tsx" contentDeclarationFormat="typescript"
|
|
870
|
+
import { t, enu, cond, nest, md, type Dictionary } from "intlayer";
|
|
871
|
+
|
|
872
|
+
const getName = async () => "John Doe";
|
|
873
|
+
|
|
874
|
+
export default {
|
|
875
|
+
key: "page",
|
|
876
|
+
content: {
|
|
877
|
+
// `getIntlayer('page','en').hiMessage` zwraca `['Hi', ' ', 'John Doe']`
|
|
878
|
+
hiMessage: [
|
|
879
|
+
t({
|
|
880
|
+
en: "Hi",
|
|
881
|
+
fr: "Salut",
|
|
882
|
+
es: "Hola",
|
|
883
|
+
}),
|
|
884
|
+
" ",
|
|
885
|
+
getName(),
|
|
886
|
+
],
|
|
887
|
+
// Złożona zawartość łącząca warunek, enumerację i treść wielojęzyczną
|
|
888
|
+
// `getIntlayer('page','en').advancedContent(true)(10) zwraca 'Znaleziono wiele elementów'`
|
|
889
|
+
advancedContent: cond({
|
|
890
|
+
true: enu({
|
|
891
|
+
"0": t({
|
|
892
|
+
en: "No items found",
|
|
893
|
+
fr: "Aucun article trouvé",
|
|
894
|
+
es: "No se encontraron artículos",
|
|
895
|
+
}),
|
|
896
|
+
"1": t({
|
|
897
|
+
en: "One item found",
|
|
898
|
+
fr: "Un article trouvé",
|
|
899
|
+
es: "Se encontró un artículo",
|
|
900
|
+
}),
|
|
901
|
+
">1": t({
|
|
902
|
+
en: "Multiple items found",
|
|
903
|
+
fr: "Plusieurs articles trouvés",
|
|
904
|
+
es: "Se encontraron múltiples artículos",
|
|
905
|
+
}),
|
|
906
|
+
}),
|
|
907
|
+
false: t({
|
|
908
|
+
en: "No valid data available",
|
|
909
|
+
fr: "Aucune donnée valide disponible",
|
|
910
|
+
es: "No hay datos válidos disponibles",
|
|
911
|
+
}),
|
|
912
|
+
}),
|
|
913
|
+
},
|
|
914
|
+
} satisfies Dictionary;
|
|
915
|
+
```
|
|
916
|
+
|
|
917
|
+
```javascript fileName="src/example.content.mjx" contentDeclarationFormat="esm"
|
|
918
|
+
import { t, enu, cond, nest, md } from "intlayer";
|
|
919
|
+
|
|
920
|
+
const getName = async () => "John Doe";
|
|
921
|
+
|
|
922
|
+
/** @type {import('intlayer').Dictionary} */
|
|
923
|
+
export default {
|
|
924
|
+
key: "page",
|
|
925
|
+
content: {
|
|
926
|
+
// `getIntlayer('page','pl').hiMessage` zwraca `['Cześć', ' ', 'John Doe']`
|
|
927
|
+
hiMessage: [
|
|
928
|
+
t({
|
|
929
|
+
en: "Hi",
|
|
930
|
+
fr: "Salut",
|
|
931
|
+
es: "Hola",
|
|
932
|
+
pl: "Cześć",
|
|
933
|
+
}),
|
|
934
|
+
" ",
|
|
935
|
+
getName(),
|
|
936
|
+
],
|
|
937
|
+
// Złożona zawartość łącząca warunek, enumerację i treść wielojęzyczną
|
|
938
|
+
// `getIntlayer('page','pl').advancedContent(true)(10)` zwraca 'Znaleziono wiele elementów'
|
|
939
|
+
advancedContent: cond({
|
|
940
|
+
true: enu({
|
|
941
|
+
"0": t({
|
|
942
|
+
en: "No items found",
|
|
943
|
+
fr: "Aucun article trouvé",
|
|
944
|
+
es: "No se encontraron artículos",
|
|
945
|
+
pl: "Nie znaleziono elementów",
|
|
946
|
+
}),
|
|
947
|
+
"1": t({
|
|
948
|
+
en: "One item found",
|
|
949
|
+
fr: "Un article trouvé",
|
|
950
|
+
es: "Se encontró un artículo",
|
|
951
|
+
pl: "Znaleziono jeden element",
|
|
952
|
+
}),
|
|
953
|
+
">1": t({
|
|
954
|
+
en: "Multiple items found",
|
|
955
|
+
fr: "Plusieurs articles trouvés",
|
|
956
|
+
es: "Se encontraron múltiples artículos",
|
|
957
|
+
pl: "Znaleziono wiele elementów",
|
|
958
|
+
}),
|
|
959
|
+
}),
|
|
960
|
+
false: t({
|
|
961
|
+
en: "No valid data available",
|
|
962
|
+
fr: "Aucune donnée valide disponible",
|
|
963
|
+
es: "No hay datos válidos disponibles",
|
|
964
|
+
pl: "Brak dostępnych prawidłowych danych",
|
|
965
|
+
}),
|
|
966
|
+
}),
|
|
967
|
+
},
|
|
968
|
+
};
|
|
969
|
+
```
|
|
970
|
+
|
|
971
|
+
```javascript fileName="src/example.content.cjx" contentDeclarationFormat="commonjs"
|
|
972
|
+
const { t, enu, cond, nest, md } = require("intlayer");
|
|
973
|
+
|
|
974
|
+
const getName = async () => "John Doe";
|
|
975
|
+
|
|
976
|
+
/** @type {import('intlayer').Dictionary} */
|
|
977
|
+
module.exports = {
|
|
978
|
+
key: "page",
|
|
979
|
+
content: {
|
|
980
|
+
// `getIntlayer('page','en').hiMessage` zwraca `['Hi', ' ', 'John Doe']`
|
|
981
|
+
hiMessage: [
|
|
982
|
+
t({
|
|
983
|
+
en: "Hi",
|
|
984
|
+
fr: "Salut",
|
|
985
|
+
es: "Hola",
|
|
986
|
+
}),
|
|
987
|
+
" ",
|
|
988
|
+
getName(),
|
|
989
|
+
],
|
|
990
|
+
// Złożona zawartość łącząca warunek, enumerację i wielojęzyczną treść
|
|
991
|
+
// `getIntlayer('page','en').advancedContent(true)(10)` zwraca 'Multiple items found'
|
|
992
|
+
advancedContent: cond({
|
|
993
|
+
true: enu({
|
|
994
|
+
"0": t({
|
|
995
|
+
en: "No items found",
|
|
996
|
+
fr: "Aucun article trouvé",
|
|
997
|
+
es: "No se encontraron artículos",
|
|
998
|
+
}),
|
|
999
|
+
"1": t({
|
|
1000
|
+
en: "One item found",
|
|
1001
|
+
fr: "Un article trouvé",
|
|
1002
|
+
es: "Se encontró un artículo",
|
|
1003
|
+
}),
|
|
1004
|
+
">1": t({
|
|
1005
|
+
en: "Multiple items found",
|
|
1006
|
+
fr: "Plusieurs articles trouvés",
|
|
1007
|
+
es: "Se encontraron múltiples artículos",
|
|
1008
|
+
}),
|
|
1009
|
+
}),
|
|
1010
|
+
false: t({
|
|
1011
|
+
en: "No valid data available",
|
|
1012
|
+
fr: "Aucune donnée valide disponible",
|
|
1013
|
+
es: "No hay datos válidos disponibles",
|
|
1014
|
+
}),
|
|
1015
|
+
}),
|
|
1016
|
+
},
|
|
1017
|
+
};
|
|
1018
|
+
```
|
|
1019
|
+
|
|
1020
|
+
```json5 fileName="src/example.content.json" contentDeclarationFormat="json"
|
|
1021
|
+
{
|
|
1022
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
1023
|
+
"key": "page",
|
|
1024
|
+
"content": {
|
|
1025
|
+
"hiMessage": {
|
|
1026
|
+
"nodeType": "composite",
|
|
1027
|
+
"composite": [
|
|
1028
|
+
{
|
|
1029
|
+
"nodeType": "translation",
|
|
1030
|
+
"translation": {
|
|
1031
|
+
en: "Cześć",
|
|
1032
|
+
fr: "Salut",
|
|
1033
|
+
es: "Hola",
|
|
1034
|
+
},
|
|
1035
|
+
},
|
|
1036
|
+
" ",
|
|
1037
|
+
"John Doe",
|
|
1038
|
+
],
|
|
1039
|
+
},
|
|
1040
|
+
"advancedContent": {
|
|
1041
|
+
"nodeType": "condition",
|
|
1042
|
+
"condition": {
|
|
1043
|
+
true: {
|
|
1044
|
+
"nodeType": "enumeration",
|
|
1045
|
+
"enumeration": {
|
|
1046
|
+
"0": {
|
|
1047
|
+
"nodeType": "translation",
|
|
1048
|
+
"translation": {
|
|
1049
|
+
en: "Nie znaleziono elementów",
|
|
1050
|
+
fr: "Aucun article trouvé",
|
|
1051
|
+
es: "No se encontraron artículos",
|
|
1052
|
+
},
|
|
1053
|
+
},
|
|
1054
|
+
"1": {
|
|
1055
|
+
"nodeType": "translation",
|
|
1056
|
+
"translation": {
|
|
1057
|
+
en: "Znaleziono jeden element",
|
|
1058
|
+
fr: "Un article trouvé",
|
|
1059
|
+
es: "Se encontró un artículo",
|
|
1060
|
+
},
|
|
1061
|
+
},
|
|
1062
|
+
">1": {
|
|
1063
|
+
},
|
|
1064
|
+
},
|
|
1065
|
+
" ",
|
|
1066
|
+
"John Doe",
|
|
1067
|
+
],
|
|
1068
|
+
},
|
|
1069
|
+
"advancedContent": {
|
|
1070
|
+
"nodeType": "condition",
|
|
1071
|
+
"condition": {
|
|
1072
|
+
"true": {
|
|
1073
|
+
"nodeType": "enumeration",
|
|
1074
|
+
"enumeration": {
|
|
1075
|
+
"0": {
|
|
1076
|
+
"nodeType": "translation",
|
|
1077
|
+
"translation": {
|
|
1078
|
+
en: "No items found", // Brak znalezionych elementów
|
|
1079
|
+
fr: "Aucun article trouvé",
|
|
1080
|
+
es: "No se encontraron artículos",
|
|
1081
|
+
},
|
|
1082
|
+
},
|
|
1083
|
+
"1": {
|
|
1084
|
+
"nodeType": "translation",
|
|
1085
|
+
"translation": {
|
|
1086
|
+
en: "One item found", // Znaleziono jeden element
|
|
1087
|
+
fr: "Un article trouvé",
|
|
1088
|
+
es: "Se encontró un artículo",
|
|
1089
|
+
},
|
|
1090
|
+
},
|
|
1091
|
+
">1": {
|
|
1092
|
+
"nodeType": "translation",
|
|
1093
|
+
"translation": {
|
|
1094
|
+
"en": "Multiple items found",
|
|
1095
|
+
"fr": "Plusieurs articles trouvés",
|
|
1096
|
+
"es": "Se encontraron múltiples artículos",
|
|
1097
|
+
},
|
|
1098
|
+
},
|
|
1099
|
+
},
|
|
1100
|
+
},
|
|
1101
|
+
"false": {
|
|
1102
|
+
"nodeType": "translation",
|
|
1103
|
+
"translation": {
|
|
1104
|
+
"en": "No valid data available",
|
|
1105
|
+
"fr": "Aucune donnée valide disponible",
|
|
1106
|
+
"es": "No hay datos válidos disponibles",
|
|
1107
|
+
},
|
|
1108
|
+
},
|
|
1109
|
+
},
|
|
1110
|
+
},
|
|
1111
|
+
},
|
|
1112
|
+
}
|
|
1113
|
+
```
|
|
1114
|
+
|
|
1115
|
+
### Najlepsze praktyki
|
|
1116
|
+
|
|
1117
|
+
1. **Konwencje nazewnictwa**:
|
|
1118
|
+
- Używaj kebab-case dla kluczy słownika (`"about-page-meta"`)
|
|
1119
|
+
- Grupuj powiązane treści pod tym samym prefiksem klucza
|
|
1120
|
+
|
|
1121
|
+
2. **Organizacja treści**:
|
|
1122
|
+
- Trzymaj powiązane treści razem w tym samym słowniku
|
|
1123
|
+
- Używaj zagnieżdżonych obiektów do organizacji złożonych struktur treści
|
|
1124
|
+
- Wykorzystuj tagi do kategoryzacji
|
|
1125
|
+
- Używaj `fill` do automatycznego uzupełniania brakujących tłumaczeń
|
|
1126
|
+
|
|
1127
|
+
3. **Wydajność**:
|
|
1128
|
+
- Dostosuj konfigurację treści, aby ograniczyć zakres obserwowanych plików
|
|
1129
|
+
- Używaj słowników na żywo tylko wtedy, gdy są potrzebne aktualizacje w czasie rzeczywistym (np. testy A/B itp.)
|
|
1130
|
+
- Upewnij się, że wtyczka transformacji podczas budowania (`@intlayer/swc` lub `@intlayer/babel`) jest włączona, aby zoptymalizować słownik podczas kompilacji
|