@intlayer/docs 8.1.7 → 8.1.9
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 +1 -0
- 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 +2 -2
- 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/ar/releases/v8.md +1 -1
- 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 +2 -2
- 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/de/releases/v8.md +1 -1
- 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/dictionary/content_file.md +1 -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/releases/v8.md +1 -1
- 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 +2 -2
- 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/en-GB/releases/v8.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 +2 -2
- 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/es/releases/v8.md +1 -1
- 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 +2 -2
- 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/fr/releases/v8.md +1 -1
- 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 +2 -2
- 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/hi/releases/v8.md +1 -1
- 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 +2 -2
- 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/id/releases/v8.md +1 -1
- 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 +2 -2
- 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/it/releases/v8.md +1 -1
- 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 +2 -2
- 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/ja/releases/v8.md +1 -1
- 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 +2 -2
- 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/ko/releases/v8.md +1 -1
- 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 +2 -2
- 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 +4 -4
- 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 +2 -2
- 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/pt/releases/v8.md +1 -1
- 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 +4 -4
- 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 +6 -6
- 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 +2 -2
- 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/tr/releases/v8.md +1 -1
- 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 +6 -6
- 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 +2 -2
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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/docs/zh/releases/v8.md +1 -1
- 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
|
@@ -50,7 +50,29 @@ Việc dịch một ứng dụng Angular đặt ra nhiều thách thức:
|
|
|
50
50
|
|
|
51
51
|
Angular cung cấp một framework i18n tích hợp sẵn, và cũng có một số thư viện bên thứ ba được thiết kế để đơn giản hóa việc thiết lập đa ngôn ngữ của bạn. Dưới đây là một số giải pháp phổ biến nhất.
|
|
52
52
|
|
|
53
|
-
### 1.
|
|
53
|
+
### 1. Intlayer
|
|
54
|
+
|
|
55
|
+
> Trang web: [https://intlayer.org/](https://intlayer.org/)
|
|
56
|
+
|
|
57
|
+
**Tổng quan**
|
|
58
|
+
**Intlayer** là một thư viện quốc tế hóa (i18n) mã nguồn mở sáng tạo được thiết kế để đơn giản hóa việc hỗ trợ đa ngôn ngữ trong các ứng dụng web Angular (và các ứng dụng khác) hiện đại. Nó cung cấp một phương pháp khai báo cho phép bạn xác định các từ điển dịch trực tiếp trong các thành phần của mình.
|
|
59
|
+
|
|
60
|
+
**Các tính năng chính**
|
|
61
|
+
|
|
62
|
+
- **Khai báo bản dịch**: Cho phép tất cả các bản dịch được khai báo trong một tệp duy nhất, được giữ ở cấp độ thành phần, giúp dễ dàng bảo trì và mở rộng.
|
|
63
|
+
- **TypeScript và Autocomplete**: Cung cấp các định nghĩa kiểu được tạo tự động cho các khóa dịch, đảm bảo tự động hoàn thành mạnh mẽ và phát hiện lỗi.
|
|
64
|
+
- **Thành phần máy chủ và SSR**: Được xây dựng với sự hỗ trợ cho hiển thị phía máy chủ (SSR) và các thành phần máy chủ, đảm bảo nội dung được bản địa hóa được hiển thị hiệu quả trên cả máy khách và máy chủ.
|
|
65
|
+
- **Siêu dữ liệu và URL được bản địa hóa cho SEO**: Dễ dàng quản lý các tuyến dựa trên ngôn ngữ động, sơ đồ trang web và các mục nhập robots.txt để cải thiện khả năng khám phá và SEO.
|
|
66
|
+
- **Tích hợp liền mạch**: Tương thích với Angular CLI và các công cụ khác, giúp việc thiết lập trở nên đơn giản.
|
|
67
|
+
- **Tải không đồng bộ**: Tải các từ điển dịch một cách linh hoạt, giảm kích thước gói ban đầu và cải thiện hiệu suất.
|
|
68
|
+
|
|
69
|
+
**Những điều cần lưu ý**
|
|
70
|
+
|
|
71
|
+
- **Cộng đồng và Hệ sinh thái**: Mặc dù đang phát triển, hệ sinh thái vẫn còn mới, vì vậy các plugin và công cụ do cộng đồng thúc đẩy có thể hạn chế hơn so với các giải pháp lâu đời hơn.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### 2. i18n Tích hợp sẵn của Angular
|
|
54
76
|
|
|
55
77
|
**Tổng quan**
|
|
56
78
|
Angular đi kèm với một hệ thống **i18n tích hợp sẵn** bao gồm các công cụ để trích xuất chuỗi dịch, xử lý số nhiều và nội suy, và tích hợp bản dịch tại thời điểm biên dịch. Giải pháp chính thức này rất mạnh mẽ cho các dự án nhỏ hơn hoặc những dự án có thể tuân theo cấu trúc được Angular khuyến nghị.
|
|
@@ -70,7 +92,7 @@ Angular đi kèm với một hệ thống **i18n tích hợp sẵn** bao gồm c
|
|
|
70
92
|
|
|
71
93
|
---
|
|
72
94
|
|
|
73
|
-
###
|
|
95
|
+
### 3. ngx-translate
|
|
74
96
|
|
|
75
97
|
Website: [https://github.com/ngx-translate/core](https://github.com/ngx-translate/core)
|
|
76
98
|
|
|
@@ -92,7 +114,7 @@ Website: [https://github.com/ngx-translate/core](https://github.com/ngx-translat
|
|
|
92
114
|
|
|
93
115
|
---
|
|
94
116
|
|
|
95
|
-
###
|
|
117
|
+
### 4. Transloco
|
|
96
118
|
|
|
97
119
|
Website: [https://ngneat.github.io/transloco/](https://ngneat.github.io/transloco/)
|
|
98
120
|
|
|
@@ -50,7 +50,29 @@ Việc dịch một ứng dụng Svelte có thể gặp phải một số khó k
|
|
|
50
50
|
|
|
51
51
|
Svelte không cung cấp giải pháp i18n tích hợp sẵn (như Angular), nhưng cộng đồng đã tạo ra nhiều thư viện và mẫu thiết kế mạnh mẽ. Dưới đây là một số cách tiếp cận phổ biến.
|
|
52
52
|
|
|
53
|
-
### 1.
|
|
53
|
+
### 1. Intlayer
|
|
54
|
+
|
|
55
|
+
> Trang web: [https://intlayer.org/](https://intlayer.org/)
|
|
56
|
+
|
|
57
|
+
**Tổng quan**
|
|
58
|
+
**Intlayer** là một thư viện quốc tế hóa (i18n) mã nguồn mở sáng tạo được thiết kế để đơn giản hóa việc hỗ trợ đa ngôn ngữ trong các ứng dụng web Svelte (và các ứng dụng khác) hiện đại. Nó cung cấp một phương pháp khai báo cho phép bạn xác định các từ điển dịch trực tiếp trong các thành phần của mình.
|
|
59
|
+
|
|
60
|
+
**Các tính năng chính**
|
|
61
|
+
|
|
62
|
+
- **Khai báo bản dịch**: Cho phép tất cả các bản dịch được khai báo trong một tệp duy nhất, được giữ ở cấp độ thành phần, giúp dễ dàng bảo trì và mở rộng.
|
|
63
|
+
- **TypeScript và Autocomplete**: Cung cấp các định nghĩa kiểu được tạo tự động cho các khóa dịch, đảm bảo tự động hoàn thành mạnh mẽ và phát hiện lỗi.
|
|
64
|
+
- **Thành phần máy chủ và SSR**: Được xây dựng với sự hỗ trợ cho hiển thị phía máy chủ (SSR) and các thành phần máy chủ, đảm bảo nội dung được bản địa hóa được hiển thị hiệu quả trên cả máy khách và máy chủ.
|
|
65
|
+
- **Siêu dữ liệu và URL được bản địa hóa cho SEO**: Dễ dàng quản lý các tuyến dựa trên ngôn ngữ động, sơ đồ trang web và các mục nhập robots.txt để cải thiện khả năng khám phá và SEO.
|
|
66
|
+
- **Tích hợp liền mạch**: Tương thích với SvelteKit và các công cụ khác, giúp việc thiết lập trở nên đơn giản.
|
|
67
|
+
- **Tải không đồng bộ**: Tải các từ điển dịch một cách linh hoạt, giảm kích thước gói ban đầu và cải thiện hiệu suất.
|
|
68
|
+
|
|
69
|
+
**Những điều cần lưu ý**
|
|
70
|
+
|
|
71
|
+
- **Cộng đồng và Hệ sinh thái**: Mặc dù đang phát triển, hệ sinh thái vẫn còn mới, vì vậy các plugin và công cụ do cộng đồng thúc đẩy có thể hạn chế hơn so với các giải pháp lâu đời hơn.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### 2. svelte-i18n
|
|
54
76
|
|
|
55
77
|
Kho lưu trữ: [https://github.com/kaisermann/svelte-i18n](https://github.com/kaisermann/svelte-i18n)
|
|
56
78
|
|
|
@@ -72,7 +94,7 @@ Kho lưu trữ: [https://github.com/kaisermann/svelte-i18n](https://github.com/k
|
|
|
72
94
|
|
|
73
95
|
---
|
|
74
96
|
|
|
75
|
-
###
|
|
97
|
+
### 3. svelte-intl-precompile
|
|
76
98
|
|
|
77
99
|
Kho lưu trữ: [https://github.com/cibernox/svelte-intl-precompile](https://github.com/cibernox/svelte-intl-precompile)
|
|
78
100
|
|
|
@@ -96,7 +118,7 @@ Kho lưu trữ: [https://github.com/cibernox/svelte-intl-precompile](https://git
|
|
|
96
118
|
|
|
97
119
|
---
|
|
98
120
|
|
|
99
|
-
###
|
|
121
|
+
### 4. i18next với Svelte / SvelteKit
|
|
100
122
|
|
|
101
123
|
Website: [https://www.i18next.com/](https://www.i18next.com/)
|
|
102
124
|
|
|
@@ -52,7 +52,21 @@ Dưới đây là một số thư viện và phương pháp phổ biến mà b
|
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
55
|
-
### 1.
|
|
55
|
+
### 1. Intlayer
|
|
56
|
+
|
|
57
|
+
> Trang web: [https://intlayer.org/](https://intlayer.org/)
|
|
58
|
+
|
|
59
|
+
**Tổng quan**
|
|
60
|
+
**Intlayer** là một giải pháp i18n mã nguồn mở nhằm đơn giản hóa việc hỗ trợ đa ngôn ngữ trên nhiều framework, bao gồm cả **Vue**. Nó nhấn mạnh vào cách tiếp cận khai báo, định kiểu mạnh mẽ và hỗ trợ SSR trong các hệ sinh thái khác, mặc dù SSR không phải là điển hình trong Vue tiêu chuẩn.
|
|
61
|
+
|
|
62
|
+
**Các tính năng chính**
|
|
63
|
+
|
|
64
|
+
- **Dịch thuật khai báo**: Định nghĩa các từ điển dịch thuật ở cấp độ widget hoặc trong một tệp tập trung để có kiến trúc sạch hơn.
|
|
65
|
+
- **TypeScript & Tự động hoàn thành (Web)**: Mặc dù tính năng này chủ yếu mang lại lợi ích cho các framework web, nhưng cách tiếp cận dịch thuật có kiểu vẫn có thể định hướng mã có cấu trúc trong Vue.
|
|
66
|
+
- **Tải không đồng bộ**: Tải các tài sản dịch thuật một cách động, tiềm năng giảm kích thước bundle ban đầu cho các ứng dụng đa ngôn ngữ.
|
|
67
|
+
- **Tích hợp với Vue**: Một tích hợp cơ bản có thể được thiết lập để tận dụng cách tiếp cận của Intlayer cho các bản dịch có cấu trúc.
|
|
68
|
+
|
|
69
|
+
### 2. Vue I18n
|
|
56
70
|
|
|
57
71
|
> Trang web: [https://vue-i18n.intlify.dev/](https://vue-i18n.intlify.dev/)
|
|
58
72
|
|
|
@@ -83,7 +97,7 @@ Dưới đây là một số thư viện và phương pháp phổ biến mà b
|
|
|
83
97
|
|
|
84
98
|
---
|
|
85
99
|
|
|
86
|
-
###
|
|
100
|
+
### 3. LinguiJS (Tích hợp Vue)
|
|
87
101
|
|
|
88
102
|
> Trang web: [https://lingui.js.org/](https://lingui.js.org/)
|
|
89
103
|
|
|
@@ -54,7 +54,7 @@ Dưới đây là danh sách kiểm tra mà mọi ứng dụng đa ngôn ngữ n
|
|
|
54
54
|
- **Sử dụng các liên kết địa phương hóa**
|
|
55
55
|
Ví dụ: `<a href="/fr/about">À propos</a>` thay vì liên kết đến trang mặc định `/about`.
|
|
56
56
|
|
|
57
|
-
Đây là những bước đơn giản
|
|
57
|
+
Đây là những bước đơn giản, nhưng bỏ qua chúng có thể khiến bạn mất đi khả năng hiển thị.
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
@@ -96,7 +96,7 @@ Nhưng từ tất cả các giải pháp đó, rõ ràng rằng cách tiếp c
|
|
|
96
96
|
Hãy để tôi nói lý do điều đó có thể gây vấn đề cho ứng dụng của bạn:
|
|
97
97
|
|
|
98
98
|
- **Dữ liệu không sử dụng:**
|
|
99
|
-
Khi một trang được tải, bạn thường tải luôn nội dung từ tất cả các trang khác. (Trong một ứng dụng 10 trang, đó là 90% nội dung bị tải nhưng không dùng). Bạn lazy-load một modal? Thư viện i18n cũng mặc
|
|
99
|
+
Khi một trang được tải, bạn thường tải luôn nội dung từ tất cả các trang khác. (Trong một ứng dụng 10 trang, đó là 90% nội dung bị tải nhưng không dùng). Bạn lazy-load một modal? Thư viện i18n cũng mặc kệ, nó vẫn tải các chuỗi lên trước.
|
|
100
100
|
- **Hiệu năng:**
|
|
101
101
|
Mỗi lần re-render, từng component của bạn đều được hydrated với một payload JSON lớn, điều này ảnh hưởng đến tính phản ứng (reactivity) của app khi nó phát triển.
|
|
102
102
|
- **Bảo trì:**
|
|
@@ -99,7 +99,7 @@ Sự đánh đổi này (kích thước đoạn so với phần chồng lấn) l
|
|
|
99
99
|
|
|
100
100
|
## Bước 3: Tạo Embeddings
|
|
101
101
|
|
|
102
|
-
Khi tài liệu đã được chia nhỏ, chúng ta tạo ra **embeddings
|
|
102
|
+
Khi tài liệu đã được chia nhỏ, chúng ta tạo ra **embeddings**, các vector đa chiều đại diện cho mỗi đoạn.
|
|
103
103
|
|
|
104
104
|
Tôi đã sử dụng mô hình text-embedding-3-large của OpenAI, nhưng bạn có thể dùng bất kỳ mô hình embedding hiện đại nào.
|
|
105
105
|
|
|
@@ -20,7 +20,7 @@ slugs:
|
|
|
20
20
|
|
|
21
21
|
# 支持与反对编译器驱动国际化的观点
|
|
22
22
|
|
|
23
|
-
如果你从事网页应用开发超过十年,你会知道国际化(i18n
|
|
23
|
+
如果你从事网页应用开发超过十年,你会知道国际化(i18n)一直是一个难点。它通常是没人愿意做的任务, 提取字符串、管理 JSON 文件,以及处理复数规则。
|
|
24
24
|
|
|
25
25
|
最近,一波新的**“基于编译器”的国际化(i18n)工具**涌现,承诺让这份痛苦消失。它们的宣传非常诱人:**只需在组件中编写文本,构建工具会处理剩下的一切。**无需键名,无需导入,纯粹是魔法。
|
|
26
26
|
|
|
@@ -205,7 +205,7 @@ Intlayer 提供了一种混合方法,让你能够同时享受两种方法的
|
|
|
205
205
|
基于编译器的方法是一个有效的选择。它允许你非常快速地开发。你不需要担心文件结构或键值。你只需构建即可。技术债务是“未来的你”需要解决的问题。
|
|
206
206
|
|
|
207
207
|
**如果你是初级开发者,或者不在意优化:**
|
|
208
|
-
|
|
208
|
+
如果你想减少手动管理,基于编译器的方法可能是最好的。你不需要自己处理键或翻译文件, 只需编写文本,编译器会自动完成剩下的工作。这减少了设置工作量和与手动步骤相关的常见国际化错误。
|
|
209
209
|
|
|
210
210
|
**如果你正在对一个已有数千个组件需要重构的现有项目进行国际化:**
|
|
211
211
|
基于编译器的方法在这里可以是一个务实的选择。初始的提取阶段可以节省数周甚至数月的手动工作。然而,建议考虑使用像 Intlayer 的 `transform` 命令这样的工具,它可以提取字符串并将其转换为显式的声明式内容声明。这让你既能享受自动化的速度,又能保持声明式方法的安全性和可移植性。你可以两者兼得:快速的初始迁移而不会带来长期的架构债务。
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-02-26
|
|
3
|
+
updatedAt: 2026-02-26
|
|
4
|
+
title: "i18n 的含义:什么是国际化,为什么它很重要?"
|
|
5
|
+
description: "探索软件开发中 i18n 的真正含义。了解什么是国际化,为什么它被缩写为 i18n,以及它如何影响全球覆盖。"
|
|
6
|
+
keywords:
|
|
7
|
+
- i18n 的含义
|
|
8
|
+
- i18n 代表什么
|
|
9
|
+
- i18n
|
|
10
|
+
- 国际化
|
|
11
|
+
- 本地化
|
|
12
|
+
- 博客
|
|
13
|
+
- Web 开发
|
|
14
|
+
slugs:
|
|
15
|
+
- blog
|
|
16
|
+
- i18n-meaning
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# i18n 的含义:什么是国际化,为什么它很重要?
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
## 理解 \"i18n 的含义\"
|
|
24
|
+
|
|
25
|
+
如果你从事软件开发、网页设计或数字营销,你可能遇到过 **i18n** 这个术语。**i18n 的真正含义**其实是 **国际化** (internationalization) 的一个数字略写。
|
|
26
|
+
|
|
27
|
+
但为什么是 \"i18n\"?这个缩写是由单词 \"internationalization\" 的第一个字母 (**i**)、最后一个字母 (**n**) 以及它们之间的字母数量 (**18**) 组成的。这种惯例在科技行业经常被用来缩短冗长、繁琐的术语(另一个常见的例子是本地化 **l10n**)。
|
|
28
|
+
|
|
29
|
+
在技术层面,**i18n 的含义**是指设计和准备软件应用程序、网站或产品的过程,使其能够轻松支持多种语言、地区规范和文化习俗,而无需对底层源代码进行重大工程更改。
|
|
30
|
+
|
|
31
|
+
## i18n 在实践中的核心含义
|
|
32
|
+
|
|
33
|
+
理解 i18n 的含义不仅仅是知道这个缩写代表什么。更重要的是识别其背后的架构原则。当一个项目被正确地 \"国际化\" 时,意味着开发人员已经将内容与代码解耦。
|
|
34
|
+
|
|
35
|
+
与其将文本硬编码到应用程序中,如下所示:
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
<button>提交</button>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
支持 i18n 的应用程序使用翻译键或变量:
|
|
42
|
+
|
|
43
|
+
```javascript
|
|
44
|
+
<button>{t("submit_button")}</button>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
这确保了应用程序可以根据用户的偏好动态加载正确的语言字典(例如英语、西班牙语、日语),而无需重写组件。
|
|
48
|
+
|
|
49
|
+
## 为什么 i18n 的含义对你的业务至关重要
|
|
50
|
+
|
|
51
|
+
掌握 **i18n 的含义** 只是第一步。了解为什么它对现代数字产品如此重要,是成功的全球化应用程序与本地化应用程序的区别所在。
|
|
52
|
+
|
|
53
|
+
### 打破语言障碍
|
|
54
|
+
|
|
55
|
+
i18n 含义最显而易见的应用是翻译。通过从第一天就开始对你的应用程序进行国际化,你就建立了一个基础,可以无缝地将你的界面翻译成几十种语言。这对于开拓新的全球市场至关重要。
|
|
56
|
+
|
|
57
|
+
### 文化和地区适应
|
|
58
|
+
|
|
59
|
+
i18n 的含义不仅限于语言。真正的国际化支持:
|
|
60
|
+
|
|
61
|
+
- **日期和时间格式:** 为美国用户显示 `MM/DD/YYYY`,为中国用户显示 `YYYY/MM/DD`。
|
|
62
|
+
- **数字格式:** 识别美国使用的 `1,000.50` 在欧洲部分地区通常写成 `1.000,50`。
|
|
63
|
+
- **货币:** 在 `$99.00` 与 `¥99.00` 之间进行调整。
|
|
64
|
+
- **文本方向:** 支持从右向左 (RTL) 书写的语言,如阿拉伯语和希伯来语。
|
|
65
|
+
|
|
66
|
+
### 提升 SEO 表现
|
|
67
|
+
|
|
68
|
+
搜索引擎优先考虑与用户的语言和地区相关的内容。应用 i18n 含义背后的原则,可以让你通过构建网站(例如使用 `hreflang` 标签、本地化 URL)在多个国家获得更高的排名,从而推动有机的全球流量。
|
|
69
|
+
|
|
70
|
+
## 国际化 (i18n) 与 本地化 (l10n)
|
|
71
|
+
|
|
72
|
+
要完全掌握 **i18n 的含义**,你必须将其与 **l10n** (本地化) 区分开来。
|
|
73
|
+
|
|
74
|
+
- **i18n (国际化):** 使适应成为可能的 _技术准备_ 和结构设计框架。例如:支持 UTF-8 编码、抽象文本字符串,以及使 UI 布局能够灵活应对更长的词语。
|
|
75
|
+
- **l10n (本地化):** 产品针对特定地区的 _实际适应_ 过程。例如:将英文文本翻译成中文、调整图像以符合文化规范,以及设置本地货币。
|
|
76
|
+
|
|
77
|
+
把 **i18n** 想象成制造一辆方向盘可以安装在左侧或右侧的汽车。**l10n** 则是为了在英国销售而将方向盘实际安装在右侧的行为。
|
|
78
|
+
|
|
79
|
+
## 关于 i18n 含义的常见误区
|
|
80
|
+
|
|
81
|
+
1. **\"i18n 仅仅意味着翻译。\"**
|
|
82
|
+
虽然翻译是最终结果的重要组成部分,但 i18n 的真正含义涵盖了格式化、复数规则、文本方向和架构就绪性。
|
|
83
|
+
2. **\"我们可以以后再添加 i18n。\"**
|
|
84
|
+
事后为应用程序进行国际化改造是极其困难的。硬编码的字符串、死板的 UI 组件和不兼容的日期格式可能会导致巨大的技术债务。从一开始就规划 i18n 是一项基本的最佳实践。
|
|
85
|
+
|
|
86
|
+
## 如何有效地实施 i18n
|
|
87
|
+
|
|
88
|
+

|
|
89
|
+
|
|
90
|
+
既然我们已经确定了 **i18n 的真正含义**,那么你该如何应用它呢?
|
|
91
|
+
|
|
92
|
+
- **使用成熟的 i18n 框架:** 不要重新发明轮子。无论你使用的是 React、Vue、Next.js 还是纯 JavaScript,都有专门设计的 i18n 库来处理繁重的工作(如复数化和插值)。
|
|
93
|
+
- **抽象所有面向用户的文本:** 确保你的 UI 组件中不存在硬编码文本。
|
|
94
|
+
- **采用强大的翻译管理系统:** 像 **Intlayer** 这样的工具弥合了开发人员和翻译人员之间的鸿沟。Intlayer 作为一个与你的代码库紧密集成的 Headless CMS,允许内容管理人员在视觉上更新翻译,而无需开发人员触发新的构建。
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### 查看按技术分类的 i18n 库和工具列表
|
|
99
|
+
|
|
100
|
+
如果你正在寻找按技术分类的 i18n 库和工具列表,请查看以下资源:
|
|
101
|
+
|
|
102
|
+
### 针对内容管理系统 (CMS)
|
|
103
|
+
|
|
104
|
+
- WordPress:[查看 i18n 库和工具列表](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/list_i18n_technologies/CMS/wordpress.md)
|
|
105
|
+
- Wix:[查看 i18n 库 and 工具列表](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/list_i18n_technologies/CMS/wix.md)
|
|
106
|
+
- Drupal:[查看 i18n 库 and 工具列表](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/list_i18n_technologies/CMS/drupal.md)
|
|
107
|
+
|
|
108
|
+
### 针对 JavaScript 应用程序 (前端)
|
|
109
|
+
|
|
110
|
+
- React:[查看 i18n 库和工具列表](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/list_i18n_technologies/frameworks/react.md)
|
|
111
|
+
- Angular:[查看 i18n 库和工具列表](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/list_i18n_technologies/frameworks/angular.md)
|
|
112
|
+
- Vue:[查看 i18n 库和工具列表](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/list_i18n_technologies/frameworks/vue.md)
|
|
113
|
+
- Svelte:[查看 i18n 库和工具列表](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/list_i18n_technologies/frameworks/svelte.md)
|
|
114
|
+
- React Native:[查看 i18n 库和工具列表](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/list_i18n_technologies/frameworks/react-native.md)
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 结论
|
|
119
|
+
|
|
120
|
+
**i18n 的含义** 是任何旨在产生全球影响的现代数字业务的基础概念。i18n 绝不仅仅是一个关于 \"国际化\" 的独特技术缩写,它代表了无缝地使你的软件适应多种语言、文化和地区标准所需的技术架构。
|
|
121
|
+
|
|
122
|
+
通过理解 i18n 的含义并在开发周期的早期采用其原则,你可以节省大量的工程时间,防止未来的技术债务,并确保你的应用程序为全球用户提供原生的、热情的体验。
|
|
123
|
+
|
|
124
|
+
无论你是在构建移动应用程序、SaaS 平台还是企业工具,拥抱 i18n 的真正含义可以确保你的产品能够适应并吸引来自世界各地的用户,而无需不断地重写代码。通过利用最佳实践、强大的框架以及使用 Intlayer 等平台进行本地化内容声明,产品团队可以提供真正的全球化软件体验。
|
|
@@ -18,7 +18,7 @@ slugs:
|
|
|
18
18
|
|
|
19
19
|
# SEO & I18n: 为您的网站提供多语言支持的终极指南
|
|
20
20
|
|
|
21
|
-
想要在全球范围内吸引更多用户吗?让您的网站支持多语言是扩展您受众和改善 SEO(搜索引擎优化)的最佳方法之一。在这篇博客文章中,我们将以清晰易懂的术语分解国际 SEO 的基础知识,
|
|
21
|
+
想要在全球范围内吸引更多用户吗?让您的网站支持多语言是扩展您受众和改善 SEO(搜索引擎优化)的最佳方法之一。在这篇博客文章中,我们将以清晰易懂的术语分解国际 SEO 的基础知识, 通常称为 **i18n**(国际化的缩写)。您将了解需要做出的关键决策,如何使用 `hreflang` 等技术元素,以及像 **Intlayer** 这样的工具如何简化您的多语言 Next.js 项目。
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
@@ -26,7 +26,7 @@ slugs:
|
|
|
26
26
|
|
|
27
27
|
一个多语言网站以多种语言提供内容。例如,您可以拥有一个英文版(`example.com/en/`),一个法文版(`example.com/fr/`)和一个西班牙版(`example.com/es/`)。这种方法使搜索引擎能够根据用户的偏好或地理位置显示正确的语言版本。
|
|
28
28
|
|
|
29
|
-
当您做到这一点时,您将为非英语用户创造一个更加友好的体验,
|
|
29
|
+
当您做到这一点时,您将为非英语用户创造一个更加友好的体验, 这将导致更好的参与度、更高的转化率,以及不同地区的 SEO 改善。
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
@@ -170,7 +170,7 @@ slugs:
|
|
|
170
170
|
### 7.1. 自动重定向还是语言选择器?
|
|
171
171
|
|
|
172
172
|
- **自动重定向**(基于 IP 或浏览器设置)可能方便,但可能会将旅行者或 VPN 用户发送到错误的版本。
|
|
173
|
-
- **语言选择器** 通常更为透明,
|
|
173
|
+
- **语言选择器** 通常更为透明, 用户可以选择自己的语言,如果自动检测的语言不正确。
|
|
174
174
|
|
|
175
175
|
以下是一个简化的 Next.js + Intlayer 示例:
|
|
176
176
|
|
|
@@ -287,8 +287,8 @@ const LocaleSwitcher: FC = () => {
|
|
|
287
287
|
|
|
288
288
|
## 总结
|
|
289
289
|
|
|
290
|
-
让您的网站支持多语言不仅仅涉及翻译文本。它还关乎有效地构建 URL,使用 `hreflang` 标签帮助搜索引擎提供正确的版本,并提供卓越的用户体验,
|
|
290
|
+
让您的网站支持多语言不仅仅涉及翻译文本。它还关乎有效地构建 URL,使用 `hreflang` 标签帮助搜索引擎提供正确的版本,并提供卓越的用户体验, 包括本地化视觉内容、语言选择器和一致的导航。遵循这些最佳实践将使您在全球市场取得成功,提升用户满意度,并最终在各个地区改善 SEO 结果。
|
|
291
291
|
|
|
292
|
-
如果您使用 Next.js(特别是 Next.js 13+ 中的 App Router),像 **Intlayer** 这样的工具可以简化整个过程。它可以处理从生成本地化站点地图到自动处理 `hreflang` 链接、语言检测等所有工作,
|
|
292
|
+
如果您使用 Next.js(特别是 Next.js 13+ 中的 App Router),像 **Intlayer** 这样的工具可以简化整个过程。它可以处理从生成本地化站点地图到自动处理 `hreflang` 链接、语言检测等所有工作, 这样您就可以专注于创建高质量的多语言内容。
|
|
293
293
|
|
|
294
294
|
**准备好走向全球吗?** 立即开始实施这些 SEO 和 i18n 策略,看看来自世界各地的新访客如何发现并与您的网站互动!
|
|
@@ -23,58 +23,58 @@ history:
|
|
|
23
23
|
|
|
24
24
|
<TOC/>
|
|
25
25
|
|
|
26
|
-
# 翻译管理系统 (
|
|
26
|
+
# 翻译管理系统 (TMS)
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
翻译管理系统 (TMS) 是一种软件平台,旨在自动化并简化翻译与本地化 (L10n) 流程。传统上,TMS 作为一个中心枢纽,用于上传和组织内容,并将其分配给人工译者。它负责管理工作流,存储翻译记忆(以避免重复翻译相同的句子),并处理将翻译后的文件交付回开发人员或内容管理员的过程。
|
|
29
29
|
|
|
30
|
-
本质上,TMS
|
|
30
|
+
本质上,TMS 历来是技术代码(字符串所在处)与理解文化的人工译者之间的桥梁。
|
|
31
31
|
|
|
32
32
|
# Lokalise
|
|
33
33
|
|
|
34
|
-
Lokalise 是现代 TMS
|
|
34
|
+
Lokalise 是现代 TMS 领域的重要参与者。其成立于 2017 年,通过高度关注开发者体验 (DX) 和设计集成颠覆了市场。与老牌竞争对手不同,Lokalise 优先打造流畅的 UI、强大的 API,以及与 Figma 和 GitHub 等工具的集成,以减少文件往返移动的摩擦。
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
它的成功建立在作为“开发者友好型” TMS 之上,能够自动化字符串的提取与插入,从而节省工程师的时间。它有效地解决了快速发展的技术团队希望摆脱手动处理电子表格邮件的需求,实现了**持续本地化**。
|
|
37
37
|
|
|
38
38
|
# Intlayer
|
|
39
39
|
|
|
40
|
-
Intlayer 主要作为 i18n
|
|
40
|
+
Intlayer 主要作为 i18n 解决方案而闻名,但它也集成了一个无头 CMS。与主要作为外部字符串同步工具的 Lokalise 不同,Intlayer 更贴近您的代码。它控制整个技术栈, 从打包层到远程内容交付, 从而带来更顺畅、更高效的内容流。
|
|
41
41
|
|
|
42
|
-
##
|
|
42
|
+
## 为什么 AI 的出现改变了范式?
|
|
43
43
|
|
|
44
|
-
Lokalise 将本地化的 “DevOps”
|
|
44
|
+
Lokalise 将本地化的 “DevOps” 方面做到了极致, 即自动化的字符串移动。然而,大型语言模型 (LLM) 的出现从根本上改变了本地化的范式。现在的瓶颈不再是**移动**字符串,而是**生成**内容。
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
随着 LLM 的出现,翻译成本急剧下降,速度呈指数级提升。本地化团队的角色正从“管理译者”转向“管理上下文和审核”。
|
|
47
47
|
|
|
48
|
-
尽管 Lokalise 已经增加了 AI
|
|
48
|
+
尽管 Lokalise 已经增加了 AI 功能,但它本质上仍是一个为管理人工工作流而设计,并按席位或翻译键数量计费的平台。在 AI 优先的世界里,价值在于您如何编排 AI 模型以生成具有上下文感知的内容,而不仅仅是多容易地将任务分派给代理机构。
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
目前,最有效的工作流是先利用 AI 进行页面翻译和全球布局。然后,在第二阶段,当产品已经开始产生收入时,再聘请专业文案人员对特定的高流量内容进行优化,以提升转化率。
|
|
51
51
|
|
|
52
|
-
## 为什么 Intlayer 是 Lokalise
|
|
52
|
+
## 为什么 Intlayer 是 Lokalise 的理想替代方案?
|
|
53
53
|
|
|
54
|
-
Intlayer
|
|
54
|
+
Intlayer 是诞生于 AI 时代的解决方案。其架构基于这样一个原则:纯粹的翻译已成为一种商品,而**上下文**才是核心。
|
|
55
55
|
|
|
56
|
-
Lokalise
|
|
56
|
+
Lokalise 常因其陡峭的定价阶梯而受到诟病,这对于正在扩张的初创公司来说可能极其昂贵。Intlayer 则采用了不同的策略:
|
|
57
57
|
|
|
58
|
-
1. **成本效率:**
|
|
59
|
-
2.
|
|
60
|
-
3.
|
|
58
|
+
1. **成本效率:** 您不会被锁定在按“翻译键数量”或“席位”计费的模型中,这种模型往往会惩罚公司的增长。使用 Intlayer,您可以根据自己的推理需求付费(自带 API 密钥,BYO Key),这意味着您的成本直接随实际使用量增长,而不是支付给平台的利润率。
|
|
59
|
+
2. **工作流集成:** 虽然 Lokalise 需要同步文件(即使是自动化的),但 Intlayer 允许您在组件文件(React、Next.js 等)中直接通过**声明式内容**进行定义。这能将上下文保留在 UI 旁,减少错误。
|
|
60
|
+
3. **可视化管理:** Intlayer 提供了一个可视化编辑器,可以直接与运行中的应用交互,确保在完整的视觉上下文中进行编辑, 而这在传统的 TMS 文件列表中往往是缺失的。
|
|
61
61
|
|
|
62
62
|
# 并排比较
|
|
63
63
|
|
|
64
64
|
| 功能 | Lokalise(现代 TMS) | Intlayer(AI 原生) |
|
|
65
65
|
| :----------- | :--------------------------------------------- | :------------------------------------ |
|
|
66
66
|
| **核心理念** | 自动化与设计阶段的本地化(L10n)。 | 管理内容逻辑与 AI 生成。 |
|
|
67
|
-
| **定价模式** | 按席位 / 月活(MAU)/
|
|
67
|
+
| **定价模式** | 按席位 / 月活(MAU)/ 键位数量计费(成本高)。 | 按自有推理付费(自带密钥,BYO Key)。 |
|
|
68
68
|
| **集成方式** | 基于 API 的同步 / Figma 插件。 | 深度代码集成(声明式)。 |
|
|
69
69
|
| **更新** | 同步延迟 / 需要创建 PR。 | 与代码库或运行中应用即时同步。 |
|
|
70
70
|
| **文件格式** | 格式无关(移动、Web、文档)。 | 现代 Web(JSON, JS, TS)。 |
|
|
71
|
-
| **测试** |
|
|
71
|
+
| **测试** | 审核工作流。 | CI / CLI / A/B 测试。 |
|
|
72
72
|
| **托管** | SaaS(闭源)。 | 开源 & 可自托管(Docker)。 |
|
|
73
73
|
|
|
74
|
-
Intlayer 提供了一个完整的一体化 i18n
|
|
74
|
+
Intlayer 提供了一个完整的一体化 i18n 解决方案,允许对内容进行深度集成。您的远程内容可以直接与代码库或在线应用同步。相比之下,Lokalise 通常依赖于创建拉取请求 (PR) 来更新代码仓库中的内容,这导致了“内容状态”和“应用状态”之间的分离。
|
|
75
75
|
|
|
76
|
-
此外,Intlayer
|
|
76
|
+
此外,Intlayer 还可以作为功能开关 (Feature Flag) 或 A/B 测试工具使用,使您能够动态地测试不同的内容变体。Lokalise 专注于文本的准确性,而 Intlayer 则通过动态数据服务专注于优化**用户体验**。
|
|
77
77
|
|
|
78
|
-
Lokalise 非常适合移动应用(iOS/Android
|
|
78
|
+
Lokalise 非常适合移动应用(iOS/Android)和以设计为导向的工作流。然而,对于使用 Next.js 或 React 等框架的现代 Web 应用,Intlayer 对 `.js`、`.ts` 和 JSON 字典的原生处理提供了更优的开发者体验 (DX),并为内容提供完整的 TypeScript 支持, 确保您再也不会部署缺失翻译键的代码。
|
|
79
79
|
|
|
80
|
-
最后,对于那些优先考虑数据主权与控制权的用户,Intlayer
|
|
80
|
+
最后,对于那些优先考虑数据主权与控制权的用户,Intlayer 是开源的且支持自托管。Docker 文件已直接包含在代码库中,赋予您对本地化基础设施的完全所有权, 这与 Lokalise 的封闭式 SaaS 模型形成了鲜明对比。
|
|
@@ -23,62 +23,58 @@ history:
|
|
|
23
23
|
|
|
24
24
|
<TOC/>
|
|
25
25
|
|
|
26
|
-
# 翻译管理系统
|
|
26
|
+
# 翻译管理系统 (TMS)
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
翻译管理系统 (TMS) 是一种软件平台,旨在自动化并简化翻译和本地化 (L10n) 流程。传统上,TMS 作为一个中心枢纽,负责上传、组织内容并将其分配给人工译者。它负责管理工作流,存储翻译记忆(以避免重复翻译相同的句子),并负责将翻译后的文件交付回开发人员或内容负责人。
|
|
29
29
|
|
|
30
|
-
本质上,TMS
|
|
31
|
-
|
|
32
|
-
翻译管理系统(TMS)是一种软件平台,旨在自动化并简化翻译与本地化(L10n)流程。传统上,TMS 充当一个集中枢纽,内容在此被上传、组织并分配给人工译者。它管理工作流、存储翻译记忆(以避免对相同句子重复翻译),并负责将已翻译的文件交付回开发者或内容负责人。
|
|
33
|
-
|
|
34
|
-
本质上,TMS 长期以来一直是技术代码(字符串所在)与理解目标文化的人类语言学家之间的桥梁。
|
|
30
|
+
本质上,TMS 在技术代码(字符串所在处)与理解目标文化的人工译者之间长期扮演着桥梁角色。
|
|
35
31
|
|
|
36
32
|
# Crowdin
|
|
37
33
|
|
|
38
|
-
Crowdin
|
|
34
|
+
Crowdin 是该领域的资深玩家。其成立于 2009 年,它出现在本地化主要挑战还是连接性问题的时期。它的使命很明确:将文案作者、译者和项目负责人有效地连接起来。
|
|
39
35
|
|
|
40
|
-
十多年来,Crowdin
|
|
36
|
+
十多年来,Crowdin 一直是管理本地化的行业标准。通过允许团队上传 `.po`、`.xml` 或 `.yaml` 文件,并让译者在云端界面上处理这些内容,它解决了文件碎片化问题。Crowdin 凭借稳健的工作流自动化建立了声誉,使公司能够从一种语言平滑扩展到十种语言,而无需陷入繁琐的电子表格中。
|
|
41
37
|
|
|
42
38
|
# Intlayer
|
|
43
39
|
|
|
44
|
-
Intlayer 主要以 i18n
|
|
40
|
+
Intlayer 主要以 i18n 解决方案著称,但它也集成了一个内容管理系统 (CMS)。与仅能作为现有 i18n 设置外壳的 Crowdin 不同,Intlayer 控制着整个技术栈, 从打包层到远程内容交付, 从而带来更顺畅、更高效的内容流。
|
|
45
41
|
|
|
46
42
|
## 自从 AI 出现后,范式为何改变?
|
|
47
43
|
|
|
48
|
-
尽管 Crowdin
|
|
44
|
+
尽管 Crowdin 优化了人工工作流程,但大型语言模型 (LLM) 的出现从根本上改变了本地化的范式。文案撰稿人的角色不再是从零开始翻译,而是审校和完善 AI 生成的内容。
|
|
49
45
|
|
|
50
|
-
为什么?因为 AI 的成本低了
|
|
46
|
+
为什么?因为 AI 的成本低了 1000 倍,且速度呈指数级提升。
|
|
51
47
|
|
|
52
|
-
|
|
48
|
+
不过,这也存在局限性。文案撰写不仅仅是翻译,更核心的是根据不同文化和语境调整信息。向您的祖母推销 iPhone 的方式,显然不能和向中国商务高管推销的方式相同。语调、措辞和文化标识都必须有所不同。
|
|
53
49
|
|
|
54
|
-
|
|
50
|
+
如今,最有效的工作流程是首先利用 AI 进行页面翻译和全球定位。随后在第二阶段,再由人工文案人员对特定的高流量内容进行优化,从而在产品产生收入后进一步提升转化率。
|
|
55
51
|
|
|
56
|
-
尽管 Crowdin
|
|
52
|
+
尽管 Crowdin 凭借其经过验证的传统解决方案依然表现良好,但我认为传统的本地化行业将在未来 5 到 10 年内受到严重冲击。按字数或席位付费的传统管理工具模式正在逐渐过时。
|
|
57
53
|
|
|
58
|
-
## 为什么 Intlayer 是 Crowdin
|
|
54
|
+
## 为什么 Intlayer 是 Crowdin 的理想替代方案?
|
|
59
55
|
|
|
60
|
-
Intlayer
|
|
56
|
+
Intlayer 是诞生于 AI 时代的解决方案。其架构理念基于这样一个前提:到 2026 年,纯粹的翻译已不再具有内在价值,而成为了一种商品化的服务。
|
|
61
57
|
|
|
62
|
-
因此,Intlayer
|
|
58
|
+
因此,Intlayer 不只是将自己定位为 TMS,而是一个深度整合了可视化编辑器和国际化逻辑的**内容管理**方案。
|
|
63
59
|
|
|
64
|
-
使用 Intlayer
|
|
60
|
+
使用 Intlayer,您可以以极低的推理成本生成翻译。您不会被绑定到特定平台的定价模型,您可以自由选择提供商(OpenAI、Anthropic、Mistral 等)和模型,并通过持续集成 (CI)、命令行界面 (CLI) 或集成的 CMS 直接进行翻译。它将价值核心从“获取译者资源”转向了“上下文管理”。
|
|
65
61
|
|
|
66
62
|
# 并排比较
|
|
67
63
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
| **更新**
|
|
74
|
-
| **文件格式**
|
|
75
|
-
| **测试**
|
|
76
|
-
| **托管**
|
|
64
|
+
| 功能 | Crowdin(传统 TMS) | Intlayer(AI 原生) |
|
|
65
|
+
| :----------- | :---------------------------------- | :---------------------------------------- |
|
|
66
|
+
| **核心理念** | 连接人工与字符串。 | 管理内容逻辑与 AI 生成。 |
|
|
67
|
+
| **定价模式** | 按席位 / 托管层级计费。 | 为您自己的推理付费(自带密钥,BYO Key)。 |
|
|
68
|
+
| **集成方式** | 基于文件的交换(上传/下载)。 | 深度代码集成(声明式)。 |
|
|
69
|
+
| **更新** | 通常需要在 CI/CD 中重建以部署文本。 | 与代码库或实时应用即时同步。 |
|
|
70
|
+
| **文件格式** | 多样化 (.po, .xml, .yaml 等)。 | 现代 Web(JSON, JS, TS)。 |
|
|
71
|
+
| **测试** | 功能有限。 | CI / CLI。 |
|
|
72
|
+
| **托管** | 主要为 SaaS。 | 开源且支持自托管(Docker)。 |
|
|
77
73
|
|
|
78
|
-
Intlayer
|
|
74
|
+
Intlayer 提供了一套完整的一体化 i18n 解决方案,可实现对内容的深度集成。您的动态内容可以直接与代码库或运行中的应用同步。相比之下,Crowdin 往往需要在 CI/CD 流水线中重建应用来更新内容,这在翻译团队与部署流程之间造成了摩擦。
|
|
79
75
|
|
|
80
|
-
此外,Intlayer
|
|
76
|
+
此外,Intlayer 还能被用作功能开关 (Feature Flag) 或 A/B 测试工具,使您能够动态测试不同的内容变体, 而这是像 Crowdin 这样的标准 TMS 工具所不具备的原生能力。
|
|
81
77
|
|
|
82
|
-
Crowdin
|
|
78
|
+
Crowdin 支持广泛的文件格式, 包括 `.po`、`.xml` 和 `.yaml` 等传统类型,这对已有成熟工作流或老旧系统的项目很有帮助。相比之下,Intlayer 主要面向现代 Web 格式,如 `.json`、`.js` 和 `.ts`。这意味着 Intlayer 可能无法直接兼容所有传统文件格式,迁移自旧平台的团队需要考虑这一点。
|
|
83
79
|
|
|
84
|
-
最后,对于优先考虑数据主权和控制权的团队,Intlayer
|
|
80
|
+
最后,对于优先考虑数据主权和控制权的团队,Intlayer 是开源的并支持自托管。代码仓库中直接提供了 Docker 文件,使您能够完全掌控本地化基础设施。
|