@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
|
@@ -25,39 +25,39 @@ history:
|
|
|
25
25
|
|
|
26
26
|
# Система управления переводами (Translation Management System)
|
|
27
27
|
|
|
28
|
-
Система управления переводами (TMS)
|
|
28
|
+
Система управления переводами (TMS), это программная платформа, предназначенная для автоматизации и оптимизации процесса перевода и локализации (L10n). Традиционно TMS выступает в роли централизованного хаба, куда загружается, упорядочивается и назначается контент человеческим переводчикам. Она управляет рабочими процессами, хранит память переводов (чтобы не переводить одно и то же предложение дважды) и занимается доставкой переведённых файлов обратно разработчикам или контент-менеджерам.
|
|
29
29
|
|
|
30
30
|
По сути, TMS исторически была мостом между техническим кодом (где хранятся строки) и человеческими лингвистами (которые понимают культуру).
|
|
31
31
|
|
|
32
32
|
# Lokalise
|
|
33
33
|
|
|
34
|
-
Lokalise
|
|
34
|
+
Lokalise, значимый игрок в современной экосистеме TMS. Основанная в 2017 году, компания появилась, чтобы нарушить рынок, уделяя большое внимание developer experience (DX) и интеграции дизайна. В отличие от старых конкурентов, Lokalise сделал ставку на аккуратный UI, мощные API и интеграции с такими инструментами, как Figma и GitHub, чтобы уменьшить трение при перемещении файлов туда и обратно.
|
|
35
35
|
|
|
36
36
|
Её успех строился на роли "дружелюбной к разработчикам" TMS: автоматизации извлечения и вставки строк, освобождая время инженеров. Она эффективно решила проблему _непрерывной локализации_ для быстро движущихся технических команд, которые хотели избавиться от ручной рассылки таблиц по электронной почте.
|
|
37
37
|
|
|
38
38
|
# Intlayer
|
|
39
39
|
|
|
40
|
-
Intlayer известен прежде всего как решение для i18n, но он также интегрирует headless CMS. В отличие от Lokalise, который в основном выступает как внешний инструмент синхронизации ваших строк, Intlayer располагается ближе к вашему коду. Он контролирует весь
|
|
40
|
+
Intlayer известен прежде всего как решение для i18n, но он также интегрирует headless CMS. В отличие от Lokalise, который в основном выступает как внешний инструмент синхронизации ваших строк, Intlayer располагается ближе к вашему коду. Он контролирует весь стек, от слоя сборки (bundling layer) до удалённой доставки контента, что приводит к более плавному и эффективному потоку контента.
|
|
41
41
|
|
|
42
42
|
## Почему парадигмы изменились с появлением AI?
|
|
43
43
|
|
|
44
|
-
Lokalise довёл до совершенства «DevOps»-сторону
|
|
44
|
+
Lokalise довёл до совершенства «DevOps»-сторону локализации, автоматическое перемещение строк. Однако появление Large Language Models (LLMs) фундаментально сместило парадигмы локализации. Узким местом больше не является _перемещение_ строк; им стало _создание_ этих строк.
|
|
45
45
|
|
|
46
46
|
С появлением LLMs стоимость перевода резко упала, а скорость выполнения выросла экспоненциально. Роль команды локализации смещается с «управления переводчиками» к «управлению контекстом и проверкой».
|
|
47
47
|
|
|
48
48
|
Хотя Lokalise добавил AI‑функции, по сути это остаётся платформой, предназначенной для управления человеческими рабочими процессами и взимания платы за «seat» или по количеству ключей. В мире, ориентированном на AI, ценность заключается в том, насколько хорошо вы умеете оркестровать ваши AI‑модели для генерации контента, учитывающего контекст, а не только в том, насколько просто поручить задачу человеческому агентству.
|
|
49
49
|
|
|
50
|
-
Сегодня наиболее эффективный рабочий
|
|
50
|
+
Сегодня наиболее эффективный рабочий процесс, сначала переводить и позиционировать ваши страницы глобально с помощью AI. Затем, на втором этапе, вы привлекаете человеческих копирайтеров для оптимизации конкретного контента с высоким трафиком, чтобы повысить конверсию, когда продукт уже начинает приносить доход.
|
|
51
51
|
|
|
52
|
-
## Почему Intlayer
|
|
52
|
+
## Почему Intlayer, хорошая альтернатива Lokalise?
|
|
53
53
|
|
|
54
|
-
Intlayer
|
|
54
|
+
Intlayer, решение, рождённое в эпоху AI. Оно было спроектировано с принципом, что сырый перевод, это товар, но _контекст_, король.
|
|
55
55
|
|
|
56
56
|
Lokalise часто критикуют за крутые уровни ценообразования, которые могут стать непомерно дорогими по мере роста стартапа. Intlayer придерживается иного подхода:
|
|
57
57
|
|
|
58
58
|
1. **Cost Efficiency:** Вы не привязаны к модели ценообразования «per key» или «per seat», которая наказывает рост. С Intlayer вы платите за свой собственный inference (BYO Key), то есть ваши расходы масштабируются прямо пропорционально фактическому использованию, а не марже платформы.
|
|
59
59
|
2. **Интеграция в рабочий процесс:** В то время как Lokalise требует синхронизации файлов (даже если она автоматизирована), Intlayer позволяет задавать Declarative Content непосредственно в ваших файлах компонентов (React, Next.js и т.д.). Это сохраняет контекст рядом с UI, снижая количество ошибок.
|
|
60
|
-
3. **Визуальное управление:** Intlayer предоставляет визуальный редактор, который взаимодействует напрямую с запущенным приложением, обеспечивая внесение правок в полном визуальном
|
|
60
|
+
3. **Визуальное управление:** Intlayer предоставляет визуальный редактор, который взаимодействует напрямую с запущенным приложением, обеспечивая внесение правок в полном визуальном контексте, то, что часто теряется в традиционных списках файлов TMS.
|
|
61
61
|
|
|
62
62
|
# Сравнение бок о бок
|
|
63
63
|
|
|
@@ -75,6 +75,6 @@ Intlayer предлагает полноценное, универсальное
|
|
|
75
75
|
|
|
76
76
|
Кроме того, Intlayer можно использовать как Feature Flag или инструмент A/B-тестирования, позволяющий динамически тестировать разные варианты контента. Если Lokalise фокусируется на корректности формулировок, то Intlayer ориентирован на правильный _пользовательский опыт_ через динамическую выдачу данных.
|
|
77
77
|
|
|
78
|
-
Lokalise отлично подходит для мобильных приложений (iOS/Android) и рабочих процессов, ориентированных на дизайн. Однако для современных веб-приложений, использующих фреймворки вроде Next.js или React, нативная обработка Intlayer файлов `.js`, `.ts` и JSON-словарей обеспечивает превосходный developer experience (DX) с полной поддержкой TypeScript для
|
|
78
|
+
Lokalise отлично подходит для мобильных приложений (iOS/Android) и рабочих процессов, ориентированных на дизайн. Однако для современных веб-приложений, использующих фреймворки вроде Next.js или React, нативная обработка Intlayer файлов `.js`, `.ts` и JSON-словарей обеспечивает превосходный developer experience (DX) с полной поддержкой TypeScript для контента, это гарантирует, что вы больше никогда не выпустите приложение с отсутствующим ключом перевода.
|
|
79
79
|
|
|
80
|
-
Наконец, для тех, кто отдаёт приоритет суверенитету данных и контролю, Intlayer является open-source и может быть развернут самостоятельно. Docker-файлы доступны прямо в репозитории, что даёт вам полный контроль над вашей инфраструктурой
|
|
80
|
+
Наконец, для тех, кто отдаёт приоритет суверенитету данных и контролю, Intlayer является open-source и может быть развернут самостоятельно. Docker-файлы доступны прямо в репозитории, что даёт вам полный контроль над вашей инфраструктурой локализации, резкий контраст с закрытой SaaS-моделью Lokalise.
|
|
@@ -25,19 +25,19 @@ history:
|
|
|
25
25
|
|
|
26
26
|
# Система управления переводами (TMS)
|
|
27
27
|
|
|
28
|
-
Система управления переводом (Translation Management System, TMS)
|
|
28
|
+
Система управления переводом (Translation Management System, TMS), это программная платформа, предназначенная для автоматизации и упрощения процесса перевода и локализации (L10n). Традиционно TMS выступает в качестве централизованного хаба, куда загружается, организуется и назначается контент живым переводчикам. Она управляет рабочими процессами, хранит translation memories (чтобы не переводить одну и ту же фразу дважды) и обеспечивает доставку переведённых файлов обратно разработчикам или менеджерам контента.
|
|
29
29
|
|
|
30
30
|
По сути, TMS исторически являлась мостом между техническим кодом (где хранятся строки) и человеческими лингвистами (которые понимают культуру).
|
|
31
31
|
|
|
32
32
|
# Crowdin
|
|
33
33
|
|
|
34
|
-
Crowdin
|
|
34
|
+
Crowdin, ветеран в этой сфере. Основан в 2009 году, он появился в эпоху, когда основной проблемой локализации было обеспечение связности. Его миссия была ясна: эффективно связывать копирайтеров, переводчиков и владельцев проектов.
|
|
35
35
|
|
|
36
36
|
В течение более десяти лет Crowdin был отраслевым стандартом для управления локализацией. Он решил проблему фрагментации, позволив командам загружать файлы `.po`, `.xml` или `.yaml` и переводчикам работать с ними через облачный интерфейс. Репутацию он заработал благодаря надежной автоматизации рабочих процессов, что позволяло компаниям масштабироваться с одного языка до десяти, не утопая в таблицах.
|
|
37
37
|
|
|
38
38
|
# Intlayer
|
|
39
39
|
|
|
40
|
-
Intlayer известен прежде всего как решение для i18n, но также интегрирует CMS. В отличие от Crowdin, который ограничен ролью оболочки поверх вашей существующей i18n-настройки, Intlayer контролирует весь
|
|
40
|
+
Intlayer известен прежде всего как решение для i18n, но также интегрирует CMS. В отличие от Crowdin, который ограничен ролью оболочки поверх вашей существующей i18n-настройки, Intlayer контролирует весь стек, от слоя бандлинга до удалённой доставки контента, что обеспечивает более плавный и эффективный поток контента.
|
|
41
41
|
|
|
42
42
|
## Почему парадигмы изменились с появлением AI?
|
|
43
43
|
|
|
@@ -45,15 +45,15 @@ Intlayer известен прежде всего как решение для i
|
|
|
45
45
|
|
|
46
46
|
Почему? Потому что AI в 1 000 раз дешевле и бесконечно быстрее.
|
|
47
47
|
|
|
48
|
-
Однако есть ограничение.
|
|
48
|
+
Однако есть ограничение. Копирайтинг, это не просто перевод; это адаптация сообщения для разных культур и контекстов. Мы не продаём iPhone вашей бабушке так же, как продаём его китайскому бизнес-руководителю. Тон, идиоматические обороты и культурные маркеры должны отличаться.
|
|
49
49
|
|
|
50
|
-
Сегодня наиболее эффективный рабочий
|
|
50
|
+
Сегодня наиболее эффективный рабочий процесс, сначала глобально переводить и позиционировать ваши страницы с помощью AI. Затем, на втором этапе, привлекаются человеческие копирайтеры для оптимизации конкретного высокотрафикового контента с целью повышения конверсии, когда продукт уже генерирует доход.
|
|
51
51
|
|
|
52
|
-
Хотя доходы Crowdin
|
|
52
|
+
Хотя доходы Crowdin, в основном обеспечиваемые его проверенными legacy-решениями, по-прежнему остаются высокими, я считаю, что традиционный сектор локализации будет серьёзно затронут в горизонте 5–10 лет. Модель оплаты за слово или за место (seat) для инструмента управления становится устаревшей.
|
|
53
53
|
|
|
54
|
-
## Почему Intlayer
|
|
54
|
+
## Почему Intlayer, хорошая альтернатива Crowdin?
|
|
55
55
|
|
|
56
|
-
Intlayer
|
|
56
|
+
Intlayer, решение, рождённое в эпоху AI. Оно было спроектировано с принципом, что в 2026 году сырой перевод перестаёт иметь внутреннюю ценность. Он становится товаром.
|
|
57
57
|
|
|
58
58
|
Поэтому Intlayer не позиционирует себя просто как TMS, а как решение для **управления контентом**, которое глубоко интегрирует визуальный редактор и логику интернационализации.
|
|
59
59
|
|
|
@@ -61,26 +61,20 @@ Intlayer — решение, рождённое в эпоху AI. Оно был
|
|
|
61
61
|
|
|
62
62
|
# Сравнение бок о бок
|
|
63
63
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
| **Pricing Model** | Per seat / hosted tier. | Pay for your own inference (BYO Key). |
|
|
74
|
-
| **Integration** | File-based exchange (Upload/Download). | Deep code integration (Declarative). |
|
|
75
|
-
| **Updates** | Often requires CI/CD rebuilds to deploy text. | Instant sync with codebase or live app. |
|
|
76
|
-
| **File Formats** | Diverse (.po, .xml, .yaml, etc.). | Modern Web (JSON, JS, TS). |
|
|
77
|
-
| **Testing** | Limited. | CI / CLI. |
|
|
78
|
-
| **Hosting** | SaaS (mostly). | Open Source & Self-Hostable (Docker). |
|
|
64
|
+
| Характеристика | Crowdin (Legacy TMS) | Intlayer (AI-Native) |
|
|
65
|
+
| :------------------------- | :-------------------------------------------------- | :-------------------------------------------------------------- |
|
|
66
|
+
| **Основная философия** | Соединяет людей со строками. | Управляет логикой контента и генерацией AI. |
|
|
67
|
+
| **Модель ценообразования** | За место (seat) / хостинговый тариф. | Платите за собственные инференсы (BYO Key). |
|
|
68
|
+
| **Интеграция** | Обмен файлами (Upload/Download). | Глубокая интеграция с кодовой базой (декларативно). |
|
|
69
|
+
| **Обновления** | Часто требует пересборки в CI/CD для деплоя текста. | Мгновенная синхронизация с кодовой базой или живым приложением. |
|
|
70
|
+
| **Форматы файлов** | Разнообразные (.po, .xml, .yaml и т.д.). | Современные веб-форматы (JSON, JS, TS). |
|
|
71
|
+
| **Тестирование** | Ограниченное. | CI / CLI. |
|
|
72
|
+
| **Хостинг** | В основном SaaS. | Open Source и возможность самохостинга (Docker). |
|
|
79
73
|
|
|
80
74
|
Intlayer предлагает полноценное, «all-in-one» решение для i18n, которое позволяет глубоко интегрировать ваш контент. Ваш удалённый контент может синхронизироваться напрямую с кодовой базой или с работающим приложением. В сравнении, Crowdin часто требует пересборки приложения в вашем CI/CD pipeline для обновления контента, что создаёт трения между командой переводчиков и процессом деплоя.
|
|
81
75
|
|
|
82
|
-
Кроме того, Intlayer можно использовать как Feature Flag или инструмент A/B-тестирования, позволяющий динамически тестировать различные варианты
|
|
76
|
+
Кроме того, Intlayer можно использовать как Feature Flag или инструмент A/B-тестирования, позволяющий динамически тестировать различные варианты контента, то, что стандартные TMS-инструменты, такие как Crowdin, не поддерживают нативно.
|
|
83
77
|
|
|
84
|
-
Crowdin поддерживает широкий спектр форматов
|
|
78
|
+
Crowdin поддерживает широкий спектр форматов файлов, включая устаревшие типы, такие как `.po`, `.xml` и `.yaml`, что может быть полезно для проектов с устоявшимися рабочими процессами или для старых систем. Intlayer, напротив, в основном работает с современными веб‑ориентированными форматами, такими как `.json`, `.js` и `.ts`. Это означает, что Intlayer может быть несовместим с некоторыми устаревшими форматами файлов, что следует учитывать командам, мигрирующим с более старых платформ.
|
|
85
79
|
|
|
86
|
-
Наконец, для тех, кто отдаёт приоритет суверенитету данных и контролю, Intlayer
|
|
80
|
+
Наконец, для тех, кто отдаёт приоритет суверенитету данных и контролю, Intlayer, проект с открытым исходным кодом и может быть развернут самостоятельно. Файлы Docker доступны прямо в репозитории, что даёт вам полный контроль над вашей инфраструктурой локализации.
|
|
@@ -25,23 +25,19 @@ history:
|
|
|
25
25
|
|
|
26
26
|
# Система управления переводами (Translation Management System)
|
|
27
27
|
|
|
28
|
-
Система управления переводами (TMS)
|
|
28
|
+
Система управления переводами (TMS), это программная платформа, предназначенная для автоматизации и упрощения процесса перевода и локализации (L10n). Традиционно TMS выступает в роли централизованного хаба, куда загружается, организуется и назначается контент для человеческих переводчиков. Она управляет рабочими процессами, хранит память переводов (чтобы избежать повторного перевода одной и той же фразы) и обрабатывает доставку переведённых файлов обратно разработчикам или менеджерам по контенту.
|
|
29
29
|
|
|
30
30
|
По сути, TMS исторически была мостом между техническим кодом (где хранятся строки) и человеческими лингвистами (которые понимают культурный контекст).
|
|
31
31
|
|
|
32
|
-
Translation Management System (TMS) — это программная платформа, предназначенная для автоматизации и упрощения процесса перевода и локализации (L10n). Традиционно TMS выступает в роли централизованного хаба, куда загружают, организуют и назначают контент живым переводчикам. Она управляет рабочими процессами, хранит translation memories (чтобы не переводить одно и то же предложение дважды) и обеспечивает доставку переведённых файлов обратно разработчикам или менеджерам контента.
|
|
33
|
-
|
|
34
|
-
По сути, TMS исторически являлась мостом между техническим кодом (где живут строки) и переводчиками‑лингвистами (которые понимают культуру).
|
|
35
|
-
|
|
36
32
|
# Phrase (ранее PhraseApp)
|
|
37
33
|
|
|
38
|
-
Phrase
|
|
34
|
+
Phrase, это тяжеловес в области корпоративной локализации. Ранее известный как PhraseApp, он значительно вырос, особенно после слияния с Memsource. Он позиционируется как комплексное решение для локализации (Localization Suite), предназначенное для локализации программного обеспечения, предлагая надежные возможности API и широкую поддержку форматов.
|
|
39
35
|
|
|
40
36
|
Phrase создан для масштабирования. Это основной выбор для крупных предприятий, которым необходимо управлять сложными рабочими процессами, обширными базами памяти переводов и строгими процессами контроля качества в различных командах. Его сила заключается в способности справляться с «тяжёлыми» задачами локализации, предлагая универсальную экосистему как для строк в ПО, так и для перевода документов.
|
|
41
37
|
|
|
42
38
|
# Intlayer
|
|
43
39
|
|
|
44
|
-
Intlayer известен прежде всего как решение для i18n, но он также интегрирует headless CMS. В отличие от Phrase, которое функционирует как массивный внешний корпоративный пакет, Intlayer выступает как гибкий слой, интегрированный с кодом. Он контролирует весь
|
|
40
|
+
Intlayer известен прежде всего как решение для i18n, но он также интегрирует headless CMS. В отличие от Phrase, которое функционирует как массивный внешний корпоративный пакет, Intlayer выступает как гибкий слой, интегрированный с кодом. Он контролирует весь стек, от слоя бандлинга до удалённой доставки контента, что обеспечивает более плавный и эффективный поток контента для современных веб‑приложений.
|
|
45
41
|
|
|
46
42
|
## Почему парадигмы изменились с появлением ИИ?
|
|
47
43
|
|
|
@@ -51,11 +47,11 @@ Phrase был создан для решения задач предыдущег
|
|
|
51
47
|
|
|
52
48
|
Хотя Phrase интегрировал AI‑функции, они часто навешены поверх унаследованной архитектуры, рассчитанной на человеческие рабочие процессы и лицензирование по местам (seat‑based). В современной эпохе трение, связанное с «pushing to TMS» и «pulling from TMS», становится устаревшим. Разработчики ожидают, что контент будет таким же текучим, как и код.
|
|
53
49
|
|
|
54
|
-
Сегодня наиболее эффективный рабочий
|
|
50
|
+
Сегодня наиболее эффективный рабочий процесс, сначала переводить и позиционировать ваши страницы глобально с помощью AI. Затем, на втором этапе, привлекают человеческих копирайтеров для оптимизации конкретного высокопосещаемого контента с целью повышения конверсии, когда продукт уже начинает приносить доход.
|
|
55
51
|
|
|
56
|
-
## Почему Intlayer
|
|
52
|
+
## Почему Intlayer, хорошая альтернатива Phrase?
|
|
57
53
|
|
|
58
|
-
Intlayer
|
|
54
|
+
Intlayer, решение, рождённое в эпоху ИИ, разработанное специально для современной экосистемы JavaScript/TypeScript. Оно бросает вызов тяжеловесной enterprise-модели Phrase, предлагая гибкость и прозрачность.
|
|
59
55
|
|
|
60
56
|
1. **Прозрачность ценообразования:** Phrase известна своей корпоративной моделью ценообразования (Enterprise), которая может быть непрозрачной и дорогой для растущих компаний. Intlayer позволяет использовать собственные API-ключи (OpenAI, Anthropic и т. д.), обеспечивая оплату рыночных тарифов за интеллект, а не наценку на подписку платформы.
|
|
61
57
|
2. **Developer Experience (DX):** Phrase сильно полагается на CLI‑утилиты и API‑вызовы для синхронизации файлов. Intlayer интегрируется напрямую в bundler и runtime. Это означает, что ваши определения строго типизированы (TypeScript), и отсутствующие ключи обнаруживаются на этапе компиляции, а не в продакшене.
|
|
@@ -63,15 +59,15 @@ Intlayer — решение, рождённое в эпоху ИИ, разраб
|
|
|
63
59
|
|
|
64
60
|
# Сравнение бок о бок
|
|
65
61
|
|
|
66
|
-
| Особенность | Phrase (корпоративный TMS) | Intlayer (AI‑native)
|
|
67
|
-
| :------------------------- | :--------------------------------------------------------------- |
|
|
68
|
-
| **Основная философия** | Корпоративное управление и рабочие процессы (Enterprise). | Управляет логикой контента и генерацией с помощью ИИ.
|
|
69
|
-
| **Модель ценообразования** | Индивидуальная корпоративная модель / оплата за место (высокая). | Платите за собственный inference (используйте свой
|
|
70
|
-
| **Интеграция** | Активное использование API и CLI. | Глубокая интеграция в код (декларативная).
|
|
71
|
-
| **Обновления** | Требуется синхронизация / зависит от pipeline. | Мгновенная синхронизация с кодовой базой или живым приложением.
|
|
72
|
-
| **Форматы файлов** | Очень широкий набор (Legacy и документы). | Современные веб-форматы (JSON, JS, TS).
|
|
73
|
-
| **Тестирование** | QA-проверки / этапы LQA. | CI / CLI / A/B тестирование.
|
|
74
|
-
| **Хостинг** | SaaS (строго Enterprise). | Open Source и возможность самостоятельного хостинга (Docker).
|
|
62
|
+
| Особенность | Phrase (корпоративный TMS) | Intlayer (AI‑native) |
|
|
63
|
+
| :------------------------- | :--------------------------------------------------------------- | :----------------------------------------------------------------- |
|
|
64
|
+
| **Основная философия** | Корпоративное управление и рабочие процессы (Enterprise). | Управляет логикой контента и генерацией с помощью ИИ. |
|
|
65
|
+
| **Модель ценообразования** | Индивидуальная корпоративная модель / оплата за место (высокая). | Платите за собственный inference (используйте свой ключ. BYO Key). |
|
|
66
|
+
| **Интеграция** | Активное использование API и CLI. | Глубокая интеграция в код (декларативная). |
|
|
67
|
+
| **Обновления** | Требуется синхронизация / зависит от pipeline. | Мгновенная синхронизация с кодовой базой или живым приложением. |
|
|
68
|
+
| **Форматы файлов** | Очень широкий набор (Legacy и документы). | Современные веб-форматы (JSON, JS, TS). |
|
|
69
|
+
| **Тестирование** | QA-проверки / этапы LQA. | CI / CLI / A/B тестирование. |
|
|
70
|
+
| **Хостинг** | SaaS (строго Enterprise). | Open Source и возможность самостоятельного хостинга (Docker). |
|
|
75
71
|
|
|
76
72
|
Intlayer предлагает полное, «все-в-одном» решение для i18n, позволяющее глубоко интегрировать ваш контент. Удалённый контент может синхронизироваться напрямую с вашей кодовой базой или с работающим приложением. В сравнении, Phrase является мощной, но сложной внешней зависимостью, которая часто требует выделенных менеджеров по локализации для эффективной работы.
|
|
77
73
|
|
|
@@ -79,4 +75,4 @@ Intlayer предлагает полное, «все-в-одном» решен
|
|
|
79
75
|
|
|
80
76
|
Хотя Phrase незаменим для сложных корпоративных сценариев с множеством форматов (например, одновременный перевод PDF, субтитров и программного обеспечения), Intlayer является предпочтительным выбором для продуктовых команд, создающих веб‑приложения и стремящихся к полной собственности над продуктом, type safety и современному AI-driven workflow без корпоративной нагрузки (enterprise overhead).
|
|
81
77
|
|
|
82
|
-
Наконец, для тех, кто ставит приоритетом суверенитет данных и контроль, Intlayer
|
|
78
|
+
Наконец, для тех, кто ставит приоритетом суверенитет данных и контроль, Intlayer, open-source и может быть self-hosted. Docker files доступны прямо в репозитории, что даёт вам полное владение инфраструктурой локализации, то, чего невозможно добиться в закрытой SaaS-экосистеме Phrase.
|
|
@@ -28,7 +28,7 @@ slugs:
|
|
|
28
28
|
|
|
29
29
|
## Что такое интернационализация (i18n)?
|
|
30
30
|
|
|
31
|
-
Интернационализация, часто называемая i18n,
|
|
31
|
+
Интернационализация, часто называемая i18n, это процесс проектирования и подготовки вашего приложения для поддержки нескольких языков и культурных контекстов. В Angular это включает в себя настройку вашего приложения так, чтобы текст, даты, числа и даже макеты пользовательского интерфейса могли без труда адаптироваться к различным локалям. Правильная установка этой основы обеспечивает упорядоченность и эффективность интеграции будущих переводов.
|
|
32
32
|
|
|
33
33
|
Узнайте больше о основах i18n, прочитав нашу статью: [Что такое интернационализация (i18n)? Определение и проблемы](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ru/what_is_internationalization.md).
|
|
34
34
|
|
|
@@ -50,7 +50,29 @@ slugs:
|
|
|
50
50
|
|
|
51
51
|
Angular предлагает встроенную систему i18n, а также несколько сторонних библиотек, предназначенных для упрощения настройки многоязычности. Ниже приведены некоторые из самых популярных решений.
|
|
52
52
|
|
|
53
|
-
### 1.
|
|
53
|
+
### 1. Intlayer
|
|
54
|
+
|
|
55
|
+
> Веб-сайт: [https://intlayer.org/](https://intlayer.org/)
|
|
56
|
+
|
|
57
|
+
**Обзор**
|
|
58
|
+
**Intlayer**, это инновационная библиотека интернационализации (i18n) с открытым исходным кодом, разработанная для упрощения многоязычной поддержки в современных веб-приложениях Angular (и других). Она предлагает декларативный подход, позволяя определять словари переводов непосредственно внутри ваших компонентов.
|
|
59
|
+
|
|
60
|
+
**Ключевые особенности**
|
|
61
|
+
|
|
62
|
+
- **Декларативное объявление переводов**: Позволяет объявлять все переводы в одном файле на уровне компонентов, что упрощает масштабирование и обслуживание.
|
|
63
|
+
- **TypeScript и автодополнение**: Предоставляет автоматически генерируемые определения типов для ключей перевода, обеспечивая надежное автодополнение и обнаружение ошибок.
|
|
64
|
+
- **Серверные компоненты и SSR**: Создана с учетом серверного рендеринга (SSR) и серверных компонентов, обеспечивая эффективную отрисовку локализованного контента как на стороне клиента, так и на стороне сервера.
|
|
65
|
+
- **Локализованные метаданные и URL-адреса для SEO**: Легко управляйте динамическими маршрутами на основе локали, картами сайта и записями robots.txt для улучшения видимости и SEO.
|
|
66
|
+
- **Бесшовная интеграция**: Совместима с Angular CLI и другими инструментами, что упрощает настройку.
|
|
67
|
+
- **Асинхронная загрузка**: Динамически загружайте словари переводов, уменьшая начальный размер бандла и повышая производительность.
|
|
68
|
+
|
|
69
|
+
**Что следует учитывать**
|
|
70
|
+
|
|
71
|
+
- **Сообщество и экосистема**: Хотя экосистема постоянно растет, она всё еще относительно новая, поэтому количество плагинов и инструментов от сообщества может быть более ограниченным по сравнению с более устоявшимися решениями.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### 2. Встроенное i18n Angular
|
|
54
76
|
|
|
55
77
|
**Обзор**
|
|
56
78
|
Angular поставляется с **встроенной системой i18n**, которая включает инструменты для извлечения строк перевода, обработки плюрализации и интерполяции, а также интеграции переводов на этапе компиляции. Это официальное решение мощно для небольших проектов или тех, которые могут близко соответствовать рекомендуемой структуре Angular.
|
|
@@ -70,7 +92,7 @@ Angular поставляется с **встроенной системой i18n
|
|
|
70
92
|
|
|
71
93
|
---
|
|
72
94
|
|
|
73
|
-
###
|
|
95
|
+
### 3. ngx-translate
|
|
74
96
|
|
|
75
97
|
Сайт: [https://github.com/ngx-translate/core](https://github.com/ngx-translate/core)
|
|
76
98
|
|
|
@@ -92,7 +114,7 @@ Angular поставляется с **встроенной системой i18n
|
|
|
92
114
|
|
|
93
115
|
---
|
|
94
116
|
|
|
95
|
-
###
|
|
117
|
+
### 4. Transloco
|
|
96
118
|
|
|
97
119
|
Сайт: [https://ngneat.github.io/transloco/](https://ngneat.github.io/transloco/)
|
|
98
120
|
|
|
@@ -28,7 +28,7 @@ slugs:
|
|
|
28
28
|
|
|
29
29
|
## Что такое международная локализация (i18n)?
|
|
30
30
|
|
|
31
|
-
Международная локализация, сокращенно i18n,
|
|
31
|
+
Международная локализация, сокращенно i18n, это процесс проектирования и подготовки вашего веб-сайта для поддержки нескольких языков и культурных контекстов. В React это означает настройку вашего приложения так, чтобы строки, форматы дат, числовые форматы и даже макет можно было легко адаптировать для пользователей из разных регионов. Подготовка вашего React-приложения для i18n закладывает основу для чистой интеграции переводов и других функций локализации.
|
|
32
32
|
|
|
33
33
|
Узнайте больше о i18n, прочитав нашу статью: [Что такое международная локализация (i18n)? Определение и проблемы](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ru/what_is_internationalization.md).
|
|
34
34
|
|
|
@@ -28,7 +28,7 @@ slugs:
|
|
|
28
28
|
|
|
29
29
|
## Что такое интернационализация (i18n)?
|
|
30
30
|
|
|
31
|
-
Интернационализация, обычно сокращаемая как i18n,
|
|
31
|
+
Интернационализация, обычно сокращаемая как i18n, это процесс проектирования и создания вашего приложения так, чтобы оно могло легко адаптироваться к различным языкам, регионам и культурным конвенциям. В Svelte это обычно означает настройку строк перевода, локализацию дат, времени и чисел, а также обеспечение того, чтобы пользовательский интерфейс мог динамически переключаться между различными локалями без значительных переработок кода.
|
|
32
32
|
|
|
33
33
|
Чтобы узнать больше о основах i18n, прочтите нашу статью: [Что такое интернационализация (i18n)? Определение и вызовы](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ru/what_is_internationalization.md).
|
|
34
34
|
|
|
@@ -50,7 +50,29 @@ slugs:
|
|
|
50
50
|
|
|
51
51
|
Svelte не предоставляет встроенного решения i18n (как это делает Angular), но сообщество создало разнообразные надежные библиотеки и паттерны. Ниже приведены несколько популярных подходов.
|
|
52
52
|
|
|
53
|
-
### 1.
|
|
53
|
+
### 1. Intlayer
|
|
54
|
+
|
|
55
|
+
> Веб-сайт: [https://intlayer.org/](https://intlayer.org/)
|
|
56
|
+
|
|
57
|
+
**Обзор**
|
|
58
|
+
**Intlayer**, это инновационная библиотека интернационализации (i18n) с открытым исходным кодом, разработанная для упрощения многоязычной поддержки в современных веб-приложениях Svelte (и других). Она предлагает декларативный подход, позволяя определять словари переводов непосредственно внутри ваших компонентов.
|
|
59
|
+
|
|
60
|
+
**Ключевые особенности**
|
|
61
|
+
|
|
62
|
+
- **Декларативное объявление переводов**: Позволяет объявлять все переводы в одном файле на уровне компонентов, что упрощает масштабирование и обслуживание.
|
|
63
|
+
- **TypeScript и автодополнение**: Предоставляет автоматически генерируемые определения типов для ключей перевода, обеспечивая надежное автодополнение и обнаружение ошибок.
|
|
64
|
+
- **Серверные компоненты и SSR**: Создана с учетом серверного рендеринга (SSR) и серверных компонентов, обеспечивая эффективную отрисовку локализованного контента как на стороне клиента, так и на стороне сервера.
|
|
65
|
+
- **Локализованные метаданные и URL-адреса для SEO**: Легко управляйте динамическими маршрутами на основе локали, картами сайта и записями robots.txt для улучшения видимости и SEO.
|
|
66
|
+
- **Бесшовная интеграция**: Совместима с SvelteKit и другими инструментами, что упрощает настройку.
|
|
67
|
+
- **Асинхронная загрузка**: Динамически загружайте словари переводов, уменьшая начальный размер бандла и повышая производительность.
|
|
68
|
+
|
|
69
|
+
**Что следует учитывать**
|
|
70
|
+
|
|
71
|
+
- **Сообщество и экосистема**: Хотя экосистема постоянно растет, она всё еще относительно новая, поэтому количество плагинов и инструментов от сообщества может быть более ограниченным по сравнению с более устоявшимися решениями.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### 2. svelte-i18n
|
|
54
76
|
|
|
55
77
|
Репозиторий: [https://github.com/kaisermann/svelte-i18n](https://github.com/kaisermann/svelte-i18n)
|
|
56
78
|
|
|
@@ -72,7 +94,7 @@ Svelte не предоставляет встроенного решения i18
|
|
|
72
94
|
|
|
73
95
|
---
|
|
74
96
|
|
|
75
|
-
###
|
|
97
|
+
### 3. svelte-intl-precompile
|
|
76
98
|
|
|
77
99
|
Репозиторий: [https://github.com/cibernox/svelte-intl-precompile](https://github.com/cibernox/svelte-intl-precompile)
|
|
78
100
|
|
|
@@ -94,7 +116,7 @@ Svelte не предоставляет встроенного решения i18
|
|
|
94
116
|
|
|
95
117
|
---
|
|
96
118
|
|
|
97
|
-
###
|
|
119
|
+
### 4. i18next с Svelte / SvelteKit
|
|
98
120
|
|
|
99
121
|
Веб-сайт: [https://www.i18next.com/](https://www.i18next.com/)
|
|
100
122
|
|
|
@@ -52,7 +52,21 @@ slugs:
|
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
55
|
-
### 1.
|
|
55
|
+
### 1. Intlayer
|
|
56
|
+
|
|
57
|
+
> Вебсайт: [https://intlayer.org/](https://intlayer.org/)
|
|
58
|
+
|
|
59
|
+
**Обзор**
|
|
60
|
+
**Intlayer**, это i18n-решение с открытым исходным кодом, предназначенное для упрощения многоязычной поддержки в различных фреймворках, включая **Vue**. Оно делает упор на декларативный подход, строгую типизацию и поддержку SSR в других экосистемах, хотя SSR не является типичным для стандартного Vue.
|
|
61
|
+
|
|
62
|
+
**Основные возможности**
|
|
63
|
+
|
|
64
|
+
- **Декларативный перевод**: Определяйте словари перевода либо на уровне виджета, либо в централизованном файле для более чистой архитектуры.
|
|
65
|
+
- **TypeScript и автодополнение (Web)**: Хотя эта функция в первую очередь полезна для веб-фреймворков, подход с типизированным переводом все равно может помочь в написании структурированного кода в Vue.
|
|
66
|
+
- **Асинхронная загрузка**: Загружайте ресурсы перевода динамически, что потенциально уменьшает начальный размер бандла для многоязычных приложений.
|
|
67
|
+
- **Интеграция с Vue**: Можно настроить базовую интеграцию для использования подхода Intlayer для структурированных переводов.
|
|
68
|
+
|
|
69
|
+
### 2. Vue I18n
|
|
56
70
|
|
|
57
71
|
> Вебсайт: [https://vue-i18n.intlify.dev/](https://vue-i18n.intlify.dev/)
|
|
58
72
|
|
|
@@ -83,7 +97,7 @@ slugs:
|
|
|
83
97
|
|
|
84
98
|
---
|
|
85
99
|
|
|
86
|
-
###
|
|
100
|
+
### 3. LinguiJS (Интеграция с Vue)
|
|
87
101
|
|
|
88
102
|
> Вебсайт: [https://lingui.js.org/](https://lingui.js.org/)
|
|
89
103
|
|
|
@@ -35,17 +35,17 @@ slugs:
|
|
|
35
35
|
6. **Опыт разработчика (DX), инструменты и сопровождение**
|
|
36
36
|
7. **SEO и масштабируемость для крупных проектов**
|
|
37
37
|
|
|
38
|
-
> **Кратко**: Все три решения могут локализовать приложение Next.js. Если вам нужен **контент, ограниченный компонентом**, **строгие типы TypeScript**, **проверки отсутствующих ключей во время сборки**, **дерево-шейкнутые словари** и **первоклассная поддержка App Router + SEO помощников**, то **Intlayer
|
|
38
|
+
> **Кратко**: Все три решения могут локализовать приложение Next.js. Если вам нужен **контент, ограниченный компонентом**, **строгие типы TypeScript**, **проверки отсутствующих ключей во время сборки**, **дерево-шейкнутые словари** и **первоклассная поддержка App Router + SEO помощников**, то **Intlayer**, самый полный и современный выбор.
|
|
39
39
|
|
|
40
|
-
> Одна из распространённых ошибок
|
|
40
|
+
> Одна из распространённых ошибок разработчиков, считать, что `next-intl`, это версия `react-intl` для Next.js. Это не так, `next-intl` поддерживается [Amann](https://github.com/amannn), а `react-intl` поддерживается [FormatJS](https://github.com/formatjs/formatjs).
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
44
|
## Кратко
|
|
45
45
|
|
|
46
|
-
- **next-intl
|
|
47
|
-
- **next-i18next
|
|
48
|
-
- **Intlayer
|
|
46
|
+
- **next-intl**, лёгкое и простое форматирование сообщений с надёжной поддержкой Next.js. Обычно используются централизованные каталоги; опыт разработчика (DX) простой, но безопасность и масштабное сопровождение в основном остаются вашей ответственностью.
|
|
47
|
+
- **next-i18next**, i18next в обёртке Next.js. Зрелая экосистема и функции через плагины (например, ICU), но конфигурация может быть многословной, а каталоги имеют тенденцию к централизации по мере роста проектов.
|
|
48
|
+
- **Intlayer**, компонентно-ориентированная модель контента для Next.js, **строгая типизация TS**, **проверки во время сборки**, **tree-shaking**, **встроенные middleware и SEO-помощники**, опциональный **Визуальный редактор/CMS** и **переводы с помощью ИИ**.
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
@@ -114,7 +114,7 @@ Next.js предоставляет встроенную поддержку ин
|
|
|
114
114
|
|
|
115
115
|
## Размеры бандлов и зависимости
|
|
116
116
|
|
|
117
|
-
После сборки приложения,
|
|
117
|
+
После сборки приложения, бандл, это JavaScript, который браузер загрузит для отображения страницы. Размер бандла, следовательно, важен для производительности приложения.
|
|
118
118
|
|
|
119
119
|
В контексте бандла многоязычного приложения важны два компонента:
|
|
120
120
|
|
|
@@ -906,7 +906,7 @@ const ServerComponent = ({ count }: { count: number }) => {
|
|
|
906
906
|
|
|
907
907
|
### Метаданные / Sitemap / Robots
|
|
908
908
|
|
|
909
|
-
Перевод
|
|
909
|
+
Перевод контента, это отлично. Но часто забывают, что главная цель интернационализации, сделать ваш сайт более видимым для всего мира. I18n, это невероятный рычаг для улучшения видимости вашего сайта.
|
|
910
910
|
|
|
911
911
|
Вот список лучших практик по многоязычному SEO.
|
|
912
912
|
|
|
@@ -1211,12 +1211,12 @@ export default robots;
|
|
|
1211
1211
|
|
|
1212
1212
|
**Intlayer**
|
|
1213
1213
|
|
|
1214
|
-
- создан для современного Next.js, с модульным контентом, типобезопасностью, инструментами и меньшим количеством шаблонного кода. Если вы цените **контент, ограниченный компонентом**, **строгий TypeScript**, **гарантии на этапе сборки**, **tree-shaking** и **встроенные** маршрутизацию/SEO/редакторские
|
|
1214
|
+
- создан для современного Next.js, с модульным контентом, типобезопасностью, инструментами и меньшим количеством шаблонного кода. Если вы цените **контент, ограниченный компонентом**, **строгий TypeScript**, **гарантии на этапе сборки**, **tree-shaking** и **встроенные** маршрутизацию/SEO/редакторские инструменты, особенно для **Next.js App Router**, дизайн-систем и **больших, модульных кодовых баз**.
|
|
1215
1215
|
|
|
1216
1216
|
</Column>
|
|
1217
1217
|
</Columns>
|
|
1218
1218
|
|
|
1219
|
-
Если вы предпочитаете минимальную настройку и готовы к некоторой ручной интеграции, next-intl
|
|
1219
|
+
Если вы предпочитаете минимальную настройку и готовы к некоторой ручной интеграции, next-intl, хороший выбор. Если вам нужны все функции и вы не боитесь сложности, подойдет next-i18next. Но если вы хотите современное, масштабируемое, модульное решение с встроенными инструментами, Intlayer стремится предоставить это из коробки.
|
|
1220
1220
|
|
|
1221
1221
|
> **Альтернатива для корпоративных команд**: Если вам нужно проверенное решение, которое отлично работает с устоявшимися платформами локализации, такими как **Crowdin**, **Phrase** или другими профессиональными системами управления переводами, рассмотрите **next-intl** или **next-i18next** за их зрелую экосистему и проверенные интеграции.
|
|
1222
1222
|
|
|
@@ -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">À propos</a>` вместо ссылки на стандартную `/about`.
|
|
56
56
|
|
|
57
|
-
Это простые
|
|
57
|
+
Это простые шаги, но их пропуск может стоить вам видимости.
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
@@ -354,8 +354,8 @@ export default robots;
|
|
|
354
354
|
|
|
355
355
|
## Заключение
|
|
356
356
|
|
|
357
|
-
Правильная реализация i18n в Next.js
|
|
358
|
-
Настройка hreflang, карт сайта и правил для robots
|
|
357
|
+
Правильная реализация i18n в Next.js, это не просто перевод текста, а обеспечение того, чтобы поисковые системы и пользователи точно знали, какую версию вашего контента показывать.
|
|
358
|
+
Настройка hreflang, карт сайта и правил для robots, это то, что превращает переводы в реальную SEO-ценность.
|
|
359
359
|
|
|
360
360
|
Хотя next-intl и next-i18next предоставляют надежные способы для этого, они обычно требуют много ручной настройки, чтобы поддерживать согласованность между локалями.
|
|
361
361
|
|
|
@@ -367,4 +367,4 @@ export default robots;
|
|
|
367
367
|
|
|
368
368
|
Он разработан специально для Next.js с нуля, поэтому вы тратите меньше времени на отладку конфигурации и больше времени на выпуск продукта.
|
|
369
369
|
|
|
370
|
-
Если ваша
|
|
370
|
+
Если ваша цель, не просто переводить, а масштабировать многоязычное SEO без лишних сложностей, Intlayer предоставляет вам самое чистое и перспективное решение.
|
|
@@ -17,7 +17,7 @@ slugs:
|
|
|
17
17
|
|
|
18
18
|
# По-компонентный vs централизованный i18n
|
|
19
19
|
|
|
20
|
-
Подход по
|
|
20
|
+
Подход по компонентам, не новое понятие. Например, в экосистеме Vue `vue-i18n` поддерживает [i18n SFC (Single File Component)](https://vue-i18n.intlify.dev/guide/advanced/sfc.html). Nuxt также предлагает [переводы на уровне компонента](https://i18n.nuxtjs.org/docs/guide/per-component-translations), а Angular использует похожий паттерн через свои [Feature Modules](https://v17.angular.io/guide/feature-modules).
|
|
21
21
|
|
|
22
22
|
Даже в Flutter-приложении часто встречается следующий паттерн:
|
|
23
23
|
|
|
@@ -59,7 +59,7 @@ extension Localization on String {
|
|
|
59
59
|
|
|
60
60
|
**Гранулярный подход** (intlayer, inlang)
|
|
61
61
|
|
|
62
|
-
- более тонко настраивает получение
|
|
62
|
+
- более тонко настраивает получение контента, по ключу или по компоненту.
|
|
63
63
|
|
|
64
64
|
</Column>
|
|
65
65
|
</Columns>
|
|
@@ -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
|
- **Производительность:**
|
|
103
103
|
При каждом повторном рендере каждый ваш компонент гидратируется массивной JSON‑нагрузкой, что негативно влияет на реактивность приложения по мере его роста.
|