@intlayer/docs 8.1.7 → 8.1.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/README.md +2 -3
- package/blog/ar/i18n_meaning.md +124 -0
- package/blog/ar/l10n_platform_alternative/Lokalise.md +5 -5
- package/blog/ar/l10n_platform_alternative/crowdin.md +4 -10
- package/blog/ar/l10n_platform_alternative/phrase.md +2 -6
- package/blog/ar/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/ar/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/ar/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/ar/rag_powered_documentation_assistant.md +1 -1
- package/blog/de/i18n_meaning.md +124 -0
- package/blog/de/l10n_platform_alternative/Lokalise.md +5 -9
- package/blog/de/l10n_platform_alternative/crowdin.md +4 -4
- package/blog/de/l10n_platform_alternative/phrase.md +2 -6
- package/blog/de/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/de/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/de/per-component_vs_centralized_i18n.md +2 -2
- package/blog/de/rag_powered_documentation_assistant.md +1 -1
- package/blog/en/i18n_meaning.md +124 -0
- package/blog/en/intlayer_with_i18next.md +3 -3
- package/blog/en/intlayer_with_next-i18next.md +3 -3
- package/blog/en/intlayer_with_next-intl.md +3 -3
- package/blog/en/intlayer_with_react-i18next.md +3 -3
- package/blog/en/intlayer_with_react-intl.md +3 -3
- package/blog/en/intlayer_with_vue-i18n.md +3 -3
- package/blog/en/l10n_platform_alternative/Lokalise.md +5 -5
- package/blog/en/l10n_platform_alternative/crowdin.md +4 -4
- package/blog/en/l10n_platform_alternative/phrase.md +2 -2
- package/blog/en/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/en/rag_powered_documentation_assistant.md +1 -2
- package/blog/en-GB/compiler_vs_declarative_i18n.md +2 -2
- package/blog/en-GB/i18n_meaning.md +124 -0
- package/blog/en-GB/intlayer_with_i18next.md +1 -1
- package/blog/en-GB/intlayer_with_next-i18next.md +1 -1
- package/blog/en-GB/intlayer_with_next-intl.md +1 -1
- package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
- package/blog/en-GB/intlayer_with_react-intl.md +1 -1
- package/blog/en-GB/intlayer_with_vue-i18n.md +1 -1
- package/blog/en-GB/l10n_platform_alternative/Lokalise.md +5 -5
- package/blog/en-GB/l10n_platform_alternative/crowdin.md +4 -4
- package/blog/en-GB/l10n_platform_alternative/phrase.md +2 -2
- package/blog/en-GB/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/en-GB/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/en-GB/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/en-GB/rag_powered_documentation_assistant.md +1 -1
- package/blog/es/i18n_meaning.md +124 -0
- package/blog/es/l10n_platform_alternative/Lokalise.md +4 -4
- package/blog/es/l10n_platform_alternative/crowdin.md +14 -19
- package/blog/es/l10n_platform_alternative/phrase.md +2 -8
- package/blog/es/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/es/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/es/rag_powered_documentation_assistant.md +1 -1
- package/blog/fr/compiler_vs_declarative_i18n.md +1 -1
- package/blog/fr/i18n_meaning.md +23 -0
- package/blog/fr/l10n_platform_alternative/Lokalise.md +6 -10
- package/blog/fr/l10n_platform_alternative/crowdin.md +4 -10
- package/blog/fr/l10n_platform_alternative/phrase.md +11 -24
- package/blog/fr/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/fr/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/fr/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/fr/rag_powered_documentation_assistant.md +1 -1
- package/blog/hi/compiler_vs_declarative_i18n.md +2 -2
- package/blog/hi/i18n_meaning.md +124 -0
- package/blog/hi/l10n_platform_alternative/Lokalise.md +5 -11
- package/blog/hi/l10n_platform_alternative/crowdin.md +13 -17
- package/blog/hi/l10n_platform_alternative/phrase.md +2 -2
- package/blog/hi/list_i18n_technologies/frameworks/angular.md +25 -3
- package/blog/hi/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/hi/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/hi/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/hi/per-component_vs_centralized_i18n.md +3 -3
- package/blog/hi/rag_powered_documentation_assistant.md +1 -1
- package/blog/id/compiler_vs_declarative_i18n.md +2 -2
- package/blog/id/i18n_meaning.md +124 -0
- package/blog/id/l10n_platform_alternative/Lokalise.md +5 -11
- package/blog/id/l10n_platform_alternative/crowdin.md +4 -8
- package/blog/id/l10n_platform_alternative/phrase.md +11 -22
- package/blog/id/list_i18n_technologies/frameworks/angular.md +25 -3
- package/blog/id/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/id/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/id/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/id/rag_powered_documentation_assistant.md +1 -1
- package/blog/id/vue-i18n_vs_intlayer.md +1 -1
- package/blog/it/compiler_vs_declarative_i18n.md +1 -1
- package/blog/it/i18n_meaning.md +124 -0
- package/blog/it/l10n_platform_alternative/Lokalise.md +5 -9
- package/blog/it/l10n_platform_alternative/crowdin.md +4 -10
- package/blog/it/l10n_platform_alternative/phrase.md +2 -6
- package/blog/it/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/it/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/it/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/it/rag_powered_documentation_assistant.md +1 -1
- package/blog/ja/i18n_meaning.md +124 -0
- package/blog/ja/l10n_platform_alternative/phrase.md +3 -2
- package/blog/ja/list_i18n_technologies/frameworks/angular.md +1 -1
- package/blog/ja/list_i18n_technologies/frameworks/react-native.md +6 -9
- package/blog/ja/list_i18n_technologies/frameworks/react.md +3 -2
- package/blog/ja/list_i18n_technologies/frameworks/svelte.md +27 -6
- package/blog/ja/list_i18n_technologies/frameworks/vue.md +29 -15
- package/blog/ja/per-component_vs_centralized_i18n.md +1 -1
- package/blog/ko/i18n_meaning.md +124 -0
- package/blog/ko/l10n_platform_alternative/Lokalise.md +2 -2
- package/blog/ko/l10n_platform_alternative/crowdin.md +11 -17
- package/blog/ko/l10n_platform_alternative/phrase.md +5 -5
- package/blog/ko/list_i18n_technologies/frameworks/angular.md +26 -3
- package/blog/ko/list_i18n_technologies/frameworks/react-native.md +35 -39
- package/blog/ko/list_i18n_technologies/frameworks/react.md +24 -24
- package/blog/ko/list_i18n_technologies/frameworks/svelte.md +28 -7
- package/blog/ko/list_i18n_technologies/frameworks/vue.md +22 -2
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/ko/per-component_vs_centralized_i18n.md +1 -1
- package/blog/pl/compiler_vs_declarative_i18n.md +2 -2
- package/blog/pl/i18n_meaning.md +124 -0
- package/blog/pl/l10n_platform_alternative/Lokalise.md +6 -16
- package/blog/pl/l10n_platform_alternative/crowdin.md +5 -5
- package/blog/pl/l10n_platform_alternative/phrase.md +4 -8
- package/blog/pl/list_i18n_technologies/frameworks/angular.md +26 -4
- package/blog/pl/list_i18n_technologies/frameworks/react-native.md +2 -2
- package/blog/pl/list_i18n_technologies/frameworks/react.md +1 -1
- package/blog/pl/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/pl/list_i18n_technologies/frameworks/vue.md +18 -4
- package/blog/pl/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/pl/per-component_vs_centralized_i18n.md +4 -4
- package/blog/pl/rag_powered_documentation_assistant.md +1 -1
- package/blog/pl/vue-i18n_vs_intlayer.md +1 -1
- package/blog/pt/compiler_vs_declarative_i18n.md +1 -1
- package/blog/pt/i18n_meaning.md +124 -0
- package/blog/pt/l10n_platform_alternative/Lokalise.md +5 -5
- package/blog/pt/l10n_platform_alternative/crowdin.md +13 -13
- package/blog/pt/l10n_platform_alternative/phrase.md +2 -2
- package/blog/pt/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/pt/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/pt/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/pt/per-component_vs_centralized_i18n.md +1 -1
- package/blog/pt/rag_powered_documentation_assistant.md +1 -1
- package/blog/ru/compiler_vs_declarative_i18n.md +9 -9
- package/blog/ru/i18n_meaning.md +124 -0
- package/blog/ru/i18n_using_next-i18next.md +3 -3
- package/blog/ru/i18n_using_next-intl.md +6 -6
- package/blog/ru/intlayer_with_i18next.md +1 -1
- package/blog/ru/intlayer_with_next-i18next.md +2 -2
- package/blog/ru/intlayer_with_next-intl.md +1 -1
- package/blog/ru/intlayer_with_react-i18next.md +1 -1
- package/blog/ru/intlayer_with_react-intl.md +1 -1
- package/blog/ru/intlayer_with_vue-i18n.md +1 -1
- package/blog/ru/l10n_platform_alternative/Lokalise.md +10 -10
- package/blog/ru/l10n_platform_alternative/crowdin.md +20 -26
- package/blog/ru/l10n_platform_alternative/phrase.md +16 -20
- package/blog/ru/list_i18n_technologies/frameworks/angular.md +26 -4
- package/blog/ru/list_i18n_technologies/frameworks/react.md +1 -1
- package/blog/ru/list_i18n_technologies/frameworks/svelte.md +26 -4
- package/blog/ru/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +9 -9
- package/blog/ru/nextjs-multilingual-seo-comparison.md +7 -7
- package/blog/ru/per-component_vs_centralized_i18n.md +3 -3
- package/blog/ru/rag_powered_documentation_assistant.md +9 -9
- package/blog/ru/what_is_internationalization.md +1 -1
- package/blog/tr/compiler_vs_declarative_i18n.md +2 -2
- package/blog/tr/i18n_meaning.md +124 -0
- package/blog/tr/l10n_platform_alternative/Lokalise.md +4 -4
- package/blog/tr/l10n_platform_alternative/crowdin.md +3 -3
- package/blog/tr/l10n_platform_alternative/phrase.md +10 -21
- package/blog/tr/list_i18n_technologies/frameworks/angular.md +25 -3
- package/blog/tr/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/tr/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/tr/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/tr/rag_powered_documentation_assistant.md +1 -1
- package/blog/uk/compiler_vs_declarative_i18n.md +12 -12
- package/blog/uk/i18n_meaning.md +124 -0
- package/blog/uk/i18n_using_next-i18next.md +10 -10
- package/blog/uk/i18n_using_next-intl.md +7 -7
- package/blog/uk/internationalization_and_SEO.md +11 -11
- package/blog/uk/intlayer_with_i18next.md +2 -2
- package/blog/uk/intlayer_with_next-i18next.md +3 -3
- package/blog/uk/intlayer_with_next-intl.md +2 -2
- package/blog/uk/intlayer_with_react-i18next.md +2 -2
- package/blog/uk/intlayer_with_react-intl.md +2 -2
- package/blog/uk/intlayer_with_vue-i18n.md +2 -2
- package/blog/uk/l10n_platform_alternative/Lokalise.md +9 -9
- package/blog/uk/l10n_platform_alternative/crowdin.md +10 -10
- package/blog/uk/l10n_platform_alternative/phrase.md +9 -9
- package/blog/uk/list_i18n_technologies/frameworks/angular.md +31 -9
- package/blog/uk/list_i18n_technologies/frameworks/react-native.md +6 -6
- package/blog/uk/list_i18n_technologies/frameworks/react.md +6 -6
- package/blog/uk/list_i18n_technologies/frameworks/svelte.md +4 -4
- package/blog/uk/list_i18n_technologies/frameworks/vue.md +6 -6
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +13 -13
- package/blog/uk/nextjs-multilingual-seo-comparison.md +8 -8
- package/blog/uk/per-component_vs_centralized_i18n.md +3 -3
- package/blog/uk/rag_powered_documentation_assistant.md +11 -11
- package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +5 -5
- package/blog/uk/vue-i18n_vs_intlayer.md +5 -5
- package/blog/uk/what_is_internationalization.md +4 -4
- package/blog/vi/compiler_vs_declarative_i18n.md +1 -1
- package/blog/vi/i18n_meaning.md +124 -0
- package/blog/vi/l10n_platform_alternative/Lokalise.md +14 -21
- package/blog/vi/l10n_platform_alternative/crowdin.md +4 -4
- package/blog/vi/l10n_platform_alternative/phrase.md +2 -6
- package/blog/vi/list_i18n_technologies/frameworks/angular.md +25 -3
- package/blog/vi/list_i18n_technologies/frameworks/svelte.md +25 -3
- package/blog/vi/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/vi/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/vi/per-component_vs_centralized_i18n.md +1 -1
- package/blog/vi/rag_powered_documentation_assistant.md +1 -1
- package/blog/zh/compiler_vs_declarative_i18n.md +2 -2
- package/blog/zh/i18n_meaning.md +124 -0
- package/blog/zh/internationalization_and_SEO.md +5 -5
- package/blog/zh/l10n_platform_alternative/Lokalise.md +23 -23
- package/blog/zh/l10n_platform_alternative/crowdin.md +28 -32
- package/blog/zh/l10n_platform_alternative/phrase.md +32 -38
- package/blog/zh/list_i18n_technologies/frameworks/angular.md +28 -6
- package/blog/zh/list_i18n_technologies/frameworks/react-native.md +10 -14
- package/blog/zh/list_i18n_technologies/frameworks/react.md +5 -5
- package/blog/zh/list_i18n_technologies/frameworks/svelte.md +23 -7
- package/blog/zh/list_i18n_technologies/frameworks/vue.md +20 -6
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
- package/blog/zh/nextjs-multilingual-seo-comparison.md +1 -1
- package/blog/zh/rag_powered_documentation_assistant.md +1 -1
- package/blog/zh/what_is_internationalization.md +1 -1
- package/dist/cjs/generated/blog.entry.cjs +1 -1
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +1 -1
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/docs/ar/agent_skills.md +2 -0
- package/docs/ar/compiler.md +55 -3
- package/docs/ar/component_i18n.md +2 -2
- package/docs/ar/configuration.md +68 -1
- package/docs/ar/dictionary/content_file.md +1 -1
- package/docs/ar/index.md +2 -2
- package/docs/ar/intlayer_CMS.md +1 -1
- package/docs/ar/intlayer_with_adonisjs.md +1 -1
- package/docs/ar/intlayer_with_analog.md +1 -1
- package/docs/ar/intlayer_with_angular.md +1 -1
- package/docs/ar/intlayer_with_astro.md +1 -1
- package/docs/ar/intlayer_with_create_react_app.md +1 -1
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_fastify.md +1 -1
- package/docs/ar/intlayer_with_hono.md +1 -1
- package/docs/ar/intlayer_with_lynx+react.md +1 -1
- package/docs/ar/intlayer_with_nestjs.md +1 -1
- package/docs/ar/intlayer_with_next-i18next.md +2 -2
- package/docs/ar/intlayer_with_next-intl.md +2 -2
- package/docs/ar/intlayer_with_nextjs_14.md +1 -1
- package/docs/ar/intlayer_with_nextjs_15.md +1 -1
- package/docs/ar/intlayer_with_nextjs_16.md +3 -1
- package/docs/ar/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +2 -2
- package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ar/intlayer_with_nuxt.md +1 -1
- package/docs/ar/intlayer_with_react_native+expo.md +4 -2
- package/docs/ar/intlayer_with_react_router_v7.md +4 -2
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/ar/intlayer_with_svelte_kit.md +1 -1
- package/docs/ar/intlayer_with_tanstack.md +1 -1
- package/docs/ar/intlayer_with_vite+preact.md +3 -1
- package/docs/ar/intlayer_with_vite+react.md +3 -1
- package/docs/ar/intlayer_with_vite+react_compiler.md +21 -5
- package/docs/ar/intlayer_with_vite+solid.md +1 -1
- package/docs/ar/intlayer_with_vite+svelte.md +3 -1
- package/docs/ar/intlayer_with_vite+vue.md +3 -1
- package/docs/ar/introduction.md +2 -2
- package/docs/ar/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/de/agent_skills.md +2 -0
- package/docs/de/cli/init.md +1 -1
- package/docs/de/compiler.md +53 -1
- package/docs/de/component_i18n.md +2 -2
- package/docs/de/configuration.md +68 -1
- package/docs/de/dictionary/content_file.md +1 -1
- package/docs/de/index.md +2 -2
- package/docs/de/intlayer_with_adonisjs.md +1 -1
- package/docs/de/intlayer_with_analog.md +1 -1
- package/docs/de/intlayer_with_angular.md +1 -1
- package/docs/de/intlayer_with_astro.md +1 -1
- package/docs/de/intlayer_with_create_react_app.md +1 -1
- package/docs/de/intlayer_with_express.md +1 -1
- package/docs/de/intlayer_with_fastify.md +1 -1
- package/docs/de/intlayer_with_hono.md +1 -1
- package/docs/de/intlayer_with_lynx+react.md +1 -1
- package/docs/de/intlayer_with_nestjs.md +1 -1
- package/docs/de/intlayer_with_next-i18next.md +2 -2
- package/docs/de/intlayer_with_next-intl.md +1 -1
- package/docs/de/intlayer_with_nextjs_14.md +1 -1
- package/docs/de/intlayer_with_nextjs_15.md +1 -1
- package/docs/de/intlayer_with_nextjs_16.md +3 -1
- package/docs/de/intlayer_with_nextjs_compiler.md +22 -5
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +2 -2
- package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/de/intlayer_with_nuxt.md +1 -1
- package/docs/de/intlayer_with_react_native+expo.md +4 -2
- package/docs/de/intlayer_with_react_router_v7.md +4 -2
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/de/intlayer_with_svelte_kit.md +1 -1
- package/docs/de/intlayer_with_tanstack.md +1 -1
- package/docs/de/intlayer_with_vite+preact.md +3 -1
- package/docs/de/intlayer_with_vite+react.md +3 -1
- package/docs/de/intlayer_with_vite+react_compiler.md +21 -5
- package/docs/de/intlayer_with_vite+solid.md +1 -1
- package/docs/de/intlayer_with_vite+svelte.md +3 -1
- package/docs/de/intlayer_with_vite+vue.md +3 -1
- package/docs/de/introduction.md +2 -2
- package/docs/de/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/en/agent_skills.md +2 -0
- package/docs/en/compiler.md +53 -1
- package/docs/en/component_i18n.md +2 -2
- package/docs/en/configuration.md +16 -1
- package/docs/en/index.md +2 -2
- package/docs/en/intlayer_CMS.md +1 -1
- package/docs/en/intlayer_with_adonisjs.md +1 -1
- package/docs/en/intlayer_with_analog.md +1 -1
- package/docs/en/intlayer_with_angular.md +1 -1
- package/docs/en/intlayer_with_astro.md +1 -1
- package/docs/en/intlayer_with_create_react_app.md +1 -1
- package/docs/en/intlayer_with_express.md +1 -1
- package/docs/en/intlayer_with_fastify.md +1 -1
- package/docs/en/intlayer_with_hono.md +1 -1
- package/docs/en/intlayer_with_lynx+react.md +1 -1
- package/docs/en/intlayer_with_nestjs.md +1 -1
- package/docs/en/intlayer_with_next-i18next.md +2 -2
- package/docs/en/intlayer_with_next-intl.md +1 -1
- package/docs/en/intlayer_with_nextjs_14.md +2 -2
- package/docs/en/intlayer_with_nextjs_15.md +2 -2
- package/docs/en/intlayer_with_nextjs_16.md +4 -2
- package/docs/en/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/en/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/en/intlayer_with_nuxt.md +2 -2
- package/docs/en/intlayer_with_react_native+expo.md +5 -3
- package/docs/en/intlayer_with_react_router_v7.md +4 -2
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/en/intlayer_with_svelte_kit.md +1 -1
- package/docs/en/intlayer_with_tanstack.md +1 -1
- package/docs/en/intlayer_with_vite+preact.md +3 -1
- package/docs/en/intlayer_with_vite+react.md +3 -1
- package/docs/en/intlayer_with_vite+react_compiler.md +22 -5
- package/docs/en/intlayer_with_vite+solid.md +1 -1
- package/docs/en/intlayer_with_vite+svelte.md +3 -1
- package/docs/en/intlayer_with_vite+vue.md +3 -1
- package/docs/en/introduction.md +2 -2
- package/docs/en/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/en-GB/agent_skills.md +2 -0
- package/docs/en-GB/cli/init.md +1 -1
- package/docs/en-GB/compiler.md +55 -3
- package/docs/en-GB/component_i18n.md +2 -2
- package/docs/en-GB/configuration.md +68 -1
- package/docs/en-GB/dictionary/content_file.md +1 -1
- package/docs/en-GB/index.md +2 -2
- package/docs/en-GB/intlayer_CMS.md +1 -1
- package/docs/en-GB/intlayer_with_adonisjs.md +1 -1
- package/docs/en-GB/intlayer_with_analog.md +1 -1
- package/docs/en-GB/intlayer_with_angular.md +1 -1
- package/docs/en-GB/intlayer_with_astro.md +1 -1
- package/docs/en-GB/intlayer_with_create_react_app.md +1 -1
- package/docs/en-GB/intlayer_with_express.md +1 -1
- package/docs/en-GB/intlayer_with_fastify.md +1 -1
- package/docs/en-GB/intlayer_with_hono.md +1 -1
- package/docs/en-GB/intlayer_with_lynx+react.md +1 -1
- package/docs/en-GB/intlayer_with_nestjs.md +1 -1
- package/docs/en-GB/intlayer_with_next-i18next.md +2 -2
- package/docs/en-GB/intlayer_with_next-intl.md +2 -2
- package/docs/en-GB/intlayer_with_nextjs_14.md +2 -2
- package/docs/en-GB/intlayer_with_nextjs_15.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +16 -16
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en-GB/intlayer_with_nuxt.md +2 -2
- package/docs/en-GB/intlayer_with_react_native+expo.md +2 -2
- package/docs/en-GB/intlayer_with_react_router_v7.md +2 -2
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/en-GB/intlayer_with_svelte_kit.md +2 -2
- package/docs/en-GB/intlayer_with_tanstack.md +1 -1
- package/docs/en-GB/intlayer_with_vite+preact.md +1 -1
- package/docs/en-GB/intlayer_with_vite+react.md +1 -1
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +2 -3
- package/docs/en-GB/intlayer_with_vite+solid.md +1 -1
- package/docs/en-GB/intlayer_with_vite+svelte.md +1 -1
- package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
- package/docs/en-GB/introduction.md +2 -2
- package/docs/en-GB/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/en-GB/readme.md +1 -1
- package/docs/es/agent_skills.md +2 -0
- package/docs/es/compiler.md +53 -1
- package/docs/es/component_i18n.md +2 -2
- package/docs/es/configuration.md +68 -1
- package/docs/es/dictionary/content_file.md +1 -1
- package/docs/es/index.md +2 -2
- package/docs/es/intlayer_with_adonisjs.md +1 -1
- package/docs/es/intlayer_with_analog.md +1 -1
- package/docs/es/intlayer_with_angular.md +1 -1
- package/docs/es/intlayer_with_astro.md +1 -1
- package/docs/es/intlayer_with_create_react_app.md +1 -1
- package/docs/es/intlayer_with_express.md +1 -1
- package/docs/es/intlayer_with_fastify.md +1 -1
- package/docs/es/intlayer_with_hono.md +1 -1
- package/docs/es/intlayer_with_lynx+react.md +1 -1
- package/docs/es/intlayer_with_nestjs.md +1 -1
- package/docs/es/intlayer_with_next-i18next.md +2 -2
- package/docs/es/intlayer_with_next-intl.md +1 -1
- package/docs/es/intlayer_with_nextjs_14.md +1 -1
- package/docs/es/intlayer_with_nextjs_15.md +1 -1
- package/docs/es/intlayer_with_nextjs_16.md +3 -1
- package/docs/es/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +6 -6
- package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/es/intlayer_with_nuxt.md +1 -1
- package/docs/es/intlayer_with_react_native+expo.md +5 -3
- package/docs/es/intlayer_with_react_router_v7.md +4 -2
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/es/intlayer_with_svelte_kit.md +1 -1
- package/docs/es/intlayer_with_tanstack.md +1 -1
- package/docs/es/intlayer_with_vite+preact.md +3 -1
- package/docs/es/intlayer_with_vite+react.md +3 -1
- package/docs/es/intlayer_with_vite+react_compiler.md +21 -5
- package/docs/es/intlayer_with_vite+solid.md +1 -1
- package/docs/es/intlayer_with_vite+svelte.md +3 -1
- package/docs/es/intlayer_with_vite+vue.md +3 -1
- package/docs/es/introduction.md +2 -2
- package/docs/es/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/fr/agent_skills.md +2 -0
- package/docs/fr/compiler.md +56 -4
- package/docs/fr/component_i18n.md +2 -2
- package/docs/fr/configuration.md +68 -1
- package/docs/fr/dictionary/content_file.md +1 -1
- package/docs/fr/index.md +2 -2
- package/docs/fr/intlayer_CMS.md +1 -1
- package/docs/fr/intlayer_with_adonisjs.md +1 -1
- package/docs/fr/intlayer_with_analog.md +1 -1
- package/docs/fr/intlayer_with_angular.md +1 -1
- package/docs/fr/intlayer_with_astro.md +1 -1
- package/docs/fr/intlayer_with_create_react_app.md +1 -1
- package/docs/fr/intlayer_with_express.md +1 -1
- package/docs/fr/intlayer_with_fastify.md +1 -1
- package/docs/fr/intlayer_with_hono.md +1 -1
- package/docs/fr/intlayer_with_lynx+react.md +1 -1
- package/docs/fr/intlayer_with_nestjs.md +1 -1
- package/docs/fr/intlayer_with_next-i18next.md +2 -2
- package/docs/fr/intlayer_with_next-intl.md +1 -1
- package/docs/fr/intlayer_with_nextjs_14.md +1 -1
- package/docs/fr/intlayer_with_nextjs_15.md +1 -1
- package/docs/fr/intlayer_with_nextjs_16.md +3 -1
- package/docs/fr/intlayer_with_nextjs_compiler.md +24 -7
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +2 -2
- package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/fr/intlayer_with_nuxt.md +1 -1
- package/docs/fr/intlayer_with_react_native+expo.md +5 -3
- package/docs/fr/intlayer_with_react_router_v7.md +4 -2
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/fr/intlayer_with_svelte_kit.md +2 -2
- package/docs/fr/intlayer_with_tanstack.md +1 -1
- package/docs/fr/intlayer_with_vite+preact.md +3 -1
- package/docs/fr/intlayer_with_vite+react.md +3 -1
- package/docs/fr/intlayer_with_vite+react_compiler.md +22 -6
- package/docs/fr/intlayer_with_vite+solid.md +1 -1
- package/docs/fr/intlayer_with_vite+svelte.md +3 -1
- package/docs/fr/intlayer_with_vite+vue.md +4 -2
- package/docs/fr/introduction.md +2 -2
- package/docs/fr/packages/next-intlayer/intlayerMiddleware.md +30 -7
- package/docs/hi/agent_skills.md +2 -0
- package/docs/hi/cli/init.md +1 -1
- package/docs/hi/compiler.md +55 -3
- package/docs/hi/component_i18n.md +2 -2
- package/docs/hi/configuration.md +68 -1
- package/docs/hi/dictionary/content_file.md +1 -1
- package/docs/hi/index.md +2 -2
- package/docs/hi/intlayer_CMS.md +1 -1
- package/docs/hi/intlayer_with_adonisjs.md +1 -1
- package/docs/hi/intlayer_with_analog.md +1 -1
- package/docs/hi/intlayer_with_angular.md +1 -1
- package/docs/hi/intlayer_with_astro.md +1 -1
- package/docs/hi/intlayer_with_create_react_app.md +1 -1
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_fastify.md +2 -2
- package/docs/hi/intlayer_with_hono.md +1 -1
- package/docs/hi/intlayer_with_lynx+react.md +1 -1
- package/docs/hi/intlayer_with_nestjs.md +1 -1
- package/docs/hi/intlayer_with_next-i18next.md +2 -2
- package/docs/hi/intlayer_with_next-intl.md +1 -1
- package/docs/hi/intlayer_with_nextjs_14.md +1 -1
- package/docs/hi/intlayer_with_nextjs_15.md +1 -1
- package/docs/hi/intlayer_with_nextjs_16.md +3 -1
- package/docs/hi/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +4 -4
- package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/hi/intlayer_with_nuxt.md +1 -1
- package/docs/hi/intlayer_with_react_native+expo.md +4 -2
- package/docs/hi/intlayer_with_react_router_v7.md +4 -2
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/hi/intlayer_with_svelte_kit.md +1 -1
- package/docs/hi/intlayer_with_tanstack.md +1 -1
- package/docs/hi/intlayer_with_vite+preact.md +3 -1
- package/docs/hi/intlayer_with_vite+react.md +3 -1
- package/docs/hi/intlayer_with_vite+react_compiler.md +22 -6
- package/docs/hi/intlayer_with_vite+solid.md +1 -1
- package/docs/hi/intlayer_with_vite+svelte.md +3 -1
- package/docs/hi/intlayer_with_vite+vue.md +4 -2
- package/docs/hi/introduction.md +2 -2
- package/docs/hi/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/id/agent_skills.md +2 -0
- package/docs/id/compiler.md +53 -1
- package/docs/id/component_i18n.md +2 -2
- package/docs/id/configuration.md +61 -1
- package/docs/id/dictionary/content_file.md +1 -1
- package/docs/id/index.md +2 -2
- package/docs/id/intlayer_CMS.md +1 -1
- package/docs/id/intlayer_with_adonisjs.md +1 -1
- package/docs/id/intlayer_with_analog.md +1 -1
- package/docs/id/intlayer_with_angular.md +1 -1
- package/docs/id/intlayer_with_astro.md +1 -1
- package/docs/id/intlayer_with_create_react_app.md +1 -1
- package/docs/id/intlayer_with_express.md +1 -1
- package/docs/id/intlayer_with_fastify.md +1 -1
- package/docs/id/intlayer_with_hono.md +1 -1
- package/docs/id/intlayer_with_lynx+react.md +1 -1
- package/docs/id/intlayer_with_nestjs.md +1 -1
- package/docs/id/intlayer_with_next-i18next.md +2 -2
- package/docs/id/intlayer_with_next-intl.md +1 -1
- package/docs/id/intlayer_with_nextjs_14.md +1 -1
- package/docs/id/intlayer_with_nextjs_15.md +1 -1
- package/docs/id/intlayer_with_nextjs_16.md +3 -1
- package/docs/id/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/id/intlayer_with_nuxt.md +1 -1
- package/docs/id/intlayer_with_react_native+expo.md +5 -3
- package/docs/id/intlayer_with_react_router_v7.md +4 -2
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/id/intlayer_with_svelte_kit.md +1 -1
- package/docs/id/intlayer_with_tanstack.md +1 -1
- package/docs/id/intlayer_with_vite+preact.md +3 -1
- package/docs/id/intlayer_with_vite+react.md +3 -1
- package/docs/id/intlayer_with_vite+react_compiler.md +25 -9
- package/docs/id/intlayer_with_vite+solid.md +1 -1
- package/docs/id/intlayer_with_vite+svelte.md +3 -1
- package/docs/id/intlayer_with_vite+vue.md +3 -1
- package/docs/id/introduction.md +2 -2
- package/docs/id/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/it/agent_skills.md +2 -0
- package/docs/it/compiler.md +55 -3
- package/docs/it/component_i18n.md +2 -2
- package/docs/it/configuration.md +68 -1
- package/docs/it/dictionary/content_file.md +1 -1
- package/docs/it/index.md +2 -2
- package/docs/it/intlayer_CMS.md +1 -1
- package/docs/it/intlayer_with_adonisjs.md +1 -1
- package/docs/it/intlayer_with_analog.md +1 -1
- package/docs/it/intlayer_with_angular.md +1 -1
- package/docs/it/intlayer_with_astro.md +1 -1
- package/docs/it/intlayer_with_create_react_app.md +1 -1
- package/docs/it/intlayer_with_express.md +1 -1
- package/docs/it/intlayer_with_fastify.md +1 -1
- package/docs/it/intlayer_with_hono.md +1 -1
- package/docs/it/intlayer_with_lynx+react.md +1 -1
- package/docs/it/intlayer_with_nestjs.md +1 -1
- package/docs/it/intlayer_with_next-i18next.md +2 -2
- package/docs/it/intlayer_with_next-intl.md +1 -1
- package/docs/it/intlayer_with_nextjs_14.md +1 -1
- package/docs/it/intlayer_with_nextjs_15.md +1 -1
- package/docs/it/intlayer_with_nextjs_16.md +3 -1
- package/docs/it/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +2 -2
- package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/it/intlayer_with_nuxt.md +1 -1
- package/docs/it/intlayer_with_react_native+expo.md +4 -2
- package/docs/it/intlayer_with_react_router_v7.md +4 -2
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/it/intlayer_with_svelte_kit.md +1 -1
- package/docs/it/intlayer_with_tanstack.md +1 -1
- package/docs/it/intlayer_with_vite+preact.md +3 -1
- package/docs/it/intlayer_with_vite+react.md +3 -1
- package/docs/it/intlayer_with_vite+react_compiler.md +24 -8
- package/docs/it/intlayer_with_vite+solid.md +1 -1
- package/docs/it/intlayer_with_vite+svelte.md +3 -1
- package/docs/it/intlayer_with_vite+vue.md +4 -2
- package/docs/it/introduction.md +2 -2
- package/docs/it/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/ja/agent_skills.md +2 -0
- package/docs/ja/cli/init.md +1 -1
- package/docs/ja/compiler.md +53 -1
- package/docs/ja/component_i18n.md +2 -2
- package/docs/ja/configuration.md +68 -1
- package/docs/ja/dictionary/content_file.md +1 -1
- package/docs/ja/index.md +2 -2
- package/docs/ja/intlayer_with_adonisjs.md +1 -1
- package/docs/ja/intlayer_with_analog.md +1 -1
- package/docs/ja/intlayer_with_angular.md +1 -1
- package/docs/ja/intlayer_with_astro.md +1 -1
- package/docs/ja/intlayer_with_create_react_app.md +1 -1
- package/docs/ja/intlayer_with_express.md +1 -1
- package/docs/ja/intlayer_with_fastify.md +1 -1
- package/docs/ja/intlayer_with_hono.md +1 -1
- package/docs/ja/intlayer_with_lynx+react.md +1 -1
- package/docs/ja/intlayer_with_nestjs.md +1 -1
- package/docs/ja/intlayer_with_next-i18next.md +2 -2
- package/docs/ja/intlayer_with_next-intl.md +1 -1
- package/docs/ja/intlayer_with_nextjs_14.md +1 -1
- package/docs/ja/intlayer_with_nextjs_15.md +1 -1
- package/docs/ja/intlayer_with_nextjs_16.md +3 -1
- package/docs/ja/intlayer_with_nextjs_compiler.md +22 -5
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +4 -4
- package/docs/ja/intlayer_with_nextjs_page_router.md +76 -77
- package/docs/ja/intlayer_with_nuxt.md +1 -1
- package/docs/ja/intlayer_with_react_native+expo.md +4 -2
- package/docs/ja/intlayer_with_react_router_v7.md +4 -2
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/ja/intlayer_with_svelte_kit.md +1 -1
- package/docs/ja/intlayer_with_tanstack.md +1 -1
- package/docs/ja/intlayer_with_vite+preact.md +3 -1
- package/docs/ja/intlayer_with_vite+react.md +3 -1
- package/docs/ja/intlayer_with_vite+react_compiler.md +21 -5
- package/docs/ja/intlayer_with_vite+solid.md +1 -1
- package/docs/ja/intlayer_with_vite+svelte.md +3 -1
- package/docs/ja/intlayer_with_vite+vue.md +3 -1
- package/docs/ja/introduction.md +2 -2
- package/docs/ja/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/ko/agent_skills.md +2 -0
- package/docs/ko/cli/init.md +1 -1
- package/docs/ko/compiler.md +53 -1
- package/docs/ko/component_i18n.md +2 -2
- package/docs/ko/configuration.md +68 -1
- package/docs/ko/dictionary/content_file.md +1 -1
- package/docs/ko/index.md +2 -2
- package/docs/ko/intlayer_with_adonisjs.md +1 -1
- package/docs/ko/intlayer_with_analog.md +1 -1
- package/docs/ko/intlayer_with_angular.md +1 -1
- package/docs/ko/intlayer_with_astro.md +1 -1
- package/docs/ko/intlayer_with_create_react_app.md +1 -1
- package/docs/ko/intlayer_with_express.md +1 -1
- package/docs/ko/intlayer_with_fastify.md +1 -1
- package/docs/ko/intlayer_with_hono.md +1 -1
- package/docs/ko/intlayer_with_lynx+react.md +1 -1
- package/docs/ko/intlayer_with_nestjs.md +1 -1
- package/docs/ko/intlayer_with_next-i18next.md +2 -2
- package/docs/ko/intlayer_with_next-intl.md +1 -1
- package/docs/ko/intlayer_with_nextjs_14.md +1 -1
- package/docs/ko/intlayer_with_nextjs_15.md +1 -1
- package/docs/ko/intlayer_with_nextjs_16.md +1 -1
- package/docs/ko/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +2 -2
- package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ko/intlayer_with_nuxt.md +1 -1
- package/docs/ko/intlayer_with_react_native+expo.md +2 -2
- package/docs/ko/intlayer_with_react_router_v7.md +2 -2
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/ko/intlayer_with_svelte_kit.md +1 -1
- package/docs/ko/intlayer_with_tanstack.md +1 -1
- package/docs/ko/intlayer_with_vite+preact.md +1 -1
- package/docs/ko/intlayer_with_vite+react.md +1 -1
- package/docs/ko/intlayer_with_vite+react_compiler.md +1 -2
- package/docs/ko/intlayer_with_vite+solid.md +1 -1
- package/docs/ko/intlayer_with_vite+svelte.md +1 -1
- package/docs/ko/intlayer_with_vite+vue.md +1 -1
- package/docs/ko/introduction.md +2 -2
- package/docs/ko/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/pl/agent_skills.md +2 -0
- package/docs/pl/cli/init.md +1 -1
- package/docs/pl/compiler.md +53 -1
- package/docs/pl/component_i18n.md +2 -2
- package/docs/pl/configuration.md +61 -1
- package/docs/pl/dictionary/content_file.md +1 -1
- package/docs/pl/index.md +2 -2
- package/docs/pl/intlayer_CMS.md +1 -1
- package/docs/pl/intlayer_with_adonisjs.md +1 -1
- package/docs/pl/intlayer_with_analog.md +1 -1
- package/docs/pl/intlayer_with_angular.md +1 -1
- package/docs/pl/intlayer_with_astro.md +1 -1
- package/docs/pl/intlayer_with_create_react_app.md +1 -1
- package/docs/pl/intlayer_with_express.md +1 -1
- package/docs/pl/intlayer_with_fastify.md +1 -1
- package/docs/pl/intlayer_with_hono.md +1 -1
- package/docs/pl/intlayer_with_lynx+react.md +1 -1
- package/docs/pl/intlayer_with_nestjs.md +1 -1
- package/docs/pl/intlayer_with_next-i18next.md +2 -2
- package/docs/pl/intlayer_with_next-intl.md +1 -1
- package/docs/pl/intlayer_with_nextjs_14.md +1 -1
- package/docs/pl/intlayer_with_nextjs_15.md +1 -1
- package/docs/pl/intlayer_with_nextjs_16.md +3 -1
- package/docs/pl/intlayer_with_nextjs_compiler.md +24 -7
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +6 -6
- package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pl/intlayer_with_nuxt.md +1 -1
- package/docs/pl/intlayer_with_react_native+expo.md +5 -3
- package/docs/pl/intlayer_with_react_router_v7.md +4 -2
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +5 -3
- package/docs/pl/intlayer_with_svelte_kit.md +1 -1
- package/docs/pl/intlayer_with_tanstack.md +1 -1
- package/docs/pl/intlayer_with_vite+preact.md +3 -1
- package/docs/pl/intlayer_with_vite+react.md +3 -1
- package/docs/pl/intlayer_with_vite+react_compiler.md +25 -9
- package/docs/pl/intlayer_with_vite+solid.md +1 -1
- package/docs/pl/intlayer_with_vite+svelte.md +3 -1
- package/docs/pl/intlayer_with_vite+vue.md +4 -2
- package/docs/pl/introduction.md +2 -2
- package/docs/pl/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/pl/packages/preact-intlayer/exports.md +1 -1
- package/docs/pl/releases/v8.md +3 -3
- package/docs/pt/agent_skills.md +2 -0
- package/docs/pt/cli/init.md +1 -1
- package/docs/pt/compiler.md +53 -1
- package/docs/pt/component_i18n.md +2 -2
- package/docs/pt/configuration.md +68 -1
- package/docs/pt/dictionary/content_file.md +1 -1
- package/docs/pt/index.md +2 -2
- package/docs/pt/intlayer_CMS.md +1 -1
- package/docs/pt/intlayer_with_adonisjs.md +1 -1
- package/docs/pt/intlayer_with_analog.md +1 -1
- package/docs/pt/intlayer_with_angular.md +1 -1
- package/docs/pt/intlayer_with_astro.md +1 -1
- package/docs/pt/intlayer_with_create_react_app.md +1 -1
- package/docs/pt/intlayer_with_express.md +1 -1
- package/docs/pt/intlayer_with_fastify.md +1 -1
- package/docs/pt/intlayer_with_hono.md +1 -1
- package/docs/pt/intlayer_with_lynx+react.md +1 -1
- package/docs/pt/intlayer_with_nestjs.md +1 -1
- package/docs/pt/intlayer_with_next-i18next.md +2 -2
- package/docs/pt/intlayer_with_next-intl.md +1 -1
- package/docs/pt/intlayer_with_nextjs_14.md +1 -1
- package/docs/pt/intlayer_with_nextjs_15.md +1 -1
- package/docs/pt/intlayer_with_nextjs_16.md +3 -1
- package/docs/pt/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +9 -9
- package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pt/intlayer_with_nuxt.md +1 -1
- package/docs/pt/intlayer_with_react_native+expo.md +4 -2
- package/docs/pt/intlayer_with_react_router_v7.md +4 -2
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +3 -5
- package/docs/pt/intlayer_with_svelte_kit.md +1 -1
- package/docs/pt/intlayer_with_tanstack.md +1 -1
- package/docs/pt/intlayer_with_vite+preact.md +3 -1
- package/docs/pt/intlayer_with_vite+react.md +3 -1
- package/docs/pt/intlayer_with_vite+react_compiler.md +25 -9
- package/docs/pt/intlayer_with_vite+solid.md +1 -1
- package/docs/pt/intlayer_with_vite+svelte.md +3 -1
- package/docs/pt/intlayer_with_vite+vue.md +3 -1
- package/docs/pt/introduction.md +2 -2
- package/docs/pt/packages/next-intlayer/intlayerMiddleware.md +30 -7
- package/docs/ru/agent_skills.md +5 -3
- package/docs/ru/autoFill.md +3 -3
- package/docs/ru/bundle_optimization.md +1 -1
- package/docs/ru/cli/doc-translate.md +1 -1
- package/docs/ru/cli/fill.md +1 -1
- package/docs/ru/cli/init.md +6 -6
- package/docs/ru/cli/sdk.md +1 -1
- package/docs/ru/compiler.md +56 -4
- package/docs/ru/component_i18n.md +2 -2
- package/docs/ru/configuration.md +69 -2
- package/docs/ru/dictionary/content_file.md +3 -3
- package/docs/ru/dictionary/html.md +1 -1
- package/docs/ru/formatters.md +1 -1
- package/docs/ru/index.md +2 -2
- package/docs/ru/intlayer_CMS.md +6 -6
- package/docs/ru/intlayer_with_adonisjs.md +2 -2
- package/docs/ru/intlayer_with_analog.md +2 -2
- package/docs/ru/intlayer_with_angular.md +2 -2
- package/docs/ru/intlayer_with_astro.md +2 -2
- package/docs/ru/intlayer_with_create_react_app.md +1 -1
- package/docs/ru/intlayer_with_express.md +1 -1
- package/docs/ru/intlayer_with_fastify.md +2 -2
- package/docs/ru/intlayer_with_hono.md +2 -2
- package/docs/ru/intlayer_with_lynx+react.md +1 -1
- package/docs/ru/intlayer_with_nestjs.md +2 -2
- package/docs/ru/intlayer_with_next-i18next.md +3 -3
- package/docs/ru/intlayer_with_next-intl.md +1 -1
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_nextjs_16.md +5 -3
- package/docs/ru/intlayer_with_nextjs_compiler.md +25 -8
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +12 -12
- package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ru/intlayer_with_nuxt.md +3 -3
- package/docs/ru/intlayer_with_react_native+expo.md +4 -2
- package/docs/ru/intlayer_with_react_router_v7.md +5 -3
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +5 -7
- package/docs/ru/intlayer_with_svelte_kit.md +3 -3
- package/docs/ru/intlayer_with_tanstack.md +3 -3
- package/docs/ru/intlayer_with_vite+preact.md +10 -8
- package/docs/ru/intlayer_with_vite+react.md +5 -3
- package/docs/ru/intlayer_with_vite+react_compiler.md +22 -6
- package/docs/ru/intlayer_with_vite+solid.md +1 -1
- package/docs/ru/intlayer_with_vite+svelte.md +4 -2
- package/docs/ru/intlayer_with_vite+vue.md +3 -1
- package/docs/ru/introduction.md +2 -2
- package/docs/ru/packages/adonis-intlayer/t.md +1 -1
- package/docs/ru/packages/hono-intlayer/t.md +2 -2
- package/docs/ru/packages/intlayer/exports.md +1 -1
- package/docs/ru/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/ru/packages/next-intlayer/useRewriteURL.md +1 -1
- package/docs/ru/packages/nuxt-intlayer/exports.md +3 -3
- package/docs/ru/packages/react-intlayer/exports.md +16 -16
- package/docs/ru/readme.md +1 -1
- package/docs/ru/releases/v7.md +3 -3
- package/docs/ru/releases/v8.md +5 -5
- package/docs/ru/vs_code_extension.md +1 -1
- package/docs/tr/agent_skills.md +2 -0
- package/docs/tr/cli/init.md +2 -2
- package/docs/tr/compiler.md +55 -3
- package/docs/tr/component_i18n.md +2 -2
- package/docs/tr/configuration.md +68 -1
- package/docs/tr/dictionary/content_file.md +1 -1
- package/docs/tr/index.md +2 -2
- package/docs/tr/intlayer_CMS.md +1 -1
- package/docs/tr/intlayer_with_adonisjs.md +1 -1
- package/docs/tr/intlayer_with_analog.md +1 -1
- package/docs/tr/intlayer_with_angular.md +1 -1
- package/docs/tr/intlayer_with_astro.md +1 -1
- package/docs/tr/intlayer_with_create_react_app.md +1 -1
- package/docs/tr/intlayer_with_express.md +1 -1
- package/docs/tr/intlayer_with_fastify.md +1 -1
- package/docs/tr/intlayer_with_hono.md +1 -1
- package/docs/tr/intlayer_with_lynx+react.md +1 -1
- package/docs/tr/intlayer_with_nestjs.md +1 -1
- package/docs/tr/intlayer_with_next-i18next.md +2 -2
- package/docs/tr/intlayer_with_next-intl.md +1 -1
- package/docs/tr/intlayer_with_nextjs_14.md +1 -1
- package/docs/tr/intlayer_with_nextjs_15.md +1 -1
- package/docs/tr/intlayer_with_nextjs_16.md +3 -1
- package/docs/tr/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +4 -4
- package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/tr/intlayer_with_nuxt.md +1 -1
- package/docs/tr/intlayer_with_react_native+expo.md +4 -2
- package/docs/tr/intlayer_with_react_router_v7.md +4 -2
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/tr/intlayer_with_svelte_kit.md +1 -1
- package/docs/tr/intlayer_with_tanstack.md +1 -1
- package/docs/tr/intlayer_with_vite+preact.md +3 -1
- package/docs/tr/intlayer_with_vite+react.md +3 -1
- package/docs/tr/intlayer_with_vite+react_compiler.md +24 -8
- package/docs/tr/intlayer_with_vite+solid.md +1 -1
- package/docs/tr/intlayer_with_vite+svelte.md +3 -1
- package/docs/tr/intlayer_with_vite+vue.md +3 -1
- package/docs/tr/introduction.md +2 -2
- package/docs/tr/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/uk/agent_skills.md +5 -3
- package/docs/uk/autoFill.md +4 -4
- package/docs/uk/bundle_optimization.md +2 -2
- package/docs/uk/cli/fill.md +1 -1
- package/docs/uk/cli/index.md +1 -1
- package/docs/uk/cli/list_projects.md +1 -1
- package/docs/uk/cli/login.md +2 -2
- package/docs/uk/cli/sdk.md +1 -1
- package/docs/uk/compiler.md +56 -4
- package/docs/uk/component_i18n.md +3 -3
- package/docs/uk/configuration.md +65 -5
- package/docs/uk/dictionary/content_file.md +5 -5
- package/docs/uk/dictionary/enumeration.md +1 -1
- package/docs/uk/dictionary/html.md +1 -1
- package/docs/uk/formatters.md +9 -9
- package/docs/uk/how_works_intlayer.md +6 -6
- package/docs/uk/index.md +4 -4
- package/docs/uk/interest_of_intlayer.md +24 -24
- package/docs/uk/intlayer_CMS.md +7 -7
- package/docs/uk/intlayer_visual_editor.md +8 -8
- package/docs/uk/intlayer_with_adonisjs.md +2 -2
- package/docs/uk/intlayer_with_analog.md +2 -2
- package/docs/uk/intlayer_with_angular.md +2 -2
- package/docs/uk/intlayer_with_astro.md +3 -3
- package/docs/uk/intlayer_with_create_react_app.md +13 -13
- package/docs/uk/intlayer_with_express.md +2 -2
- package/docs/uk/intlayer_with_fastify.md +3 -3
- package/docs/uk/intlayer_with_hono.md +2 -2
- package/docs/uk/intlayer_with_lynx+react.md +3 -3
- package/docs/uk/intlayer_with_nestjs.md +4 -4
- package/docs/uk/intlayer_with_next-i18next.md +5 -5
- package/docs/uk/intlayer_with_next-intl.md +1 -1
- package/docs/uk/intlayer_with_nextjs_14.md +10 -10
- package/docs/uk/intlayer_with_nextjs_15.md +21 -21
- package/docs/uk/intlayer_with_nextjs_16.md +5 -3
- package/docs/uk/intlayer_with_nextjs_compiler.md +24 -7
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +13 -13
- package/docs/uk/intlayer_with_nextjs_page_router.md +9 -9
- package/docs/uk/intlayer_with_nuxt.md +6 -6
- package/docs/uk/intlayer_with_react_native+expo.md +11 -9
- package/docs/uk/intlayer_with_react_router_v7.md +10 -8
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +10 -8
- package/docs/uk/intlayer_with_svelte_kit.md +2 -2
- package/docs/uk/intlayer_with_tanstack.md +9 -9
- package/docs/uk/intlayer_with_vite+preact.md +13 -11
- package/docs/uk/intlayer_with_vite+react.md +14 -12
- package/docs/uk/intlayer_with_vite+react_compiler.md +26 -10
- package/docs/uk/intlayer_with_vite+solid.md +2 -2
- package/docs/uk/intlayer_with_vite+svelte.md +4 -2
- package/docs/uk/intlayer_with_vite+vue.md +9 -7
- package/docs/uk/introduction.md +3 -3
- package/docs/uk/locale_mapper.md +1 -1
- package/docs/uk/packages/adonis-intlayer/t.md +1 -1
- package/docs/uk/packages/angular-intlayer/exports.md +1 -1
- package/docs/uk/packages/express-intlayer/t.md +3 -3
- package/docs/uk/packages/hono-intlayer/t.md +2 -2
- package/docs/uk/packages/intlayer/exports.md +1 -1
- package/docs/uk/packages/intlayer/getEnumeration.md +1 -1
- package/docs/uk/packages/intlayer/getMultilingualUrls.md +2 -2
- package/docs/uk/packages/intlayer/getTranslation.md +2 -2
- package/docs/uk/packages/intlayer/getTranslationContent.md +3 -3
- package/docs/uk/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/uk/packages/next-intlayer/t.md +2 -2
- package/docs/uk/packages/next-intlayer/useLocale.md +3 -3
- package/docs/uk/packages/next-intlayer/useRewriteURL.md +1 -1
- package/docs/uk/packages/nuxt-intlayer/exports.md +3 -3
- package/docs/uk/packages/react-intlayer/t.md +3 -3
- package/docs/uk/packages/react-intlayer/useDictionary.md +1 -1
- package/docs/uk/packages/react-intlayer/useLocale.md +2 -2
- package/docs/uk/packages/react-native-intlayer/exports.md +1 -1
- package/docs/uk/per_locale_file.md +2 -2
- package/docs/uk/plugins/sync-json.md +10 -10
- package/docs/uk/readme.md +3 -3
- package/docs/uk/releases/v6.md +2 -2
- package/docs/uk/releases/v7.md +2 -2
- package/docs/uk/releases/v8.md +1 -1
- package/docs/uk/roadmap.md +4 -4
- package/docs/uk/testing.md +1 -1
- package/docs/uk/vs_code_extension.md +2 -2
- package/docs/vi/agent_skills.md +2 -0
- package/docs/vi/compiler.md +53 -1
- package/docs/vi/component_i18n.md +2 -2
- package/docs/vi/configuration.md +61 -1
- package/docs/vi/dictionary/content_file.md +1 -1
- package/docs/vi/index.md +2 -2
- package/docs/vi/intlayer_CMS.md +1 -1
- package/docs/vi/intlayer_with_adonisjs.md +1 -1
- package/docs/vi/intlayer_with_analog.md +1 -1
- package/docs/vi/intlayer_with_angular.md +1 -1
- package/docs/vi/intlayer_with_astro.md +1 -1
- package/docs/vi/intlayer_with_create_react_app.md +1 -1
- package/docs/vi/intlayer_with_express.md +1 -1
- package/docs/vi/intlayer_with_fastify.md +1 -1
- package/docs/vi/intlayer_with_hono.md +1 -1
- package/docs/vi/intlayer_with_lynx+react.md +1 -1
- package/docs/vi/intlayer_with_nestjs.md +1 -1
- package/docs/vi/intlayer_with_next-i18next.md +2 -2
- package/docs/vi/intlayer_with_next-intl.md +1 -1
- package/docs/vi/intlayer_with_nextjs_14.md +1 -1
- package/docs/vi/intlayer_with_nextjs_15.md +1 -1
- package/docs/vi/intlayer_with_nextjs_16.md +3 -1
- package/docs/vi/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +2 -2
- package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/vi/intlayer_with_nuxt.md +1 -1
- package/docs/vi/intlayer_with_react_native+expo.md +5 -3
- package/docs/vi/intlayer_with_react_router_v7.md +4 -2
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/vi/intlayer_with_svelte_kit.md +1 -1
- package/docs/vi/intlayer_with_tanstack.md +1 -1
- package/docs/vi/intlayer_with_vite+preact.md +3 -1
- package/docs/vi/intlayer_with_vite+react.md +3 -1
- package/docs/vi/intlayer_with_vite+react_compiler.md +24 -8
- package/docs/vi/intlayer_with_vite+solid.md +1 -1
- package/docs/vi/intlayer_with_vite+svelte.md +3 -1
- package/docs/vi/intlayer_with_vite+vue.md +3 -1
- package/docs/vi/introduction.md +2 -2
- package/docs/vi/packages/intlayer/getCanonicalPath.md +1 -1
- package/docs/vi/packages/next-intlayer/intlayerMiddleware.md +29 -6
- package/docs/vi/readme.md +1 -1
- package/docs/vi/releases/v8.md +2 -2
- package/docs/zh/agent_skills.md +2 -0
- package/docs/zh/compiler.md +53 -1
- package/docs/zh/component_i18n.md +2 -2
- package/docs/zh/configuration.md +68 -1
- package/docs/zh/dictionary/content_file.md +1 -1
- package/docs/zh/index.md +3 -3
- package/docs/zh/intlayer_CMS.md +1 -1
- package/docs/zh/intlayer_with_adonisjs.md +1 -1
- package/docs/zh/intlayer_with_analog.md +1 -1
- package/docs/zh/intlayer_with_angular.md +1 -1
- package/docs/zh/intlayer_with_astro.md +1 -1
- package/docs/zh/intlayer_with_create_react_app.md +1 -1
- package/docs/zh/intlayer_with_express.md +1 -1
- package/docs/zh/intlayer_with_fastify.md +1 -1
- package/docs/zh/intlayer_with_hono.md +1 -1
- package/docs/zh/intlayer_with_lynx+react.md +1 -1
- package/docs/zh/intlayer_with_nestjs.md +1 -1
- package/docs/zh/intlayer_with_next-i18next.md +2 -2
- package/docs/zh/intlayer_with_next-intl.md +1 -1
- package/docs/zh/intlayer_with_nextjs_14.md +1 -1
- package/docs/zh/intlayer_with_nextjs_15.md +1 -1
- package/docs/zh/intlayer_with_nextjs_16.md +3 -1
- package/docs/zh/intlayer_with_nextjs_compiler.md +23 -6
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/zh/intlayer_with_nuxt.md +1 -1
- package/docs/zh/intlayer_with_react_native+expo.md +4 -2
- package/docs/zh/intlayer_with_react_router_v7.md +4 -2
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +4 -2
- package/docs/zh/intlayer_with_svelte_kit.md +1 -1
- package/docs/zh/intlayer_with_tanstack.md +1 -1
- package/docs/zh/intlayer_with_vite+preact.md +3 -1
- package/docs/zh/intlayer_with_vite+react.md +3 -1
- package/docs/zh/intlayer_with_vite+react_compiler.md +21 -5
- package/docs/zh/intlayer_with_vite+solid.md +1 -1
- package/docs/zh/intlayer_with_vite+svelte.md +3 -1
- package/docs/zh/intlayer_with_vite+vue.md +3 -1
- package/docs/zh/introduction.md +2 -2
- package/docs/zh/packages/next-intlayer/intlayerMiddleware.md +30 -7
- package/frequent_questions/ar/error-vite-env-only.md +2 -2
- package/frequent_questions/de/error-vite-env-only.md +2 -2
- package/frequent_questions/en/error-vite-env-only.md +2 -2
- package/frequent_questions/en-GB/error-vite-env-only.md +2 -2
- package/frequent_questions/es/error-vite-env-only.md +2 -2
- package/frequent_questions/fr/error-vite-env-only.md +2 -2
- package/frequent_questions/hi/error-vite-env-only.md +2 -2
- package/frequent_questions/id/domain_routing.md +1 -1
- package/frequent_questions/id/error-vite-env-only.md +2 -2
- package/frequent_questions/it/error-vite-env-only.md +2 -2
- package/frequent_questions/ja/error-vite-env-only.md +2 -2
- package/frequent_questions/ko/error-vite-env-only.md +2 -2
- package/frequent_questions/pl/domain_routing.md +1 -1
- package/frequent_questions/pl/error-vite-env-only.md +2 -2
- package/frequent_questions/pt/error-vite-env-only.md +2 -2
- package/frequent_questions/ru/error-vite-env-only.md +2 -2
- package/frequent_questions/tr/error-vite-env-only.md +2 -2
- package/frequent_questions/uk/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/uk/array_as_content_declaration.md +1 -1
- package/frequent_questions/uk/customized_locale_list.md +1 -1
- package/frequent_questions/uk/domain_routing.md +1 -1
- package/frequent_questions/uk/error-vite-env-only.md +3 -3
- package/frequent_questions/uk/get_locale_cookie.md +4 -4
- package/frequent_questions/uk/static_rendering.md +1 -1
- package/frequent_questions/vi/domain_routing.md +1 -1
- package/frequent_questions/vi/error-vite-env-only.md +2 -2
- package/frequent_questions/zh/error-vite-env-only.md +3 -3
- package/legal/de/terms_of_service.md +1 -1
- package/legal/fr/terms_of_service.md +2 -2
- package/legal/ja/terms_of_service.md +1 -1
- package/legal/pl/terms_of_service.md +2 -2
- package/legal/ru/terms_of_service.md +1 -1
- package/legal/uk/privacy_notice.md +1 -1
- package/legal/uk/terms_of_service.md +1 -1
- package/package.json +6 -6
- package/src/generated/blog.entry.ts +20 -0
|
@@ -20,16 +20,16 @@ slugs:
|
|
|
20
20
|
|
|
21
21
|
# SEO та i18n в Next.js: Перекладу недостатньо
|
|
22
22
|
|
|
23
|
-
Коли розробники думають про інтернаціоналізацію (i18n), першим рефлексом часто є: _перекласти контент_. Але зазвичай забувають, що головна мета
|
|
23
|
+
Коли розробники думають про інтернаціоналізацію (i18n), першим рефлексом часто є: _перекласти контент_. Але зазвичай забувають, що головна мета інтернаціоналізації, зробити ваш вебсайт більш помітним для світу.
|
|
24
24
|
Якщо ваша багатомовна програма Next.js не повідомляє пошуковим системам, як сканувати й розуміти різні мовні версії, більшість ваших зусиль може залишитися непоміченою.
|
|
25
25
|
|
|
26
|
-
У цьому блозі ми розглянемо, чому **i18n
|
|
26
|
+
У цьому блозі ми розглянемо, чому **i18n, це суперсила для SEO**, і як правильно реалізувати її в Next.js за допомогою `next-intl`, `next-i18next` та `Intlayer`.
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
30
|
## Чому SEO та i18n
|
|
31
31
|
|
|
32
|
-
Додавання
|
|
32
|
+
Додавання мов, це не лише про UX. Це також потужний важіль для **органічної видимості**. Ось чому:
|
|
33
33
|
|
|
34
34
|
1. **Краща виявлюваність:** Пошукові системи індексують локалізовані версії та ранжують їх для користувачів, які шукають рідною мовою.
|
|
35
35
|
2. **Уникнення дубльованого контенту:** Правильні канонічні та альтернативні теги повідомляють сканерам, яка сторінка належить до якої локалі.
|
|
@@ -54,7 +54,7 @@ slugs:
|
|
|
54
54
|
- **Використовуйте локалізовані посилання**
|
|
55
55
|
Приклад: `<a href="/fr/about">Про нас</a>` замість посилання на сторінку за замовчуванням `/about`.
|
|
56
56
|
|
|
57
|
-
Це прості
|
|
57
|
+
Це прості кроки, але їх пропуск може коштувати вам видимості.
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
@@ -344,8 +344,8 @@ export default robots;
|
|
|
344
344
|
|
|
345
345
|
## Висновок
|
|
346
346
|
|
|
347
|
-
Правильна реалізація i18n у Next.js
|
|
348
|
-
Налаштування hreflang, sitemap і правил для robots
|
|
347
|
+
Правильна реалізація i18n у Next.js, це не просто переклад тексту, а забезпечення того, щоб пошукові системи та користувачі точно знали, яку версію вашого контенту показувати.
|
|
348
|
+
Налаштування hreflang, sitemap і правил для robots, те, що перетворює переклади на реальну SEO-цінність.
|
|
349
349
|
|
|
350
350
|
Хоча next-intl і next-i18next дають надійні способи це реалізувати, зазвичай вони вимагають багато ручного налаштування, щоб підтримувати консистентність між локалями.
|
|
351
351
|
|
|
@@ -355,6 +355,6 @@ export default robots;
|
|
|
355
355
|
|
|
356
356
|
Метадані зберігаються централізовано замість того, щоб розкидуватися по JSON-файлах або власних утилітах.
|
|
357
357
|
|
|
358
|
-
Він спроєктований для Next.js з нуля, тож ви витрачаєте менше часу на налагодження конфігурації й
|
|
358
|
+
Він спроєктований для Next.js з нуля, тож ви витрачаєте менше часу на налагодження конфігурації й більше, на реліз.
|
|
359
359
|
|
|
360
|
-
Якщо ваша
|
|
360
|
+
Якщо ваша мета, не просто перекладати, а масштабувати багатомовне SEO без зайвих зусиль, Intlayer дає вам найчистіше, найбільш стійке до майбутніх змін налаштування.
|
|
@@ -81,7 +81,7 @@ extension Localization on String {
|
|
|
81
81
|
|
|
82
82
|
Водночас потрібно знати, що коли ви динамічно завантажуєте свій вміст, ви вводите додаткові запити до сервера. Кожен додатковий `useState` або хук означає ще один запит до сервера.
|
|
83
83
|
|
|
84
|
-
> Щоб вирішити це питання, Intlayer пропонує групувати кілька визначень контенту під одним
|
|
84
|
+
> Щоб вирішити це питання, Intlayer пропонує групувати кілька визначень контенту під одним ключем. Intlayer потім об'єднає цей контент.
|
|
85
85
|
|
|
86
86
|
Але з-поміж усіх цих рішень очевидно, що найпопулярнішим є централізований підхід.
|
|
87
87
|
|
|
@@ -97,7 +97,7 @@ extension Localization on String {
|
|
|
97
97
|
Дозвольте пояснити, чому це може бути проблематично для вашого додатка:
|
|
98
98
|
|
|
99
99
|
- **Невикористані дані:**
|
|
100
|
-
Коли завантажується сторінка, часто підвантажується контент з усіх інших сторінок. (У додатку з 10 сторінок це означає 90% невикористаного контенту.) Відкриваєте модальне вікно з відкладеним завантаженням? Бібліотека i18n
|
|
100
|
+
Коли завантажується сторінка, часто підвантажується контент з усіх інших сторінок. (У додатку з 10 сторінок це означає 90% невикористаного контенту.) Відкриваєте модальне вікно з відкладеним завантаженням? Бібліотека i18n байдуже, вона все одно спочатку підвантажує рядки.
|
|
101
101
|
- **Продуктивність:**
|
|
102
102
|
При кожному перерендері кожен ваш компонент отримує велике JSON-навантаження, що погіршує реактивність додатка в міру його зростання.
|
|
103
103
|
- **Підтримка:**
|
|
@@ -245,4 +245,4 @@ export const MyComponent = () => {
|
|
|
245
245
|
- Важче підключатися до інших l10n-систем та додаткових інструментів.
|
|
246
246
|
- Ви потрапляєте у залежність (що, по суті, вже відбувається з будь-яким i18n-рішенням через їхній специфічний синтаксис).
|
|
247
247
|
|
|
248
|
-
Саме тому Intlayer намагається надати повний набір інструментів для i18n (100% безкоштовний і з відкритим вихідним
|
|
248
|
+
Саме тому Intlayer намагається надати повний набір інструментів для i18n (100% безкоштовний і з відкритим вихідним кодом. OSS), включно з AI-перекладом за допомогою вашого власного AI-провайдера та API-ключів. Intlayer також надає інструменти для синхронізації ваших JSON-файлів, що працюють подібно до message formatters ICU / vue-i18n / i18next, щоб відобразити контент у їхніх специфічних форматах.
|
|
@@ -48,13 +48,13 @@ RAG став популярним не випадково: це один із н
|
|
|
48
48
|
- Пошук, який відчувається природно: поєднання Algolia + FAQ + чатбот в одному.
|
|
49
49
|
- Зворотний зв'язок: зберігаючи запити, ви виявляєте, з чим насправді мають труднощі користувачі.
|
|
50
50
|
|
|
51
|
-
Той останній пункт є вирішальним. Система RAG не лише відповідає на
|
|
51
|
+
Той останній пункт є вирішальним. Система RAG не лише відповідає на запитання, вона показує, що саме запитують користувачі. Це означає:
|
|
52
52
|
|
|
53
53
|
- Ви виявляєте відсутню інформацію в документації.
|
|
54
54
|
- Ви бачите появу запитів на нові фічі.
|
|
55
55
|
- Ви помічаєте патерни, які можуть навіть спрямовувати продуктову стратегію.
|
|
56
56
|
|
|
57
|
-
Отже, RAG
|
|
57
|
+
Отже, RAG, це не лише інструмент підтримки. Це також **двигун product discovery**.
|
|
58
58
|
|
|
59
59
|
## Як працює RAG-пайплайн
|
|
60
60
|
|
|
@@ -99,7 +99,7 @@ RAG став популярним не випадково: це один із н
|
|
|
99
99
|
|
|
100
100
|
## Крок 3: Генерація embeddings
|
|
101
101
|
|
|
102
|
-
Як тільки документи розбиті на чанки, ми генеруємо **embeddings
|
|
102
|
+
Як тільки документи розбиті на чанки, ми генеруємо **embeddings**, високорозмірні вектори, що представляють кожний чанк.
|
|
103
103
|
|
|
104
104
|
Я використовував модель OpenAI’s text-embedding-3-large, але ви можете використати будь-яку сучасну модель embeddings.
|
|
105
105
|
|
|
@@ -113,7 +113,7 @@ RAG став популярним не випадково: це один із н
|
|
|
113
113
|
];
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
Кожний
|
|
116
|
+
Кожний вектор, це математичний відбиток тексту, що дозволяє виконувати пошук за схожістю.
|
|
117
117
|
|
|
118
118
|
## Крок 4: Індексування та збереження embeddings
|
|
119
119
|
|
|
@@ -163,7 +163,7 @@ This turns your RAG assistant into a **continuous user research tool**.
|
|
|
163
163
|
|
|
164
164
|
## Скільки це коштує?
|
|
165
165
|
|
|
166
|
-
Одне з поширених зауважень щодо RAG
|
|
166
|
+
Одне з поширених зауважень щодо RAG, це вартість. Насправді це дивно дешево:
|
|
167
167
|
|
|
168
168
|
- Генерація embeddings для ~200 документів займає близько **5 хвилин** і коштує **1–2 євро**.
|
|
169
169
|
- Пошук по документації повністю безкоштовний.
|
|
@@ -180,7 +180,7 @@ This turns your RAG assistant into a **continuous user research tool**.
|
|
|
180
180
|
- Фронтенд: Next.js / React / Tailwind CSS
|
|
181
181
|
- Бекенд: Node.js API route / OpenAI API
|
|
182
182
|
|
|
183
|
-
Пакет `@smart-doc/docs
|
|
183
|
+
Пакет `@smart-doc/docs`, це пакет на TypeScript, який відповідає за обробку документації. Коли файл Markdown додається або змінюється, пакет містить скрипт `build`, який перебудовує список документації для кожної мови, генерує embeddings і зберігає їх у файлі `embeddings.json`.
|
|
184
184
|
|
|
185
185
|
Для фронтенду ми використовуємо застосунок Next.js, який надає:
|
|
186
186
|
|
|
@@ -237,7 +237,7 @@ User query :
|
|
|
237
237
|
|
|
238
238
|
## Подальші кроки
|
|
239
239
|
|
|
240
|
-
Цей
|
|
240
|
+
Цей проєкт, мінімальна реалізація. Але ви можете розширити його багатьма способами:
|
|
241
241
|
|
|
242
242
|
- MCP server → перемістити функцію пошуку по документації на MCP-сервер, щоб підключати документацію до будь-якого AI-помічника
|
|
243
243
|
|
|
@@ -255,7 +255,7 @@ User query :
|
|
|
255
255
|
|
|
256
256
|
## Чому це важливо поза межами документації
|
|
257
257
|
|
|
258
|
-
Цікаво не лише в чат-боті.
|
|
258
|
+
Цікаво не лише в чат-боті. Це, механізм зворотного зв'язку (feedback loop).
|
|
259
259
|
|
|
260
260
|
З RAG ви не просто відповідаєте на запити:
|
|
261
261
|
|
|
@@ -271,13 +271,13 @@ User query :
|
|
|
271
271
|
- Користувачі неодноразово просять інтеграцію, яку ви ще не підтримуєте
|
|
272
272
|
- Люди шукають терміни, що виявляють новий сценарій використання
|
|
273
273
|
|
|
274
|
-
|
|
274
|
+
Це, **product intelligence** прямо від ваших користувачів.
|
|
275
275
|
|
|
276
276
|
## Висновок
|
|
277
277
|
|
|
278
|
-
RAG
|
|
278
|
+
RAG, це один із найпростіших і найпотужніших способів зробити LLMs практичними. Поєднавши **retrieval + generation**, ви можете перетворити статичну документацію на **smart assistant** і, одночасно, отримувати безперервний потік insights про продукт.
|
|
279
279
|
|
|
280
|
-
Для мене цей проєкт показав, що RAG
|
|
280
|
+
Для мене цей проєкт показав, що RAG, це не просто технічний трюк. Це спосіб трансформувати документацію у:
|
|
281
281
|
|
|
282
282
|
- інтерактивну систему підтримки
|
|
283
283
|
- канал зворотного зв'язку
|
|
@@ -126,7 +126,7 @@ slugs:
|
|
|
126
126
|
- **react-intl / react-i18next**: Широка екосистема спільноти; для редакційних робочих процесів ви зазвичай використовуєте зовнішні платформи локалізації.
|
|
127
127
|
- **Intlayer**: Надає **безкоштовний візуальний редактор** та **опційний CMS** (зберігайте контент у Git або зовнішньо). Також пропонує **розширення для VSCode** для створення контенту та **переклад із допомогою ШІ** з використанням ваших власних ключів провайдера.
|
|
128
128
|
|
|
129
|
-
**Чому це важливо:** Вбудовані інструменти скорочують цикл між розробниками та авторами
|
|
129
|
+
**Чому це важливо:** Вбудовані інструменти скорочують цикл між розробниками та авторами контенту, менше допоміжного коду, менше залежностей від постачальників.
|
|
130
130
|
|
|
131
131
|
---
|
|
132
132
|
|
|
@@ -134,7 +134,7 @@ slugs:
|
|
|
134
134
|
|
|
135
135
|
- **Оберіть react-intl** якщо ви хочете **форматування повідомлень, орієнтоване на ICU**, з простим, відповідним стандартам API, і ваша команда комфортно підтримує каталоги та перевірки вручну.
|
|
136
136
|
- **Оберіть react-i18next** якщо вам потрібна **широта екосистеми i18next** (детектори, бекенди, плагін ICU, інтеграції) і ви готові до більшої конфігурації заради гнучкості.
|
|
137
|
-
- **Обирайте Intlayer** якщо ви цінуєте **component-scoped content**, **strict TypeScript**, **build-time guarantees**, **tree-shaking** та **batteries-included** редакторські
|
|
137
|
+
- **Обирайте Intlayer** якщо ви цінуєте **component-scoped content**, **strict TypeScript**, **build-time guarantees**, **tree-shaking** та **batteries-included** редакторські інструменти, особливо для **large, modular** React-додатків, design-systems тощо.
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
@@ -150,15 +150,15 @@ slugs:
|
|
|
150
150
|
|
|
151
151
|
## Зірки GitHub
|
|
152
152
|
|
|
153
|
-
GitHub
|
|
153
|
+
GitHub-зірки, це вагомий індикатор популярності проєкту, довіри спільноти та його довгострокової релевантності. Хоча вони не є прямим показником технічної якості, вони відображають, скільки розробників вважають проєкт корисним, стежать за його розвитком і ймовірно його приймуть. Для оцінки цінності проєкту зірки допомагають порівнювати популярність між альтернативами та дають уявлення про зростання екосистеми.
|
|
154
154
|
|
|
155
155
|
## [](https://www.star-history.com/#formatjs/formatjs&i18next/react-i18next&aymericzip/intlayer)
|
|
156
156
|
|
|
157
157
|
## Висновок
|
|
158
158
|
|
|
159
|
-
Усі три бібліотеки ефективно локалізують React.
|
|
159
|
+
Усі три бібліотеки ефективно локалізують React. Відмінність, у тому, скільки **infrastructure** вам потрібно побудувати, щоб досягти **safe, scalable** setup:
|
|
160
160
|
|
|
161
|
-
- З **Intlayer** **модульний контент**, **сувора типізація TS**, **безпека на етапі збірки**, **tree-shaken bundles** та **редакційні
|
|
161
|
+
- З **Intlayer** **модульний контент**, **сувора типізація TS**, **безпека на етапі збірки**, **tree-shaken bundles** та **редакційні інструменти**, це налаштування за замовчуванням, а не рутинні завдання.
|
|
162
162
|
- Якщо ваша команда цінує **підтримуваність і швидкість** у multi-locale, компонентно-орієнтованих React-додатках, Intlayer сьогодні пропонує **найповніший** робочий процес для розробників і контенту.
|
|
163
163
|
|
|
164
164
|
Дивіться документ [«Чому Intlayer?»](https://intlayer.org/doc/why) для детальнішої інформації.
|
|
@@ -32,7 +32,7 @@ slugs:
|
|
|
32
32
|
|
|
33
33
|
<TOC/>
|
|
34
34
|
|
|
35
|
-
> **коротко**: Обидва можуть локалізувати Vue-додатки. Якщо вам потрібен **контент у межах компонента**, **строга типізація TypeScript**, **перевірки відсутніх ключів на етапі збірки**, **словники, оптимізовані для tree-shaking**, та вбудовані **помічники для роутера/SEO**, а також **Візуальний редактор та AI-переклади**, **Intlayer
|
|
35
|
+
> **коротко**: Обидва можуть локалізувати Vue-додатки. Якщо вам потрібен **контент у межах компонента**, **строга типізація TypeScript**, **перевірки відсутніх ключів на етапі збірки**, **словники, оптимізовані для tree-shaking**, та вбудовані **помічники для роутера/SEO**, а також **Візуальний редактор та AI-переклади**, **Intlayer**, більш повне та сучасне рішення.
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
@@ -108,7 +108,7 @@ slugs:
|
|
|
108
108
|
|
|
109
109
|
### 5) Продуктивність та поведінка завантаження
|
|
110
110
|
|
|
111
|
-
- **vue-i18n**: Підтримує асинхронні повідомлення локалей; уникнення надмірного
|
|
111
|
+
- **vue-i18n**: Підтримує асинхронні повідомлення локалей; уникнення надмірного бандлінгу, на вашому боці (ретельно розділяйте каталоги).
|
|
112
112
|
- **Intlayer**: **Tree-shakes** під час збірки та **ліниво завантажує по кожному словнику/локалі**. Невикористовуваний контент не потрапляє в бандл.
|
|
113
113
|
|
|
114
114
|
**Чому це важливо:** Менші бандли та швидший старт для багатомовних Vue-додатків.
|
|
@@ -233,7 +233,7 @@ const { greeting } = useIntlayer("component-example");
|
|
|
233
233
|
- **Типобезпечне середовище**: Потужна конфігурація TS з автозаповненням.
|
|
234
234
|
- **Спрощене отримання контенту**: Єдиний хук/composable для отримання всього вмісту словника.
|
|
235
235
|
- **Організована кодова база**: 1 компонент = 1 словник у тій же папці.
|
|
236
|
-
- **Покращена маршрутизація**: Хелпери для **Vue Router/Nuxt
|
|
236
|
+
- **Покращена маршрутизація**: Хелпери для **Vue Router/Nuxt**, локалізовані шляхи та метадані.
|
|
237
237
|
- **Підтримка Markdown**: Імпорт віддалених/локальних Markdown-файлів для кожної локалі; робить frontmatter доступним у коді.
|
|
238
238
|
- **Безкоштовний Visual Editor & опційний CMS**: Створення контенту без платної платформи локалізації; синхронізація, дружня до Git.
|
|
239
239
|
- **Tree-shakable контент**: Постачається лише те, що використовується; підтримує lazy loading.
|
|
@@ -247,7 +247,7 @@ const { greeting } = useIntlayer("component-example");
|
|
|
247
247
|
## Коли вибирати який варіант?
|
|
248
248
|
|
|
249
249
|
- **Оберіть vue-i18n**, якщо ви хочете **стандартний підхід у Vue**, вам зручно самостійно керувати каталогами/просторами імен, і ваш додаток **малого або середнього розміру** (або ви вже покладаєтесь на Nuxt i18n).
|
|
250
|
-
- **Оберіть Intlayer**, якщо ви цінуєте **контент, прив'язаний до компонентів**, **строгий TypeScript**, **гарантії на етапі збірки**, **tree-shaking** та **batteries-included** інструменти для роутингу/SEO
|
|
250
|
+
- **Оберіть Intlayer**, якщо ви цінуєте **контент, прив'язаний до компонентів**, **строгий TypeScript**, **гарантії на етапі збірки**, **tree-shaking** та **batteries-included** інструменти для роутингу/SEO/редагування, особливо для **великих модульних кодових баз Vue/Nuxt**, дизайн-систем тощо.
|
|
251
251
|
|
|
252
252
|
---
|
|
253
253
|
|
|
@@ -263,7 +263,7 @@ const { greeting } = useIntlayer("component-example");
|
|
|
263
263
|
|
|
264
264
|
## Зірки GitHub
|
|
265
265
|
|
|
266
|
-
GitHub
|
|
266
|
+
GitHub-зірки, це вагомий індикатор популярності проєкту, довіри спільноти та його довгострокової релевантності. Хоча вони не є прямим показником технічної якості, вони відображають, скільки розробників вважають проєкт корисним, слідкують за його розвитком і, ймовірно, впровадять його. При оцінці вартості проєкту зірки допомагають порівняти динаміку прийняття між альтернативами та дають уявлення про зростання екосистеми.
|
|
267
267
|
|
|
268
268
|
[](https://www.star-history.com/#intlify/vue-i18n&aymericzip/intlayer)
|
|
269
269
|
|
|
@@ -23,7 +23,7 @@ slugs:
|
|
|
23
23
|
|
|
24
24
|
## Розуміння інтернаціоналізації (i18n)
|
|
25
25
|
|
|
26
|
-
**Інтернаціоналізація**, часто скорочено як **i18n
|
|
26
|
+
**Інтернаціоналізація**, часто скорочено як **i18n**,, це процес проєктування та підготовки застосунку для підтримки кількох мов, культур і регіональних конвенцій **без** значних змін у кодовій базі. Назва i18n походить від того, що між буквами **i** та **n** у слові "internationalization" є 18 літер.
|
|
27
27
|
|
|
28
28
|
## Чому i18n важливий
|
|
29
29
|
|
|
@@ -41,9 +41,9 @@ slugs:
|
|
|
41
41
|
|
|
42
42
|
## Інтернаціоналізація (i18n) vs. Локалізація (l10n)
|
|
43
43
|
|
|
44
|
-
**Інтернаціоналізація (i18n)
|
|
44
|
+
**Інтернаціоналізація (i18n)**, це процес проєктування вашого продукту так, щоб він міг легко підтримувати кілька мов і регіональних відмінностей. Наприклад, якщо ви створюєте вебсайт з урахуванням інтернаціоналізації, ви забезпечуєте підтримку різних наборів символів у текстових полях, відображення дат відповідно до локальних форматів і адаптацію макетів для розширення тексту при перекладі на інші мови.
|
|
45
45
|
|
|
46
|
-
**Локалізація (l10n)
|
|
46
|
+
**Локалізація (l10n)**, це робота, яка виконується після інтернаціоналізації. Вона полягає у перекладі вмісту та налаштуванні культурних деталей для задоволення потреб конкретної аудиторії. Наприклад, коли вебсайт вже інтернаціоналізовано, ви можете локалізувати його для французьких користувачів, переклавши весь текст, змінивши формат дати на день/місяць/рік і навіть підкоригувавши зображення або іконки, щоб вони краще відповідали французьким культурним нормам.
|
|
47
47
|
|
|
48
48
|
Підсумовуючи, інтернаціоналізація готує ваш продукт до глобального використання, тоді як локалізація адаптує його для конкретного ринку.
|
|
49
49
|
|
|
@@ -162,6 +162,6 @@ slugs:
|
|
|
162
162
|
|
|
163
163
|
## Висновок
|
|
164
164
|
|
|
165
|
-
Інтернаціоналізація (i18n)
|
|
165
|
+
Інтернаціоналізація (i18n), це більше, ніж просто технічне завдання; це **стратегічна інвестиція**, яка дозволяє вашому програмному забезпеченню буквально говорити мовою ваших користувачів. Абстрагуючи локально-залежні елементи, враховуючи мовні та культурні відмінності та плануючи майбутнє розширення, ви надаєте своєму продукту змогу процвітати на глобальному ринку.
|
|
166
166
|
|
|
167
167
|
Чи ви створюєте мобільний застосунок, SaaS-платформу або корпоративний інструмент, **i18n гарантує, що ваш продукт зможе адаптуватиись і приваблювати користувачів із усього світу**, без потреби постійно переписувати код. Використовуючи best practices, надійні frameworks і continuous localization strategies, розробники та продуктові команди можуть доставляти **істинно глобальний** користувацький досвід програмного забезпечення.
|
|
@@ -20,7 +20,7 @@ slugs:
|
|
|
20
20
|
|
|
21
21
|
# Lập Luận Ủng Hộ và Phản Đối i18n Dựa trên Trình Biên Dịch
|
|
22
22
|
|
|
23
|
-
Nếu bạn đã xây dựng các ứng dụng web hơn một thập kỷ, bạn biết rằng Quốc tế hóa (i18n) luôn là một điểm gây khó khăn. Đây thường là công việc không ai muốn làm
|
|
23
|
+
Nếu bạn đã xây dựng các ứng dụng web hơn một thập kỷ, bạn biết rằng Quốc tế hóa (i18n) luôn là một điểm gây khó khăn. Đây thường là công việc không ai muốn làm, trích xuất chuỗi, quản lý các tập tin JSON, và lo lắng về các quy tắc số nhiều.
|
|
24
24
|
|
|
25
25
|
Gần đây, một làn sóng mới của các công cụ i18n **"dựa trên trình biên dịch"** đã xuất hiện, hứa hẹn sẽ làm biến mất nỗi đau này. Lời chào hàng rất hấp dẫn: **Chỉ cần viết văn bản trong các component của bạn, và để công cụ build lo phần còn lại.** Không cần key, không cần import, chỉ có phép thuật.
|
|
26
26
|
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-02-26
|
|
3
|
+
updatedAt: 2026-02-26
|
|
4
|
+
title: "Ý nghĩa i18n: Quốc tế hóa là gì và tại sao nó lại quan trọng?"
|
|
5
|
+
description: "Khám phá ý nghĩa thực sự của i18n trong phát triển phần mềm. Tìm hiểu quốc tế hóa là gì, tại sao nó được viết tắt là i18n và nó tác động như thế nào đến phạm vị tiếp cận toàn cầu."
|
|
6
|
+
keywords:
|
|
7
|
+
- ý nghĩa i18n
|
|
8
|
+
- i18n là gì
|
|
9
|
+
- i18n
|
|
10
|
+
- quốc tế hóa
|
|
11
|
+
- bản địa hóa
|
|
12
|
+
- blog
|
|
13
|
+
- phát triển web
|
|
14
|
+
slugs:
|
|
15
|
+
- blog
|
|
16
|
+
- i18n-meaning
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Ý nghĩa i18n: Quốc tế hóa là gì và tại sao nó lại quan trọng?
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
## Hiểu về "Ý nghĩa i18n"
|
|
24
|
+
|
|
25
|
+
Nếu bạn tham gia vào lĩnh vực phát triển phần mềm, thiết kế web hoặc tiếp thị kỹ thuật số, có thể bạn đã bắt gặp thuật ngữ **i18n**. **Ý nghĩa i18n** thực sự chỉ đơn giản là một từ viết tắt bằng số cho **internationalization** (quốc tế hóa).
|
|
26
|
+
|
|
27
|
+
Nhưng tại sao lại là "i18n"? Chữ viết tắt được tạo ra bằng cách lấy chữ cái đầu tiên của từ "internationalization" (**i**), chữ cái cuối cùng (**n**) và đếm số chữ cái ở giữa chúng (**18**). Quy ước này thường được sử dụng trong ngành công nghệ để rút ngắn các thuật ngữ dài và rườm rà (một ví dụ phổ biến khác là **l10n** cho bản địa hóa - localization).
|
|
28
|
+
|
|
29
|
+
Về mặt kỹ thuật, **ý nghĩa i18n** đề cập đến quá trình thiết kế và chuẩn bị một ứng dụng phần mềm, trang web hoặc sản phẩm để nó có thể dễ dàng hỗ trợ nhiều ngôn ngữ, tiêu chuẩn khu vực và quy ước văn hóa, tất cả mà không yêu cầu thay đổi kỹ thuật đáng kể đối với mã nguồn cơ sở.
|
|
30
|
+
|
|
31
|
+
## Ý nghĩa cốt lõi của i18n trong thực tế
|
|
32
|
+
|
|
33
|
+
Hiểu ý nghĩa i18n không chỉ dừng lại ở việc biết từ viết tắt đó đại diện cho cái gì. Đó là việc nhận ra các nguyên tắc kiến trúc đằng sau nó. Khi một dự án được "quốc tế hóa" đúng cách, điều đó có nghĩa là các nhà phát triển đã tách biệt nội dung khỏi mã nguồn.
|
|
34
|
+
|
|
35
|
+
Thay vì viết cứng văn bản vào ứng dụng như thế này:
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
<button>Gửi</button>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Một ứng dụng sẵn sàng cho i18n sẽ sử dụng các khóa dịch hoặc biến:
|
|
42
|
+
|
|
43
|
+
```javascript
|
|
44
|
+
<button>{t("submit_button")}</button>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Điều này đảm bảo rằng ứng dụng có thể tải động từ điển ngôn ngữ chính xác (ví dụ: tiếng Anh, tiếng Tây Ban Nha, tiếng Nhật) dựa trên sở thích của người dùng mà không cần viết lại thành phần.
|
|
48
|
+
|
|
49
|
+
## Tại sao ý nghĩa i18n lại quan trọng đối với doanh nghiệp của bạn
|
|
50
|
+
|
|
51
|
+
Nắm bắt được **ý nghĩa i18n** chỉ là bước đầu tiên. Hiểu được _tại sao_ nó lại quan trọng đối với các sản phẩm kỹ thuật số hiện đại chính là điều tạo nên sự khác biệt giữa các ứng dụng toàn cầu thành công và các ứng dụng địa phương.
|
|
52
|
+
|
|
53
|
+
### Phá bỏ rào cản ngôn ngữ
|
|
54
|
+
|
|
55
|
+
Ứng dụng rõ ràng nhất của ý nghĩa i18n là dịch thuật. Bằng cách quốc tế hóa ứng dụng của bạn ngay từ ngày đầu tiên, bạn xây dựng một nền tảng cho phép bạn dịch giao diện của mình sang hàng chục ngôn ngữ một cách liền mạch. Điều này là cần thiết để mở ra các thị trường toàn cầu mới.
|
|
56
|
+
|
|
57
|
+
### Thích nghi văn hóa và khu vực
|
|
58
|
+
|
|
59
|
+
Ý nghĩa i18n mở rộng ra ngoài ngôn ngữ. Quốc tế hóa thực sự hỗ trợ:
|
|
60
|
+
|
|
61
|
+
- **Định dạng Ngày và Giờ:** Hiển thị `MM/DD/YYYY` cho người dùng Hoa Kỳ so với `DD/MM/YYYY` cho người dùng Châu Âu.
|
|
62
|
+
- **Định dạng số:** Nhận ra rằng `1,000.50` ở Hoa Kỳ thường được viết là `1.000,50` ở các vùng của Châu Âu.
|
|
63
|
+
- **Tiền tệ:** Thích ứng `$99.00` so với `99,00 €`.
|
|
64
|
+
- **Hướng văn bản:** Hỗ trợ các ngôn ngữ viết từ phải sang trái (RTL) như tiếng Ả Rập và tiếng Do Thái.
|
|
65
|
+
|
|
66
|
+
### Cải thiện hiệu suất SEO
|
|
67
|
+
|
|
68
|
+
Các công cụ tìm kiếm ưu tiên nội dung có liên quan đến ngôn ngữ và khu vực của người dùng. Áp dụng các nguyên tắc đằng sau ý nghĩa i18n cho phép bạn cấu trúc trang web của mình (ví dụ: sử dụng thẻ `hreflang`, URL được bản địa hóa) để xếp hạng cao hơn ở nhiều quốc gia, thúc đẩy lưu lượng truy cập toàn cầu tự nhiên.
|
|
69
|
+
|
|
70
|
+
## Quốc tế hóa (i18n) so với Bản địa hóa (l10n)
|
|
71
|
+
|
|
72
|
+
Để hiểu đầy đủ về **ý nghĩa i18n**, bạn phải phân biệt nó với **l10n** (bản địa hóa).
|
|
73
|
+
|
|
74
|
+
- **i18n (Quốc tế hóa):** Là việc _chuẩn bị kỹ thuật_ và khung thiết kế cấu trúc giúp cho việc thích nghi trở nên khả thi. Ví dụ: hỗ trợ mã hóa UTF-8, trừu tượng hóa các chuỗi văn bản và làm cho bố cục giao diện người dùng linh hoạt cho các từ dài hơn.
|
|
75
|
+
- **l10n (Bản địa hóa):** Là việc _thích nghi thực tế_ sản phẩm cho một địa phương cụ thể. Ví dụ: dịch văn bản tiếng Anh sang tiếng Việt, điều chỉnh hình ảnh cho phù hợp với các chuẩn mực văn hóa và thiết lập đơn vị tiền tệ địa phương.
|
|
76
|
+
|
|
77
|
+
Hãy nghĩ về **i18n** giống như việc chế tạo một chiếc xe hơi mà vô lăng có thể chuyển sang bên trái hoặc bên phải. **l10n** là hành động thực sự chuyển vô lăng sang bên phải để bán chiếc xe đó tại Vương quốc Anh.
|
|
78
|
+
|
|
79
|
+
## Những quan niệm sai lầm phổ biến về ý nghĩa i18n
|
|
80
|
+
|
|
81
|
+
1. **"i18n chỉ là dịch thuật."**
|
|
82
|
+
Mặc dù dịch thuật là một phần lớn của kết quả cuối cùng, ý nghĩa thực sự của i18n bao gồm định dạng, quy tắc số nhiều, hướng văn bản và sự sẵn sàng về kiến trúc.
|
|
83
|
+
2. **"Chúng ta có thể thêm i18n sau."**
|
|
84
|
+
Việc trang bị thêm i18n cho một ứng dụng sau này là cực kỳ khó khăn. Các chuỗi văn bản bị viết cứng, các thành phần giao diện người dùng cứng nhắc và định dạng ngày tháng không tương thích có thể dẫn đến nợ kỹ thuật khổng lồ. Lập kế hoạch cho i18n ngay từ đầu là một phương pháp hay cơ bản.
|
|
85
|
+
|
|
86
|
+
## Cách triển khai i18n hiệu quả
|
|
87
|
+
|
|
88
|
+

|
|
89
|
+
|
|
90
|
+
Bây giờ chúng ta đã xác định được **ý nghĩa thực sự của i18n**, làm thế nào để bạn áp dụng nó?
|
|
91
|
+
|
|
92
|
+
- **Sử dụng khung i18n đã được thiết lập:** Đừng phát minh lại bánh xe. Cho dù bạn đang sử dụng React, Vue, Next.js hay JavaScript thuần túy, đều có các thư viện i18n cụ thể được thiết kế để xử lý các công việc nặng nhọc (như số nhiều và nội suy).
|
|
93
|
+
- **Trừu tượng hóa tất cả văn bản hiển thị cho người dùng:** Đảm bảo không có văn bản viết cứng nào tồn tại trong các thành phần giao diện người dùng của bạn.
|
|
94
|
+
- **Sử dụng hệ thống quản lý dịch thuật mạnh mẽ:** Các công cụ như **Intlayer** thu hẹp khoảng cách giữa nhà phát triển và trình biên dịch. Intlayer hoạt động như một CMS không đầu (headless CMS) được tích hợp chặt chẽ với cơ sở mã của bạn, cho phép những người quản lý nội dung cập nhật bản dịch một cách trực quan mà không yêu cầu nhà phát triển kích hoạt một bản dựng mới.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### Xem danh sách thư viện và công cụ i18n theo công nghệ
|
|
99
|
+
|
|
100
|
+
Nếu bạn đang tìm kiếm danh sách các thư viện và công cụ i18n theo công nghệ, hãy xem các tài nguyên sau:
|
|
101
|
+
|
|
102
|
+
### Dành cho Hệ quản trị nội dung (CMS)
|
|
103
|
+
|
|
104
|
+
- WordPress: [Xem danh sách thư viện và công cụ i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/list_i18n_technologies/CMS/wordpress.md)
|
|
105
|
+
- Wix: [Xem danh sách thư viện và công cụ i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/list_i18n_technologies/CMS/wix.md)
|
|
106
|
+
- Drupal: [Xem danh sách thư viện và công cụ i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/list_i18n_technologies/CMS/drupal.md)
|
|
107
|
+
|
|
108
|
+
### Dành cho ứng dụng JavaScript (Frontend)
|
|
109
|
+
|
|
110
|
+
- React: [Xem danh sách thư viện và công cụ i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/list_i18n_technologies/frameworks/react.md)
|
|
111
|
+
- Angular: [Xem danh sách thư viện và công cụ i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/list_i18n_technologies/frameworks/angular.md)
|
|
112
|
+
- Vue: [Xem danh sách thư viện và công cụ i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/list_i18n_technologies/frameworks/vue.md)
|
|
113
|
+
- Svelte: [Xem danh sách thư viện và công cụ i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/list_i18n_technologies/frameworks/svelte.md)
|
|
114
|
+
- React Native: [Xem danh sách thư viện và công cụ i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/list_i18n_technologies/frameworks/react-native.md)
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Kết luận
|
|
119
|
+
|
|
120
|
+
**Ý nghĩa i18n** là một khái niệm nền tảng cho bất kỳ doanh nghiệp kỹ thuật số hiện đại nào nhằm mục tiêu tác động toàn cầu. Không chỉ đơn thuần là một từ viết tắt kỹ thuật kỳ quặc cho "quốc tế hóa", i18n đại diện cho kiến trúc kỹ thuật cần thiết để điều chỉnh phần mềm của bạn một cách liền mạch cho phù hợp với các ngôn ngữ, văn hóa và tiêu chuẩn khu vực đa dạng.
|
|
121
|
+
|
|
122
|
+
Bằng cách hiểu ý nghĩa i18n và áp dụng các nguyên tắc của nó sớm trong chu kỳ phát triển, bạn tiết kiệm được thời gian kỹ thuật đáng kể, ngăn ngừa nợ kỹ thuật trong tương lai và đảm bảo rằng ứng dụng của bạn cung cấp trải nghiệm bản địa và thân thiện với người dùng trên toàn thế giới.
|
|
123
|
+
|
|
124
|
+
Cho dù bạn đang xây dựng một ứng dụng di động, nền tảng SaaS hay một công cụ dành cho doanh nghiệp, việc nắm bắt ý nghĩa thực sự của i18n sẽ đảm bảo rằng sản phẩm của bạn có thể thích nghi và thu hút người dùng từ khắp nơi trên thế giới mà không cần phải viết lại mã nguồn liên tục. Bằng cách tận dụng các phương pháp hay nhất, khung làm việc mạnh mẽ và khai báo nội dung được bản địa hóa với các nền tảng như Intlayer, các nhóm sản phẩm có thể mang lại trải nghiệm phần mềm thực sự toàn cầu.
|
|
@@ -37,11 +37,11 @@ Nó xây dựng thành công bằng cách là một TMS "thân thiện với nh
|
|
|
37
37
|
|
|
38
38
|
# Intlayer
|
|
39
39
|
|
|
40
|
-
Intlayer được biết chủ yếu là một giải pháp i18n, nhưng nó cũng tích hợp một headless CMS. Không giống Lokalise, vốn hoạt động chủ yếu như một công cụ đồng bộ hóa bên ngoài cho các strings của bạn, Intlayer tồn tại gần hơn với mã nguồn của bạn. Nó kiểm soát toàn bộ stack
|
|
40
|
+
Intlayer được biết chủ yếu là một giải pháp i18n, nhưng nó cũng tích hợp một headless CMS. Không giống Lokalise, vốn hoạt động chủ yếu như một công cụ đồng bộ hóa bên ngoài cho các strings của bạn, Intlayer tồn tại gần hơn với mã nguồn của bạn. Nó kiểm soát toàn bộ stack, từ lớp bundling đến phân phối nội dung từ xa, dẫn đến một luồng nội dung mượt mà và hiệu quả hơn.
|
|
41
41
|
|
|
42
42
|
## Tại sao các paradigms đã thay đổi kể từ khi có AI?
|
|
43
43
|
|
|
44
|
-
Lokalise đã hoàn thiện khía cạnh "DevOps" của bản địa hóa
|
|
44
|
+
Lokalise đã hoàn thiện khía cạnh "DevOps" của bản địa hóa, tự động di chuyển các strings. Tuy nhiên, sự xuất hiện của các Mô hình Ngôn ngữ Lớn (Large Language Models - LLMs) đã thay đổi căn bản các paradigms của bản địa hóa. Điểm nghẽn giờ đây không còn là _di chuyển_ các strings; mà là _tạo ra_ chúng.
|
|
45
45
|
|
|
46
46
|
Với các Mô hình Ngôn ngữ Lớn (LLMs), chi phí dịch thuật đã giảm mạnh, và tốc độ đã tăng lên một cách cấp số. Vai trò của đội ngũ bản địa hóa đang chuyển từ "quản lý dịch giả" sang "quản lý ngữ cảnh và rà soát."
|
|
47
47
|
|
|
@@ -57,31 +57,24 @@ Lokalise thường bị chỉ trích vì các bậc giá cao, có thể trở n
|
|
|
57
57
|
|
|
58
58
|
1. **Hiệu quả Chi phí:** Bạn không bị ràng buộc vào mô hình định giá "per key" hoặc "per seat" vốn phạt sự tăng trưởng. Với Intlayer, bạn trả cho việc suy luận của riêng bạn (BYO Key), nghĩa là chi phí của bạn tỉ lệ trực tiếp với mức sử dụng thực tế, chứ không phải biên lợi nhuận của nền tảng.
|
|
59
59
|
2. **Tích hợp luồng công việc:** Trong khi Lokalise yêu cầu đồng bộ file (ngay cả khi đã tự động), Intlayer cho phép định nghĩa Declarative Content trực tiếp trong các file component của bạn (React, Next.js, v.v.). Điều này giữ ngữ cảnh ngay sát giao diện người dùng, giảm lỗi.
|
|
60
|
-
3. **Quản lý trực quan:** Intlayer cung cấp một trình chỉnh sửa trực quan tương tác trực tiếp với ứng dụng đang chạy của bạn, đảm bảo các chỉnh sửa được thực hiện trong đầy đủ bối cảnh trực quan
|
|
60
|
+
3. **Quản lý trực quan:** Intlayer cung cấp một trình chỉnh sửa trực quan tương tác trực tiếp với ứng dụng đang chạy của bạn, đảm bảo các chỉnh sửa được thực hiện trong đầy đủ bối cảnh trực quan, điều thường bị tách rời trong danh sách file của TMS truyền thống.
|
|
61
61
|
|
|
62
62
|
# So sánh song song
|
|
63
63
|
|
|
64
|
-
| Feature | Lokalise (TMS hiện đại) | Intlayer (AI-Native)
|
|
65
|
-
| :------------------- | :---------------------------------------- |
|
|
66
|
-
| **Triết lý cốt lõi** | Tự động hóa & L10n ở giai đoạn thiết kế. | Quản lý logic nội dung & tạo nội dung bằng AI.
|
|
67
|
-
| **Mô hình giá** | Theo seat / MAU / số key (Chi phí cao). | Trả cho inference của riêng bạn (BYO Key).
|
|
68
|
-
| **Tích hợp** | Đồng bộ dựa trên API / plugin Figma. | Tích hợp sâu vào code (Declarative).
|
|
69
|
-
| **Cập nhật** | Trì hoãn đồng bộ / cần tạo PR. | Đồng bộ tức thì với codebase hoặc ứng dụng đang chạy.
|
|
70
|
-
| **Định dạng file** | Không ràng buộc (Mobile, Web, Documents). | Web hiện đại (JSON, JS, TS).
|
|
71
|
-
| **Kiểm thử** | Quy trình rà soát. | CI / CLI / Kiểm thử A/B.
|
|
72
|
-
| **Hosting** | SaaS (Mã nguồn đóng). | Mã nguồn mở & Có thể tự lưu trữ (Docker).
|
|
73
|
-
| **Triết lý cốt lõi** | Tự động hóa & L10n ở giai đoạn thiết kế. | Quản lý logic nội dung & sinh tạo nội dung bằng AI. |
|
|
74
|
-
| **Mô hình giá** | Theo seat / MAU / số key (Chi phí cao). | Trả cho inference của riêng bạn (Tự cung cấp Key - BYO Key). |
|
|
75
|
-
| **Tích hợp** | Đồng bộ dựa trên API / plugin Figma. | Tích hợp sâu vào code (Declarative). |
|
|
76
|
-
| **Cập nhật** | Trì hoãn đồng bộ / yêu cầu tạo PR. | Đồng bộ tức thì với codebase hoặc ứng dụng đang chạy. |
|
|
77
|
-
| **Định dạng file** | Không phụ thuộc (Mobile, Web, Documents). | Web hiện đại (JSON, JS, TS). |
|
|
78
|
-
| **Kiểm thử** | Quy trình review. | CI / CLI / Kiểm thử A/B. |
|
|
79
|
-
| **Lưu trữ** | SaaS (Mã nguồn đóng). | Mã nguồn mở & Tự lưu trữ được (Docker). |
|
|
64
|
+
| Feature | Lokalise (TMS hiện đại) | Intlayer (AI-Native) |
|
|
65
|
+
| :------------------- | :---------------------------------------- | :---------------------------------------------------- |
|
|
66
|
+
| **Triết lý cốt lõi** | Tự động hóa & L10n ở giai đoạn thiết kế. | Quản lý logic nội dung & tạo nội dung bằng AI. |
|
|
67
|
+
| **Mô hình giá** | Theo seat / MAU / số key (Chi phí cao). | Trả cho inference của riêng bạn (BYO Key). |
|
|
68
|
+
| **Tích hợp** | Đồng bộ dựa trên API / plugin Figma. | Tích hợp sâu vào code (Declarative). |
|
|
69
|
+
| **Cập nhật** | Trì hoãn đồng bộ / cần tạo PR. | Đồng bộ tức thì với codebase hoặc ứng dụng đang chạy. |
|
|
70
|
+
| **Định dạng file** | Không ràng buộc (Mobile, Web, Documents). | Web hiện đại (JSON, JS, TS). |
|
|
71
|
+
| **Kiểm thử** | Quy trình rà soát. | CI / CLI / Kiểm thử A/B. |
|
|
72
|
+
| **Hosting** | SaaS (Mã nguồn đóng). | Mã nguồn mở & Có thể tự lưu trữ (Docker). |
|
|
80
73
|
|
|
81
74
|
Intlayer cung cấp một giải pháp i18n đầy đủ, all-in-one cho phép tích hợp sâu nội dung của bạn. Nội dung từ xa của bạn có thể được đồng bộ trực tiếp với codebase hoặc với ứng dụng đang chạy của bạn. Ngược lại, Lokalise thường dựa vào việc tạo Pull Requests để cập nhật nội dung trong repo của bạn, điều này duy trì sự tách biệt giữa "content state" và "application state".
|
|
82
75
|
|
|
83
76
|
Hơn nữa, Intlayer có thể được sử dụng như một Feature Flag hoặc công cụ A/B testing, cho phép bạn thử nghiệm các biến thể nội dung khác nhau một cách động. Trong khi Lokalise tập trung vào việc đảm bảo từ ngữ chính xác, Intlayer tập trung vào việc tối ưu hóa _trải nghiệm người dùng_ thông qua việc phục vụ dữ liệu động.
|
|
84
77
|
|
|
85
|
-
Lokalise rất phù hợp cho các ứng dụng di động (iOS/Android) và các quy trình làm việc do thiết kế dẫn dắt. Tuy nhiên, đối với các ứng dụng web hiện đại sử dụng các framework như Next.js hoặc React, khả năng xử lý bản địa của Intlayer với các định dạng `.js`, `.ts` và các từ điển JSON mang lại trải nghiệm nhà phát triển (DX) vượt trội với hỗ trợ TypeScript đầy đủ cho nội dung
|
|
78
|
+
Lokalise rất phù hợp cho các ứng dụng di động (iOS/Android) và các quy trình làm việc do thiết kế dẫn dắt. Tuy nhiên, đối với các ứng dụng web hiện đại sử dụng các framework như Next.js hoặc React, khả năng xử lý bản địa của Intlayer với các định dạng `.js`, `.ts` và các từ điển JSON mang lại trải nghiệm nhà phát triển (DX) vượt trội với hỗ trợ TypeScript đầy đủ cho nội dung, đảm bảo bạn sẽ không bao giờ phát hành thiếu khóa dịch nữa.
|
|
86
79
|
|
|
87
|
-
Cuối cùng, đối với những người ưu tiên chủ quyền dữ liệu và quyền kiểm soát, Intlayer là mã nguồn mở và có thể được tự lưu trữ. Các file Docker có sẵn trực tiếp trong repository, cho phép bạn sở hữu hoàn toàn cơ sở hạ tầng localization của mình
|
|
80
|
+
Cuối cùng, đối với những người ưu tiên chủ quyền dữ liệu và quyền kiểm soát, Intlayer là mã nguồn mở và có thể được tự lưu trữ. Các file Docker có sẵn trực tiếp trong repository, cho phép bạn sở hữu hoàn toàn cơ sở hạ tầng localization của mình, tương phản rõ rệt với mô hình SaaS đóng của Lokalise.
|
|
@@ -37,7 +37,7 @@ Trong hơn một thập kỷ, Crowdin đã là tiêu chuẩn ngành trong quản
|
|
|
37
37
|
|
|
38
38
|
# Intlayer
|
|
39
39
|
|
|
40
|
-
Intlayer được biết đến chủ yếu như một giải pháp i18n, nhưng nó cũng tích hợp một CMS. Khác với Crowdin, vốn chỉ giới hạn ở việc đóng vai trò như một lớp bọc quanh thiết lập i18n hiện có của bạn, Intlayer kiểm soát toàn bộ stack
|
|
40
|
+
Intlayer được biết đến chủ yếu như một giải pháp i18n, nhưng nó cũng tích hợp một CMS. Khác với Crowdin, vốn chỉ giới hạn ở việc đóng vai trò như một lớp bọc quanh thiết lập i18n hiện có của bạn, Intlayer kiểm soát toàn bộ stack, từ lớp bundling đến phân phối nội dung từ xa, dẫn đến luồng nội dung mượt mà và hiệu quả hơn.
|
|
41
41
|
|
|
42
42
|
## Tại sao các paradigms đã thay đổi kể từ khi có AI?
|
|
43
43
|
|
|
@@ -49,7 +49,7 @@ Tuy nhiên, có một hạn chế. Copywriting không chỉ đơn thuần là d
|
|
|
49
49
|
|
|
50
50
|
Ngày nay, quy trình làm việc hiệu quả nhất là trước tiên dùng AI để dịch và định vị trang của bạn trên phạm vi toàn cầu. Sau đó, ở giai đoạn hai, bạn sử dụng copywriter là con người để tối ưu hóa những nội dung cụ thể có lưu lượng truy cập cao nhằm tăng tỷ lệ chuyển đổi khi sản phẩm đã bắt đầu tạo ra doanh thu.
|
|
51
51
|
|
|
52
|
-
Mặc dù doanh thu của Crowdin
|
|
52
|
+
Mặc dù doanh thu của Crowdin, chủ yếu đến từ các giải pháp legacy đã được kiểm chứng, vẫn đang hoạt động tốt, tôi tin rằng ngành localization truyền thống sẽ chịu tác động nặng nề trong khoảng 5 đến 10 năm tới. Mô hình trả theo số từ hoặc theo seat cho một công cụ quản lý đang dần trở nên lỗi thời.
|
|
53
53
|
|
|
54
54
|
## Tại sao Intlayer là một lựa chọn thay thế tốt cho Crowdin?
|
|
55
55
|
|
|
@@ -73,8 +73,8 @@ Với Intlayer, bạn tạo bản dịch với chi phí inference của chính b
|
|
|
73
73
|
|
|
74
74
|
Intlayer cung cấp một giải pháp i18n toàn diện, all-in-one cho phép tích hợp sâu nội dung của bạn. Nội dung từ xa của bạn có thể được đồng bộ trực tiếp với codebase hoặc ứng dụng đang chạy của bạn. Ngược lại, Crowdin thường đòi hỏi phải rebuild ứng dụng trong pipeline CI/CD để cập nhật nội dung, tạo ra ma sát giữa đội dịch và quy trình triển khai.
|
|
75
75
|
|
|
76
|
-
Hơn nữa, Intlayer có thể được sử dụng như một Feature Flag hoặc công cụ A/B testing, cho phép bạn thử nghiệm các biến thể nội dung khác nhau một cách động
|
|
76
|
+
Hơn nữa, Intlayer có thể được sử dụng như một Feature Flag hoặc công cụ A/B testing, cho phép bạn thử nghiệm các biến thể nội dung khác nhau một cách động, điều mà các công cụ TMS tiêu chuẩn như Crowdin không hỗ trợ một cách bản địa.
|
|
77
77
|
|
|
78
|
-
Crowdin hỗ trợ nhiều định dạng tệp
|
|
78
|
+
Crowdin hỗ trợ nhiều định dạng tệp, bao gồm các loại kế thừa như `.po`, `.xml` và `.yaml`, điều này có thể có lợi cho các dự án có quy trình làm việc đã được thiết lập hoặc các hệ thống cũ. Ngược lại, Intlayer chủ yếu làm việc với các định dạng hướng web hiện đại như `.json`, `.js` và `.ts`. Điều này có nghĩa Intlayer có thể không tương thích với tất cả các định dạng tệp kế thừa, đây là một yếu tố cần cân nhắc cho các đội đang di chuyển từ các nền tảng cũ.
|
|
79
79
|
|
|
80
80
|
Cuối cùng, đối với những người ưu tiên chủ quyền dữ liệu và kiểm soát, Intlayer là mã nguồn mở và có thể tự lưu trữ. Các file Docker có sẵn trực tiếp trong repository, cho phép bạn nắm hoàn toàn quyền sở hữu cơ sở hạ tầng localization của mình.
|
|
@@ -29,10 +29,6 @@ Một Hệ thống Quản lý Dịch (TMS) là một nền tảng phần mềm
|
|
|
29
29
|
|
|
30
30
|
Về bản chất, một TMS theo truyền thống là cầu nối giữa mã kỹ thuật (nơi các chuỗi/strings tồn tại) và các chuyên gia ngôn ngữ (những người hiểu rõ văn hóa).
|
|
31
31
|
|
|
32
|
-
Hệ thống Quản lý Dịch thuật (TMS) là một nền tảng phần mềm được thiết kế để tự động hóa và tinh giản quy trình dịch và bản địa hóa (L10n). Thông thường, một TMS hoạt động như một trung tâm tập trung nơi nội dung được tải lên, tổ chức và phân công cho các dịch giả. Nó quản lý các luồng công việc, lưu trữ translation memories (để tránh dịch lại cùng một câu nhiều lần) và xử lý việc chuyển giao các tệp đã dịch trở lại cho các developer hoặc người quản lý nội dung.
|
|
33
|
-
|
|
34
|
-
Về bản chất, một TMS về lịch sử là cầu nối giữa mã kỹ thuật (nơi các chuỗi nằm) và các chuyên gia ngôn ngữ (những người hiểu văn hóa).
|
|
35
|
-
|
|
36
32
|
# Phrase (trước đây là PhraseApp)
|
|
37
33
|
|
|
38
34
|
Phrase là một giải pháp hạng nặng trong lĩnh vực bản địa hóa doanh nghiệp. Ban đầu được biết đến với tên PhraseApp, nó đã phát triển đáng kể, đặc biệt sau khi sáp nhập với Memsource. Nó định vị mình như một Localization Suite toàn diện được thiết kế cho bản địa hóa phần mềm, cung cấp khả năng API mạnh mẽ và hỗ trợ định dạng rộng rãi.
|
|
@@ -41,7 +37,7 @@ Phrase được xây dựng để mở rộng quy mô. Đây là lựa chọn h
|
|
|
41
37
|
|
|
42
38
|
# Intlayer
|
|
43
39
|
|
|
44
|
-
Intlayer được biết chủ yếu như một giải pháp i18n, nhưng nó cũng tích hợp một headless CMS. Không giống như Phrase, hoạt động như một bộ giải pháp doanh nghiệp lớn và bên ngoài, Intlayer hoạt động như một lớp tích hợp vào mã, linh hoạt. Nó kiểm soát toàn bộ stack
|
|
40
|
+
Intlayer được biết chủ yếu như một giải pháp i18n, nhưng nó cũng tích hợp một headless CMS. Không giống như Phrase, hoạt động như một bộ giải pháp doanh nghiệp lớn và bên ngoài, Intlayer hoạt động như một lớp tích hợp vào mã, linh hoạt. Nó kiểm soát toàn bộ stack, từ tầng bundling đến phân phối nội dung từ xa, dẫn đến một luồng nội dung mượt mà hơn và hiệu quả hơn cho các ứng dụng web hiện đại.
|
|
45
41
|
|
|
46
42
|
## Tại sao các mô hình đã thay đổi kể từ khi có AI?
|
|
47
43
|
|
|
@@ -79,4 +75,4 @@ Hơn nữa, Intlayer có thể được sử dụng như một Feature Flag ho
|
|
|
79
75
|
|
|
80
76
|
Mặc dù Phrase không thể phủ nhận khả năng đáp ứng các nhu cầu doanh nghiệp phức tạp, đa định dạng (ví dụ: dịch PDF, phụ đề và phần mềm cùng lúc), Intlayer là lựa chọn vượt trội cho các nhóm sản phẩm xây dựng ứng dụng web muốn sở hữu toàn quyền, đảm bảo type safety và có quy trình làm việc hiện đại, dựa trên AI mà không phải chịu các chi phí và độ phức tạp của giải pháp enterprise.
|
|
81
77
|
|
|
82
|
-
Cuối cùng, đối với những người ưu tiên chủ quyền dữ liệu và quyền kiểm soát, Intlayer là mã nguồn mở và có thể tự-host. Các file Docker có sẵn trực tiếp trong kho lưu trữ, giúp bạn sở hữu toàn bộ hạ tầng bản địa hóa của mình
|
|
78
|
+
Cuối cùng, đối với những người ưu tiên chủ quyền dữ liệu và quyền kiểm soát, Intlayer là mã nguồn mở và có thể tự-host. Các file Docker có sẵn trực tiếp trong kho lưu trữ, giúp bạn sở hữu toàn bộ hạ tầng bản địa hóa của mình, điều mà hệ sinh thái SaaS đóng của Phrase không thể cung cấp.
|