@intlayer/docs 7.0.6 → 7.0.8-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/ar/i18n_using_next-i18next.md +1068 -0
- package/blog/ar/i18n_using_next-intl.md +768 -0
- package/blog/ar/intlayer_with_react-intl.md +0 -4
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +5 -4
- package/blog/de/i18n_using_next-i18next.md +1107 -0
- package/blog/de/i18n_using_next-intl.md +760 -0
- package/blog/de/intlayer_with_react-intl.md +0 -4
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/en/i18n_using_next-i18next.md +1073 -0
- package/blog/en/i18n_using_next-intl.md +757 -0
- package/blog/en/intlayer_with_i18next.md +71 -8
- package/blog/en/intlayer_with_next-i18next.md +71 -8
- package/blog/en/intlayer_with_next-intl.md +71 -8
- package/blog/en/intlayer_with_react-i18next.md +69 -8
- package/blog/en/intlayer_with_react-intl.md +68 -9
- package/blog/en/intlayer_with_vue-i18n.md +68 -7
- package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/blog/en/vue-i18n_vs_intlayer.md +2 -0
- package/blog/en-GB/i18n_using_next-i18next.md +1074 -0
- package/blog/en-GB/i18n_using_next-intl.md +757 -0
- package/blog/en-GB/intlayer_with_i18next.md +15 -6
- package/blog/en-GB/intlayer_with_next-i18next.md +16 -6
- package/blog/en-GB/intlayer_with_next-intl.md +16 -6
- package/blog/en-GB/intlayer_with_react-i18next.md +16 -7
- package/blog/en-GB/intlayer_with_react-intl.md +14 -9
- package/blog/en-GB/intlayer_with_vue-i18n.md +16 -7
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/blog/en-GB/vue-i18n_vs_intlayer.md +2 -0
- package/blog/es/i18n_using_next-i18next.md +1066 -0
- package/blog/es/i18n_using_next-intl.md +757 -0
- package/blog/es/intlayer_with_react-intl.md +0 -4
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/fr/i18n_using_next-i18next.md +1078 -0
- package/blog/fr/i18n_using_next-intl.md +759 -0
- package/blog/fr/intlayer_with_react-intl.md +0 -4
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/hi/i18n_using_next-i18next.md +1068 -0
- package/blog/hi/i18n_using_next-intl.md +758 -0
- package/blog/hi/intlayer_with_react-intl.md +0 -4
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/id/i18n_using_next-i18next.md +1078 -0
- package/blog/id/i18n_using_next-intl.md +757 -0
- package/blog/id/index.md +69 -0
- package/blog/id/internationalization_and_SEO.md +364 -0
- package/blog/id/intlayer_with_react-intl.md +0 -4
- package/blog/id/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/id/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/id/list_i18n_technologies/CMS/wordpress.md +188 -0
- package/blog/id/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/id/list_i18n_technologies/frameworks/flutter.md +150 -0
- package/blog/id/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/id/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/id/list_i18n_technologies/frameworks/svelte.md +131 -0
- package/blog/id/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1500 -0
- package/blog/id/nextjs-multilingual-seo-comparison.md +361 -0
- package/blog/id/rag_powered_documentation_assistant.md +288 -0
- package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/id/vue-i18n_vs_intlayer.md +278 -0
- package/blog/id/what_is_internationalization.md +166 -0
- package/blog/it/i18n_using_next-i18next.md +1078 -0
- package/blog/it/i18n_using_next-intl.md +758 -0
- package/blog/it/intlayer_with_react-intl.md +0 -4
- package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +4 -0
- package/blog/it/vue-i18n_vs_intlayer.md +2 -0
- package/blog/ja/i18n_using_next-i18next.md +1078 -0
- package/blog/ja/i18n_using_next-intl.md +758 -0
- package/blog/ja/intlayer_with_react-intl.md +0 -4
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/ko/i18n_using_next-i18next.md +1075 -0
- package/blog/ko/i18n_using_next-intl.md +759 -0
- package/blog/ko/intlayer_with_react-intl.md +0 -4
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/pl/i18n_using_next-i18next.md +1078 -0
- package/blog/pl/i18n_using_next-intl.md +758 -0
- package/blog/pl/index.md +69 -0
- package/blog/pl/internationalization_and_SEO.md +363 -0
- package/blog/pl/intlayer_with_react-intl.md +0 -4
- package/blog/pl/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/pl/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/pl/list_i18n_technologies/CMS/wordpress.md +196 -0
- package/blog/pl/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/pl/list_i18n_technologies/frameworks/flutter.md +151 -0
- package/blog/pl/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/pl/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/pl/list_i18n_technologies/frameworks/svelte.md +131 -0
- package/blog/pl/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +1501 -0
- package/blog/pl/nextjs-multilingual-seo-comparison.md +362 -0
- package/blog/pl/rag_powered_documentation_assistant.md +288 -0
- package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/pl/vue-i18n_vs_intlayer.md +278 -0
- package/blog/pl/what_is_internationalization.md +167 -0
- package/blog/pt/i18n_using_next-i18next.md +1067 -0
- package/blog/pt/i18n_using_next-intl.md +760 -0
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/ru/i18n_using_next-i18next.md +1106 -0
- package/blog/ru/i18n_using_next-intl.md +759 -0
- package/blog/ru/intlayer_with_react-intl.md +0 -4
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/tr/i18n_using_next-i18next.md +1078 -0
- package/blog/tr/i18n_using_next-intl.md +760 -0
- package/blog/tr/intlayer_with_react-intl.md +0 -4
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/blog/tr/vue-i18n_vs_intlayer.md +2 -0
- package/blog/vi/i18n_using_next-i18next.md +1080 -0
- package/blog/vi/i18n_using_next-intl.md +758 -0
- package/blog/vi/index.md +69 -0
- package/blog/vi/internationalization_and_SEO.md +363 -0
- package/blog/vi/intlayer_with_react-intl.md +0 -4
- package/blog/vi/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/vi/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/vi/list_i18n_technologies/CMS/wordpress.md +188 -0
- package/blog/vi/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/vi/list_i18n_technologies/frameworks/flutter.md +150 -0
- package/blog/vi/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/vi/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/vi/list_i18n_technologies/frameworks/svelte.md +131 -0
- package/blog/vi/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1520 -0
- package/blog/vi/nextjs-multilingual-seo-comparison.md +362 -0
- package/blog/vi/rag_powered_documentation_assistant.md +288 -0
- package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/vi/vue-i18n_vs_intlayer.md +278 -0
- package/blog/vi/what_is_internationalization.md +168 -0
- package/blog/zh/i18n_using_next-i18next.md +1105 -0
- package/blog/zh/i18n_using_next-intl.md +758 -0
- package/blog/zh/intlayer_with_react-intl.md +0 -4
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/dist/cjs/common.cjs +0 -4
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +38 -6
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +0 -6
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +0 -6
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +0 -6
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +38 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +2 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/docs/ar/component_i18n.md +1 -1
- package/docs/ar/configuration.md +6 -0
- package/docs/ar/intlayer_cli.md +8 -3
- package/docs/ar/intlayer_with_next-i18next.md +619 -0
- package/docs/ar/intlayer_with_next-intl.md +446 -0
- package/docs/ar/intlayer_with_nextjs_16.md +21 -0
- package/docs/ar/intlayer_with_tanstack.md +4 -0
- package/docs/ar/intlayer_with_vite+react.md +4 -0
- package/docs/de/component_i18n.md +1 -1
- package/docs/de/configuration.md +6 -0
- package/docs/de/intlayer_cli.md +8 -3
- package/docs/de/intlayer_with_next-i18next.md +627 -0
- package/docs/de/intlayer_with_next-intl.md +451 -0
- package/docs/de/intlayer_with_nextjs_16.md +21 -0
- package/docs/de/intlayer_with_tanstack.md +4 -0
- package/docs/de/intlayer_with_vite+react.md +4 -0
- package/docs/en/component_i18n.md +1 -1
- package/docs/en/intlayer_cli.md +8 -1
- package/docs/en/intlayer_with_astro.md +10 -2
- package/docs/en/intlayer_with_create_react_app.md +8 -0
- package/docs/en/intlayer_with_lynx+react.md +8 -0
- package/docs/en/intlayer_with_nestjs.md +10 -0
- package/docs/en/intlayer_with_nextjs_14.md +10 -2
- package/docs/en/intlayer_with_nextjs_15.md +21 -4
- package/docs/en/intlayer_with_nextjs_16.md +17 -0
- package/docs/en/intlayer_with_nuxt.md +8 -0
- package/docs/en/intlayer_with_react_native+expo.md +10 -2
- package/docs/en/intlayer_with_react_router_v7.md +8 -0
- package/docs/en/intlayer_with_tanstack.md +10 -0
- package/docs/en/intlayer_with_vite+preact.md +10 -2
- package/docs/en/intlayer_with_vite+react.md +21 -4
- package/docs/en/intlayer_with_vite+vue.md +10 -2
- package/docs/en-GB/component_i18n.md +1 -1
- package/docs/en-GB/configuration.md +6 -0
- package/docs/en-GB/intlayer_cli.md +8 -3
- package/docs/en-GB/intlayer_with_angular.md +4 -4
- package/docs/en-GB/intlayer_with_express.md +4 -4
- package/docs/en-GB/intlayer_with_lynx+react.md +12 -12
- package/{blog/en/_intlayer_with_next-i18next.md → docs/en-GB/intlayer_with_next-i18next.md} +241 -42
- package/{blog/en/_intlayer_with_next-intl.md → docs/en-GB/intlayer_with_next-intl.md} +144 -29
- package/docs/en-GB/intlayer_with_nextjs_16.md +21 -0
- package/docs/en-GB/intlayer_with_tanstack.md +5 -1
- package/docs/en-GB/intlayer_with_vite+react.md +4 -0
- package/docs/en-GB/packages/next-intlayer/t.md +2 -2
- package/docs/es/component_i18n.md +1 -1
- package/docs/es/configuration.md +6 -0
- package/docs/es/intlayer_cli.md +8 -3
- package/docs/es/intlayer_with_next-i18next.md +628 -0
- package/docs/es/intlayer_with_next-intl.md +446 -0
- package/docs/es/intlayer_with_nextjs_16.md +21 -0
- package/docs/es/intlayer_with_tanstack.md +4 -0
- package/docs/es/intlayer_with_vite+react.md +4 -0
- package/docs/fr/configuration.md +6 -0
- package/docs/fr/intlayer_cli.md +8 -3
- package/docs/fr/intlayer_with_next-i18next.md +628 -0
- package/docs/fr/intlayer_with_next-intl.md +446 -0
- package/docs/fr/intlayer_with_nextjs_16.md +23 -2
- package/docs/fr/intlayer_with_tanstack.md +4 -0
- package/docs/fr/intlayer_with_vite+react.md +4 -0
- package/docs/hi/component_i18n.md +1 -1
- package/docs/hi/configuration.md +6 -0
- package/docs/hi/intlayer_cli.md +8 -0
- package/docs/hi/intlayer_with_next-i18next.md +628 -0
- package/docs/hi/intlayer_with_next-intl.md +446 -0
- package/docs/hi/intlayer_with_nextjs_16.md +21 -0
- package/docs/hi/intlayer_with_tanstack.md +4 -0
- package/docs/hi/intlayer_with_vite+react.md +4 -0
- package/docs/id/CI_CD.md +198 -0
- package/docs/id/autoFill.md +284 -0
- package/docs/id/component_i18n.md +186 -0
- package/docs/id/configuration.md +710 -0
- package/docs/id/dictionary/condition.md +231 -0
- package/docs/id/dictionary/content_file.md +1092 -0
- package/docs/id/dictionary/enumeration.md +245 -0
- package/docs/id/dictionary/file.md +237 -0
- package/docs/id/dictionary/function_fetching.md +214 -0
- package/docs/id/dictionary/gender.md +273 -0
- package/docs/id/dictionary/insertion.md +192 -0
- package/docs/id/dictionary/markdown.md +381 -0
- package/docs/id/dictionary/nesting.md +273 -0
- package/docs/id/dictionary/translation.md +310 -0
- package/docs/id/formatters.md +596 -0
- package/docs/id/how_works_intlayer.md +256 -0
- package/docs/id/index.md +176 -0
- package/docs/id/interest_of_intlayer.md +293 -0
- package/docs/id/intlayer_CMS.md +549 -0
- package/docs/id/intlayer_cli.md +850 -0
- package/docs/id/intlayer_visual_editor.md +288 -0
- package/docs/id/intlayer_with_angular.md +694 -0
- package/docs/id/intlayer_with_astro.md +252 -0
- package/docs/id/intlayer_with_create_react_app.md +1233 -0
- package/docs/id/intlayer_with_express.md +411 -0
- package/docs/id/intlayer_with_lynx+react.md +518 -0
- package/docs/id/intlayer_with_nestjs.md +272 -0
- package/docs/id/intlayer_with_next-i18next.md +628 -0
- package/docs/id/intlayer_with_next-intl.md +446 -0
- package/docs/id/intlayer_with_nextjs_14.md +1617 -0
- package/docs/id/intlayer_with_nextjs_15.md +1698 -0
- package/docs/id/intlayer_with_nextjs_16.md +21 -0
- package/docs/id/intlayer_with_nextjs_page_router.md +1478 -0
- package/docs/id/intlayer_with_nuxt.md +808 -0
- package/docs/id/intlayer_with_react_native+expo.md +699 -0
- package/docs/id/intlayer_with_react_router_v7.md +496 -0
- package/docs/id/intlayer_with_tanstack.md +564 -0
- package/docs/id/intlayer_with_vite+preact.md +1737 -0
- package/docs/id/intlayer_with_vite+react.md +1413 -0
- package/docs/id/intlayer_with_vite+solid.md +289 -0
- package/docs/id/intlayer_with_vite+svelte.md +289 -0
- package/docs/id/intlayer_with_vite+vue.md +1088 -0
- package/docs/id/introduction.md +218 -0
- package/docs/id/locale_mapper.md +242 -0
- package/docs/id/mcp_server.md +211 -0
- package/docs/id/packages/express-intlayer/t.md +458 -0
- package/docs/id/packages/intlayer/getConfiguration.md +145 -0
- package/docs/id/packages/intlayer/getEnumeration.md +159 -0
- package/docs/id/packages/intlayer/getHTMLTextDir.md +122 -0
- package/docs/id/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/id/packages/intlayer/getLocaleName.md +119 -0
- package/docs/id/packages/intlayer/getLocalizedUrl.md +309 -0
- package/docs/id/packages/intlayer/getMultilingualUrls.md +223 -0
- package/docs/id/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/id/packages/intlayer/getTranslation.md +190 -0
- package/docs/id/packages/intlayer/getTranslationContent.md +188 -0
- package/docs/id/packages/next-intlayer/t.md +352 -0
- package/docs/id/packages/next-intlayer/useDictionary.md +271 -0
- package/docs/id/packages/next-intlayer/useIntlayer.md +264 -0
- package/docs/id/packages/next-intlayer/useLocale.md +166 -0
- package/docs/id/packages/react-intlayer/t.md +303 -0
- package/docs/id/packages/react-intlayer/useDictionary.md +287 -0
- package/docs/id/packages/react-intlayer/useI18n.md +267 -0
- package/docs/id/packages/react-intlayer/useIntlayer.md +254 -0
- package/docs/id/packages/react-intlayer/useLocale.md +210 -0
- package/docs/id/per_locale_file.md +323 -0
- package/docs/id/readme.md +261 -0
- package/docs/id/releases/v6.md +305 -0
- package/docs/id/roadmap.md +362 -0
- package/docs/id/testing.md +202 -0
- package/docs/id/vs_code_extension.md +126 -0
- package/docs/it/component_i18n.md +1 -1
- package/docs/it/configuration.md +6 -0
- package/docs/it/intlayer_cli.md +8 -3
- package/docs/it/intlayer_with_next-i18next.md +628 -0
- package/docs/it/intlayer_with_next-intl.md +446 -0
- package/docs/it/intlayer_with_nextjs_16.md +21 -0
- package/docs/it/intlayer_with_tanstack.md +4 -0
- package/docs/it/intlayer_with_vite+react.md +4 -0
- package/docs/ja/component_i18n.md +1 -1
- package/docs/ja/configuration.md +6 -0
- package/docs/ja/intlayer_cli.md +8 -3
- package/docs/ja/intlayer_with_next-i18next.md +627 -0
- package/docs/ja/intlayer_with_next-intl.md +446 -0
- package/docs/ja/intlayer_with_nextjs_16.md +21 -0
- package/docs/ja/intlayer_with_tanstack.md +4 -0
- package/docs/ja/intlayer_with_vite+react.md +4 -0
- package/docs/ko/configuration.md +6 -0
- package/docs/ko/intlayer_cli.md +8 -3
- package/docs/ko/intlayer_with_next-i18next.md +627 -0
- package/docs/ko/intlayer_with_next-intl.md +446 -0
- package/docs/ko/intlayer_with_nextjs_16.md +21 -0
- package/docs/ko/intlayer_with_tanstack.md +4 -0
- package/docs/ko/intlayer_with_vite+react.md +4 -0
- package/docs/pl/CI_CD.md +198 -0
- package/docs/pl/autoFill.md +284 -0
- package/docs/pl/component_i18n.md +186 -0
- package/docs/pl/configuration.md +710 -0
- package/docs/pl/dictionary/condition.md +232 -0
- package/docs/pl/dictionary/content_file.md +1130 -0
- package/docs/pl/dictionary/enumeration.md +245 -0
- package/docs/pl/dictionary/file.md +234 -0
- package/docs/pl/dictionary/function_fetching.md +214 -0
- package/docs/pl/dictionary/gender.md +276 -0
- package/docs/pl/dictionary/insertion.md +188 -0
- package/docs/pl/dictionary/markdown.md +408 -0
- package/docs/pl/dictionary/nesting.md +273 -0
- package/docs/pl/dictionary/translation.md +310 -0
- package/docs/pl/formatters.md +596 -0
- package/docs/pl/how_works_intlayer.md +256 -0
- package/docs/pl/index.md +176 -0
- package/docs/pl/interest_of_intlayer.md +291 -0
- package/docs/pl/intlayer_CMS.md +549 -0
- package/docs/pl/intlayer_cli.md +857 -0
- package/docs/pl/intlayer_visual_editor.md +288 -0
- package/docs/pl/intlayer_with_angular.md +690 -0
- package/docs/pl/intlayer_with_astro.md +280 -0
- package/docs/pl/intlayer_with_create_react_app.md +1235 -0
- package/docs/pl/intlayer_with_express.md +411 -0
- package/docs/pl/intlayer_with_lynx+react.md +518 -0
- package/docs/pl/intlayer_with_nestjs.md +272 -0
- package/docs/pl/intlayer_with_next-i18next.md +628 -0
- package/docs/pl/intlayer_with_next-intl.md +446 -0
- package/docs/pl/intlayer_with_nextjs_14.md +1594 -0
- package/docs/pl/intlayer_with_nextjs_15.md +1701 -0
- package/docs/pl/intlayer_with_nextjs_16.md +21 -0
- package/docs/pl/intlayer_with_nextjs_page_router.md +1513 -0
- package/docs/pl/intlayer_with_nuxt.md +885 -0
- package/docs/pl/intlayer_with_react_native+expo.md +698 -0
- package/docs/pl/intlayer_with_react_router_v7.md +503 -0
- package/docs/pl/intlayer_with_tanstack.md +562 -0
- package/docs/pl/intlayer_with_vite+preact.md +1736 -0
- package/docs/pl/intlayer_with_vite+react.md +1438 -0
- package/docs/pl/intlayer_with_vite+solid.md +290 -0
- package/docs/pl/intlayer_with_vite+svelte.md +289 -0
- package/docs/pl/intlayer_with_vite+vue.md +1116 -0
- package/docs/pl/introduction.md +209 -0
- package/docs/pl/locale_mapper.md +242 -0
- package/docs/pl/mcp_server.md +211 -0
- package/docs/pl/packages/express-intlayer/t.md +458 -0
- package/docs/pl/packages/intlayer/getConfiguration.md +146 -0
- package/docs/pl/packages/intlayer/getEnumeration.md +160 -0
- package/docs/pl/packages/intlayer/getHTMLTextDir.md +121 -0
- package/docs/pl/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/pl/packages/intlayer/getLocaleName.md +118 -0
- package/docs/pl/packages/intlayer/getLocalizedUrl.md +300 -0
- package/docs/pl/packages/intlayer/getMultilingualUrls.md +221 -0
- package/docs/pl/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/pl/packages/intlayer/getTranslation.md +190 -0
- package/docs/pl/packages/intlayer/getTranslationContent.md +189 -0
- package/docs/pl/packages/next-intlayer/t.md +353 -0
- package/docs/pl/packages/next-intlayer/useDictionary.md +270 -0
- package/docs/pl/packages/next-intlayer/useIntlayer.md +263 -0
- package/docs/pl/packages/next-intlayer/useLocale.md +166 -0
- package/docs/pl/packages/react-intlayer/t.md +303 -0
- package/docs/pl/packages/react-intlayer/useDictionary.md +289 -0
- package/docs/pl/packages/react-intlayer/useI18n.md +249 -0
- package/docs/pl/packages/react-intlayer/useIntlayer.md +256 -0
- package/docs/pl/packages/react-intlayer/useLocale.md +210 -0
- package/docs/pl/per_locale_file.md +321 -0
- package/docs/pl/readme.md +261 -0
- package/docs/pl/releases/v6.md +305 -0
- package/docs/pl/roadmap.md +362 -0
- package/docs/pl/testing.md +202 -0
- package/docs/pl/vs_code_extension.md +126 -0
- package/docs/pt/component_i18n.md +1 -1
- package/docs/pt/configuration.md +6 -0
- package/docs/pt/intlayer_cli.md +8 -3
- package/docs/pt/intlayer_with_next-i18next.md +627 -0
- package/docs/pt/intlayer_with_next-intl.md +446 -0
- package/docs/pt/intlayer_with_nextjs_16.md +21 -0
- package/docs/pt/intlayer_with_tanstack.md +4 -0
- package/docs/pt/intlayer_with_vite+react.md +4 -0
- package/docs/ru/component_i18n.md +1 -1
- package/docs/ru/configuration.md +6 -0
- package/docs/ru/intlayer_cli.md +301 -22
- package/docs/ru/intlayer_with_next-i18next.md +629 -0
- package/docs/ru/intlayer_with_next-intl.md +448 -0
- package/docs/ru/intlayer_with_nextjs_16.md +21 -0
- package/docs/ru/intlayer_with_tanstack.md +4 -0
- package/docs/ru/intlayer_with_vite+react.md +4 -0
- package/docs/tr/component_i18n.md +1 -1
- package/docs/tr/configuration.md +6 -0
- package/docs/tr/intlayer_cli.md +8 -0
- package/docs/tr/intlayer_with_next-i18next.md +627 -0
- package/docs/tr/intlayer_with_next-intl.md +446 -0
- package/docs/tr/intlayer_with_nextjs_16.md +21 -0
- package/docs/tr/intlayer_with_tanstack.md +4 -0
- package/docs/tr/intlayer_with_vite+react.md +4 -0
- package/docs/vi/CI_CD.md +198 -0
- package/docs/vi/autoFill.md +284 -0
- package/docs/vi/component_i18n.md +186 -0
- package/docs/vi/configuration.md +710 -0
- package/docs/vi/dictionary/condition.md +237 -0
- package/docs/vi/dictionary/content_file.md +1115 -0
- package/docs/vi/dictionary/enumeration.md +255 -0
- package/docs/vi/dictionary/file.md +234 -0
- package/docs/vi/dictionary/function_fetching.md +212 -0
- package/docs/vi/dictionary/gender.md +275 -0
- package/docs/vi/dictionary/insertion.md +191 -0
- package/docs/vi/dictionary/markdown.md +381 -0
- package/docs/vi/dictionary/nesting.md +273 -0
- package/docs/vi/dictionary/translation.md +309 -0
- package/docs/vi/formatters.md +595 -0
- package/docs/vi/how_works_intlayer.md +256 -0
- package/docs/vi/index.md +174 -0
- package/docs/vi/interest_of_intlayer.md +292 -0
- package/docs/vi/intlayer_CMS.md +549 -0
- package/docs/vi/intlayer_cli.md +850 -0
- package/docs/vi/intlayer_visual_editor.md +288 -0
- package/docs/vi/intlayer_with_angular.md +692 -0
- package/docs/vi/intlayer_with_astro.md +252 -0
- package/docs/vi/intlayer_with_create_react_app.md +1230 -0
- package/docs/vi/intlayer_with_express.md +409 -0
- package/docs/vi/intlayer_with_lynx+react.md +520 -0
- package/docs/vi/intlayer_with_nestjs.md +272 -0
- package/docs/vi/intlayer_with_next-i18next.md +628 -0
- package/docs/vi/intlayer_with_next-intl.md +446 -0
- package/docs/vi/intlayer_with_nextjs_14.md +1584 -0
- package/docs/vi/intlayer_with_nextjs_15.md +1738 -0
- package/docs/vi/intlayer_with_nextjs_16.md +21 -0
- package/docs/vi/intlayer_with_nextjs_page_router.md +1504 -0
- package/docs/vi/intlayer_with_nuxt.md +821 -0
- package/docs/vi/intlayer_with_react_native+expo.md +700 -0
- package/docs/vi/intlayer_with_react_router_v7.md +498 -0
- package/docs/vi/intlayer_with_tanstack.md +562 -0
- package/docs/vi/intlayer_with_vite+preact.md +1722 -0
- package/docs/vi/intlayer_with_vite+react.md +1407 -0
- package/docs/vi/intlayer_with_vite+solid.md +287 -0
- package/docs/vi/intlayer_with_vite+svelte.md +289 -0
- package/docs/vi/intlayer_with_vite+vue.md +1071 -0
- package/docs/vi/introduction.md +215 -0
- package/docs/vi/locale_mapper.md +242 -0
- package/docs/vi/mcp_server.md +211 -0
- package/docs/vi/packages/express-intlayer/t.md +457 -0
- package/docs/vi/packages/intlayer/getConfiguration.md +145 -0
- package/docs/vi/packages/intlayer/getEnumeration.md +162 -0
- package/docs/vi/packages/intlayer/getHTMLTextDir.md +121 -0
- package/docs/vi/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/vi/packages/intlayer/getLocaleName.md +129 -0
- package/docs/vi/packages/intlayer/getLocalizedUrl.md +309 -0
- package/docs/vi/packages/intlayer/getMultilingualUrls.md +221 -0
- package/docs/vi/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/vi/packages/intlayer/getTranslation.md +201 -0
- package/docs/vi/packages/intlayer/getTranslationContent.md +188 -0
- package/docs/vi/packages/next-intlayer/t.md +352 -0
- package/docs/vi/packages/next-intlayer/useDictionary.md +273 -0
- package/docs/vi/packages/next-intlayer/useIntlayer.md +264 -0
- package/docs/vi/packages/next-intlayer/useLocale.md +166 -0
- package/docs/vi/packages/react-intlayer/t.md +304 -0
- package/docs/vi/packages/react-intlayer/useDictionary.md +288 -0
- package/docs/vi/packages/react-intlayer/useI18n.md +295 -0
- package/docs/vi/packages/react-intlayer/useIntlayer.md +256 -0
- package/docs/vi/packages/react-intlayer/useLocale.md +210 -0
- package/docs/vi/per_locale_file.md +326 -0
- package/docs/vi/readme.md +261 -0
- package/docs/vi/releases/v6.md +305 -0
- package/docs/vi/roadmap.md +346 -0
- package/docs/vi/testing.md +202 -0
- package/docs/vi/vs_code_extension.md +126 -0
- package/docs/zh/configuration.md +6 -0
- package/docs/zh/intlayer_cli.md +8 -3
- package/docs/zh/intlayer_with_next-i18next.md +628 -0
- package/docs/zh/intlayer_with_next-intl.md +448 -0
- package/docs/zh/intlayer_with_nextjs_16.md +21 -0
- package/docs/zh/intlayer_with_tanstack.md +4 -0
- package/docs/zh/intlayer_with_vite+react.md +4 -0
- package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ar/array_as_content_declaration.md +1 -2
- package/frequent_questions/ar/build_dictionaries.md +1 -2
- package/frequent_questions/ar/build_error_CI_CD.md +1 -2
- package/frequent_questions/ar/bun_set_up.md +1 -2
- package/frequent_questions/ar/customized_locale_list.md +1 -2
- package/frequent_questions/ar/domain_routing.md +1 -2
- package/frequent_questions/ar/esbuild_error.md +1 -2
- package/frequent_questions/ar/get_locale_cookie.md +1 -2
- package/frequent_questions/ar/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ar/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ar/static_rendering.md +1 -3
- package/frequent_questions/ar/translated_path_url.md +1 -2
- package/frequent_questions/ar/unknown_command.md +1 -2
- package/frequent_questions/de/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/de/array_as_content_declaration.md +1 -2
- package/frequent_questions/de/build_dictionaries.md +1 -2
- package/frequent_questions/de/build_error_CI_CD.md +1 -2
- package/frequent_questions/de/bun_set_up.md +1 -2
- package/frequent_questions/de/customized_locale_list.md +1 -2
- package/frequent_questions/de/domain_routing.md +1 -2
- package/frequent_questions/de/esbuild_error.md +1 -2
- package/frequent_questions/de/get_locale_cookie.md +1 -2
- package/frequent_questions/de/intlayer_command_undefined.md +1 -2
- package/frequent_questions/de/locale_incorect_in_url.md +1 -2
- package/frequent_questions/de/static_rendering.md +1 -3
- package/frequent_questions/de/translated_path_url.md +1 -2
- package/frequent_questions/de/unknown_command.md +1 -2
- package/frequent_questions/en/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/en/array_as_content_declaration.md +1 -2
- package/frequent_questions/en/build_dictionaries.md +1 -2
- package/frequent_questions/en/build_error_CI_CD.md +1 -2
- package/frequent_questions/en/bun_set_up.md +1 -2
- package/frequent_questions/en/customized_locale_list.md +1 -2
- package/frequent_questions/en/domain_routing.md +1 -2
- package/frequent_questions/en/esbuild_error.md +1 -2
- package/frequent_questions/en/get_locale_cookie.md +1 -2
- package/frequent_questions/en/intlayer_command_undefined.md +1 -2
- package/frequent_questions/en/locale_incorect_in_url.md +1 -2
- package/frequent_questions/en/static_rendering.md +1 -3
- package/frequent_questions/en/translated_path_url.md +1 -2
- package/frequent_questions/en/unknown_command.md +1 -2
- package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/en-GB/array_as_content_declaration.md +1 -2
- package/frequent_questions/en-GB/build_dictionaries.md +1 -2
- package/frequent_questions/en-GB/build_error_CI_CD.md +1 -2
- package/frequent_questions/en-GB/bun_set_up.md +1 -2
- package/frequent_questions/en-GB/customized_locale_list.md +1 -2
- package/frequent_questions/en-GB/domain_routing.md +1 -2
- package/frequent_questions/en-GB/esbuild_error.md +1 -2
- package/frequent_questions/en-GB/get_locale_cookie.md +1 -2
- package/frequent_questions/en-GB/intlayer_command_undefined.md +1 -2
- package/frequent_questions/en-GB/locale_incorect_in_url.md +1 -2
- package/frequent_questions/en-GB/static_rendering.md +1 -3
- package/frequent_questions/en-GB/translated_path_url.md +1 -2
- package/frequent_questions/en-GB/unknown_command.md +1 -2
- package/frequent_questions/es/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/es/array_as_content_declaration.md +1 -2
- package/frequent_questions/es/build_dictionaries.md +1 -2
- package/frequent_questions/es/build_error_CI_CD.md +1 -2
- package/frequent_questions/es/bun_set_up.md +1 -2
- package/frequent_questions/es/customized_locale_list.md +1 -2
- package/frequent_questions/es/domain_routing.md +1 -2
- package/frequent_questions/es/esbuild_error.md +1 -2
- package/frequent_questions/es/get_locale_cookie.md +1 -2
- package/frequent_questions/es/intlayer_command_undefined.md +1 -2
- package/frequent_questions/es/locale_incorect_in_url.md +1 -2
- package/frequent_questions/es/static_rendering.md +1 -3
- package/frequent_questions/es/translated_path_url.md +1 -2
- package/frequent_questions/es/unknown_command.md +1 -2
- package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/fr/array_as_content_declaration.md +1 -2
- package/frequent_questions/fr/build_dictionaries.md +1 -2
- package/frequent_questions/fr/build_error_CI_CD.md +1 -2
- package/frequent_questions/fr/bun_set_up.md +1 -2
- package/frequent_questions/fr/customized_locale_list.md +1 -2
- package/frequent_questions/fr/domain_routing.md +1 -2
- package/frequent_questions/fr/esbuild_error.md +1 -2
- package/frequent_questions/fr/get_locale_cookie.md +1 -2
- package/frequent_questions/fr/intlayer_command_undefined.md +1 -2
- package/frequent_questions/fr/locale_incorect_in_url.md +1 -2
- package/frequent_questions/fr/static_rendering.md +1 -3
- package/frequent_questions/fr/translated_path_url.md +1 -2
- package/frequent_questions/fr/unknown_command.md +1 -2
- package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/hi/array_as_content_declaration.md +1 -2
- package/frequent_questions/hi/build_dictionaries.md +1 -2
- package/frequent_questions/hi/build_error_CI_CD.md +1 -2
- package/frequent_questions/hi/bun_set_up.md +1 -2
- package/frequent_questions/hi/customized_locale_list.md +1 -2
- package/frequent_questions/hi/domain_routing.md +1 -2
- package/frequent_questions/hi/esbuild_error.md +1 -2
- package/frequent_questions/hi/get_locale_cookie.md +1 -2
- package/frequent_questions/hi/intlayer_command_undefined.md +1 -2
- package/frequent_questions/hi/locale_incorect_in_url.md +1 -2
- package/frequent_questions/hi/static_rendering.md +1 -3
- package/frequent_questions/hi/translated_path_url.md +1 -2
- package/frequent_questions/hi/unknown_command.md +1 -2
- package/frequent_questions/id/SSR_Next_no_[locale].md +104 -0
- package/frequent_questions/id/array_as_content_declaration.md +71 -0
- package/frequent_questions/id/build_dictionaries.md +58 -0
- package/frequent_questions/id/build_error_CI_CD.md +74 -0
- package/frequent_questions/id/bun_set_up.md +53 -0
- package/frequent_questions/id/customized_locale_list.md +64 -0
- package/frequent_questions/id/domain_routing.md +113 -0
- package/frequent_questions/id/esbuild_error.md +29 -0
- package/frequent_questions/id/get_locale_cookie.md +142 -0
- package/frequent_questions/id/intlayer_command_undefined.md +155 -0
- package/frequent_questions/id/locale_incorect_in_url.md +73 -0
- package/frequent_questions/id/static_rendering.md +44 -0
- package/frequent_questions/id/translated_path_url.md +55 -0
- package/frequent_questions/id/unknown_command.md +97 -0
- package/frequent_questions/it/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/it/array_as_content_declaration.md +1 -2
- package/frequent_questions/it/build_dictionaries.md +1 -2
- package/frequent_questions/it/build_error_CI_CD.md +1 -2
- package/frequent_questions/it/bun_set_up.md +1 -2
- package/frequent_questions/it/customized_locale_list.md +1 -2
- package/frequent_questions/it/domain_routing.md +1 -2
- package/frequent_questions/it/esbuild_error.md +1 -2
- package/frequent_questions/it/get_locale_cookie.md +1 -2
- package/frequent_questions/it/intlayer_command_undefined.md +1 -2
- package/frequent_questions/it/locale_incorect_in_url.md +1 -2
- package/frequent_questions/it/static_rendering.md +1 -3
- package/frequent_questions/it/translated_path_url.md +1 -2
- package/frequent_questions/it/unknown_command.md +1 -2
- package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ja/array_as_content_declaration.md +1 -2
- package/frequent_questions/ja/build_dictionaries.md +1 -2
- package/frequent_questions/ja/build_error_CI_CD.md +1 -2
- package/frequent_questions/ja/bun_set_up.md +1 -2
- package/frequent_questions/ja/customized_locale_list.md +1 -2
- package/frequent_questions/ja/domain_routing.md +1 -2
- package/frequent_questions/ja/esbuild_error.md +1 -2
- package/frequent_questions/ja/get_locale_cookie.md +1 -2
- package/frequent_questions/ja/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ja/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ja/static_rendering.md +1 -3
- package/frequent_questions/ja/translated_path_url.md +1 -2
- package/frequent_questions/ja/unknown_command.md +1 -2
- package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ko/array_as_content_declaration.md +1 -2
- package/frequent_questions/ko/build_dictionaries.md +1 -2
- package/frequent_questions/ko/build_error_CI_CD.md +1 -2
- package/frequent_questions/ko/bun_set_up.md +1 -2
- package/frequent_questions/ko/customized_locale_list.md +1 -2
- package/frequent_questions/ko/domain_routing.md +1 -2
- package/frequent_questions/ko/esbuild_error.md +1 -2
- package/frequent_questions/ko/get_locale_cookie.md +1 -2
- package/frequent_questions/ko/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ko/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ko/static_rendering.md +1 -3
- package/frequent_questions/ko/translated_path_url.md +1 -2
- package/frequent_questions/ko/unknown_command.md +1 -2
- package/frequent_questions/pl/SSR_Next_no_[locale].md +104 -0
- package/frequent_questions/pl/array_as_content_declaration.md +71 -0
- package/frequent_questions/pl/build_dictionaries.md +58 -0
- package/frequent_questions/pl/build_error_CI_CD.md +74 -0
- package/frequent_questions/pl/bun_set_up.md +54 -0
- package/frequent_questions/pl/customized_locale_list.md +64 -0
- package/frequent_questions/pl/domain_routing.md +113 -0
- package/frequent_questions/pl/esbuild_error.md +29 -0
- package/frequent_questions/pl/get_locale_cookie.md +142 -0
- package/frequent_questions/pl/intlayer_command_undefined.md +155 -0
- package/frequent_questions/pl/locale_incorect_in_url.md +73 -0
- package/frequent_questions/pl/static_rendering.md +44 -0
- package/frequent_questions/pl/translated_path_url.md +55 -0
- package/frequent_questions/pl/unknown_command.md +97 -0
- package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/pt/array_as_content_declaration.md +1 -2
- package/frequent_questions/pt/build_dictionaries.md +1 -2
- package/frequent_questions/pt/build_error_CI_CD.md +1 -2
- package/frequent_questions/pt/bun_set_up.md +1 -2
- package/frequent_questions/pt/customized_locale_list.md +1 -2
- package/frequent_questions/pt/domain_routing.md +1 -2
- package/frequent_questions/pt/esbuild_error.md +1 -2
- package/frequent_questions/pt/get_locale_cookie.md +1 -2
- package/frequent_questions/pt/intlayer_command_undefined.md +1 -2
- package/frequent_questions/pt/locale_incorect_in_url.md +1 -2
- package/frequent_questions/pt/static_rendering.md +1 -3
- package/frequent_questions/pt/translated_path_url.md +1 -2
- package/frequent_questions/pt/unknown_command.md +1 -2
- package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ru/array_as_content_declaration.md +1 -2
- package/frequent_questions/ru/build_dictionaries.md +1 -2
- package/frequent_questions/ru/build_error_CI_CD.md +1 -2
- package/frequent_questions/ru/bun_set_up.md +1 -2
- package/frequent_questions/ru/customized_locale_list.md +1 -2
- package/frequent_questions/ru/domain_routing.md +1 -2
- package/frequent_questions/ru/esbuild_error.md +1 -2
- package/frequent_questions/ru/get_locale_cookie.md +1 -2
- package/frequent_questions/ru/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ru/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ru/static_rendering.md +1 -2
- package/frequent_questions/ru/translated_path_url.md +1 -2
- package/frequent_questions/ru/unknown_command.md +1 -2
- package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/tr/array_as_content_declaration.md +1 -2
- package/frequent_questions/tr/build_dictionaries.md +1 -2
- package/frequent_questions/tr/build_error_CI_CD.md +1 -2
- package/frequent_questions/tr/bun_set_up.md +1 -2
- package/frequent_questions/tr/customized_locale_list.md +1 -2
- package/frequent_questions/tr/domain_routing.md +1 -2
- package/frequent_questions/tr/esbuild_error.md +1 -2
- package/frequent_questions/tr/get_locale_cookie.md +1 -2
- package/frequent_questions/tr/intlayer_command_undefined.md +1 -2
- package/frequent_questions/tr/locale_incorect_in_url.md +1 -2
- package/frequent_questions/tr/static_rendering.md +1 -2
- package/frequent_questions/tr/translated_path_url.md +1 -2
- package/frequent_questions/tr/unknown_command.md +1 -2
- package/frequent_questions/vi/SSR_Next_no_[locale].md +106 -0
- package/frequent_questions/vi/array_as_content_declaration.md +71 -0
- package/frequent_questions/vi/build_dictionaries.md +58 -0
- package/frequent_questions/vi/build_error_CI_CD.md +74 -0
- package/frequent_questions/vi/bun_set_up.md +53 -0
- package/frequent_questions/vi/customized_locale_list.md +64 -0
- package/frequent_questions/vi/domain_routing.md +113 -0
- package/frequent_questions/vi/esbuild_error.md +29 -0
- package/frequent_questions/vi/get_locale_cookie.md +142 -0
- package/frequent_questions/vi/intlayer_command_undefined.md +155 -0
- package/frequent_questions/vi/locale_incorect_in_url.md +73 -0
- package/frequent_questions/vi/static_rendering.md +44 -0
- package/frequent_questions/vi/translated_path_url.md +55 -0
- package/frequent_questions/vi/unknown_command.md +97 -0
- package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/zh/array_as_content_declaration.md +1 -2
- package/frequent_questions/zh/build_dictionaries.md +1 -2
- package/frequent_questions/zh/build_error_CI_CD.md +1 -2
- package/frequent_questions/zh/bun_set_up.md +1 -2
- package/frequent_questions/zh/customized_locale_list.md +1 -2
- package/frequent_questions/zh/domain_routing.md +1 -2
- package/frequent_questions/zh/esbuild_error.md +1 -2
- package/frequent_questions/zh/get_locale_cookie.md +1 -2
- package/frequent_questions/zh/intlayer_command_undefined.md +1 -2
- package/frequent_questions/zh/locale_incorect_in_url.md +1 -2
- package/frequent_questions/zh/static_rendering.md +1 -3
- package/frequent_questions/zh/translated_path_url.md +1 -2
- package/frequent_questions/zh/unknown_command.md +1 -2
- package/legal/id/privacy_notice.md +83 -0
- package/legal/id/terms_of_service.md +55 -0
- package/legal/pl/privacy_notice.md +83 -0
- package/legal/pl/terms_of_service.md +55 -0
- package/legal/vi/privacy_notice.md +83 -0
- package/legal/vi/terms_of_service.md +55 -0
- package/package.json +19 -18
- package/src/generated/blog.entry.ts +38 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
|
+
title: Liệt kê
|
|
5
|
+
description: Tìm hiểu cách khai báo và sử dụng các phép liệt kê trong trang web đa ngôn ngữ của bạn. Làm theo các bước trong tài liệu trực tuyến này để thiết lập dự án của bạn trong vài phút.
|
|
6
|
+
keywords:
|
|
7
|
+
- Liệt kê
|
|
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
|
+
- enumeration
|
|
19
|
+
history:
|
|
20
|
+
- version: 5.5.10
|
|
21
|
+
date: 2025-06-29
|
|
22
|
+
changes: Khởi tạo lịch sử
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Liệt kê / Phân số nhiều
|
|
26
|
+
|
|
27
|
+
## Cách hoạt động của Liệt kê
|
|
28
|
+
|
|
29
|
+
Trong Intlayer, phép liệt kê được thực hiện thông qua hàm `enu`, hàm này ánh xạ các khóa cụ thể tới nội dung tương ứng của chúng. Các khóa này có thể đại diện cho các giá trị số, phạm vi, hoặc các định danh tùy chỉnh. Khi sử dụng với React Intlayer hoặc Next Intlayer, nội dung phù hợp sẽ được tự động chọn dựa trên locale của ứng dụng và các quy tắc đã định nghĩa.
|
|
30
|
+
|
|
31
|
+
## Thiết lập Liệt kê
|
|
32
|
+
|
|
33
|
+
Để thiết lập phép liệt kê trong dự án Intlayer của bạn, bạn cần tạo một module nội dung bao gồm các định nghĩa liệt kê. Dưới đây là ví dụ về một phép liệt kê đơn giản cho số lượng xe hơi:
|
|
34
|
+
|
|
35
|
+
```typescript fileName="**/*.content.ts" contentDeclarationFormat="typescript"
|
|
36
|
+
import { enu, type Dictionary } from "intlayer";
|
|
37
|
+
|
|
38
|
+
const carEnumeration = {
|
|
39
|
+
key: "car_count",
|
|
40
|
+
content: {
|
|
41
|
+
numberOfCar: enu({
|
|
42
|
+
"<-1": "Ít hơn âm một chiếc xe",
|
|
43
|
+
"-1": "Âm một chiếc xe",
|
|
44
|
+
"0": "Không có xe",
|
|
45
|
+
"1": "Một chiếc xe",
|
|
46
|
+
">5": "Một vài chiếc xe",
|
|
47
|
+
">19": "Nhiều chiếc xe",
|
|
48
|
+
"fallback": "Giá trị dự phòng", // Tùy chọn
|
|
49
|
+
}),
|
|
50
|
+
},
|
|
51
|
+
} satisfies Dictionary;
|
|
52
|
+
|
|
53
|
+
export default carEnumeration;
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```javascript fileName="**/*.content.mjs" contentDeclarationFormat="esm"
|
|
57
|
+
import { enu } from "intlayer";
|
|
58
|
+
|
|
59
|
+
/** @type {import('intlayer').Dictionary} */
|
|
60
|
+
const carEnumeration = {
|
|
61
|
+
key: "car_count",
|
|
62
|
+
content: {
|
|
63
|
+
numberOfCar: enu({
|
|
64
|
+
"<-1": "Ít hơn âm một chiếc xe",
|
|
65
|
+
"-1": "Âm một chiếc xe",
|
|
66
|
+
"0": "Không có xe",
|
|
67
|
+
"1": "Một chiếc xe",
|
|
68
|
+
">5": "Một vài chiếc xe",
|
|
69
|
+
">19": "Nhiều chiếc xe",
|
|
70
|
+
"fallback": "Giá trị dự phòng", // Tùy chọn
|
|
71
|
+
}),
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export default carEnumeration;
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
```javascript fileName="**/*.content.cjs" contentDeclarationFormat="commonjs"
|
|
79
|
+
const { enu } = require("intlayer");
|
|
80
|
+
|
|
81
|
+
/** @type {import('intlayer').Dictionary} */
|
|
82
|
+
const carEnumeration = {
|
|
83
|
+
key: "car_count",
|
|
84
|
+
content: {
|
|
85
|
+
numberOfCar: enu({
|
|
86
|
+
"<-1": "Ít hơn âm một chiếc xe",
|
|
87
|
+
"-1": "Âm một chiếc xe",
|
|
88
|
+
"0": "Không có xe",
|
|
89
|
+
"1": "Một chiếc xe",
|
|
90
|
+
">5": "Một vài chiếc xe",
|
|
91
|
+
">19": "Nhiều chiếc xe",
|
|
92
|
+
"fallback": "Giá trị dự phòng", // Tùy chọn
|
|
93
|
+
}),
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
module.exports = carEnumeration;
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
```json fileName="**/*.content.json" contentDeclarationFormat="json"
|
|
101
|
+
{
|
|
102
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
103
|
+
"key": "car_count",
|
|
104
|
+
"content": {
|
|
105
|
+
"numberOfCar": {
|
|
106
|
+
"nodeType": "enumeration",
|
|
107
|
+
"enumeration": {
|
|
108
|
+
"<-1": "Ít hơn âm một chiếc xe",
|
|
109
|
+
"-1": "Âm một chiếc xe",
|
|
110
|
+
"0": "Không có xe",
|
|
111
|
+
"1": "Một chiếc xe",
|
|
112
|
+
">5": "Một vài chiếc xe",
|
|
113
|
+
">19": "Nhiều chiếc xe",
|
|
114
|
+
"fallback": "Giá trị dự phòng" // Tùy chọn
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Trong ví dụ này, `enu` ánh xạ các điều kiện khác nhau tới nội dung cụ thể. Khi được sử dụng trong một component React, Intlayer có thể tự động chọn nội dung phù hợp dựa trên biến được cung cấp.
|
|
122
|
+
|
|
123
|
+
> Thứ tự khai báo rất quan trọng trong các phép liệt kê của Intlayer. Khai báo hợp lệ đầu tiên sẽ được chọn. Nếu có nhiều điều kiện áp dụng, hãy đảm bảo chúng được sắp xếp đúng để tránh hành vi không mong muốn.
|
|
124
|
+
|
|
125
|
+
> Nếu không khai báo giá trị dự phòng, hàm sẽ trả về `undefined` nếu không có khóa nào khớp.
|
|
126
|
+
|
|
127
|
+
## Sử dụng Enumeration với React Intlayer
|
|
128
|
+
|
|
129
|
+
Để sử dụng phép liệt kê trong một component React, bạn có thể tận dụng hook `useIntlayer` từ package `react-intlayer`. Hook này sẽ lấy nội dung chính xác dựa trên ID được chỉ định. Dưới đây là ví dụ về cách sử dụng:
|
|
130
|
+
|
|
131
|
+
```tsx fileName="**/*.tsx" codeFormat="typescript"
|
|
132
|
+
import type { FC } from "react";
|
|
133
|
+
import { useIntlayer } from "react-intlayer";
|
|
134
|
+
|
|
135
|
+
const CarComponent: FC = () => {
|
|
136
|
+
const { numberOfCar } = useIntlayer("car_count");
|
|
137
|
+
|
|
138
|
+
return (
|
|
139
|
+
<div>
|
|
140
|
+
<p>
|
|
141
|
+
{
|
|
142
|
+
numberOfCar(0) // Kết quả: Không có xe
|
|
143
|
+
}
|
|
144
|
+
</p>
|
|
145
|
+
<p>
|
|
146
|
+
{
|
|
147
|
+
numberOfCar(6) // Kết quả: Một vài chiếc xe
|
|
148
|
+
}
|
|
149
|
+
</p>
|
|
150
|
+
<p>
|
|
151
|
+
{
|
|
152
|
+
numberOfCar(20) // Kết quả: Nhiều chiếc xe
|
|
153
|
+
}
|
|
154
|
+
</p>
|
|
155
|
+
<p>
|
|
156
|
+
{
|
|
157
|
+
numberOfCar(0.01) // Kết quả: Giá trị dự phòng
|
|
158
|
+
}
|
|
159
|
+
</p>
|
|
160
|
+
<p>
|
|
161
|
+
{
|
|
162
|
+
numberOfCar(20) // Kết quả: Nhiều xe
|
|
163
|
+
}
|
|
164
|
+
</p>
|
|
165
|
+
<p>
|
|
166
|
+
{
|
|
167
|
+
numberOfCar(0.01) // Kết quả: Giá trị dự phòng
|
|
168
|
+
}
|
|
169
|
+
</p>
|
|
170
|
+
</div>
|
|
171
|
+
);
|
|
172
|
+
};
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
```javascript fileName="**/*.mjx" codeFormat="esm"
|
|
176
|
+
import { useIntlayer } from "react-intlayer";
|
|
177
|
+
|
|
178
|
+
const CarComponent = () => {
|
|
179
|
+
const { numberOfCar } = useIntlayer("car_count");
|
|
180
|
+
|
|
181
|
+
return (
|
|
182
|
+
<div>
|
|
183
|
+
<p>
|
|
184
|
+
{
|
|
185
|
+
numberOfCar(0) // Kết quả: Không có xe
|
|
186
|
+
}
|
|
187
|
+
</p>
|
|
188
|
+
<p>
|
|
189
|
+
{
|
|
190
|
+
numberOfCar(6) // Kết quả: Một vài chiếc xe
|
|
191
|
+
}
|
|
192
|
+
</p>
|
|
193
|
+
<p>
|
|
194
|
+
{
|
|
195
|
+
numberOfCar(20) // Kết quả: Nhiều xe
|
|
196
|
+
}
|
|
197
|
+
</p>
|
|
198
|
+
<p>
|
|
199
|
+
{
|
|
200
|
+
numberOfCar(0.01) // Kết quả: Giá trị dự phòng
|
|
201
|
+
}
|
|
202
|
+
</p>
|
|
203
|
+
</div>
|
|
204
|
+
);
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
export default CarComponent;
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
```javascript fileName="**/*.cjs" codeFormat="commonjs"
|
|
211
|
+
const { useIntlayer } = require("react-intlayer");
|
|
212
|
+
|
|
213
|
+
const CarComponent = () => {
|
|
214
|
+
const { numberOfCar } = useIntlayer("car_count");
|
|
215
|
+
|
|
216
|
+
return (
|
|
217
|
+
<div>
|
|
218
|
+
<p>
|
|
219
|
+
{
|
|
220
|
+
numberOfCar(0) // Kết quả: Không có xe
|
|
221
|
+
}
|
|
222
|
+
</p>
|
|
223
|
+
<p>
|
|
224
|
+
{
|
|
225
|
+
numberOfCar(6) // Kết quả: Một vài chiếc xe
|
|
226
|
+
}
|
|
227
|
+
</p>
|
|
228
|
+
<p>
|
|
229
|
+
{
|
|
230
|
+
numberOfCar(20) // Kết quả: Nhiều xe
|
|
231
|
+
}
|
|
232
|
+
</p>
|
|
233
|
+
<p>
|
|
234
|
+
{
|
|
235
|
+
numberOfCar(0.01) // Kết quả: Giá trị dự phòng
|
|
236
|
+
}
|
|
237
|
+
</p>
|
|
238
|
+
</div>
|
|
239
|
+
);
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
module.exports = CarComponent;
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Trong ví dụ này, component tự động điều chỉnh kết quả hiển thị dựa trên số lượng xe. Nội dung chính xác được chọn tự động, tùy thuộc vào phạm vi được chỉ định.
|
|
246
|
+
|
|
247
|
+
## Tài nguyên bổ sung
|
|
248
|
+
|
|
249
|
+
Để biết thêm thông tin chi tiết về cấu hình và cách sử dụng, hãy tham khảo các tài nguyên sau:
|
|
250
|
+
|
|
251
|
+
- [Tài liệu CLI Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_cli.md)
|
|
252
|
+
- [Tài liệu React Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_with_create_react_app.md)
|
|
253
|
+
- [Tài liệu Next Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_with_nextjs_15.md)
|
|
254
|
+
|
|
255
|
+
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 các framework đa dạng.
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-03-13
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Tệp tin
|
|
5
|
+
description: Tìm hiểu cách nhúng các tệp tin bên ngoài vào từ điển nội dung của bạn bằng cách sử dụng hàm `file`. Tài liệu này giải thích cách Intlayer liên kết và quản lý nội dung tệp tin một cách động.
|
|
6
|
+
keywords:
|
|
7
|
+
- Tệp tin
|
|
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
|
+
- file
|
|
19
|
+
history:
|
|
20
|
+
- version: 5.5.10
|
|
21
|
+
date: 2025-06-29
|
|
22
|
+
changes: Khởi tạo lịch sử
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Nội dung Tệp tin / Nhúng Tệp tin trong Intlayer
|
|
26
|
+
|
|
27
|
+
Trong Intlayer, hàm `file` cho phép nhúng nội dung tệp tin bên ngoài vào một từ điển. Cách tiếp cận này đảm bảo Intlayer nhận diện được tệp nguồn, giúp tích hợp liền mạch với Intlayer Visual Editor và CMS.
|
|
28
|
+
|
|
29
|
+
## Tại sao sử dụng `file` thay vì `import`, `require` hoặc `fs`?
|
|
30
|
+
|
|
31
|
+
Khác với các phương pháp đọc tệp như `import`, `require` hoặc `fs`, việc sử dụng `file` liên kết tệp với từ điển, cho phép Intlayer theo dõi và cập nhật nội dung một cách động khi tệp được chỉnh sửa. Do đó, sử dụng `file` sẽ mang lại sự tích hợp tốt hơn với Intlayer Visual Editor và CMS.
|
|
32
|
+
|
|
33
|
+
## Cài đặt Nội dung Tệp tin
|
|
34
|
+
|
|
35
|
+
Để nhúng nội dung tệp vào dự án Intlayer của bạn, hãy sử dụng hàm `file` trong một module nội dung. Dưới đây là các ví dụ minh họa các cách triển khai khác nhau.
|
|
36
|
+
|
|
37
|
+
```typescript fileName="**/*.content.ts" contentDeclarationFormat="typescript"
|
|
38
|
+
import { file, type Dictionary } from "intlayer";
|
|
39
|
+
|
|
40
|
+
const myFileContent = {
|
|
41
|
+
key: "my_key",
|
|
42
|
+
content: {
|
|
43
|
+
myFile: file("./path/to/file.txt"),
|
|
44
|
+
},
|
|
45
|
+
} satisfies Dictionary;
|
|
46
|
+
|
|
47
|
+
export default myFileContent;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```javascript fileName="**/*.content.mjs" contentDeclarationFormat="esm"
|
|
51
|
+
import { file } from "intlayer";
|
|
52
|
+
|
|
53
|
+
/** @type {import('intlayer').Dictionary} */
|
|
54
|
+
// Định nghĩa nội dung tệp với kiểu Dictionary của Intlayer
|
|
55
|
+
const myFileContent = {
|
|
56
|
+
key: "my_key",
|
|
57
|
+
content: {
|
|
58
|
+
myFile: file("./path/to/file.txt"), // Đường dẫn tới tệp được nhúng
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export default myFileContent;
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```javascript fileName="**/*.content.cjs" contentDeclarationFormat="commonjs"
|
|
66
|
+
const { file } = require("intlayer");
|
|
67
|
+
|
|
68
|
+
/** @type {import('intlayer').Dictionary} */
|
|
69
|
+
// Định nghĩa nội dung tệp với kiểu Dictionary của Intlayer
|
|
70
|
+
const myFileContent = {
|
|
71
|
+
key: "my_key",
|
|
72
|
+
content: {
|
|
73
|
+
myFile: file("./path/to/file.txt"), // Đường dẫn tới tệp được nhúng
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
module.exports = myFileContent;
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```json5 fileName="**/*.content.json" contentDeclarationFormat="json"
|
|
81
|
+
{
|
|
82
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
83
|
+
"key": "my_key",
|
|
84
|
+
"content": {
|
|
85
|
+
"myFile": {
|
|
86
|
+
"nodeType": "file",
|
|
87
|
+
"value": "./path/to/file.txt",
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Sử dụng Nội dung Tệp trong React Intlayer
|
|
94
|
+
|
|
95
|
+
Để sử dụng nội dung tệp được nhúng trong một component React, hãy import và sử dụng hook `useIntlayer` từ package `react-intlayer`. Hook này lấy nội dung từ key được chỉ định và cho phép hiển thị nội dung đó một cách động.
|
|
96
|
+
|
|
97
|
+
```tsx fileName="**/*.tsx" codeFormat="typescript"
|
|
98
|
+
import type { FC } from "react";
|
|
99
|
+
import { useIntlayer } from "react-intlayer";
|
|
100
|
+
|
|
101
|
+
const FileComponent: FC = () => {
|
|
102
|
+
const { myFile } = useIntlayer("my_key");
|
|
103
|
+
|
|
104
|
+
return (
|
|
105
|
+
<div>
|
|
106
|
+
<pre>{myFile}</pre>
|
|
107
|
+
</div>
|
|
108
|
+
);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export default FileComponent;
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
```javascript fileName="**/*.mjx" codeFormat="esm"
|
|
115
|
+
import { useIntlayer } from "react-intlayer";
|
|
116
|
+
|
|
117
|
+
const FileComponent = () => {
|
|
118
|
+
const { myFile } = useIntlayer("my_key");
|
|
119
|
+
|
|
120
|
+
return (
|
|
121
|
+
<div>
|
|
122
|
+
<pre>{myFile}</pre>
|
|
123
|
+
</div>
|
|
124
|
+
);
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
export default FileComponent;
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
```javascript fileName="**/*.cjs" codeFormat="commonjs"
|
|
131
|
+
const { useIntlayer } = require("react-intlayer");
|
|
132
|
+
|
|
133
|
+
const FileComponent = () => {
|
|
134
|
+
const { myFile } = useIntlayer("my_key");
|
|
135
|
+
|
|
136
|
+
return (
|
|
137
|
+
<div>
|
|
138
|
+
<pre>{myFile}</pre>
|
|
139
|
+
</div>
|
|
140
|
+
);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
module.exports = FileComponent;
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Ví dụ Markdown Đa ngôn ngữ
|
|
147
|
+
|
|
148
|
+
Để hỗ trợ các tệp Markdown có thể chỉnh sửa đa ngôn ngữ, bạn có thể sử dụng `file` kết hợp với `t()` và `md()` để định nghĩa các phiên bản ngôn ngữ khác nhau của một tệp nội dung Markdown.
|
|
149
|
+
|
|
150
|
+
```typescript fileName="**/*.content.ts" contentDeclarationFormat="typescript"
|
|
151
|
+
import { file, t, md, type Dictionary } from "intlayer";
|
|
152
|
+
|
|
153
|
+
const myMultilingualContent = {
|
|
154
|
+
key: "my_multilingual_key",
|
|
155
|
+
content: {
|
|
156
|
+
myContent: md(
|
|
157
|
+
t({
|
|
158
|
+
en: file("src/components/test.en.md"),
|
|
159
|
+
fr: file("src/components/test.fr.md"),
|
|
160
|
+
es: file("src/components/test.es.md"),
|
|
161
|
+
})
|
|
162
|
+
),
|
|
163
|
+
},
|
|
164
|
+
} satisfies Dictionary;
|
|
165
|
+
|
|
166
|
+
export default myMultilingualContent;
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
```javascript fileName="**/*.content.mjs" contentDeclarationFormat="esm"
|
|
170
|
+
import { file, t, md } from "intlayer";
|
|
171
|
+
|
|
172
|
+
/** @type {import('intlayer').Dictionary} */
|
|
173
|
+
const myMultilingualContent = {
|
|
174
|
+
key: "my_multilingual_key",
|
|
175
|
+
content: {
|
|
176
|
+
myContent: md(
|
|
177
|
+
t({
|
|
178
|
+
en: file("src/components/test.en.md"),
|
|
179
|
+
fr: file("src/components/test.fr.md"),
|
|
180
|
+
es: file("src/components/test.es.md"),
|
|
181
|
+
})
|
|
182
|
+
),
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
export default myMultilingualContent;
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
```javascript fileName="**/*.content.cjs" contentDeclarationFormat="commonjs"
|
|
190
|
+
const { file, t, md } = require("intlayer");
|
|
191
|
+
|
|
192
|
+
const myMultilingualContent = {
|
|
193
|
+
key: "my_multilingual_key",
|
|
194
|
+
content: {
|
|
195
|
+
myContent: md(
|
|
196
|
+
t({
|
|
197
|
+
en: file("src/components/test.en.md"),
|
|
198
|
+
fr: file("src/components/test.fr.md"),
|
|
199
|
+
es: file("src/components/test.es.md"),
|
|
200
|
+
})
|
|
201
|
+
),
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Cấu hình này cho phép nội dung được truy xuất động dựa trên ngôn ngữ ưu tiên của người dùng. Khi được sử dụng trong Intlayer Visual Editor hoặc CMS, hệ thống sẽ nhận biết rằng nội dung đến từ các tệp Markdown được chỉ định và đảm bảo chúng vẫn có thể chỉnh sửa được.
|
|
207
|
+
|
|
208
|
+
## Các loại đường dẫn khác nhau
|
|
209
|
+
|
|
210
|
+
Khi sử dụng hàm `file`, bạn có thể sử dụng các loại đường dẫn khác nhau để chỉ định tệp cần nhúng.
|
|
211
|
+
|
|
212
|
+
- `file("./path/to/file.txt")` - Đường dẫn tương đối đến tệp hiện tại
|
|
213
|
+
- `file("path/to/file.txt")` - Đường dẫn tương đối đến thư mục gốc của dự án
|
|
214
|
+
- `file("/users/username/path/to/file.txt")` - Đường dẫn tuyệt đối
|
|
215
|
+
|
|
216
|
+
## Cách Intlayer Xử Lý Nội Dung Tệp
|
|
217
|
+
|
|
218
|
+
Hàm `file` dựa trên module `fs` của Node.js để đọc nội dung của tệp được chỉ định và chèn nó vào từ điển. Khi được sử dụng kết hợp với Intlayer Visual Editor hoặc CMS, Intlayer có thể theo dõi mối quan hệ giữa từ điển và tệp. Điều này cho phép Intlayer:
|
|
219
|
+
|
|
220
|
+
- Nhận biết rằng nội dung xuất phát từ một tệp cụ thể.
|
|
221
|
+
- Tự động cập nhật nội dung từ điển khi tệp liên kết được chỉnh sửa.
|
|
222
|
+
- Đảm bảo đồng bộ giữa tệp và từ điển, giữ nguyên tính toàn vẹn của nội dung.
|
|
223
|
+
|
|
224
|
+
## Tài Nguyên Bổ Sung
|
|
225
|
+
|
|
226
|
+
Để biết thêm chi tiết về cách cấu hình và sử dụng nhúng tệp trong Intlayer, hãy tham khảo các tài nguyên sau:
|
|
227
|
+
|
|
228
|
+
- [Tài liệu CLI của Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_cli.md)
|
|
229
|
+
- [Tài liệu React Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_with_create_react_app.md)
|
|
230
|
+
- [Tài liệu Next Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_with_nextjs_15.md)
|
|
231
|
+
- [Tài liệu Nội dung Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/dictionary/markdown.md)
|
|
232
|
+
- [Tài liệu Nội dung Dịch thuật](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/dictionary/translation.md)
|
|
233
|
+
|
|
234
|
+
Những tài nguyên này cung cấp thêm những hiểu biết sâu sắc về nhúng tệp, quản lý nội dung, và tích hợp của Intlayer với các framework khác nhau.
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
|
+
title: Lấy Dữ Liệu Hàm
|
|
5
|
+
description: Tìm hiểu cách khai báo và sử dụng lấy dữ liệu hàm trong trang web đa ngôn ngữ của bạn. Làm theo các bước trong tài liệu trực tuyến này để thiết lập dự án của bạn trong vài phút.
|
|
6
|
+
keywords:
|
|
7
|
+
- Lấy Dữ Liệu Hàm
|
|
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
|
+
- function-fetching
|
|
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ấy Dữ Liệu Hàm
|
|
26
|
+
|
|
27
|
+
Intlayer cho phép bạn khai báo các hàm nội dung trong các module nội dung của bạn, có thể là đồng bộ hoặc bất đồng bộ. Khi ứng dụng được xây dựng, Intlayer sẽ thực thi các hàm này để lấy kết quả của hàm. Giá trị trả về phải là một đối tượng JSON hoặc một giá trị đơn giản như chuỗi hoặc số.
|
|
28
|
+
|
|
29
|
+
> Cảnh báo: lấy dữ liệu hàm hiện tại không khả dụng trong khai báo nội dung JSON và các tệp khai báo nội dung từ xa.
|
|
30
|
+
|
|
31
|
+
## Khai Báo Hàm
|
|
32
|
+
|
|
33
|
+
Dưới đây là ví dụ về một hàm đồng bộ đơn giản lấy nội dung:
|
|
34
|
+
|
|
35
|
+
```typescript fileName="**/*.content.ts" contentDeclarationFormat="typescript"
|
|
36
|
+
import type { Dictionary } from "intlayer";
|
|
37
|
+
|
|
38
|
+
const functionContent = {
|
|
39
|
+
key: "function_content",
|
|
40
|
+
content: {
|
|
41
|
+
text: () => "This is the content rendered by a function",
|
|
42
|
+
},
|
|
43
|
+
} satisfies Dictionary;
|
|
44
|
+
|
|
45
|
+
export default functionContent;
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```javascript fileName="**/*.content.mjs" contentDeclarationFormat="esm"
|
|
49
|
+
/** @type {import('intlayer').Dictionary} */
|
|
50
|
+
const functionContent = {
|
|
51
|
+
key: "function_content",
|
|
52
|
+
content: {
|
|
53
|
+
text: () => "Đây là nội dung được hiển thị bởi một hàm",
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export default functionContent;
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```javascript fileName="**/*.content.cjs" contentDeclarationFormat="commonjs"
|
|
61
|
+
/** @type {import('intlayer').Dictionary} */
|
|
62
|
+
const functionContent = {
|
|
63
|
+
key: "function_content",
|
|
64
|
+
content: {
|
|
65
|
+
text: () => "Đây là nội dung được hiển thị bởi một hàm",
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
module.exports = functionContent;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```json fileName="**/*.content.json" contentDeclarationFormat="json"
|
|
73
|
+
{
|
|
74
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
75
|
+
"key": "function_content",
|
|
76
|
+
"content": {
|
|
77
|
+
"text": "Đây là nội dung được hiển thị bởi một hàm"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Trong ví dụ này, khóa `text` chứa một hàm trả về một chuỗi. Nội dung này có thể được hiển thị trong các component React của bạn bằng cách sử dụng các package trình thông dịch của Intlayer như `react-intlayer`.
|
|
83
|
+
|
|
84
|
+
## Lấy Dữ liệu Bất đồng bộ (Asynchronous Function Fetching)
|
|
85
|
+
|
|
86
|
+
Ngoài các hàm đồng bộ, Intlayer còn hỗ trợ các hàm bất đồng bộ, cho phép bạn lấy dữ liệu từ các nguồn bên ngoài hoặc mô phỏng việc lấy dữ liệu với dữ liệu giả (mock data).
|
|
87
|
+
|
|
88
|
+
Dưới đây là một ví dụ về hàm bất đồng bộ mô phỏng việc lấy dữ liệu từ server:
|
|
89
|
+
|
|
90
|
+
```typescript fileName="**/*.content.ts" contentDeclarationFormat="typescript"
|
|
91
|
+
import { setTimeout } from "node:timers/promises";
|
|
92
|
+
import type { Dictionary } from "intlayer";
|
|
93
|
+
|
|
94
|
+
const fakeFetch = async (): Promise<string> => {
|
|
95
|
+
// Chờ 200ms để mô phỏng việc lấy dữ liệu từ server
|
|
96
|
+
return await setTimeout(200).then(() => "Đây là nội dung được lấy từ server");
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const asyncFunctionContent = {
|
|
100
|
+
key: "async_function",
|
|
101
|
+
content: { text: fakeFetch },
|
|
102
|
+
} satisfies Dictionary;
|
|
103
|
+
|
|
104
|
+
export default asyncFunctionContent;
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
```javascript fileName="**/*.content.mjs" contentDeclarationFormat="esm"
|
|
108
|
+
import { setTimeout } from "node:timers/promises";
|
|
109
|
+
|
|
110
|
+
/** @type {import('intlayer').Dictionary} */
|
|
111
|
+
const fakeFetch = async () => {
|
|
112
|
+
// Chờ 200ms để mô phỏng việc lấy dữ liệu từ server
|
|
113
|
+
await setTimeout(200);
|
|
114
|
+
return "Đây là nội dung được lấy từ server";
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const asyncFunctionContent = {
|
|
118
|
+
key: "async_function",
|
|
119
|
+
content: { text: fakeFetch },
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export default asyncFunctionContent;
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```javascript fileName="**/*.content.cjs" contentDeclarationFormat="commonjs"
|
|
126
|
+
const { setTimeout } = require("node:timers/promises");
|
|
127
|
+
|
|
128
|
+
/** @type {import('intlayer').Dictionary} */
|
|
129
|
+
const fakeFetch = async () => {
|
|
130
|
+
// Chờ 200ms để mô phỏng việc lấy dữ liệu từ server
|
|
131
|
+
await setTimeout(200);
|
|
132
|
+
return "Đây là nội dung được lấy từ server";
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
const asyncFunctionContent = {
|
|
136
|
+
key: "async_function",
|
|
137
|
+
content: { text: fakeFetch },
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
module.exports = asyncFunctionContent;
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
```plaintext fileName="**/*.content.json" contentDeclarationFormat="json"
|
|
144
|
+
Không thể lấy nội dung từ file JSON, hãy sử dụng file .ts hoặc .js thay thế
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Trong trường hợp này, hàm `fakeFetch` mô phỏng một độ trễ để giả lập thời gian phản hồi của server. Intlayer thực thi hàm bất đồng bộ và sử dụng kết quả làm nội dung cho khóa `text`.
|
|
148
|
+
|
|
149
|
+
## Sử dụng Nội dung Dựa trên Hàm trong Các Thành phần React
|
|
150
|
+
|
|
151
|
+
Để sử dụng nội dung dựa trên hàm trong một thành phần React, bạn cần import `useIntlayer` từ `react-intlayer` và gọi nó với ID nội dung để lấy nội dung. Dưới đây là một ví dụ:
|
|
152
|
+
|
|
153
|
+
```typescript fileName="**/*.jsx" codeFormat="typescript"
|
|
154
|
+
import type { FC } from "react";
|
|
155
|
+
import { useIntlayer } from "react-intlayer";
|
|
156
|
+
|
|
157
|
+
const MyComponent: FC = () => {
|
|
158
|
+
const functionContent = useIntlayer("function_content");
|
|
159
|
+
const asyncFunctionContent = useIntlayer("async_function_content");
|
|
160
|
+
|
|
161
|
+
return (
|
|
162
|
+
<div>
|
|
163
|
+
<p>{functionContent.text}</p>
|
|
164
|
+
{/* Đầu ra: Đây là nội dung được hiển thị bởi một hàm */}
|
|
165
|
+
<p>{asyncFunctionContent.text}</p>
|
|
166
|
+
{/* Đầu ra: Đây là nội dung được lấy từ server */}
|
|
167
|
+
</div>
|
|
168
|
+
);
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
export default MyComponent;
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
```javascript fileName="**/*.mjx" codeFormat="esm"
|
|
175
|
+
import { useIntlayer } from "react-intlayer";
|
|
176
|
+
|
|
177
|
+
const MyComponent = () => {
|
|
178
|
+
const functionContent = useIntlayer("function_content");
|
|
179
|
+
const asyncFunctionContent = useIntlayer("async_function_content");
|
|
180
|
+
|
|
181
|
+
return (
|
|
182
|
+
<div>
|
|
183
|
+
<p>{functionContent.text}</p>
|
|
184
|
+
{/* Đầu ra: Đây là nội dung được hiển thị bởi một hàm */}
|
|
185
|
+
<p>{asyncFunctionContent.text}</p>
|
|
186
|
+
{/* Đầu ra: Đây là nội dung được lấy từ server */}
|
|
187
|
+
</div>
|
|
188
|
+
);
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export default MyComponent;
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
```javascript fileName="**/*.cjs" codeFormat="commonjs"
|
|
195
|
+
const { useIntlayer } = require("react-intlayer");
|
|
196
|
+
|
|
197
|
+
const MyComponent = () => {
|
|
198
|
+
const functionContent = useIntlayer("function_content");
|
|
199
|
+
const asyncFunctionContent = useIntlayer("async_function_content");
|
|
200
|
+
|
|
201
|
+
return (
|
|
202
|
+
<div>
|
|
203
|
+
<p>{functionContent.text}</p>
|
|
204
|
+
{/* Đầu ra: Đây là nội dung được hiển thị bởi một hàm */}
|
|
205
|
+
<p>{asyncFunctionContent.text}</p>
|
|
206
|
+
{/* Đầu ra: Đây là nội dung được lấy từ server */}
|
|
207
|
+
</div>
|
|
208
|
+
);
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
module.exports = MyComponent;
|
|
212
|
+
```
|