@intlayer/docs 7.0.7 → 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,381 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-02-07
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Markdown
|
|
5
|
+
description: Tìm hiểu cách khai báo và sử dụng nội dung Markdown trên trang web đa ngôn ngữ của bạn với Intlayer. Làm theo các bước trong tài liệu trực tuyến này để tích hợp Markdown một cách liền mạch vào dự án của bạn.
|
|
6
|
+
keywords:
|
|
7
|
+
- Markdown
|
|
8
|
+
- Quốc tế hóa
|
|
9
|
+
- Tài liệu
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Next.js
|
|
12
|
+
- JavaScript
|
|
13
|
+
- React
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- concept
|
|
17
|
+
- content
|
|
18
|
+
- markdown
|
|
19
|
+
history:
|
|
20
|
+
- version: 5.5.10
|
|
21
|
+
date: 2025-06-29
|
|
22
|
+
changes: Khởi tạo lịch sử
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Markdown / Nội dung Văn bản Đa dạng
|
|
26
|
+
|
|
27
|
+
## Cách Markdown Hoạt động
|
|
28
|
+
|
|
29
|
+
Intlayer hỗ trợ nội dung văn bản đa dạng được định nghĩa bằng cú pháp Markdown. Điều này được thực hiện thông qua hàm `md`, hàm này chuyển đổi một chuỗi Markdown thành định dạng có thể được quản lý bởi Intlayer. Bằng cách sử dụng Markdown, bạn có thể dễ dàng viết và duy trì nội dung với định dạng phong phú, chẳng hạn như blog, bài viết, và nhiều hơn nữa.
|
|
30
|
+
|
|
31
|
+
[Công cụ chỉnh sửa trực quan Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_visual_editor.md) và [Intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_CMS.md) đều hỗ trợ quản lý nội dung Markdown.
|
|
32
|
+
|
|
33
|
+
Khi tích hợp với một ứng dụng React, bạn có thể sử dụng một nhà cung cấp kết xuất Markdown (chẳng hạn như [`markdown-to-jsx`](https://www.npmjs.com/package/markdown-to-jsx)) để kết xuất nội dung Markdown thành HTML. Điều này cho phép bạn viết nội dung bằng Markdown trong khi đảm bảo nó hiển thị đúng trong ứng dụng của bạn.
|
|
34
|
+
|
|
35
|
+
## Thiết lập Nội dung Markdown
|
|
36
|
+
|
|
37
|
+
Để thiết lập nội dung Markdown trong dự án Intlayer của bạn, hãy định nghĩa một từ điển nội dung sử dụng hàm `md`.
|
|
38
|
+
|
|
39
|
+
```typescript fileName="markdownDictionary.content.ts" contentDeclarationFormat="typescript"
|
|
40
|
+
import { md, type Dictionary } from "intlayer";
|
|
41
|
+
|
|
42
|
+
const markdownDictionary = {
|
|
43
|
+
key: "app",
|
|
44
|
+
content: {
|
|
45
|
+
myMarkdownContent: md("## My title \n\nLorem Ipsum"),
|
|
46
|
+
},
|
|
47
|
+
} satisfies Dictionary;
|
|
48
|
+
|
|
49
|
+
export default markdownDictionary;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```javascript fileName="markdownDictionary.content.mjs" contentDeclarationFormat="esm"
|
|
53
|
+
import { md } from "intlayer";
|
|
54
|
+
|
|
55
|
+
/** @type {import('intlayer').Dictionary} */
|
|
56
|
+
// Định nghĩa từ điển Markdown với kiểu dữ liệu Dictionary của Intlayer
|
|
57
|
+
const markdownDictionary = {
|
|
58
|
+
key: "app",
|
|
59
|
+
content: {
|
|
60
|
+
myMarkdownContent: md("## Tiêu đề của tôi \n\nLorem Ipsum"),
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export default markdownDictionary;
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```javascript fileName="markdownDictionary.content.cjs" contentDeclarationFormat="commonjs"
|
|
68
|
+
const { md } = require("intlayer");
|
|
69
|
+
|
|
70
|
+
/** @type {import('intlayer').Dictionary} */
|
|
71
|
+
// Định nghĩa từ điển Markdown với kiểu dữ liệu Dictionary của Intlayer
|
|
72
|
+
const markdownDictionary = {
|
|
73
|
+
key: "app",
|
|
74
|
+
content: {
|
|
75
|
+
myMarkdownContent: md("## Tiêu đề của tôi \n\nLorem Ipsum"),
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
module.exports = markdownDictionary;
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
```json fileName="markdownDictionary.content.json" contentDeclarationFormat="json"
|
|
83
|
+
{
|
|
84
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
85
|
+
"key": "app",
|
|
86
|
+
"content": {
|
|
87
|
+
"myMarkdownContent": {
|
|
88
|
+
"nodeType": "markdown",
|
|
89
|
+
"markdown": "## Tiêu đề của tôi \n\nLorem Ipsum"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Nhập file `.md` (đa ngôn ngữ)
|
|
96
|
+
|
|
97
|
+
Nếu file Markdown của bạn là file `.md`, bạn có thể nhập nó bằng các định dạng import khác nhau do JavaScript hoặc Intlayer cung cấp.
|
|
98
|
+
|
|
99
|
+
Khuyến nghị ưu tiên nhập thông qua [`file` function](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/dictionary/file.md), vì nó cho phép Intlayer quản lý đúng các đường dẫn tương đối với vị trí file và đảm bảo tích hợp file này với Visual Editor / CMS.
|
|
100
|
+
|
|
101
|
+
```typescript fileName="md.d.ts" contentDeclarationFormat="typescript"
|
|
102
|
+
// Khai báo này cho phép TypeScript nhận diện và nhập các file Markdown (.md) như các module.
|
|
103
|
+
// Nếu không có đoạn này, TypeScript sẽ báo lỗi khi cố gắng nhập các file Markdown,
|
|
104
|
+
// vì nó không hỗ trợ nhập file không phải mã nguồn một cách nguyên bản.
|
|
105
|
+
|
|
106
|
+
declare module "*.md";
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
```typescript fileName="markdownDictionary.content.ts" contentDeclarationFormat="typescript"
|
|
110
|
+
import { md, file, t, type Dictionary } from "intlayer";
|
|
111
|
+
import { readFileSync } from "fs";
|
|
112
|
+
import { resolve } from "path";
|
|
113
|
+
|
|
114
|
+
import markdown from "./myMarkdown.md";
|
|
115
|
+
|
|
116
|
+
const markdownDictionary = {
|
|
117
|
+
key: "app",
|
|
118
|
+
content: {
|
|
119
|
+
contentMultilingualFile: t({
|
|
120
|
+
en: md(file("./myMarkdown.en.md")),
|
|
121
|
+
fr: md(file("./myMarkdown.fr.md")),
|
|
122
|
+
es: md(file("./myMarkdown.es.md")),
|
|
123
|
+
}),
|
|
124
|
+
|
|
125
|
+
contentImport: md(markdown),
|
|
126
|
+
contentRequire: md(require("./myMarkdown.md")),
|
|
127
|
+
contentAsyncImport: md(
|
|
128
|
+
import("./myMarkdown.md").then((module) => module.default)
|
|
129
|
+
),
|
|
130
|
+
contentFetch: md(fetch("https://example.com").then((res) => res.text())),
|
|
131
|
+
contentFS: md(() => {
|
|
132
|
+
const filePath = resolve(process.cwd(), "doc/test.md");
|
|
133
|
+
return readFileSync(filePath, "utf8");
|
|
134
|
+
}),
|
|
135
|
+
},
|
|
136
|
+
} satisfies Dictionary;
|
|
137
|
+
|
|
138
|
+
export default markdownDictionary;
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
```javascript fileName="markdownDictionary.content.mjs" contentDeclarationFormat="esm"
|
|
142
|
+
import { md, file, t } from "intlayer";
|
|
143
|
+
import { readFileSync } from "fs";
|
|
144
|
+
import { resolve } from "path";
|
|
145
|
+
|
|
146
|
+
import markdown from "./myMarkdown.md";
|
|
147
|
+
|
|
148
|
+
/** @type {import('intlayer').Dictionary} */
|
|
149
|
+
const markdownDictionary = {
|
|
150
|
+
key: "app",
|
|
151
|
+
content: {
|
|
152
|
+
contentMultilingualFile: t({
|
|
153
|
+
fr: md(file("./myMarkdown.fr.md")),
|
|
154
|
+
es: md(file("./myMarkdown.es.md")),
|
|
155
|
+
}),
|
|
156
|
+
|
|
157
|
+
contentImport: md(markdown),
|
|
158
|
+
contentRequire: md(require("./myMarkdown.md")),
|
|
159
|
+
contentAsyncImport: md(
|
|
160
|
+
import("./myMarkdown.md").then((module) => module.default)
|
|
161
|
+
),
|
|
162
|
+
contentFetch: md(fetch("https://example.com").then((res) => res.text())),
|
|
163
|
+
contentFS: md(() => {
|
|
164
|
+
const filePath = resolve(process.cwd(), "doc/test.md");
|
|
165
|
+
return readFileSync(filePath, "utf8");
|
|
166
|
+
}),
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
export default markdownDictionary;
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
```javascript fileName="markdownDictionary.content.cjs" contentDeclarationFormat="commonjs"
|
|
174
|
+
const { md, file, t } = require("intlayer");
|
|
175
|
+
|
|
176
|
+
const markdown_en = require("./myMarkdown.en.md");
|
|
177
|
+
const markdown_fr = require("./myMarkdown.fr.md");
|
|
178
|
+
const markdown_es = require("./myMarkdown.es.md");
|
|
179
|
+
|
|
180
|
+
/** @type {import('intlayer').Dictionary} */
|
|
181
|
+
// Định nghĩa từ điển markdown với các nội dung đa ngôn ngữ và các phương thức lấy nội dung khác nhau
|
|
182
|
+
const markdownDictionary = {
|
|
183
|
+
key: "app",
|
|
184
|
+
content: {
|
|
185
|
+
contentMultilingualFile: t({
|
|
186
|
+
en: md(file("./myMarkdown.en.md")),
|
|
187
|
+
fr: md(file("./myMarkdown.fr.md")),
|
|
188
|
+
es: md(file("./myMarkdown.es.md")),
|
|
189
|
+
}),
|
|
190
|
+
|
|
191
|
+
contentImport: md(markdown),
|
|
192
|
+
contentFetch: md(fetch("https://example.com").then((res) => res.text())),
|
|
193
|
+
contentFS: md(() => {
|
|
194
|
+
const filePath = resolve(process.cwd(), "doc/test.md");
|
|
195
|
+
return readFileSync(filePath, "utf8");
|
|
196
|
+
}),
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
module.exports = markdownDictionary;
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
```jsonc fileName="markdownDictionary.content.json" contentDeclarationFormat="json"
|
|
204
|
+
// - Việc nhập các tệp Markdown bên ngoài (.md) chỉ có thể thực hiện bằng cách sử dụng node `file`, hoặc các tệp khai báo JS hoặc TS.
|
|
205
|
+
// - Việc lấy nội dung Markdown bên ngoài chỉ có thể thực hiện bằng các tệp khai báo JS hoặc TS.
|
|
206
|
+
|
|
207
|
+
{
|
|
208
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
209
|
+
"key": "app",
|
|
210
|
+
"content": {
|
|
211
|
+
"": {
|
|
212
|
+
"nodeType": "file",
|
|
213
|
+
"file": "./myMarkdown.md",
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
|
|
217
|
+
"contentMultilingualFile": {
|
|
218
|
+
"nodeType": "translation",
|
|
219
|
+
"translation": {
|
|
220
|
+
"en": {
|
|
221
|
+
"nodeType": "markdown",
|
|
222
|
+
"markdown": {
|
|
223
|
+
"nodeType": "file",
|
|
224
|
+
"file": "./myMarkdown.en.md",
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
"fr": {
|
|
228
|
+
"nodeType": "markdown",
|
|
229
|
+
"markdown": {
|
|
230
|
+
"nodeType": "file",
|
|
231
|
+
"file": "./myMarkdown.fr.md",
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
"es": {
|
|
235
|
+
"nodeType": "markdown",
|
|
236
|
+
"markdown": {
|
|
237
|
+
"nodeType": "file",
|
|
238
|
+
"file": "./myMarkdown.es.md",
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## Sử dụng Markdown với React Intlayer
|
|
248
|
+
|
|
249
|
+
Để hiển thị nội dung Markdown trong ứng dụng React, bạn có thể tận dụng hook `useIntlayer` từ gói `react-intlayer` cùng với một provider để render Markdown. Trong ví dụ này, chúng tôi sử dụng gói [`markdown-to-jsx`](https://www.npmjs.com/package/markdown-to-jsx) để chuyển đổi Markdown thành HTML.
|
|
250
|
+
|
|
251
|
+
```tsx fileName="App.tsx" codeFormat="typescript"
|
|
252
|
+
import type { FC } from "react";
|
|
253
|
+
import { useIntlayer, MarkdownProvider } from "react-intlayer";
|
|
254
|
+
import Markdown from "markdown-to-jsx";
|
|
255
|
+
|
|
256
|
+
const AppContent: FC = () => {
|
|
257
|
+
const { myMarkdownContent } = useIntlayer("app");
|
|
258
|
+
|
|
259
|
+
return <>{myMarkdownContent}</>;
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
export const AppProvider: FC = () => (
|
|
263
|
+
<MarkdownProvider
|
|
264
|
+
renderMarkdown={(markdown) => <Markdown>{markdown}</Markdown>}
|
|
265
|
+
>
|
|
266
|
+
<AppContent />
|
|
267
|
+
</MarkdownProvider>
|
|
268
|
+
);
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
```jsx fileName="App.jsx" codeFormat="esm"
|
|
272
|
+
import { useIntlayer, MarkdownProvider } from "react-intlayer";
|
|
273
|
+
import Markdown from "markdown-to-jsx";
|
|
274
|
+
|
|
275
|
+
const AppContent = () => {
|
|
276
|
+
const { myMarkdownContent } = useIntlayer("app");
|
|
277
|
+
|
|
278
|
+
return <>{myMarkdownContent}</>;
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
export const AppProvider = () => (
|
|
282
|
+
<MarkdownProvider
|
|
283
|
+
renderMarkdown={(markdown) => <Markdown>{markdown}</Markdown>}
|
|
284
|
+
>
|
|
285
|
+
<AppContent />
|
|
286
|
+
</MarkdownProvider>
|
|
287
|
+
);
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
```jsx fileName="App.jsx" codeFormat="commonjs"
|
|
291
|
+
const { useIntlayer, MarkdownProvider } = require("react-intlayer");
|
|
292
|
+
const Markdown = require("markdown-to-jsx");
|
|
293
|
+
|
|
294
|
+
const AppContent = () => {
|
|
295
|
+
const { myMarkdownContent } = useIntlayer("app");
|
|
296
|
+
|
|
297
|
+
return <>{myMarkdownContent}</>;
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
AppProvider = () => (
|
|
301
|
+
<MarkdownProvider
|
|
302
|
+
renderMarkdown={(markdown) => <Markdown>{markdown}</Markdown>}
|
|
303
|
+
>
|
|
304
|
+
<AppContent />
|
|
305
|
+
</MarkdownProvider>
|
|
306
|
+
);
|
|
307
|
+
|
|
308
|
+
module.exports = {
|
|
309
|
+
AppProvider,
|
|
310
|
+
};
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Trong triển khai này:
|
|
314
|
+
|
|
315
|
+
- `MarkdownProvider` bao bọc ứng dụng (hoặc phần liên quan của nó) và chấp nhận một hàm `renderMarkdown`. Hàm này được sử dụng để chuyển đổi chuỗi Markdown thành JSX bằng cách sử dụng gói `markdown-to-jsx`.
|
|
316
|
+
- Hook `useIntlayer` được sử dụng để lấy nội dung Markdown (`myMarkdownContent`) từ dictionary với khóa `"app"`.
|
|
317
|
+
- Nội dung Markdown được render trực tiếp trong component, và việc render Markdown được xử lý bởi provider.
|
|
318
|
+
|
|
319
|
+
### Sử dụng Markdown với Next Intlayer
|
|
320
|
+
|
|
321
|
+
Việc triển khai sử dụng package `next-intlayer` tương tự như trên. Điểm khác duy nhất là hàm `renderMarkdown` nên được truyền vào component `MarkdownProvider` trong một client component.
|
|
322
|
+
|
|
323
|
+
```tsx title="src/providers/IntlayerMarkdownProvider.tsx" codeFormat="typescript"
|
|
324
|
+
"use client";
|
|
325
|
+
|
|
326
|
+
import type { FC, PropsWithChildren } from "react";
|
|
327
|
+
import { MarkdownProvider } from "next-intlayer";
|
|
328
|
+
|
|
329
|
+
const renderMarkdown = (markdown: string) => (
|
|
330
|
+
<span style={{ color: "red" }}>{markdown}</span>
|
|
331
|
+
);
|
|
332
|
+
|
|
333
|
+
export const IntlayerMarkdownProvider: FC<PropsWithChildren> = ({
|
|
334
|
+
children,
|
|
335
|
+
}) => (
|
|
336
|
+
<MarkdownProvider renderMarkdown={renderMarkdown}>
|
|
337
|
+
{children}
|
|
338
|
+
</MarkdownProvider>
|
|
339
|
+
);
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
```jsx title="src/providers/IntlayerMarkdownProvider.msx" codeFormat="esm"
|
|
343
|
+
"use client";
|
|
344
|
+
|
|
345
|
+
import { MarkdownProvider } from "next-intlayer";
|
|
346
|
+
|
|
347
|
+
const renderMarkdown = (markdown) => (
|
|
348
|
+
<span style={{ color: "red" }}>{markdown}</span> // hiển thị markdown với màu đỏ
|
|
349
|
+
);
|
|
350
|
+
|
|
351
|
+
export const IntlayerMarkdownProvider = ({ children }) => (
|
|
352
|
+
<MarkdownProvider renderMarkdown={renderMarkdown}>
|
|
353
|
+
{children}
|
|
354
|
+
</MarkdownProvider>
|
|
355
|
+
);
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
```jsx title="src/providers/IntlayerMarkdownProvider.csx" codeFormat="commonjs"
|
|
359
|
+
"use client";
|
|
360
|
+
|
|
361
|
+
const { MarkdownProvider } = require("next-intlayer");
|
|
362
|
+
|
|
363
|
+
const renderMarkdown = (markdown) => (
|
|
364
|
+
<span style={{ color: "red" }}>{markdown}</span>
|
|
365
|
+
);
|
|
366
|
+
|
|
367
|
+
const IntlayerMarkdownProvider = ({ children }) => (
|
|
368
|
+
<MarkdownProvider renderMarkdown={renderMarkdown}>
|
|
369
|
+
{children}
|
|
370
|
+
</MarkdownProvider>
|
|
371
|
+
);
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## Tài Nguyên Bổ Sung
|
|
375
|
+
|
|
376
|
+
- [Tài liệu CLI của Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_cli.md)
|
|
377
|
+
- [Tài liệu React Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_with_create_react_app.md)
|
|
378
|
+
- [Tài liệu Next Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_with_nextjs_15.md)
|
|
379
|
+
- [markdown-to-jsx trên npm](https://www.npmjs.com/package/markdown-to-jsx)
|
|
380
|
+
|
|
381
|
+
Những tài nguyên này cung cấp thêm những hiểu biết sâu sắc về cách thiết lập và sử dụng Intlayer với các loại nội dung và framework khác nhau.
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-02-07
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Lồng từ điển
|
|
5
|
+
description: Tìm hiểu cách sử dụng lồng nội dung trong Intlayer để tái sử dụng và cấu trúc nội dung đa ngôn ngữ của bạn một cách hiệu quả. Theo dõi tài liệu này để triển khai lồng nội dung một cách liền mạch trong dự án của bạn.
|
|
6
|
+
keywords:
|
|
7
|
+
- Lồng nội dung
|
|
8
|
+
- Tái sử dụng nội dung
|
|
9
|
+
- Tài liệu
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Next.js
|
|
12
|
+
- JavaScript
|
|
13
|
+
- React
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- concept
|
|
17
|
+
- content
|
|
18
|
+
- nesting
|
|
19
|
+
history:
|
|
20
|
+
- version: 5.5.10
|
|
21
|
+
date: 2025-06-29
|
|
22
|
+
changes: Khởi tạo lịch sử
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Lồng nội dung / Tham chiếu nội dung con
|
|
26
|
+
|
|
27
|
+
## Cách hoạt động của lồng nội dung
|
|
28
|
+
|
|
29
|
+
Trong Intlayer, lồng nội dung được thực hiện thông qua hàm `nest`, cho phép bạn tham chiếu và tái sử dụng nội dung từ một từ điển khác. Thay vì sao chép nội dung, bạn có thể trỏ đến một module nội dung hiện có bằng khóa của nó.
|
|
30
|
+
|
|
31
|
+
## Thiết lập lồng nội dung
|
|
32
|
+
|
|
33
|
+
Để thiết lập lồng nội dung trong dự án Intlayer của bạn, trước tiên bạn định nghĩa nội dung cơ sở mà bạn muốn tái sử dụng. Sau đó, trong một module nội dung riêng biệt, bạn sử dụng hàm `nest` để nhập nội dung đó.
|
|
34
|
+
|
|
35
|
+
### Từ điển cơ sở
|
|
36
|
+
|
|
37
|
+
Dưới đây là ví dụ về một từ điển cơ sở để lồng vào một từ điển khác:
|
|
38
|
+
|
|
39
|
+
```typescript fileName="firstDictionary.content.ts" contentDeclarationFormat="typescript"
|
|
40
|
+
import { type Dictionary } from "intlayer";
|
|
41
|
+
|
|
42
|
+
const firstDictionary = {
|
|
43
|
+
key: "key_of_my_first_dictionary",
|
|
44
|
+
content: {
|
|
45
|
+
content: "content",
|
|
46
|
+
subContent: {
|
|
47
|
+
contentNumber: 0,
|
|
48
|
+
contentString: "string",
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
} satisfies Dictionary;
|
|
52
|
+
|
|
53
|
+
export default firstDictionary;
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```javascript fileName="firstDictionary.content.mjs" contentDeclarationFormat="esm"
|
|
57
|
+
/** @type {import('intlayer').Dictionary} */
|
|
58
|
+
const firstDictionary = {
|
|
59
|
+
key: "key_of_my_first_dictionary",
|
|
60
|
+
content: {
|
|
61
|
+
content: "nội dung",
|
|
62
|
+
subContent: {
|
|
63
|
+
contentNumber: 0,
|
|
64
|
+
contentString: "chuỗi",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export default firstDictionary;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```javascript fileName="firstDictionary.content.cjs" contentDeclarationFormat="commonjs"
|
|
73
|
+
/** @type {import('intlayer').Dictionary} */
|
|
74
|
+
const firstDictionary = {
|
|
75
|
+
key: "key_of_my_first_dictionary",
|
|
76
|
+
content: {
|
|
77
|
+
content: "nội dung",
|
|
78
|
+
subContent: {
|
|
79
|
+
contentNumber: 0,
|
|
80
|
+
contentString: "chuỗi",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
module.exports = firstDictionary;
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```json fileName="firstDictionary.content.json" contentDeclarationFormat="json"
|
|
89
|
+
{
|
|
90
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
91
|
+
"key": "key_of_my_first_dictionary",
|
|
92
|
+
"content": {
|
|
93
|
+
"content": "nội dung",
|
|
94
|
+
"subContent": {
|
|
95
|
+
"contentNumber": 0,
|
|
96
|
+
"contentString": "chuỗi"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Tham chiếu với Nest
|
|
103
|
+
|
|
104
|
+
Bây giờ, tạo một module nội dung khác sử dụng hàm `nest` để tham chiếu đến nội dung trên. Bạn có thể tham chiếu toàn bộ nội dung hoặc một giá trị lồng nhau cụ thể:
|
|
105
|
+
|
|
106
|
+
```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat="typescript"
|
|
107
|
+
import { nest, type Dictionary } from "intlayer";
|
|
108
|
+
|
|
109
|
+
const myNestingContent = {
|
|
110
|
+
key: "key_of_my_second_dictionary",
|
|
111
|
+
content: {
|
|
112
|
+
// Tham chiếu toàn bộ dictionary:
|
|
113
|
+
fullNestedContent: nest("key_of_my_first_dictionary"),
|
|
114
|
+
// Tham chiếu một giá trị lồng nhau cụ thể:
|
|
115
|
+
partialNestedContent: nest(
|
|
116
|
+
"key_of_my_first_dictionary",
|
|
117
|
+
"subContent.contentNumber"
|
|
118
|
+
),
|
|
119
|
+
},
|
|
120
|
+
} satisfies Dictionary;
|
|
121
|
+
|
|
122
|
+
export default myNestingContent;
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```javascript fileName="secondDictionary.content.mjs" contentDeclarationFormat="esm"
|
|
126
|
+
import { nest } from "intlayer";
|
|
127
|
+
|
|
128
|
+
/** @type {import('intlayer').Dictionary} */
|
|
129
|
+
const myNestingContent = {
|
|
130
|
+
key: "key_of_my_second_dictionary",
|
|
131
|
+
content: {
|
|
132
|
+
fullNestedContent: nest("key_of_my_first_dictionary"),
|
|
133
|
+
partialNestedContent: nest(
|
|
134
|
+
"key_of_my_first_dictionary",
|
|
135
|
+
"subContent.contentNumber"
|
|
136
|
+
),
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
export default myNestingContent;
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
```javascript fileName="secondDictionary.content.cjs" contentDeclarationFormat="commonjs"
|
|
144
|
+
const { nest } = require("intlayer");
|
|
145
|
+
|
|
146
|
+
/** @type {import('intlayer').Dictionary} */
|
|
147
|
+
const myNestingContent = {
|
|
148
|
+
key: "key_of_my_second_dictionary",
|
|
149
|
+
content: {
|
|
150
|
+
fullNestedContent: nest("key_of_my_first_dictionary"),
|
|
151
|
+
partialNestedContent: nest(
|
|
152
|
+
"key_of_my_first_dictionary",
|
|
153
|
+
"subContent.contentNumber"
|
|
154
|
+
),
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
module.exports = myNestingContent;
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
|
|
162
|
+
{
|
|
163
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
164
|
+
"key": "key_of_my_second_dictionary",
|
|
165
|
+
"content": {
|
|
166
|
+
"fullNestedContent": {
|
|
167
|
+
"nodeType": "nested",
|
|
168
|
+
"nested": {
|
|
169
|
+
"dictionaryKey": "key_of_my_first_dictionary"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"partialNestedContent": {
|
|
173
|
+
"nodeType": "nested",
|
|
174
|
+
"nested": {
|
|
175
|
+
"dictionaryKey": "key_of_my_first_dictionary",
|
|
176
|
+
"path": "subContent.contentNumber"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Là tham số thứ hai, bạn có thể chỉ định một đường dẫn đến một giá trị lồng bên trong nội dung đó. Khi không có đường dẫn được cung cấp, toàn bộ nội dung của từ điển được tham chiếu sẽ được trả về.
|
|
184
|
+
|
|
185
|
+
## Sử dụng Nesting với React Intlayer
|
|
186
|
+
|
|
187
|
+
Để sử dụng nội dung lồng trong một component React, hãy tận dụng hook `useIntlayer` từ package `react-intlayer`. Hook này lấy nội dung chính xác dựa trên key được chỉ định. Dưới đây là ví dụ về cách sử dụng:
|
|
188
|
+
|
|
189
|
+
```tsx fileName="**/*.tsx" codeFormat="typescript"
|
|
190
|
+
import type { FC } from "react";
|
|
191
|
+
import { useIntlayer } from "react-intlayer";
|
|
192
|
+
|
|
193
|
+
const NestComponent: FC = () => {
|
|
194
|
+
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
195
|
+
"key_of_my_second_dictionary"
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
return (
|
|
199
|
+
<div>
|
|
200
|
+
<p>
|
|
201
|
+
Full Nested Content: {JSON.stringify(fullNestedContent)}
|
|
202
|
+
{/* Kết quả: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
|
|
203
|
+
</p>
|
|
204
|
+
<p>
|
|
205
|
+
Giá trị Lồng Một Phần: {partialNestedContent}
|
|
206
|
+
{/* Kết quả: 0 */}
|
|
207
|
+
</p>
|
|
208
|
+
</div>
|
|
209
|
+
);
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
export default NestComponent;
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
```javascript fileName="**/*.mjx" codeFormat="esm"
|
|
216
|
+
import { useIntlayer } from "react-intlayer";
|
|
217
|
+
|
|
218
|
+
const NestComponent = () => {
|
|
219
|
+
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
220
|
+
"key_of_my_second_dictionary"
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
return (
|
|
224
|
+
<div>
|
|
225
|
+
<p>
|
|
226
|
+
Nội dung Lồng Đầy Đủ: {JSON.stringify(fullNestedContent)}
|
|
227
|
+
{/* Kết quả: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
|
|
228
|
+
</p>
|
|
229
|
+
<p>
|
|
230
|
+
Giá trị Lồng Một Phần: {partialNestedContent}
|
|
231
|
+
{/* Kết quả: 0 */}
|
|
232
|
+
</p>
|
|
233
|
+
</div>
|
|
234
|
+
);
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
export default NestComponent;
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
```javascript fileName="**/*.cjx" codeFormat="commonjs"
|
|
241
|
+
const { useIntlayer } = require("react-intlayer");
|
|
242
|
+
|
|
243
|
+
const NestComponent = () => {
|
|
244
|
+
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
245
|
+
"key_of_my_second_dictionary"
|
|
246
|
+
);
|
|
247
|
+
|
|
248
|
+
return (
|
|
249
|
+
<div>
|
|
250
|
+
<p>
|
|
251
|
+
Nội dung Lồng Đầy Đủ: {JSON.stringify(fullNestedContent)}
|
|
252
|
+
{/* Kết quả: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
|
|
253
|
+
</p>
|
|
254
|
+
<p>
|
|
255
|
+
Giá trị Lồng Một Phần: {partialNestedContent}
|
|
256
|
+
{/* Kết quả: 0 */}
|
|
257
|
+
</p>
|
|
258
|
+
</div>
|
|
259
|
+
);
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
module.exports = NestComponent;
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Tài Nguyên Bổ Sung
|
|
266
|
+
|
|
267
|
+
Để biết thêm thông tin chi tiết về cấu hình và cách sử dụng, vui lòng tham khảo các tài nguyên sau:
|
|
268
|
+
|
|
269
|
+
- [Tài liệu CLI của Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_cli.md)
|
|
270
|
+
- [Tài liệu React Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_with_create_react_app.md)
|
|
271
|
+
- [Tài liệu Next Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_with_nextjs_15.md)
|
|
272
|
+
|
|
273
|
+
Những tài nguyên này cung cấp thêm những hiểu biết sâu sắc về cách thiết lập và sử dụng Intlayer trong các môi trường khác nhau và với nhiều framework khác nhau.
|