@intlayer/docs 7.0.7 → 7.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/ar/i18n_using_next-i18next.md +1068 -0
- package/blog/ar/i18n_using_next-intl.md +768 -0
- package/blog/ar/intlayer_with_react-intl.md +0 -4
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +5 -4
- package/blog/de/i18n_using_next-i18next.md +1107 -0
- package/blog/de/i18n_using_next-intl.md +760 -0
- package/blog/de/intlayer_with_react-intl.md +0 -4
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/en/i18n_using_next-i18next.md +1073 -0
- package/blog/en/i18n_using_next-intl.md +757 -0
- package/blog/en/intlayer_with_i18next.md +71 -8
- package/blog/en/intlayer_with_next-i18next.md +71 -8
- package/blog/en/intlayer_with_next-intl.md +71 -8
- package/blog/en/intlayer_with_react-i18next.md +69 -8
- package/blog/en/intlayer_with_react-intl.md +68 -9
- package/blog/en/intlayer_with_vue-i18n.md +68 -7
- package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/blog/en/vue-i18n_vs_intlayer.md +2 -0
- package/blog/en-GB/i18n_using_next-i18next.md +1074 -0
- package/blog/en-GB/i18n_using_next-intl.md +757 -0
- package/blog/en-GB/intlayer_with_i18next.md +15 -6
- package/blog/en-GB/intlayer_with_next-i18next.md +16 -6
- package/blog/en-GB/intlayer_with_next-intl.md +16 -6
- package/blog/en-GB/intlayer_with_react-i18next.md +16 -7
- package/blog/en-GB/intlayer_with_react-intl.md +14 -9
- package/blog/en-GB/intlayer_with_vue-i18n.md +16 -7
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/blog/en-GB/vue-i18n_vs_intlayer.md +2 -0
- package/blog/es/i18n_using_next-i18next.md +1066 -0
- package/blog/es/i18n_using_next-intl.md +757 -0
- package/blog/es/intlayer_with_react-intl.md +0 -4
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/fr/i18n_using_next-i18next.md +1078 -0
- package/blog/fr/i18n_using_next-intl.md +759 -0
- package/blog/fr/intlayer_with_react-intl.md +0 -4
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/hi/i18n_using_next-i18next.md +1068 -0
- package/blog/hi/i18n_using_next-intl.md +758 -0
- package/blog/hi/intlayer_with_react-intl.md +0 -4
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/id/i18n_using_next-i18next.md +1078 -0
- package/blog/id/i18n_using_next-intl.md +757 -0
- package/blog/id/index.md +69 -0
- package/blog/id/internationalization_and_SEO.md +364 -0
- package/blog/id/intlayer_with_react-intl.md +0 -4
- package/blog/id/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/id/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/id/list_i18n_technologies/CMS/wordpress.md +188 -0
- package/blog/id/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/id/list_i18n_technologies/frameworks/flutter.md +150 -0
- package/blog/id/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/id/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/id/list_i18n_technologies/frameworks/svelte.md +131 -0
- package/blog/id/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1500 -0
- package/blog/id/nextjs-multilingual-seo-comparison.md +361 -0
- package/blog/id/rag_powered_documentation_assistant.md +288 -0
- package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/id/vue-i18n_vs_intlayer.md +278 -0
- package/blog/id/what_is_internationalization.md +166 -0
- package/blog/it/i18n_using_next-i18next.md +1078 -0
- package/blog/it/i18n_using_next-intl.md +758 -0
- package/blog/it/intlayer_with_react-intl.md +0 -4
- package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +4 -0
- package/blog/it/vue-i18n_vs_intlayer.md +2 -0
- package/blog/ja/i18n_using_next-i18next.md +1078 -0
- package/blog/ja/i18n_using_next-intl.md +758 -0
- package/blog/ja/intlayer_with_react-intl.md +0 -4
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/ko/i18n_using_next-i18next.md +1075 -0
- package/blog/ko/i18n_using_next-intl.md +759 -0
- package/blog/ko/intlayer_with_react-intl.md +0 -4
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/pl/i18n_using_next-i18next.md +1078 -0
- package/blog/pl/i18n_using_next-intl.md +758 -0
- package/blog/pl/index.md +69 -0
- package/blog/pl/internationalization_and_SEO.md +363 -0
- package/blog/pl/intlayer_with_react-intl.md +0 -4
- package/blog/pl/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/pl/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/pl/list_i18n_technologies/CMS/wordpress.md +196 -0
- package/blog/pl/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/pl/list_i18n_technologies/frameworks/flutter.md +151 -0
- package/blog/pl/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/pl/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/pl/list_i18n_technologies/frameworks/svelte.md +131 -0
- package/blog/pl/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +1501 -0
- package/blog/pl/nextjs-multilingual-seo-comparison.md +362 -0
- package/blog/pl/rag_powered_documentation_assistant.md +288 -0
- package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/pl/vue-i18n_vs_intlayer.md +278 -0
- package/blog/pl/what_is_internationalization.md +167 -0
- package/blog/pt/i18n_using_next-i18next.md +1067 -0
- package/blog/pt/i18n_using_next-intl.md +760 -0
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/ru/i18n_using_next-i18next.md +1106 -0
- package/blog/ru/i18n_using_next-intl.md +759 -0
- package/blog/ru/intlayer_with_react-intl.md +0 -4
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/tr/i18n_using_next-i18next.md +1078 -0
- package/blog/tr/i18n_using_next-intl.md +760 -0
- package/blog/tr/intlayer_with_react-intl.md +0 -4
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/blog/tr/vue-i18n_vs_intlayer.md +2 -0
- package/blog/vi/i18n_using_next-i18next.md +1080 -0
- package/blog/vi/i18n_using_next-intl.md +758 -0
- package/blog/vi/index.md +69 -0
- package/blog/vi/internationalization_and_SEO.md +363 -0
- package/blog/vi/intlayer_with_react-intl.md +0 -4
- package/blog/vi/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/vi/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/vi/list_i18n_technologies/CMS/wordpress.md +188 -0
- package/blog/vi/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/vi/list_i18n_technologies/frameworks/flutter.md +150 -0
- package/blog/vi/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/vi/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/vi/list_i18n_technologies/frameworks/svelte.md +131 -0
- package/blog/vi/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1520 -0
- package/blog/vi/nextjs-multilingual-seo-comparison.md +362 -0
- package/blog/vi/rag_powered_documentation_assistant.md +288 -0
- package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/vi/vue-i18n_vs_intlayer.md +278 -0
- package/blog/vi/what_is_internationalization.md +168 -0
- package/blog/zh/i18n_using_next-i18next.md +1105 -0
- package/blog/zh/i18n_using_next-intl.md +758 -0
- package/blog/zh/intlayer_with_react-intl.md +0 -4
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
- package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
- package/dist/cjs/common.cjs +0 -4
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +38 -6
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +0 -6
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +0 -6
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +0 -6
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +38 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +2 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/docs/ar/component_i18n.md +1 -1
- package/docs/ar/configuration.md +6 -0
- package/docs/ar/intlayer_cli.md +8 -3
- package/docs/ar/intlayer_with_next-i18next.md +619 -0
- package/docs/ar/intlayer_with_next-intl.md +446 -0
- package/docs/ar/intlayer_with_nextjs_16.md +21 -0
- package/docs/ar/intlayer_with_tanstack.md +4 -0
- package/docs/ar/intlayer_with_vite+react.md +4 -0
- package/docs/de/component_i18n.md +1 -1
- package/docs/de/configuration.md +6 -0
- package/docs/de/intlayer_cli.md +8 -3
- package/docs/de/intlayer_with_next-i18next.md +627 -0
- package/docs/de/intlayer_with_next-intl.md +451 -0
- package/docs/de/intlayer_with_nextjs_16.md +21 -0
- package/docs/de/intlayer_with_tanstack.md +4 -0
- package/docs/de/intlayer_with_vite+react.md +4 -0
- package/docs/en/component_i18n.md +1 -1
- package/docs/en/intlayer_cli.md +8 -1
- package/docs/en/intlayer_with_astro.md +10 -2
- package/docs/en/intlayer_with_create_react_app.md +8 -0
- package/docs/en/intlayer_with_lynx+react.md +8 -0
- package/docs/en/intlayer_with_nestjs.md +10 -0
- package/docs/en/intlayer_with_nextjs_14.md +10 -2
- package/docs/en/intlayer_with_nextjs_15.md +21 -4
- package/docs/en/intlayer_with_nextjs_16.md +17 -0
- package/docs/en/intlayer_with_nuxt.md +8 -0
- package/docs/en/intlayer_with_react_native+expo.md +10 -2
- package/docs/en/intlayer_with_react_router_v7.md +8 -0
- package/docs/en/intlayer_with_tanstack.md +10 -0
- package/docs/en/intlayer_with_vite+preact.md +10 -2
- package/docs/en/intlayer_with_vite+react.md +21 -4
- package/docs/en/intlayer_with_vite+vue.md +10 -2
- package/docs/en-GB/component_i18n.md +1 -1
- package/docs/en-GB/configuration.md +6 -0
- package/docs/en-GB/intlayer_cli.md +8 -3
- package/docs/en-GB/intlayer_with_angular.md +4 -4
- package/docs/en-GB/intlayer_with_express.md +4 -4
- package/docs/en-GB/intlayer_with_lynx+react.md +12 -12
- package/{blog/en/_intlayer_with_next-i18next.md → docs/en-GB/intlayer_with_next-i18next.md} +241 -42
- package/{blog/en/_intlayer_with_next-intl.md → docs/en-GB/intlayer_with_next-intl.md} +144 -29
- package/docs/en-GB/intlayer_with_nextjs_16.md +21 -0
- package/docs/en-GB/intlayer_with_tanstack.md +5 -1
- package/docs/en-GB/intlayer_with_vite+react.md +4 -0
- package/docs/en-GB/packages/next-intlayer/t.md +2 -2
- package/docs/es/component_i18n.md +1 -1
- package/docs/es/configuration.md +6 -0
- package/docs/es/intlayer_cli.md +8 -3
- package/docs/es/intlayer_with_next-i18next.md +628 -0
- package/docs/es/intlayer_with_next-intl.md +446 -0
- package/docs/es/intlayer_with_nextjs_16.md +21 -0
- package/docs/es/intlayer_with_tanstack.md +4 -0
- package/docs/es/intlayer_with_vite+react.md +4 -0
- package/docs/fr/configuration.md +6 -0
- package/docs/fr/intlayer_cli.md +8 -3
- package/docs/fr/intlayer_with_next-i18next.md +628 -0
- package/docs/fr/intlayer_with_next-intl.md +446 -0
- package/docs/fr/intlayer_with_nextjs_16.md +23 -2
- package/docs/fr/intlayer_with_tanstack.md +4 -0
- package/docs/fr/intlayer_with_vite+react.md +4 -0
- package/docs/hi/component_i18n.md +1 -1
- package/docs/hi/configuration.md +6 -0
- package/docs/hi/intlayer_cli.md +8 -0
- package/docs/hi/intlayer_with_next-i18next.md +628 -0
- package/docs/hi/intlayer_with_next-intl.md +446 -0
- package/docs/hi/intlayer_with_nextjs_16.md +21 -0
- package/docs/hi/intlayer_with_tanstack.md +4 -0
- package/docs/hi/intlayer_with_vite+react.md +4 -0
- package/docs/id/CI_CD.md +198 -0
- package/docs/id/autoFill.md +284 -0
- package/docs/id/component_i18n.md +186 -0
- package/docs/id/configuration.md +710 -0
- package/docs/id/dictionary/condition.md +231 -0
- package/docs/id/dictionary/content_file.md +1092 -0
- package/docs/id/dictionary/enumeration.md +245 -0
- package/docs/id/dictionary/file.md +237 -0
- package/docs/id/dictionary/function_fetching.md +214 -0
- package/docs/id/dictionary/gender.md +273 -0
- package/docs/id/dictionary/insertion.md +192 -0
- package/docs/id/dictionary/markdown.md +381 -0
- package/docs/id/dictionary/nesting.md +273 -0
- package/docs/id/dictionary/translation.md +310 -0
- package/docs/id/formatters.md +596 -0
- package/docs/id/how_works_intlayer.md +256 -0
- package/docs/id/index.md +176 -0
- package/docs/id/interest_of_intlayer.md +293 -0
- package/docs/id/intlayer_CMS.md +549 -0
- package/docs/id/intlayer_cli.md +850 -0
- package/docs/id/intlayer_visual_editor.md +288 -0
- package/docs/id/intlayer_with_angular.md +694 -0
- package/docs/id/intlayer_with_astro.md +252 -0
- package/docs/id/intlayer_with_create_react_app.md +1233 -0
- package/docs/id/intlayer_with_express.md +411 -0
- package/docs/id/intlayer_with_lynx+react.md +518 -0
- package/docs/id/intlayer_with_nestjs.md +272 -0
- package/docs/id/intlayer_with_next-i18next.md +628 -0
- package/docs/id/intlayer_with_next-intl.md +446 -0
- package/docs/id/intlayer_with_nextjs_14.md +1617 -0
- package/docs/id/intlayer_with_nextjs_15.md +1698 -0
- package/docs/id/intlayer_with_nextjs_16.md +21 -0
- package/docs/id/intlayer_with_nextjs_page_router.md +1478 -0
- package/docs/id/intlayer_with_nuxt.md +808 -0
- package/docs/id/intlayer_with_react_native+expo.md +699 -0
- package/docs/id/intlayer_with_react_router_v7.md +496 -0
- package/docs/id/intlayer_with_tanstack.md +564 -0
- package/docs/id/intlayer_with_vite+preact.md +1737 -0
- package/docs/id/intlayer_with_vite+react.md +1413 -0
- package/docs/id/intlayer_with_vite+solid.md +289 -0
- package/docs/id/intlayer_with_vite+svelte.md +289 -0
- package/docs/id/intlayer_with_vite+vue.md +1088 -0
- package/docs/id/introduction.md +218 -0
- package/docs/id/locale_mapper.md +242 -0
- package/docs/id/mcp_server.md +211 -0
- package/docs/id/packages/express-intlayer/t.md +458 -0
- package/docs/id/packages/intlayer/getConfiguration.md +145 -0
- package/docs/id/packages/intlayer/getEnumeration.md +159 -0
- package/docs/id/packages/intlayer/getHTMLTextDir.md +122 -0
- package/docs/id/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/id/packages/intlayer/getLocaleName.md +119 -0
- package/docs/id/packages/intlayer/getLocalizedUrl.md +309 -0
- package/docs/id/packages/intlayer/getMultilingualUrls.md +223 -0
- package/docs/id/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/id/packages/intlayer/getTranslation.md +190 -0
- package/docs/id/packages/intlayer/getTranslationContent.md +188 -0
- package/docs/id/packages/next-intlayer/t.md +352 -0
- package/docs/id/packages/next-intlayer/useDictionary.md +271 -0
- package/docs/id/packages/next-intlayer/useIntlayer.md +264 -0
- package/docs/id/packages/next-intlayer/useLocale.md +166 -0
- package/docs/id/packages/react-intlayer/t.md +303 -0
- package/docs/id/packages/react-intlayer/useDictionary.md +287 -0
- package/docs/id/packages/react-intlayer/useI18n.md +267 -0
- package/docs/id/packages/react-intlayer/useIntlayer.md +254 -0
- package/docs/id/packages/react-intlayer/useLocale.md +210 -0
- package/docs/id/per_locale_file.md +323 -0
- package/docs/id/readme.md +261 -0
- package/docs/id/releases/v6.md +305 -0
- package/docs/id/roadmap.md +362 -0
- package/docs/id/testing.md +202 -0
- package/docs/id/vs_code_extension.md +126 -0
- package/docs/it/component_i18n.md +1 -1
- package/docs/it/configuration.md +6 -0
- package/docs/it/intlayer_cli.md +8 -3
- package/docs/it/intlayer_with_next-i18next.md +628 -0
- package/docs/it/intlayer_with_next-intl.md +446 -0
- package/docs/it/intlayer_with_nextjs_16.md +21 -0
- package/docs/it/intlayer_with_tanstack.md +4 -0
- package/docs/it/intlayer_with_vite+react.md +4 -0
- package/docs/ja/component_i18n.md +1 -1
- package/docs/ja/configuration.md +6 -0
- package/docs/ja/intlayer_cli.md +8 -3
- package/docs/ja/intlayer_with_next-i18next.md +627 -0
- package/docs/ja/intlayer_with_next-intl.md +446 -0
- package/docs/ja/intlayer_with_nextjs_16.md +21 -0
- package/docs/ja/intlayer_with_tanstack.md +4 -0
- package/docs/ja/intlayer_with_vite+react.md +4 -0
- package/docs/ko/configuration.md +6 -0
- package/docs/ko/intlayer_cli.md +8 -3
- package/docs/ko/intlayer_with_next-i18next.md +627 -0
- package/docs/ko/intlayer_with_next-intl.md +446 -0
- package/docs/ko/intlayer_with_nextjs_16.md +21 -0
- package/docs/ko/intlayer_with_tanstack.md +4 -0
- package/docs/ko/intlayer_with_vite+react.md +4 -0
- package/docs/pl/CI_CD.md +198 -0
- package/docs/pl/autoFill.md +284 -0
- package/docs/pl/component_i18n.md +186 -0
- package/docs/pl/configuration.md +710 -0
- package/docs/pl/dictionary/condition.md +232 -0
- package/docs/pl/dictionary/content_file.md +1130 -0
- package/docs/pl/dictionary/enumeration.md +245 -0
- package/docs/pl/dictionary/file.md +234 -0
- package/docs/pl/dictionary/function_fetching.md +214 -0
- package/docs/pl/dictionary/gender.md +276 -0
- package/docs/pl/dictionary/insertion.md +188 -0
- package/docs/pl/dictionary/markdown.md +408 -0
- package/docs/pl/dictionary/nesting.md +273 -0
- package/docs/pl/dictionary/translation.md +310 -0
- package/docs/pl/formatters.md +596 -0
- package/docs/pl/how_works_intlayer.md +256 -0
- package/docs/pl/index.md +176 -0
- package/docs/pl/interest_of_intlayer.md +291 -0
- package/docs/pl/intlayer_CMS.md +549 -0
- package/docs/pl/intlayer_cli.md +857 -0
- package/docs/pl/intlayer_visual_editor.md +288 -0
- package/docs/pl/intlayer_with_angular.md +690 -0
- package/docs/pl/intlayer_with_astro.md +280 -0
- package/docs/pl/intlayer_with_create_react_app.md +1235 -0
- package/docs/pl/intlayer_with_express.md +411 -0
- package/docs/pl/intlayer_with_lynx+react.md +518 -0
- package/docs/pl/intlayer_with_nestjs.md +272 -0
- package/docs/pl/intlayer_with_next-i18next.md +628 -0
- package/docs/pl/intlayer_with_next-intl.md +446 -0
- package/docs/pl/intlayer_with_nextjs_14.md +1594 -0
- package/docs/pl/intlayer_with_nextjs_15.md +1701 -0
- package/docs/pl/intlayer_with_nextjs_16.md +21 -0
- package/docs/pl/intlayer_with_nextjs_page_router.md +1513 -0
- package/docs/pl/intlayer_with_nuxt.md +885 -0
- package/docs/pl/intlayer_with_react_native+expo.md +698 -0
- package/docs/pl/intlayer_with_react_router_v7.md +503 -0
- package/docs/pl/intlayer_with_tanstack.md +562 -0
- package/docs/pl/intlayer_with_vite+preact.md +1736 -0
- package/docs/pl/intlayer_with_vite+react.md +1438 -0
- package/docs/pl/intlayer_with_vite+solid.md +290 -0
- package/docs/pl/intlayer_with_vite+svelte.md +289 -0
- package/docs/pl/intlayer_with_vite+vue.md +1116 -0
- package/docs/pl/introduction.md +209 -0
- package/docs/pl/locale_mapper.md +242 -0
- package/docs/pl/mcp_server.md +211 -0
- package/docs/pl/packages/express-intlayer/t.md +458 -0
- package/docs/pl/packages/intlayer/getConfiguration.md +146 -0
- package/docs/pl/packages/intlayer/getEnumeration.md +160 -0
- package/docs/pl/packages/intlayer/getHTMLTextDir.md +121 -0
- package/docs/pl/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/pl/packages/intlayer/getLocaleName.md +118 -0
- package/docs/pl/packages/intlayer/getLocalizedUrl.md +300 -0
- package/docs/pl/packages/intlayer/getMultilingualUrls.md +221 -0
- package/docs/pl/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/pl/packages/intlayer/getTranslation.md +190 -0
- package/docs/pl/packages/intlayer/getTranslationContent.md +189 -0
- package/docs/pl/packages/next-intlayer/t.md +353 -0
- package/docs/pl/packages/next-intlayer/useDictionary.md +270 -0
- package/docs/pl/packages/next-intlayer/useIntlayer.md +263 -0
- package/docs/pl/packages/next-intlayer/useLocale.md +166 -0
- package/docs/pl/packages/react-intlayer/t.md +303 -0
- package/docs/pl/packages/react-intlayer/useDictionary.md +289 -0
- package/docs/pl/packages/react-intlayer/useI18n.md +249 -0
- package/docs/pl/packages/react-intlayer/useIntlayer.md +256 -0
- package/docs/pl/packages/react-intlayer/useLocale.md +210 -0
- package/docs/pl/per_locale_file.md +321 -0
- package/docs/pl/readme.md +261 -0
- package/docs/pl/releases/v6.md +305 -0
- package/docs/pl/roadmap.md +362 -0
- package/docs/pl/testing.md +202 -0
- package/docs/pl/vs_code_extension.md +126 -0
- package/docs/pt/component_i18n.md +1 -1
- package/docs/pt/configuration.md +6 -0
- package/docs/pt/intlayer_cli.md +8 -3
- package/docs/pt/intlayer_with_next-i18next.md +627 -0
- package/docs/pt/intlayer_with_next-intl.md +446 -0
- package/docs/pt/intlayer_with_nextjs_16.md +21 -0
- package/docs/pt/intlayer_with_tanstack.md +4 -0
- package/docs/pt/intlayer_with_vite+react.md +4 -0
- package/docs/ru/component_i18n.md +1 -1
- package/docs/ru/configuration.md +6 -0
- package/docs/ru/intlayer_cli.md +301 -22
- package/docs/ru/intlayer_with_next-i18next.md +629 -0
- package/docs/ru/intlayer_with_next-intl.md +448 -0
- package/docs/ru/intlayer_with_nextjs_16.md +21 -0
- package/docs/ru/intlayer_with_tanstack.md +4 -0
- package/docs/ru/intlayer_with_vite+react.md +4 -0
- package/docs/tr/component_i18n.md +1 -1
- package/docs/tr/configuration.md +6 -0
- package/docs/tr/intlayer_cli.md +8 -0
- package/docs/tr/intlayer_with_next-i18next.md +627 -0
- package/docs/tr/intlayer_with_next-intl.md +446 -0
- package/docs/tr/intlayer_with_nextjs_16.md +21 -0
- package/docs/tr/intlayer_with_tanstack.md +4 -0
- package/docs/tr/intlayer_with_vite+react.md +4 -0
- package/docs/vi/CI_CD.md +198 -0
- package/docs/vi/autoFill.md +284 -0
- package/docs/vi/component_i18n.md +186 -0
- package/docs/vi/configuration.md +710 -0
- package/docs/vi/dictionary/condition.md +237 -0
- package/docs/vi/dictionary/content_file.md +1115 -0
- package/docs/vi/dictionary/enumeration.md +255 -0
- package/docs/vi/dictionary/file.md +234 -0
- package/docs/vi/dictionary/function_fetching.md +212 -0
- package/docs/vi/dictionary/gender.md +275 -0
- package/docs/vi/dictionary/insertion.md +191 -0
- package/docs/vi/dictionary/markdown.md +381 -0
- package/docs/vi/dictionary/nesting.md +273 -0
- package/docs/vi/dictionary/translation.md +309 -0
- package/docs/vi/formatters.md +595 -0
- package/docs/vi/how_works_intlayer.md +256 -0
- package/docs/vi/index.md +174 -0
- package/docs/vi/interest_of_intlayer.md +292 -0
- package/docs/vi/intlayer_CMS.md +549 -0
- package/docs/vi/intlayer_cli.md +850 -0
- package/docs/vi/intlayer_visual_editor.md +288 -0
- package/docs/vi/intlayer_with_angular.md +692 -0
- package/docs/vi/intlayer_with_astro.md +252 -0
- package/docs/vi/intlayer_with_create_react_app.md +1230 -0
- package/docs/vi/intlayer_with_express.md +409 -0
- package/docs/vi/intlayer_with_lynx+react.md +520 -0
- package/docs/vi/intlayer_with_nestjs.md +272 -0
- package/docs/vi/intlayer_with_next-i18next.md +628 -0
- package/docs/vi/intlayer_with_next-intl.md +446 -0
- package/docs/vi/intlayer_with_nextjs_14.md +1584 -0
- package/docs/vi/intlayer_with_nextjs_15.md +1738 -0
- package/docs/vi/intlayer_with_nextjs_16.md +21 -0
- package/docs/vi/intlayer_with_nextjs_page_router.md +1504 -0
- package/docs/vi/intlayer_with_nuxt.md +821 -0
- package/docs/vi/intlayer_with_react_native+expo.md +700 -0
- package/docs/vi/intlayer_with_react_router_v7.md +498 -0
- package/docs/vi/intlayer_with_tanstack.md +562 -0
- package/docs/vi/intlayer_with_vite+preact.md +1722 -0
- package/docs/vi/intlayer_with_vite+react.md +1407 -0
- package/docs/vi/intlayer_with_vite+solid.md +287 -0
- package/docs/vi/intlayer_with_vite+svelte.md +289 -0
- package/docs/vi/intlayer_with_vite+vue.md +1071 -0
- package/docs/vi/introduction.md +215 -0
- package/docs/vi/locale_mapper.md +242 -0
- package/docs/vi/mcp_server.md +211 -0
- package/docs/vi/packages/express-intlayer/t.md +457 -0
- package/docs/vi/packages/intlayer/getConfiguration.md +145 -0
- package/docs/vi/packages/intlayer/getEnumeration.md +162 -0
- package/docs/vi/packages/intlayer/getHTMLTextDir.md +121 -0
- package/docs/vi/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/vi/packages/intlayer/getLocaleName.md +129 -0
- package/docs/vi/packages/intlayer/getLocalizedUrl.md +309 -0
- package/docs/vi/packages/intlayer/getMultilingualUrls.md +221 -0
- package/docs/vi/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/vi/packages/intlayer/getTranslation.md +201 -0
- package/docs/vi/packages/intlayer/getTranslationContent.md +188 -0
- package/docs/vi/packages/next-intlayer/t.md +352 -0
- package/docs/vi/packages/next-intlayer/useDictionary.md +273 -0
- package/docs/vi/packages/next-intlayer/useIntlayer.md +264 -0
- package/docs/vi/packages/next-intlayer/useLocale.md +166 -0
- package/docs/vi/packages/react-intlayer/t.md +304 -0
- package/docs/vi/packages/react-intlayer/useDictionary.md +288 -0
- package/docs/vi/packages/react-intlayer/useI18n.md +295 -0
- package/docs/vi/packages/react-intlayer/useIntlayer.md +256 -0
- package/docs/vi/packages/react-intlayer/useLocale.md +210 -0
- package/docs/vi/per_locale_file.md +326 -0
- package/docs/vi/readme.md +261 -0
- package/docs/vi/releases/v6.md +305 -0
- package/docs/vi/roadmap.md +346 -0
- package/docs/vi/testing.md +202 -0
- package/docs/vi/vs_code_extension.md +126 -0
- package/docs/zh/configuration.md +6 -0
- package/docs/zh/intlayer_cli.md +8 -3
- package/docs/zh/intlayer_with_next-i18next.md +628 -0
- package/docs/zh/intlayer_with_next-intl.md +448 -0
- package/docs/zh/intlayer_with_nextjs_16.md +21 -0
- package/docs/zh/intlayer_with_tanstack.md +4 -0
- package/docs/zh/intlayer_with_vite+react.md +4 -0
- package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ar/array_as_content_declaration.md +1 -2
- package/frequent_questions/ar/build_dictionaries.md +1 -2
- package/frequent_questions/ar/build_error_CI_CD.md +1 -2
- package/frequent_questions/ar/bun_set_up.md +1 -2
- package/frequent_questions/ar/customized_locale_list.md +1 -2
- package/frequent_questions/ar/domain_routing.md +1 -2
- package/frequent_questions/ar/esbuild_error.md +1 -2
- package/frequent_questions/ar/get_locale_cookie.md +1 -2
- package/frequent_questions/ar/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ar/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ar/static_rendering.md +1 -3
- package/frequent_questions/ar/translated_path_url.md +1 -2
- package/frequent_questions/ar/unknown_command.md +1 -2
- package/frequent_questions/de/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/de/array_as_content_declaration.md +1 -2
- package/frequent_questions/de/build_dictionaries.md +1 -2
- package/frequent_questions/de/build_error_CI_CD.md +1 -2
- package/frequent_questions/de/bun_set_up.md +1 -2
- package/frequent_questions/de/customized_locale_list.md +1 -2
- package/frequent_questions/de/domain_routing.md +1 -2
- package/frequent_questions/de/esbuild_error.md +1 -2
- package/frequent_questions/de/get_locale_cookie.md +1 -2
- package/frequent_questions/de/intlayer_command_undefined.md +1 -2
- package/frequent_questions/de/locale_incorect_in_url.md +1 -2
- package/frequent_questions/de/static_rendering.md +1 -3
- package/frequent_questions/de/translated_path_url.md +1 -2
- package/frequent_questions/de/unknown_command.md +1 -2
- package/frequent_questions/en/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/en/array_as_content_declaration.md +1 -2
- package/frequent_questions/en/build_dictionaries.md +1 -2
- package/frequent_questions/en/build_error_CI_CD.md +1 -2
- package/frequent_questions/en/bun_set_up.md +1 -2
- package/frequent_questions/en/customized_locale_list.md +1 -2
- package/frequent_questions/en/domain_routing.md +1 -2
- package/frequent_questions/en/esbuild_error.md +1 -2
- package/frequent_questions/en/get_locale_cookie.md +1 -2
- package/frequent_questions/en/intlayer_command_undefined.md +1 -2
- package/frequent_questions/en/locale_incorect_in_url.md +1 -2
- package/frequent_questions/en/static_rendering.md +1 -3
- package/frequent_questions/en/translated_path_url.md +1 -2
- package/frequent_questions/en/unknown_command.md +1 -2
- package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/en-GB/array_as_content_declaration.md +1 -2
- package/frequent_questions/en-GB/build_dictionaries.md +1 -2
- package/frequent_questions/en-GB/build_error_CI_CD.md +1 -2
- package/frequent_questions/en-GB/bun_set_up.md +1 -2
- package/frequent_questions/en-GB/customized_locale_list.md +1 -2
- package/frequent_questions/en-GB/domain_routing.md +1 -2
- package/frequent_questions/en-GB/esbuild_error.md +1 -2
- package/frequent_questions/en-GB/get_locale_cookie.md +1 -2
- package/frequent_questions/en-GB/intlayer_command_undefined.md +1 -2
- package/frequent_questions/en-GB/locale_incorect_in_url.md +1 -2
- package/frequent_questions/en-GB/static_rendering.md +1 -3
- package/frequent_questions/en-GB/translated_path_url.md +1 -2
- package/frequent_questions/en-GB/unknown_command.md +1 -2
- package/frequent_questions/es/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/es/array_as_content_declaration.md +1 -2
- package/frequent_questions/es/build_dictionaries.md +1 -2
- package/frequent_questions/es/build_error_CI_CD.md +1 -2
- package/frequent_questions/es/bun_set_up.md +1 -2
- package/frequent_questions/es/customized_locale_list.md +1 -2
- package/frequent_questions/es/domain_routing.md +1 -2
- package/frequent_questions/es/esbuild_error.md +1 -2
- package/frequent_questions/es/get_locale_cookie.md +1 -2
- package/frequent_questions/es/intlayer_command_undefined.md +1 -2
- package/frequent_questions/es/locale_incorect_in_url.md +1 -2
- package/frequent_questions/es/static_rendering.md +1 -3
- package/frequent_questions/es/translated_path_url.md +1 -2
- package/frequent_questions/es/unknown_command.md +1 -2
- package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/fr/array_as_content_declaration.md +1 -2
- package/frequent_questions/fr/build_dictionaries.md +1 -2
- package/frequent_questions/fr/build_error_CI_CD.md +1 -2
- package/frequent_questions/fr/bun_set_up.md +1 -2
- package/frequent_questions/fr/customized_locale_list.md +1 -2
- package/frequent_questions/fr/domain_routing.md +1 -2
- package/frequent_questions/fr/esbuild_error.md +1 -2
- package/frequent_questions/fr/get_locale_cookie.md +1 -2
- package/frequent_questions/fr/intlayer_command_undefined.md +1 -2
- package/frequent_questions/fr/locale_incorect_in_url.md +1 -2
- package/frequent_questions/fr/static_rendering.md +1 -3
- package/frequent_questions/fr/translated_path_url.md +1 -2
- package/frequent_questions/fr/unknown_command.md +1 -2
- package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/hi/array_as_content_declaration.md +1 -2
- package/frequent_questions/hi/build_dictionaries.md +1 -2
- package/frequent_questions/hi/build_error_CI_CD.md +1 -2
- package/frequent_questions/hi/bun_set_up.md +1 -2
- package/frequent_questions/hi/customized_locale_list.md +1 -2
- package/frequent_questions/hi/domain_routing.md +1 -2
- package/frequent_questions/hi/esbuild_error.md +1 -2
- package/frequent_questions/hi/get_locale_cookie.md +1 -2
- package/frequent_questions/hi/intlayer_command_undefined.md +1 -2
- package/frequent_questions/hi/locale_incorect_in_url.md +1 -2
- package/frequent_questions/hi/static_rendering.md +1 -3
- package/frequent_questions/hi/translated_path_url.md +1 -2
- package/frequent_questions/hi/unknown_command.md +1 -2
- package/frequent_questions/id/SSR_Next_no_[locale].md +104 -0
- package/frequent_questions/id/array_as_content_declaration.md +71 -0
- package/frequent_questions/id/build_dictionaries.md +58 -0
- package/frequent_questions/id/build_error_CI_CD.md +74 -0
- package/frequent_questions/id/bun_set_up.md +53 -0
- package/frequent_questions/id/customized_locale_list.md +64 -0
- package/frequent_questions/id/domain_routing.md +113 -0
- package/frequent_questions/id/esbuild_error.md +29 -0
- package/frequent_questions/id/get_locale_cookie.md +142 -0
- package/frequent_questions/id/intlayer_command_undefined.md +155 -0
- package/frequent_questions/id/locale_incorect_in_url.md +73 -0
- package/frequent_questions/id/static_rendering.md +44 -0
- package/frequent_questions/id/translated_path_url.md +55 -0
- package/frequent_questions/id/unknown_command.md +97 -0
- package/frequent_questions/it/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/it/array_as_content_declaration.md +1 -2
- package/frequent_questions/it/build_dictionaries.md +1 -2
- package/frequent_questions/it/build_error_CI_CD.md +1 -2
- package/frequent_questions/it/bun_set_up.md +1 -2
- package/frequent_questions/it/customized_locale_list.md +1 -2
- package/frequent_questions/it/domain_routing.md +1 -2
- package/frequent_questions/it/esbuild_error.md +1 -2
- package/frequent_questions/it/get_locale_cookie.md +1 -2
- package/frequent_questions/it/intlayer_command_undefined.md +1 -2
- package/frequent_questions/it/locale_incorect_in_url.md +1 -2
- package/frequent_questions/it/static_rendering.md +1 -3
- package/frequent_questions/it/translated_path_url.md +1 -2
- package/frequent_questions/it/unknown_command.md +1 -2
- package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ja/array_as_content_declaration.md +1 -2
- package/frequent_questions/ja/build_dictionaries.md +1 -2
- package/frequent_questions/ja/build_error_CI_CD.md +1 -2
- package/frequent_questions/ja/bun_set_up.md +1 -2
- package/frequent_questions/ja/customized_locale_list.md +1 -2
- package/frequent_questions/ja/domain_routing.md +1 -2
- package/frequent_questions/ja/esbuild_error.md +1 -2
- package/frequent_questions/ja/get_locale_cookie.md +1 -2
- package/frequent_questions/ja/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ja/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ja/static_rendering.md +1 -3
- package/frequent_questions/ja/translated_path_url.md +1 -2
- package/frequent_questions/ja/unknown_command.md +1 -2
- package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ko/array_as_content_declaration.md +1 -2
- package/frequent_questions/ko/build_dictionaries.md +1 -2
- package/frequent_questions/ko/build_error_CI_CD.md +1 -2
- package/frequent_questions/ko/bun_set_up.md +1 -2
- package/frequent_questions/ko/customized_locale_list.md +1 -2
- package/frequent_questions/ko/domain_routing.md +1 -2
- package/frequent_questions/ko/esbuild_error.md +1 -2
- package/frequent_questions/ko/get_locale_cookie.md +1 -2
- package/frequent_questions/ko/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ko/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ko/static_rendering.md +1 -3
- package/frequent_questions/ko/translated_path_url.md +1 -2
- package/frequent_questions/ko/unknown_command.md +1 -2
- package/frequent_questions/pl/SSR_Next_no_[locale].md +104 -0
- package/frequent_questions/pl/array_as_content_declaration.md +71 -0
- package/frequent_questions/pl/build_dictionaries.md +58 -0
- package/frequent_questions/pl/build_error_CI_CD.md +74 -0
- package/frequent_questions/pl/bun_set_up.md +54 -0
- package/frequent_questions/pl/customized_locale_list.md +64 -0
- package/frequent_questions/pl/domain_routing.md +113 -0
- package/frequent_questions/pl/esbuild_error.md +29 -0
- package/frequent_questions/pl/get_locale_cookie.md +142 -0
- package/frequent_questions/pl/intlayer_command_undefined.md +155 -0
- package/frequent_questions/pl/locale_incorect_in_url.md +73 -0
- package/frequent_questions/pl/static_rendering.md +44 -0
- package/frequent_questions/pl/translated_path_url.md +55 -0
- package/frequent_questions/pl/unknown_command.md +97 -0
- package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/pt/array_as_content_declaration.md +1 -2
- package/frequent_questions/pt/build_dictionaries.md +1 -2
- package/frequent_questions/pt/build_error_CI_CD.md +1 -2
- package/frequent_questions/pt/bun_set_up.md +1 -2
- package/frequent_questions/pt/customized_locale_list.md +1 -2
- package/frequent_questions/pt/domain_routing.md +1 -2
- package/frequent_questions/pt/esbuild_error.md +1 -2
- package/frequent_questions/pt/get_locale_cookie.md +1 -2
- package/frequent_questions/pt/intlayer_command_undefined.md +1 -2
- package/frequent_questions/pt/locale_incorect_in_url.md +1 -2
- package/frequent_questions/pt/static_rendering.md +1 -3
- package/frequent_questions/pt/translated_path_url.md +1 -2
- package/frequent_questions/pt/unknown_command.md +1 -2
- package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/ru/array_as_content_declaration.md +1 -2
- package/frequent_questions/ru/build_dictionaries.md +1 -2
- package/frequent_questions/ru/build_error_CI_CD.md +1 -2
- package/frequent_questions/ru/bun_set_up.md +1 -2
- package/frequent_questions/ru/customized_locale_list.md +1 -2
- package/frequent_questions/ru/domain_routing.md +1 -2
- package/frequent_questions/ru/esbuild_error.md +1 -2
- package/frequent_questions/ru/get_locale_cookie.md +1 -2
- package/frequent_questions/ru/intlayer_command_undefined.md +1 -2
- package/frequent_questions/ru/locale_incorect_in_url.md +1 -2
- package/frequent_questions/ru/static_rendering.md +1 -2
- package/frequent_questions/ru/translated_path_url.md +1 -2
- package/frequent_questions/ru/unknown_command.md +1 -2
- package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/tr/array_as_content_declaration.md +1 -2
- package/frequent_questions/tr/build_dictionaries.md +1 -2
- package/frequent_questions/tr/build_error_CI_CD.md +1 -2
- package/frequent_questions/tr/bun_set_up.md +1 -2
- package/frequent_questions/tr/customized_locale_list.md +1 -2
- package/frequent_questions/tr/domain_routing.md +1 -2
- package/frequent_questions/tr/esbuild_error.md +1 -2
- package/frequent_questions/tr/get_locale_cookie.md +1 -2
- package/frequent_questions/tr/intlayer_command_undefined.md +1 -2
- package/frequent_questions/tr/locale_incorect_in_url.md +1 -2
- package/frequent_questions/tr/static_rendering.md +1 -2
- package/frequent_questions/tr/translated_path_url.md +1 -2
- package/frequent_questions/tr/unknown_command.md +1 -2
- package/frequent_questions/vi/SSR_Next_no_[locale].md +106 -0
- package/frequent_questions/vi/array_as_content_declaration.md +71 -0
- package/frequent_questions/vi/build_dictionaries.md +58 -0
- package/frequent_questions/vi/build_error_CI_CD.md +74 -0
- package/frequent_questions/vi/bun_set_up.md +53 -0
- package/frequent_questions/vi/customized_locale_list.md +64 -0
- package/frequent_questions/vi/domain_routing.md +113 -0
- package/frequent_questions/vi/esbuild_error.md +29 -0
- package/frequent_questions/vi/get_locale_cookie.md +142 -0
- package/frequent_questions/vi/intlayer_command_undefined.md +155 -0
- package/frequent_questions/vi/locale_incorect_in_url.md +73 -0
- package/frequent_questions/vi/static_rendering.md +44 -0
- package/frequent_questions/vi/translated_path_url.md +55 -0
- package/frequent_questions/vi/unknown_command.md +97 -0
- package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -2
- package/frequent_questions/zh/array_as_content_declaration.md +1 -2
- package/frequent_questions/zh/build_dictionaries.md +1 -2
- package/frequent_questions/zh/build_error_CI_CD.md +1 -2
- package/frequent_questions/zh/bun_set_up.md +1 -2
- package/frequent_questions/zh/customized_locale_list.md +1 -2
- package/frequent_questions/zh/domain_routing.md +1 -2
- package/frequent_questions/zh/esbuild_error.md +1 -2
- package/frequent_questions/zh/get_locale_cookie.md +1 -2
- package/frequent_questions/zh/intlayer_command_undefined.md +1 -2
- package/frequent_questions/zh/locale_incorect_in_url.md +1 -2
- package/frequent_questions/zh/static_rendering.md +1 -3
- package/frequent_questions/zh/translated_path_url.md +1 -2
- package/frequent_questions/zh/unknown_command.md +1 -2
- package/legal/id/privacy_notice.md +83 -0
- package/legal/id/terms_of_service.md +55 -0
- package/legal/pl/privacy_notice.md +83 -0
- package/legal/pl/terms_of_service.md +55 -0
- package/legal/vi/privacy_notice.md +83 -0
- package/legal/vi/terms_of_service.md +55 -0
- package/package.json +19 -18
- package/src/generated/blog.entry.ts +38 -0
package/blog/id/index.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-24-12
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Blog
|
|
5
|
+
description: Temukan semua topik terkait Intlayer, internasionalisasi, dan lainnya
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- Internasionalisasi
|
|
9
|
+
- Blog
|
|
10
|
+
- Next.js
|
|
11
|
+
- JavaScript
|
|
12
|
+
- React
|
|
13
|
+
slugs:
|
|
14
|
+
- blog
|
|
15
|
+
- search
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Mengadopsi Internasionalisasi dalam JavaScript: Meningkatkan Jangkauan Global dan SEO
|
|
19
|
+
|
|
20
|
+
Selamat datang di blog kami yang didedikasikan untuk segala hal tentang **internasionalisasi** untuk aplikasi JavaScript! Di sini, kami mengeksplorasi praktik terbaik, strategi, dan alat untuk membantu pengembang memperluas produk digital mereka ke seluruh dunia.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Mengapa Internasionalisasi (i18n) Penting
|
|
25
|
+
|
|
26
|
+
Di dunia yang saling terhubung saat ini, pengguna mengharapkan pengalaman yang mulus dan terlokalisasi. Internasionalisasi (i18n) memastikan bahwa aplikasi web Anda dapat menyesuaikan dengan berbagai bahasa dan nuansa budaya. Dengan mengintegrasikan praktik i18n sejak awal, Anda membuka banyak manfaat, seperti:
|
|
27
|
+
|
|
28
|
+
1. **Pengalaman Pengguna yang Ditingkatkan:** Pengguna merasa lebih nyaman berinteraksi dengan konten dalam bahasa asli mereka.
|
|
29
|
+
2. **Jangkauan Pasar yang Lebih Luas:** Menyediakan berbagai bahasa membantu Anda menjangkau wilayah baru dan memperluas basis pengguna.
|
|
30
|
+
3. **Aksesibilitas yang Lebih Baik:** i18n yang terstruktur dengan baik sering kali selaras dengan standar aksesibilitas, membuat aplikasi Anda lebih inklusif.
|
|
31
|
+
4. **Performa SEO yang Lebih Baik:** Konten yang terlokalisasi dapat meningkatkan visibilitas Anda dalam hasil pencarian spesifik wilayah.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Solusi Internasionalisasi Open-Source
|
|
36
|
+
|
|
37
|
+
Membangun aplikasi yang terinternasionalisasi tidak harus rumit. Komunitas open-source menyediakan banyak alat dan pustaka yang kuat serta didukung dengan baik yang membuat lokalisasi menjadi lebih mudah. Solusi populer seperti **react-intl**, **i18next**, dan **FormatJS** menyediakan API yang fleksibel dan integrasi yang mudah dengan framework JavaScript modern seperti React, Vue, dan Angular.
|
|
38
|
+
|
|
39
|
+
### Manfaat Utama dari Solusi Open-Source
|
|
40
|
+
|
|
41
|
+
- **Fleksibilitas:** Pustaka yang dikembangkan oleh komunitas berkembang dengan cepat, menawarkan pembaruan dan fitur baru sesuai kebutuhan.
|
|
42
|
+
- **Penghematan Biaya:** Tanpa biaya lisensi, membuatnya lebih mudah untuk menguji atau mengembangkan aplikasi Anda.
|
|
43
|
+
- **Dukungan Komunitas:** Komunitas besar sering berarti lebih banyak tutorial, dokumentasi, dan plugin siap pakai.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Pengumuman dan Apa Selanjutnya
|
|
48
|
+
|
|
49
|
+
Kami sangat antusias untuk mengumumkan tutorial mendatang, praktik terbaik, dan **studi kasus** tentang cara mengoptimalkan aplikasi JavaScript Anda untuk audiens global. Berikut adalah bocoran:
|
|
50
|
+
|
|
51
|
+
- **Tips Lokalisasi Lanjutan:** Menguasai pluralisasi, format tanggal/waktu, dan konten dinamis.
|
|
52
|
+
- **Optimasi Performa:** Meminimalkan ukuran bundle sambil mendukung banyak locale.
|
|
53
|
+
- **Studi Kasus dari Komunitas:** Menampilkan contoh nyata implementasi i18n yang sukses.
|
|
54
|
+
|
|
55
|
+
Tetap nantikan pembaruan ini dan lainnya!
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Kontribusi ke Blog Kami!
|
|
60
|
+
|
|
61
|
+
Kami percaya pada berbagi pengetahuan yang didorong oleh komunitas. Jika Anda memiliki ide bagus untuk posting blog yang terkait dengan internasionalisasi, **SEO**, atau topik relevan lainnya, kami sangat ingin mendengar dari Anda. Anda dapat mengirimkan Pull Request dengan menambahkan posting blog yang Anda usulkan ke repositori GitHub kami:
|
|
62
|
+
|
|
63
|
+
[**Kirim postingan Anda di sini**](https://github.com/aymericzip/intlayer/blob/main/docs/blog)
|
|
64
|
+
|
|
65
|
+
Kontribusi Anda membantu kami memperkaya platform ini dan memberdayakan pengembang di seluruh dunia.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
**Terima kasih telah membaca, dan selamat datang di komunitas i18n kami!** Nantikan lebih banyak wawasan, tips, dan praktik terbaik tentang cara membawa aplikasi JavaScript Anda menuju kesuksesan internasional.
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-12-24
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: SEO dan Internasionalisasi
|
|
5
|
+
description: Temukan cara mengoptimalkan situs web multibahasa Anda untuk mesin pencari dan meningkatkan SEO Anda.
|
|
6
|
+
keywords:
|
|
7
|
+
- SEO
|
|
8
|
+
- Intlayer
|
|
9
|
+
- Internasionalisasi
|
|
10
|
+
- Blog
|
|
11
|
+
- Next.js
|
|
12
|
+
- JavaScript
|
|
13
|
+
- React
|
|
14
|
+
slugs:
|
|
15
|
+
- blog
|
|
16
|
+
- SEO-and-i18n
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# SEO & I18n: Panduan Utama untuk Membuat Situs Web Anda Multibahasa
|
|
20
|
+
|
|
21
|
+
Ingin menjangkau lebih banyak pengguna di seluruh dunia? Membuat situs web Anda menjadi multibahasa adalah salah satu cara terbaik untuk memperluas audiens Anda dan meningkatkan SEO (Search Engine Optimization) Anda. Dalam posting blog ini, kami akan menguraikan dasar-dasar SEO internasional yang sering disebut sebagai **i18n** (singkatan dari "internasionalisasi"), dengan istilah yang jelas dan mudah dipahami. Anda akan mempelajari keputusan kunci yang perlu Anda buat, cara menggunakan elemen teknis seperti `hreflang`, dan mengapa alat seperti **Intlayer** dapat menyederhanakan proyek Next.js multibahasa Anda.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 1. Apa Arti Membuat Situs Web Anda Menjadi Multibahasa?
|
|
26
|
+
|
|
27
|
+
Situs web multibahasa menawarkan kontennya dalam lebih dari satu bahasa. Misalnya, Anda mungkin memiliki versi bahasa Inggris (`example.com/en/`), versi bahasa Prancis (`example.com/fr/`), dan versi bahasa Spanyol (`example.com/es/`). Pendekatan ini memungkinkan mesin pencari menampilkan versi bahasa yang tepat kepada pengguna berdasarkan preferensi atau lokasi geografis mereka.
|
|
28
|
+
|
|
29
|
+
Ketika Anda melakukannya dengan benar, Anda akan menciptakan pengalaman yang jauh lebih ramah pengguna bagi penutur non-Inggris yang mengarah pada keterlibatan yang lebih baik, tingkat konversi yang lebih tinggi, dan peningkatan SEO di berbagai wilayah.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 2. Memilih Struktur URL yang Tepat
|
|
34
|
+
|
|
35
|
+
Jika Anda memutuskan untuk memiliki beberapa versi bahasa, Anda memerlukan cara yang jelas dan konsisten untuk mengatur URL situs Anda. Setiap bahasa (atau wilayah) harus memiliki “alamat” uniknya sendiri di internet. Berikut adalah tiga cara umum untuk menyusun situs web multibahasa:
|
|
36
|
+
|
|
37
|
+
1. Domain Tingkat Atas Kode Negara (ccTLD)
|
|
38
|
+
- Contoh: `example.fr`, `example.de`
|
|
39
|
+
- **Kelebihan:** Mengirim sinyal kuat ke mesin pencari tentang negara mana konten tersebut ditargetkan (misalnya, `.fr` = Prancis).
|
|
40
|
+
- **Kekurangan:** Mengelola beberapa domain bisa lebih mahal dan rumit.
|
|
41
|
+
|
|
42
|
+
2. **Subdomain**
|
|
43
|
+
- **Contoh:** `fr.example.com`, `de.example.com`
|
|
44
|
+
- **Kelebihan:** Setiap bahasa “tinggal” di subdomainnya sendiri, sehingga relatif mudah untuk menambah atau menghapus bahasa.
|
|
45
|
+
- **Kekurangan:** Mesin pencari terkadang memperlakukan subdomain sebagai situs yang terpisah, sehingga dapat mengurangi otoritas domain utama Anda.
|
|
46
|
+
|
|
47
|
+
3. **Subdirektori (Subfolder)**
|
|
48
|
+
- **Contoh:** `example.com/fr/`, `example.com/de/`
|
|
49
|
+
- **Kelebihan:** Mudah dikelola, dan semua lalu lintas diarahkan ke satu domain utama.
|
|
50
|
+
- **Kekurangan:** Sinyal SEO lokal tidak sekuat ccTLD (meskipun masih sangat efektif jika dilakukan dengan benar).
|
|
51
|
+
|
|
52
|
+
> **Tips:** Jika Anda memiliki merek global dan ingin menjaga semuanya tetap sederhana, subdirektori seringkali menjadi pilihan terbaik. Jika Anda hanya menargetkan satu atau dua negara utama dan ingin benar-benar menekankan masing-masing, ccTLD mungkin menjadi pilihan yang tepat.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 3. Menguasai Penargetan Bahasa dengan Hreflang
|
|
57
|
+
|
|
58
|
+
### 3.1. Apa Itu Hreflang?
|
|
59
|
+
|
|
60
|
+
Ketika Anda memiliki konten yang identik atau sangat mirip dalam beberapa bahasa, mesin pencari seperti Google bisa bingung versi mana yang harus ditampilkan kepada pengguna. **Hreflang** adalah atribut HTML yang memberi tahu mesin pencari bahasa (dan wilayah) mana yang ditujukan untuk halaman tertentu, serta halaman alternatif bahasa/ wilayah lainnya.
|
|
61
|
+
|
|
62
|
+
### 3.2. Mengapa Ini Penting?
|
|
63
|
+
|
|
64
|
+
1. Mencegah masalah **konten duplikat** (ketika mesin pencari mengira Anda menerbitkan konten yang sama berkali-kali).
|
|
65
|
+
2. Memastikan **pengguna Prancis melihat versi bahasa Prancis**, **pengguna Spanyol melihat versi bahasa Spanyol**, dan seterusnya.
|
|
66
|
+
3. Meningkatkan pengalaman pengguna secara keseluruhan, yang berarti keterlibatan lebih baik dan peringkat SEO yang lebih tinggi.
|
|
67
|
+
|
|
68
|
+
### 3.3. Cara Menggunakan Hreflang di Tag `<head>`
|
|
69
|
+
|
|
70
|
+
Dalam HTML Anda, tambahkan sesuatu seperti:
|
|
71
|
+
|
|
72
|
+
```html
|
|
73
|
+
<link rel="alternate" hreflang="en" href="https://example.com/en" />
|
|
74
|
+
<link rel="alternate" hreflang="fr" href="https://example.com/fr" />
|
|
75
|
+
<link rel="alternate" hreflang="es" href="https://example.com/es" />
|
|
76
|
+
<link rel="alternate" hreflang="x-default" href="https://example.com/en" />
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
- **`hreflang="en"`**: Menunjukkan versi bahasa Inggris dari halaman tersebut.
|
|
80
|
+
- **`hreflang="fr"`**: Menunjukkan versi bahasa Prancis dari halaman tersebut.
|
|
81
|
+
- **`hreflang="es"`**: Menunjukkan versi bahasa Spanyol dari halaman tersebut.
|
|
82
|
+
- **`hreflang="x-default"`**: Bahasa “fallback” atau URL default ketika tidak ada bahasa lain yang cocok dengan preferensi pengguna.
|
|
83
|
+
|
|
84
|
+
> **Catatan Cepat:** Pastikan URL dalam tag ini langsung mengarah ke halaman akhir, tanpa pengalihan tambahan apapun.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 4. Membuat Konten Benar-Benar “Lokal” (Bukan Sekadar Diterjemahkan)
|
|
89
|
+
|
|
90
|
+
### 4.1. Lokalisasi vs. Terjemahan
|
|
91
|
+
|
|
92
|
+
- **Terjemahan** berarti mengubah teks dari satu bahasa ke bahasa lain secara kata per kata.
|
|
93
|
+
- **Lokalisasi** berarti menyesuaikan format konten, mata uang, ukuran, dan referensi budaya untuk audiens lokal. Misalnya, jika Anda menargetkan Prancis, Anda akan menggunakan `€` alih-alih `---
|
|
94
|
+
createdAt: 2024-12-24
|
|
95
|
+
updatedAt: 2025-06-29
|
|
96
|
+
title: SEO dan Internasionalisasi
|
|
97
|
+
description: Temukan cara mengoptimalkan situs web multibahasa Anda untuk mesin pencari dan meningkatkan SEO Anda.
|
|
98
|
+
keywords:
|
|
99
|
+
- SEO
|
|
100
|
+
- Intlayer
|
|
101
|
+
- Internasionalisasi
|
|
102
|
+
- Blog
|
|
103
|
+
- Next.js
|
|
104
|
+
- JavaScript
|
|
105
|
+
- React
|
|
106
|
+
slugs:
|
|
107
|
+
- blog
|
|
108
|
+
- SEO-and-i18n
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
# SEO & I18n: Panduan Utama untuk Membuat Situs Web Anda Multibahasa
|
|
113
|
+
|
|
114
|
+
Ingin menjangkau lebih banyak pengguna di seluruh dunia? Membuat situs web Anda menjadi multibahasa adalah salah satu cara terbaik untuk memperluas audiens Anda dan meningkatkan SEO (Search Engine Optimization) Anda. Dalam posting blog ini, kami akan menguraikan dasar-dasar SEO internasional yang sering disebut sebagai **i18n** (singkatan dari "internasionalisasi"), dengan istilah yang jelas dan mudah dipahami. Anda akan mempelajari keputusan kunci yang perlu Anda buat, cara menggunakan elemen teknis seperti `hreflang`, dan mengapa alat seperti **Intlayer** dapat menyederhanakan proyek Next.js multibahasa Anda.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 1. Apa Arti Membuat Situs Web Anda Menjadi Multibahasa?
|
|
119
|
+
|
|
120
|
+
Situs web multibahasa menawarkan kontennya dalam lebih dari satu bahasa. Misalnya, Anda mungkin memiliki versi bahasa Inggris (`example.com/en/`), versi bahasa Prancis (`example.com/fr/`), dan versi bahasa Spanyol (`example.com/es/`). Pendekatan ini memungkinkan mesin pencari menampilkan versi bahasa yang tepat kepada pengguna berdasarkan preferensi atau lokasi geografis mereka.
|
|
121
|
+
|
|
122
|
+
Ketika Anda melakukannya dengan benar, Anda akan menciptakan pengalaman yang jauh lebih ramah pengguna bagi penutur non-Inggris yang mengarah pada keterlibatan yang lebih baik, tingkat konversi yang lebih tinggi, dan peningkatan SEO di berbagai wilayah.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 2. Memilih Struktur URL yang Tepat
|
|
127
|
+
|
|
128
|
+
Jika Anda memutuskan untuk memiliki beberapa versi bahasa, Anda memerlukan cara yang jelas dan konsisten untuk mengatur URL situs Anda. Setiap bahasa (atau wilayah) harus memiliki “alamat” uniknya sendiri di internet. Berikut adalah tiga cara umum untuk menyusun situs web multibahasa:
|
|
129
|
+
|
|
130
|
+
1. Domain Tingkat Atas Kode Negara (ccTLD)
|
|
131
|
+
- Contoh: `example.fr`, `example.de`
|
|
132
|
+
- **Kelebihan:** Mengirim sinyal kuat ke mesin pencari tentang negara mana konten tersebut ditargetkan (misalnya, `.fr` = Prancis).
|
|
133
|
+
- **Kekurangan:** Mengelola beberapa domain bisa lebih mahal dan rumit.
|
|
134
|
+
|
|
135
|
+
2. **Subdomain**
|
|
136
|
+
- **Contoh:** `fr.example.com`, `de.example.com`
|
|
137
|
+
- **Kelebihan:** Setiap bahasa “tinggal” di subdomainnya sendiri, sehingga relatif mudah untuk menambah atau menghapus bahasa.
|
|
138
|
+
- **Kekurangan:** Mesin pencari terkadang memperlakukan subdomain sebagai situs yang terpisah, sehingga dapat mengurangi otoritas domain utama Anda.
|
|
139
|
+
|
|
140
|
+
3. **Subdirektori (Subfolder)**
|
|
141
|
+
- **Contoh:** `example.com/fr/`, `example.com/de/`
|
|
142
|
+
- **Kelebihan:** Mudah dikelola, dan semua lalu lintas diarahkan ke satu domain utama.
|
|
143
|
+
- **Kekurangan:** Sinyal SEO lokal tidak sekuat ccTLD (meskipun masih sangat efektif jika dilakukan dengan benar).
|
|
144
|
+
|
|
145
|
+
> **Tips:** Jika Anda memiliki merek global dan ingin menjaga semuanya tetap sederhana, subdirektori seringkali menjadi pilihan terbaik. Jika Anda hanya menargetkan satu atau dua negara utama dan ingin benar-benar menekankan masing-masing, ccTLD mungkin menjadi pilihan yang tepat.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 3. Menguasai Penargetan Bahasa dengan Hreflang
|
|
150
|
+
|
|
151
|
+
### 3.1. Apa Itu Hreflang?
|
|
152
|
+
|
|
153
|
+
Ketika Anda memiliki konten yang identik atau sangat mirip dalam beberapa bahasa, mesin pencari seperti Google bisa bingung versi mana yang harus ditampilkan kepada pengguna. **Hreflang** adalah atribut HTML yang memberi tahu mesin pencari bahasa (dan wilayah) mana yang ditujukan untuk halaman tertentu, serta halaman alternatif bahasa/ wilayah lainnya.
|
|
154
|
+
|
|
155
|
+
### 3.2. Mengapa Ini Penting?
|
|
156
|
+
|
|
157
|
+
1. Mencegah masalah **konten duplikat** (ketika mesin pencari mengira Anda menerbitkan konten yang sama berkali-kali).
|
|
158
|
+
2. Memastikan **pengguna Prancis melihat versi bahasa Prancis**, **pengguna Spanyol melihat versi bahasa Spanyol**, dan seterusnya.
|
|
159
|
+
3. Meningkatkan pengalaman pengguna secara keseluruhan, yang berarti keterlibatan lebih baik dan peringkat SEO yang lebih tinggi.
|
|
160
|
+
|
|
161
|
+
### 3.3. Cara Menggunakan Hreflang di Tag `<head>`
|
|
162
|
+
|
|
163
|
+
Dalam HTML Anda, tambahkan sesuatu seperti:
|
|
164
|
+
|
|
165
|
+
```html
|
|
166
|
+
<link rel="alternate" hreflang="en" href="https://example.com/en" />
|
|
167
|
+
<link rel="alternate" hreflang="fr" href="https://example.com/fr" />
|
|
168
|
+
<link rel="alternate" hreflang="es" href="https://example.com/es" />
|
|
169
|
+
<link rel="alternate" hreflang="x-default" href="https://example.com/en" />
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
- **`hreflang="en"`**: Menunjukkan versi bahasa Inggris dari halaman tersebut.
|
|
173
|
+
- **`hreflang="fr"`**: Menunjukkan versi bahasa Prancis dari halaman tersebut.
|
|
174
|
+
- **`hreflang="es"`**: Menunjukkan versi bahasa Spanyol dari halaman tersebut.
|
|
175
|
+
- **`hreflang="x-default"`**: Bahasa “fallback” atau URL default ketika tidak ada bahasa lain yang cocok dengan preferensi pengguna.
|
|
176
|
+
|
|
177
|
+
> **Catatan Cepat:** Pastikan URL dalam tag ini langsung mengarah ke halaman akhir, tanpa pengalihan tambahan apapun.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 4. Membuat Konten Benar-Benar “Lokal” (Bukan Sekadar Diterjemahkan)
|
|
182
|
+
|
|
183
|
+
, dan mungkin menyebutkan hari libur lokal atau detail khusus wilayah.
|
|
184
|
+
|
|
185
|
+
### 4.2. Menghindari Konten Duplikat
|
|
186
|
+
|
|
187
|
+
Meskipun terjemahan sudah baik, mesin pencari dapat menandai situs Anda sebagai konten duplikat jika tampilannya terlalu mirip secara struktur. Hreflang membantu memperjelas bahwa halaman-halaman ini bukan duplikat, melainkan variasi bahasa.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 5. Keperluan Teknis SEO
|
|
192
|
+
|
|
193
|
+
### 5.1. Deklarasi Bahasa (`lang` dan `dir`)
|
|
194
|
+
|
|
195
|
+
Dalam tag HTML Anda, Anda dapat mendeklarasikan bahasa seperti berikut:
|
|
196
|
+
|
|
197
|
+
```html
|
|
198
|
+
html
|
|
199
|
+
<html lang="en"></html>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
- **`lang="en"`** membantu browser dan teknologi asistif memahami bahasa.
|
|
203
|
+
|
|
204
|
+
Untuk bahasa yang menggunakan arah kanan ke kiri (seperti Arab atau Ibrani), tambahkan:
|
|
205
|
+
|
|
206
|
+
```html
|
|
207
|
+
<html dir="rtl" lang="ar"></html>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
- **`dir="rtl"`** memastikan arah teks dari kanan ke kiri.
|
|
211
|
+
|
|
212
|
+
### 5.2. Tag Kanonik
|
|
213
|
+
|
|
214
|
+
Tag kanonik memberi tahu mesin pencari halaman mana yang merupakan versi “asli” atau utama jika Anda memiliki halaman yang hampir duplikat. Biasanya, Anda akan memiliki kanonik **mengacu pada diri sendiri** untuk situs multibahasa.
|
|
215
|
+
|
|
216
|
+
```html
|
|
217
|
+
<link rel="canonical" href="https://example.com/fr/produits" />
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 6. SEO On-Page dalam Beberapa Bahasa
|
|
223
|
+
|
|
224
|
+
### 6.1. Judul & Deskripsi Meta
|
|
225
|
+
|
|
226
|
+
- **Diterjemahkan dan dioptimalkan** untuk setiap bahasa.
|
|
227
|
+
- Lakukan **riset kata kunci** untuk setiap pasar karena apa yang dicari orang dalam bahasa Inggris mungkin berbeda dalam bahasa Prancis atau Spanyol.
|
|
228
|
+
|
|
229
|
+
### 6.2. Header (H1, H2, H3)
|
|
230
|
+
|
|
231
|
+
Judul Anda harus mencerminkan **frasa lokal** atau **kata kunci** dari setiap wilayah. Jangan hanya menerjemahkan judul asli bahasa Inggris Anda melalui Google Translate dan menganggapnya selesai.
|
|
232
|
+
|
|
233
|
+
### 6.3. Gambar & Media
|
|
234
|
+
|
|
235
|
+
- Lokalisasi teks alt, keterangan, dan nama file jika diperlukan.
|
|
236
|
+
- Gunakan visual yang sesuai dengan budaya target.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 7. Pergantian Bahasa & Pengalaman Pengguna
|
|
241
|
+
|
|
242
|
+
### 7.1. Auto-Redirect atau Pemilih Bahasa?
|
|
243
|
+
|
|
244
|
+
- **Auto-Redirect** (berdasarkan IP atau pengaturan browser) bisa nyaman tetapi dapat mengarahkan pelancong atau pengguna VPN ke versi yang salah.
|
|
245
|
+
- **Pemilih Bahasa** seringkali lebih transparan karena pengguna dapat memilih bahasa mereka sendiri jika bahasa yang terdeteksi otomatis salah.
|
|
246
|
+
|
|
247
|
+
Berikut adalah contoh sederhana Next.js + Intlayer:
|
|
248
|
+
|
|
249
|
+
```tsx
|
|
250
|
+
import { useLocation, useNavigate } from "react-router-dom";
|
|
251
|
+
import {
|
|
252
|
+
Locales,
|
|
253
|
+
getHTMLTextDir,
|
|
254
|
+
getLocaleName,
|
|
255
|
+
getLocalizedUrl,
|
|
256
|
+
} from "intlayer";
|
|
257
|
+
import { useLocale } from "react-intlayer";
|
|
258
|
+
import { type FC } from "react";
|
|
259
|
+
|
|
260
|
+
const LocaleSwitcher: FC = () => {
|
|
261
|
+
const { pathname, search } = useLocation(); // Mendapatkan path URL saat ini. Contoh: /fr/about?foo=bar
|
|
262
|
+
const navigate = useNavigate();
|
|
263
|
+
|
|
264
|
+
const { locale, availableLocales, setLocale } = useLocale({
|
|
265
|
+
onLocaleChange: (locale) => {
|
|
266
|
+
// Membangun URL dengan locale yang diperbarui
|
|
267
|
+
// Contoh: /es/about?foo=bar
|
|
268
|
+
const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
|
|
269
|
+
|
|
270
|
+
// Perbarui path URL
|
|
271
|
+
navigate(pathWithLocale);
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
return (
|
|
276
|
+
<ol>
|
|
277
|
+
{availableLocales.map((localeItem) => (
|
|
278
|
+
<li key={localeItem}>
|
|
279
|
+
<a
|
|
280
|
+
href={getLocalizedUrl(location.pathname, localeItem)}
|
|
281
|
+
hrefLang={locale === localeItem ? "x-default" : localeItem}
|
|
282
|
+
aria-current={locale === localeItem ? "page" : undefined}
|
|
283
|
+
onClick={(e) => {
|
|
284
|
+
e.preventDefault();
|
|
285
|
+
setLocale(localeItem);
|
|
286
|
+
}}
|
|
287
|
+
>
|
|
288
|
+
<span>
|
|
289
|
+
{/* Locale - misalnya FR */}
|
|
290
|
+
{localeItem}
|
|
291
|
+
</span>
|
|
292
|
+
<span>
|
|
293
|
+
{/* Bahasa dalam Locale-nya sendiri - misalnya Français */}
|
|
294
|
+
{getLocaleName(localeItem, locale)}
|
|
295
|
+
</span>
|
|
296
|
+
<span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
|
|
297
|
+
{/* Bahasa dalam Lokal saat ini - misalnya Francés dengan lokal saat ini disetel ke Locales.SPANISH */}
|
|
298
|
+
{getLocaleName(localeItem)}
|
|
299
|
+
</span>
|
|
300
|
+
<span dir="ltr" lang={Locales.ENGLISH}>
|
|
301
|
+
{/* Bahasa dalam bahasa Inggris - misalnya French */}
|
|
302
|
+
{getLocaleName(localeItem, Locales.ENGLISH)}
|
|
303
|
+
</span>
|
|
304
|
+
</a>
|
|
305
|
+
</li>
|
|
306
|
+
))}
|
|
307
|
+
</ol>
|
|
308
|
+
);
|
|
309
|
+
};
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### 7.2. Menyimpan Preferensi
|
|
313
|
+
|
|
314
|
+
- Simpan pilihan bahasa pengguna Anda dalam **cookie** atau **session**.
|
|
315
|
+
- Saat mereka mengunjungi situs Anda berikutnya, Anda dapat secara otomatis memuat bahasa yang mereka pilih.
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## 8. Membangun Backlink Lokal
|
|
320
|
+
|
|
321
|
+
**Backlinks** (tautan dari situs eksternal ke situs Anda) tetap menjadi faktor SEO yang penting. Saat Anda menjalankan situs multibahasa, pertimbangkan:
|
|
322
|
+
|
|
323
|
+
- Menghubungi situs berita lokal, blog, atau forum. Misalnya, domain `.fr` yang mengarah ke subdirektori bahasa Prancis Anda dapat meningkatkan SEO lokal Prancis Anda.
|
|
324
|
+
- Memantau backlinks per bahasa untuk melihat wilayah mana yang membutuhkan lebih banyak upaya PR/pemasaran.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## 9. Memantau & Memelihara Situs Multibahasa Anda
|
|
329
|
+
|
|
330
|
+
### 9.1. Google Analytics & Search Console
|
|
331
|
+
|
|
332
|
+
- Segmentasikan data Anda untuk setiap direktori bahasa (`/en/`, `/fr/`, `/es/`).
|
|
333
|
+
- Waspadai **kesalahan crawl**, **tanda konten duplikat**, dan **masalah pengindeksan** berdasarkan bahasa.
|
|
334
|
+
|
|
335
|
+
### 9.2. Pembaruan Konten Berkala
|
|
336
|
+
|
|
337
|
+
- Jaga agar terjemahan tetap segar. Jika Anda mengubah deskripsi produk dalam bahasa Inggris, perbarui juga dalam bahasa Prancis, Spanyol, dll.
|
|
338
|
+
- Terjemahan yang sudah usang dapat membingungkan pelanggan dan merusak kepercayaan pengguna.
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## 10. Kesalahan Umum yang Harus Dihindari
|
|
343
|
+
|
|
344
|
+
1. **Konten yang Diterjemahkan oleh Mesin**
|
|
345
|
+
Terjemahan otomatis tanpa tinjauan manusia dapat penuh dengan kesalahan.
|
|
346
|
+
|
|
347
|
+
2. **Tag `hreflang` yang Salah atau Hilang**
|
|
348
|
+
Mesin pencari tidak dapat menentukan versi bahasa secara mandiri jika tag Anda tidak lengkap atau menggunakan kode yang salah.
|
|
349
|
+
|
|
350
|
+
3. **Pengalihan Bahasa Hanya Melalui JavaScript**
|
|
351
|
+
Jika Google tidak dapat merayapi URL unik untuk setiap bahasa, halaman Anda mungkin tidak muncul dalam hasil pencarian lokal yang tepat.
|
|
352
|
+
|
|
353
|
+
4. **Mengabaikan Nuansa Budaya**
|
|
354
|
+
Sebuah lelucon atau frasa yang berhasil di satu negara mungkin menyinggung atau tidak berarti di negara lain.
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Penutup
|
|
359
|
+
|
|
360
|
+
Membuat situs web Anda menjadi multibahasa melibatkan lebih dari sekadar menerjemahkan teks. Ini tentang menyusun URL secara efektif, menggunakan tag `hreflang` untuk membantu mesin pencari menyajikan versi yang tepat, dan memberikan pengalaman pengguna yang luar biasa lengkap dengan visual yang dilokalkan, pemilih bahasa, dan navigasi yang konsisten. Mengikuti praktik terbaik ini akan mempersiapkan Anda untuk sukses di pasar global, meningkatkan kepuasan pengguna, dan pada akhirnya, memberikan hasil SEO yang lebih baik di berbagai wilayah.
|
|
361
|
+
|
|
362
|
+
Jika Anda menggunakan Next.js (terutama App Router di Next.js 13+), alat seperti **Intlayer** dapat menyederhanakan seluruh proses ini. Alat ini membantu mulai dari menghasilkan sitemap yang dilokalisasi hingga secara otomatis menangani tautan `hreflang`, deteksi bahasa, dan lainnya sehingga Anda dapat fokus pada pembuatan konten multibahasa berkualitas.
|
|
363
|
+
|
|
364
|
+
**Siap untuk go global?** Mulailah menerapkan strategi SEO dan i18n ini sekarang, dan saksikan bagaimana pengunjung baru dari seluruh dunia menemukan dan berinteraksi dengan situs Anda!
|
|
@@ -49,10 +49,6 @@ Meskipun Intlayer menyediakan solusi i18n mandiri yang sangat baik (lihat [pandu
|
|
|
49
49
|
|
|
50
50
|
Panduan ini menunjukkan cara memanfaatkan sistem deklarasi konten unggulan Intlayer sambil mempertahankan kompatibilitas dengan react-intl.
|
|
51
51
|
|
|
52
|
-
## Daftar Isi
|
|
53
|
-
|
|
54
|
-
<TOC/>
|
|
55
|
-
|
|
56
52
|
## Panduan Langkah demi Langkah untuk Mengatur Intlayer dengan react-intl
|
|
57
53
|
|
|
58
54
|
### Langkah 1: Instalasi Dependensi
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-01-16
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Alat Internasionalisasi (i18n) Terbaik untuk Drupal
|
|
5
|
+
description: Temukan solusi i18n Drupal terbaik untuk mengatasi tantangan terjemahan, meningkatkan SEO, dan memberikan pengalaman web global yang mulus.
|
|
6
|
+
keywords:
|
|
7
|
+
- Drupal
|
|
8
|
+
- i18n
|
|
9
|
+
- multibahasa
|
|
10
|
+
- SEO
|
|
11
|
+
- Internasionalisasi
|
|
12
|
+
- Blog
|
|
13
|
+
- JavaScript
|
|
14
|
+
slugs:
|
|
15
|
+
- blog
|
|
16
|
+
- i18n-technologies
|
|
17
|
+
- CMS
|
|
18
|
+
- drupal
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Menjelajahi Solusi i18n untuk Menerjemahkan Situs Drupal Anda
|
|
22
|
+
|
|
23
|
+
Di lanskap digital saat ini, memperluas jangkauan situs web Anda untuk melayani audiens global adalah hal yang penting. Bagi pemilik situs Drupal, menerapkan solusi internasionalisasi (i18n) adalah kunci untuk mengelola terjemahan secara efisien sambil mempertahankan arsitektur situs, nilai SEO, dan pengalaman pengguna. Dalam artikel ini, kami mengeksplorasi berbagai pendekatan mulai dari memanfaatkan kemampuan multibahasa bawaan Drupal Core hingga mengintegrasikan modul kontribusi dan solusi kustom yang membantu Anda memutuskan mana yang paling sesuai dengan kebutuhan proyek Anda.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Apa itu Internasionalisasi (i18n)?
|
|
28
|
+
|
|
29
|
+
Internasionalisasi (i18n) adalah proses merancang situs web Anda sehingga dapat dengan mudah disesuaikan untuk berbagai bahasa dan konteks budaya tanpa perlu merancang ulang kerangkanya. Dalam Drupal, ini melibatkan pembangunan fondasi di mana konten termasuk halaman, posting, menu, dan pengaturan konfigurasi dapat diterjemahkan dan dilokalkan secara efisien untuk audiens yang beragam.
|
|
30
|
+
|
|
31
|
+
Pelajari lebih lanjut tentang i18n dengan membaca panduan komprehensif kami: [Apa itu Internasionalisasi (i18n)? Definisi dan Tantangan](https://github.com/aymericzip/intlayer/blob/main/docs/blog/id/what_is_internationalization.md).
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Tantangan Terjemahan untuk Situs Drupal
|
|
36
|
+
|
|
37
|
+
Menerjemahkan situs Drupal melibatkan serangkaian tantangan tersendiri:
|
|
38
|
+
|
|
39
|
+
- **Kompleksitas Konten:** Situs Drupal sering terdiri dari berbagai jenis konten (node, istilah taksonomi, blok, dan entitas kustom) yang memerlukan alur kerja terjemahan yang konsisten.
|
|
40
|
+
- **Pertimbangan SEO:** Terjemahan yang diterapkan dengan benar meningkatkan peringkat pencarian dengan memanfaatkan URL yang dilokalkan, tag hreflang, dan peta situs khusus bahasa.
|
|
41
|
+
- **Pengalaman Pengguna:** Menyediakan pengalih bahasa yang intuitif dan memastikan desain serta fungsionalitas tetap konsisten di seluruh terjemahan meningkatkan keterlibatan pengunjung.
|
|
42
|
+
- **Pemeliharaan Seiring Waktu:** Saat situs Anda berkembang, menjaga terjemahan tetap sinkron dengan pembaruan konten bisa menjadi tantangan tanpa alat dan alur kerja yang tepat.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Solusi i18n Terdepan untuk Drupal
|
|
47
|
+
|
|
48
|
+
Berikut adalah beberapa pendekatan populer untuk mengelola konten multibahasa di Drupal:
|
|
49
|
+
|
|
50
|
+
### 1. Modul Multibahasa Inti Drupal
|
|
51
|
+
|
|
52
|
+
**Ikhtisar:**
|
|
53
|
+
Sejak Drupal 8, dukungan multibahasa telah menjadi fitur bawaan, bukan sekadar tambahan. Dengan mengaktifkan serangkaian modul inti, Anda dapat mengubah situs Drupal Anda menjadi platform multibahasa yang kuat. Empat modul penting tersebut adalah:
|
|
54
|
+
|
|
55
|
+
- **Modul Bahasa:** Memungkinkan Anda menambahkan dan mengelola bahasa.
|
|
56
|
+
- **Modul Terjemahan Konten:** Memungkinkan terjemahan node dan jenis konten lainnya.
|
|
57
|
+
- **Modul Terjemahan Konfigurasi:** Memfasilitasi terjemahan konfigurasi situs, seperti views dan menu.
|
|
58
|
+
- **Modul Terjemahan Antarmuka:** Menyediakan terjemahan untuk antarmuka Drupal dan teks modul kontribusi.
|
|
59
|
+
|
|
60
|
+
**Fitur Utama:**
|
|
61
|
+
|
|
62
|
+
- **Integrasi Mulus:** Dibangun langsung ke dalam inti, modul-modul ini bekerja selaras dengan arsitektur situs Anda.
|
|
63
|
+
- **Kontrol Granular:** Tentukan jenis konten dan elemen konfigurasi mana yang harus dapat diterjemahkan.
|
|
64
|
+
- **SEO-Friendly:** Menyediakan jalur spesifik bahasa, dukungan hreflang, dan sitemap yang dilokalisasi langsung dari kotak.
|
|
65
|
+
|
|
66
|
+
**Keunggulan:**
|
|
67
|
+
|
|
68
|
+
- Tidak ada biaya tambahan, karena kemampuan ini sudah termasuk dalam Drupal Core.
|
|
69
|
+
- Didukung dan dipelihara oleh komunitas Drupal.
|
|
70
|
+
- Menyediakan pendekatan seragam untuk mengelola terjemahan.
|
|
71
|
+
|
|
72
|
+
**Pertimbangan:**
|
|
73
|
+
|
|
74
|
+
- Meskipun kuat, pengaturan awal mungkin terasa kompleks karena banyak modul dan pengaturan konfigurasi.
|
|
75
|
+
- Kebutuhan alur kerja lanjutan mungkin memerlukan alat tambahan.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### 2. Translation Management Tool (TMGMT)
|
|
80
|
+
|
|
81
|
+
**Ikhtisar:**
|
|
82
|
+
Untuk situs yang memerlukan alur kerja terjemahan yang efisien atau integrasi dengan layanan terjemahan profesional, modul Translation Management Tool (TMGMT) adalah pelengkap yang sangat baik untuk sistem multibahasa Drupal Core.
|
|
83
|
+
|
|
84
|
+
**Fitur Utama:**
|
|
85
|
+
|
|
86
|
+
- **Manajemen Alur Kerja:** Menyediakan antarmuka yang ramah pengguna untuk mengelola alur kerja terjemahan.
|
|
87
|
+
- **Integrasi Layanan:** Terhubung dengan layanan terjemahan profesional untuk terjemahan otomatis atau yang dikelola.
|
|
88
|
+
- **Kolaborasi:** Memfasilitasi koordinasi antara tim internal dan penerjemah eksternal.
|
|
89
|
+
|
|
90
|
+
**Keunggulan:**
|
|
91
|
+
|
|
92
|
+
- Ideal untuk situs dengan pembaruan konten yang sering atau dalam skala besar.
|
|
93
|
+
- Meningkatkan pengalaman multibahasa bawaan dengan kontrol terjemahan yang lebih baik.
|
|
94
|
+
- Mendukung banyak bahasa dan alur kerja terjemahan yang kompleks.
|
|
95
|
+
|
|
96
|
+
**Pertimbangan:**
|
|
97
|
+
|
|
98
|
+
- Sebagai modul kontribusi, modul ini memerlukan pemeriksaan kompatibilitas dengan versi Drupal Anda.
|
|
99
|
+
- Fitur lanjutan mungkin memerlukan konfigurasi dan berpotensi tim terjemahan khusus.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### 3. Solusi i18n Kustom Melalui Kode
|
|
104
|
+
|
|
105
|
+
**Gambaran Umum:**
|
|
106
|
+
Untuk pengembang dengan kebutuhan unik atau kebutuhan kontrol penuh, implementasi i18n kustom mungkin merupakan jalur terbaik ke depan. Drupal menawarkan beberapa API dan hook yang memungkinkan Anda menyesuaikan strategi multibahasa Anda.
|
|
107
|
+
|
|
108
|
+
**Teknik Utama:**
|
|
109
|
+
|
|
110
|
+
- **Manfaatkan API Drupal:** Gunakan fungsi seperti `t()` untuk menerjemahkan string di seluruh tema dan modul.
|
|
111
|
+
- **Integrasi REST API:** Bangun endpoint kustom untuk menangani terjemahan dinamis atau mengintegrasikan layanan terjemahan eksternal.
|
|
112
|
+
- **Alur Kerja yang Disesuaikan:** Buat solusi khusus yang sesuai dengan arsitektur situs Anda dan kebutuhan multibahasa spesifik.
|
|
113
|
+
|
|
114
|
+
**Keuntungan:**
|
|
115
|
+
|
|
116
|
+
- Fleksibilitas penuh untuk mengembangkan solusi yang sesuai dengan kebutuhan Anda secara tepat.
|
|
117
|
+
- Mengurangi ketergantungan pada modul pihak ketiga, yang berpotensi meningkatkan performa.
|
|
118
|
+
- Integrasi mendalam dengan fitur kustom situs Anda memungkinkan.
|
|
119
|
+
|
|
120
|
+
**Pertimbangan:**
|
|
121
|
+
|
|
122
|
+
- Memerlukan keahlian pengembangan yang solid dan pemeliharaan berkelanjutan.
|
|
123
|
+
- Solusi kustom mungkin meningkatkan waktu dan kompleksitas pengaturan awal.
|
|
124
|
+
- Tidak ideal untuk proyek dengan sumber daya teknis terbatas atau tenggat waktu penerapan yang mendesak.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Memilih Solusi i18n yang Tepat untuk Situs Drupal Anda
|
|
129
|
+
|
|
130
|
+
Saat memutuskan pendekatan i18n untuk situs Drupal Anda, pertimbangkan faktor-faktor berikut:
|
|
131
|
+
|
|
132
|
+
- **Anggaran:** Modul multibahasa Drupal Core tersedia gratis mulai Drupal 8 ke atas, sementara modul tambahan seperti TMGMT mungkin memiliki biaya terkait (untuk layanan terjemahan atau fitur lanjutan).
|
|
133
|
+
- **Keahlian Teknis:** Non-developer mungkin menghargai fitur kuat yang siap pakai dari Drupal Core, sedangkan developer mungkin lebih menyukai presisi yang ditawarkan oleh solusi kustom.
|
|
134
|
+
- **Kompleksitas dan Skala Situs:** Untuk situs kompleks dengan banyak tipe konten dan kebutuhan SEO lanjutan, memanfaatkan modul inti Drupal bersama TMGMT bisa menjadi pilihan ideal. Untuk situs yang lebih kecil atau sederhana, modul inti saja mungkin sudah cukup.
|
|
135
|
+
- **Pemeliharaan dan Pertumbuhan Masa Depan:** Pastikan solusi yang Anda pilih dapat diskalakan dan dapat beradaptasi dengan perubahan konten atau desain di masa depan tanpa beban yang signifikan.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Kesimpulan
|
|
140
|
+
|
|
141
|
+
Menerjemahkan situs Drupal Anda melibatkan lebih dari sekadar mengonversi teks; ini tentang menghubungkan dengan audiens global, meningkatkan pengalaman pengguna, dan mengoptimalkan untuk performa pencarian internasional. Apakah Anda memanfaatkan fitur multibahasa yang kuat yang sudah terintegrasi dalam Drupal Core, melengkapinya dengan Translation Management Tool, atau berinvestasi dalam solusi yang dikodekan khusus, kunci utamanya adalah memilih pendekatan yang sesuai dengan tujuan proyek dan sumber daya Anda.
|
|
142
|
+
|
|
143
|
+
Dengan mengevaluasi opsi Anda secara cermat dan merencanakan pemeliharaan jangka panjang, Anda dapat membuat situs Drupal multibahasa yang skalabel dan efektif beresonansi dengan pengguna di seluruh dunia. Selamat menerjemahkan, dan semoga sukses internasional untuk situs Anda!
|