@intlayer/docs 9.4.2 → 9.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/ar/date_time_number_formatting_locales.md +216 -0
- package/blog/ar/detecting_missing_translations.md +202 -0
- package/blog/ar/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/ar/i18n_meaning.md +0 -2
- package/blog/ar/i18n_testing_strategies.md +179 -0
- package/blog/ar/intlayer_with_i18next.md +3 -3
- package/blog/ar/intlayer_with_next-i18next.md +3 -3
- package/blog/ar/intlayer_with_next-intl.md +3 -3
- package/blog/ar/intlayer_with_react-i18next.md +3 -3
- package/blog/ar/intlayer_with_react-intl.md +3 -3
- package/blog/ar/intlayer_with_vue-i18n.md +3 -3
- package/blog/ar/is_i18next_outdated.md +315 -0
- package/blog/ar/is_next-intl_outdated.md +363 -0
- package/blog/ar/is_vue-i18n_outdated.md +338 -0
- package/blog/ar/list_i18n_technologies/build-tools/vite.md +177 -0
- package/blog/ar/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/ar/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/ar/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/ar/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/ar/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/ar/what_is_internationalization.md +0 -2
- package/blog/de/date_time_number_formatting_locales.md +216 -0
- package/blog/de/detecting_missing_translations.md +202 -0
- package/blog/de/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/de/i18n_meaning.md +0 -2
- package/blog/de/i18n_testing_strategies.md +179 -0
- package/blog/de/intlayer_with_i18next.md +3 -3
- package/blog/de/intlayer_with_next-i18next.md +3 -3
- package/blog/de/intlayer_with_next-intl.md +3 -3
- package/blog/de/intlayer_with_react-i18next.md +3 -3
- package/blog/de/intlayer_with_react-intl.md +3 -3
- package/blog/de/intlayer_with_vue-i18n.md +3 -3
- package/blog/de/is_i18next_outdated.md +315 -0
- package/blog/de/is_next-intl_outdated.md +363 -0
- package/blog/de/is_vue-i18n_outdated.md +338 -0
- package/blog/de/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/de/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/de/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/de/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/de/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/de/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/de/what_is_internationalization.md +0 -2
- package/blog/en/date_time_number_formatting_locales.md +216 -0
- package/blog/en/detecting_missing_translations.md +202 -0
- package/blog/en/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/en/i18n_meaning.md +0 -2
- package/blog/en/i18n_testing_strategies.md +179 -0
- package/blog/en/icu_message_format.md +288 -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/is_i18next_outdated.md +315 -0
- package/blog/en/is_next-intl_outdated.md +363 -0
- package/blog/en/is_vue-i18n_outdated.md +338 -0
- package/blog/en/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/en/list_i18n_technologies/frameworks/angular.md +184 -108
- package/blog/en/list_i18n_technologies/frameworks/astro.md +268 -0
- package/blog/en/list_i18n_technologies/frameworks/nextjs.md +196 -0
- package/blog/en/list_i18n_technologies/frameworks/nuxt.md +255 -0
- package/blog/en/list_i18n_technologies/frameworks/react-native.md +133 -154
- package/blog/en/list_i18n_technologies/frameworks/react-router.md +331 -0
- package/blog/en/list_i18n_technologies/frameworks/react.md +176 -96
- package/blog/en/list_i18n_technologies/frameworks/solid.md +268 -0
- package/blog/en/list_i18n_technologies/frameworks/svelte.md +156 -88
- package/blog/en/list_i18n_technologies/frameworks/sveltekit.md +235 -0
- package/blog/en/list_i18n_technologies/frameworks/tanstack-start.md +280 -0
- package/blog/en/list_i18n_technologies/frameworks/vue.md +167 -95
- package/blog/en/what_is_internationalization.md +0 -2
- package/blog/en-GB/date_time_number_formatting_locales.md +216 -0
- package/blog/en-GB/detecting_missing_translations.md +202 -0
- package/blog/en-GB/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/en-GB/i18n_meaning.md +0 -2
- package/blog/en-GB/i18n_testing_strategies.md +179 -0
- package/blog/en-GB/intlayer_with_i18next.md +3 -3
- package/blog/en-GB/intlayer_with_next-i18next.md +3 -3
- package/blog/en-GB/intlayer_with_next-intl.md +3 -3
- package/blog/en-GB/intlayer_with_react-i18next.md +3 -3
- package/blog/en-GB/intlayer_with_react-intl.md +3 -3
- package/blog/en-GB/intlayer_with_vue-i18n.md +3 -3
- package/blog/en-GB/is_i18next_outdated.md +315 -0
- package/blog/en-GB/is_next-intl_outdated.md +363 -0
- package/blog/en-GB/is_vue-i18n_outdated.md +338 -0
- package/blog/en-GB/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/en-GB/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/en-GB/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/en-GB/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/en-GB/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/en-GB/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/en-GB/what_is_internationalization.md +0 -2
- package/blog/es/date_time_number_formatting_locales.md +216 -0
- package/blog/es/detecting_missing_translations.md +202 -0
- package/blog/es/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/es/i18n_meaning.md +0 -2
- package/blog/es/i18n_testing_strategies.md +179 -0
- package/blog/es/intlayer_with_i18next.md +3 -3
- package/blog/es/intlayer_with_next-i18next.md +3 -3
- package/blog/es/intlayer_with_next-intl.md +3 -3
- package/blog/es/intlayer_with_react-i18next.md +3 -3
- package/blog/es/intlayer_with_react-intl.md +3 -3
- package/blog/es/intlayer_with_vue-i18n.md +3 -3
- package/blog/es/is_i18next_outdated.md +315 -0
- package/blog/es/is_next-intl_outdated.md +363 -0
- package/blog/es/is_vue-i18n_outdated.md +338 -0
- package/blog/es/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/es/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/es/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/es/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/es/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/es/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/es/what_is_internationalization.md +0 -2
- package/blog/fr/date_time_number_formatting_locales.md +216 -0
- package/blog/fr/detecting_missing_translations.md +202 -0
- package/blog/fr/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/fr/i18n_meaning.md +0 -2
- package/blog/fr/i18n_testing_strategies.md +179 -0
- package/blog/fr/intlayer_with_i18next.md +3 -3
- package/blog/fr/intlayer_with_next-i18next.md +3 -3
- package/blog/fr/intlayer_with_next-intl.md +3 -3
- package/blog/fr/intlayer_with_react-i18next.md +3 -3
- package/blog/fr/intlayer_with_react-intl.md +3 -3
- package/blog/fr/intlayer_with_vue-i18n.md +3 -3
- package/blog/fr/is_i18next_outdated.md +315 -0
- package/blog/fr/is_next-intl_outdated.md +363 -0
- package/blog/fr/is_vue-i18n_outdated.md +338 -0
- package/blog/fr/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/fr/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/fr/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/fr/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/fr/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/fr/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/fr/what_is_internationalization.md +0 -2
- package/blog/hi/date_time_number_formatting_locales.md +216 -0
- package/blog/hi/detecting_missing_translations.md +202 -0
- package/blog/hi/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/hi/i18n_meaning.md +0 -2
- package/blog/hi/i18n_testing_strategies.md +179 -0
- package/blog/hi/intlayer_with_i18next.md +3 -3
- package/blog/hi/intlayer_with_next-i18next.md +3 -3
- package/blog/hi/intlayer_with_next-intl.md +3 -3
- package/blog/hi/intlayer_with_react-i18next.md +3 -3
- package/blog/hi/intlayer_with_react-intl.md +3 -3
- package/blog/hi/intlayer_with_vue-i18n.md +3 -3
- package/blog/hi/is_i18next_outdated.md +317 -0
- package/blog/hi/is_next-intl_outdated.md +363 -0
- package/blog/hi/is_vue-i18n_outdated.md +338 -0
- package/blog/hi/list_i18n_technologies/build-tools/vite.md +177 -0
- package/blog/hi/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/hi/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/hi/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/hi/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/hi/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/hi/what_is_internationalization.md +0 -2
- package/blog/id/date_time_number_formatting_locales.md +216 -0
- package/blog/id/detecting_missing_translations.md +202 -0
- package/blog/id/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/id/i18n_meaning.md +0 -2
- package/blog/id/i18n_testing_strategies.md +179 -0
- package/blog/id/intlayer_with_i18next.md +3 -3
- package/blog/id/intlayer_with_next-i18next.md +3 -3
- package/blog/id/intlayer_with_next-intl.md +3 -3
- package/blog/id/intlayer_with_react-i18next.md +3 -3
- package/blog/id/intlayer_with_react-intl.md +3 -3
- package/blog/id/intlayer_with_vue-i18n.md +3 -3
- package/blog/id/is_i18next_outdated.md +317 -0
- package/blog/id/is_next-intl_outdated.md +363 -0
- package/blog/id/is_vue-i18n_outdated.md +338 -0
- package/blog/id/list_i18n_technologies/build-tools/vite.md +177 -0
- package/blog/id/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/id/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/id/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/id/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/id/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/id/what_is_internationalization.md +0 -2
- package/blog/it/date_time_number_formatting_locales.md +216 -0
- package/blog/it/detecting_missing_translations.md +202 -0
- package/blog/it/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/it/i18n_meaning.md +0 -2
- package/blog/it/i18n_testing_strategies.md +179 -0
- package/blog/it/intlayer_with_i18next.md +3 -3
- package/blog/it/intlayer_with_next-i18next.md +3 -3
- package/blog/it/intlayer_with_next-intl.md +3 -3
- package/blog/it/intlayer_with_react-i18next.md +3 -3
- package/blog/it/intlayer_with_react-intl.md +3 -3
- package/blog/it/intlayer_with_vue-i18n.md +3 -3
- package/blog/it/is_i18next_outdated.md +315 -0
- package/blog/it/is_next-intl_outdated.md +363 -0
- package/blog/it/is_vue-i18n_outdated.md +338 -0
- package/blog/it/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/it/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/it/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/it/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/it/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/it/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/it/what_is_internationalization.md +0 -2
- package/blog/ja/date_time_number_formatting_locales.md +216 -0
- package/blog/ja/detecting_missing_translations.md +202 -0
- package/blog/ja/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/ja/i18n_meaning.md +0 -2
- package/blog/ja/i18n_testing_strategies.md +179 -0
- package/blog/ja/intlayer_with_i18next.md +3 -3
- package/blog/ja/intlayer_with_next-i18next.md +3 -3
- package/blog/ja/intlayer_with_next-intl.md +3 -3
- package/blog/ja/intlayer_with_react-i18next.md +3 -3
- package/blog/ja/intlayer_with_react-intl.md +3 -3
- package/blog/ja/intlayer_with_vue-i18n.md +3 -3
- package/blog/ja/is_i18next_outdated.md +315 -0
- package/blog/ja/is_next-intl_outdated.md +363 -0
- package/blog/ja/is_vue-i18n_outdated.md +338 -0
- package/blog/ja/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/ja/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/ja/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/ja/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/ja/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/ja/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/ja/what_is_internationalization.md +0 -2
- package/blog/ko/date_time_number_formatting_locales.md +216 -0
- package/blog/ko/detecting_missing_translations.md +202 -0
- package/blog/ko/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/ko/i18n_meaning.md +0 -2
- package/blog/ko/i18n_testing_strategies.md +179 -0
- package/blog/ko/intlayer_with_i18next.md +3 -3
- package/blog/ko/intlayer_with_next-i18next.md +3 -3
- package/blog/ko/intlayer_with_next-intl.md +3 -3
- package/blog/ko/intlayer_with_react-i18next.md +3 -3
- package/blog/ko/intlayer_with_react-intl.md +3 -3
- package/blog/ko/intlayer_with_vue-i18n.md +3 -3
- package/blog/ko/is_i18next_outdated.md +317 -0
- package/blog/ko/is_next-intl_outdated.md +363 -0
- package/blog/ko/is_vue-i18n_outdated.md +338 -0
- package/blog/ko/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/ko/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/ko/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/ko/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/ko/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/ko/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/ko/what_is_internationalization.md +0 -2
- package/blog/pl/date_time_number_formatting_locales.md +216 -0
- package/blog/pl/detecting_missing_translations.md +202 -0
- package/blog/pl/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/pl/i18n_meaning.md +0 -2
- package/blog/pl/i18n_testing_strategies.md +179 -0
- package/blog/pl/intlayer_with_i18next.md +3 -3
- package/blog/pl/intlayer_with_next-i18next.md +3 -3
- package/blog/pl/intlayer_with_next-intl.md +3 -3
- package/blog/pl/intlayer_with_react-i18next.md +3 -3
- package/blog/pl/intlayer_with_react-intl.md +3 -3
- package/blog/pl/intlayer_with_vue-i18n.md +3 -3
- package/blog/pl/is_i18next_outdated.md +315 -0
- package/blog/pl/is_next-intl_outdated.md +363 -0
- package/blog/pl/is_vue-i18n_outdated.md +338 -0
- package/blog/pl/list_i18n_technologies/build-tools/vite.md +177 -0
- package/blog/pl/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/pl/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/pl/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/pl/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/pl/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/pl/what_is_internationalization.md +0 -2
- package/blog/pt/date_time_number_formatting_locales.md +216 -0
- package/blog/pt/detecting_missing_translations.md +202 -0
- package/blog/pt/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/pt/i18n_meaning.md +0 -2
- package/blog/pt/i18n_testing_strategies.md +179 -0
- package/blog/pt/intlayer_with_i18next.md +3 -3
- package/blog/pt/intlayer_with_next-i18next.md +3 -3
- package/blog/pt/intlayer_with_next-intl.md +3 -3
- package/blog/pt/intlayer_with_react-i18next.md +3 -3
- package/blog/pt/intlayer_with_react-intl.md +3 -3
- package/blog/pt/intlayer_with_vue-i18n.md +3 -3
- package/blog/pt/is_i18next_outdated.md +315 -0
- package/blog/pt/is_next-intl_outdated.md +363 -0
- package/blog/pt/is_vue-i18n_outdated.md +338 -0
- package/blog/pt/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/pt/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/pt/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/pt/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/pt/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/pt/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/pt/what_is_internationalization.md +0 -2
- package/blog/ru/date_time_number_formatting_locales.md +216 -0
- package/blog/ru/detecting_missing_translations.md +202 -0
- package/blog/ru/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/ru/i18n_meaning.md +0 -2
- package/blog/ru/i18n_testing_strategies.md +179 -0
- package/blog/ru/intlayer_with_i18next.md +3 -3
- package/blog/ru/intlayer_with_next-i18next.md +3 -3
- package/blog/ru/intlayer_with_next-intl.md +3 -3
- package/blog/ru/intlayer_with_react-i18next.md +3 -3
- package/blog/ru/intlayer_with_react-intl.md +3 -3
- package/blog/ru/intlayer_with_vue-i18n.md +3 -3
- package/blog/ru/is_i18next_outdated.md +315 -0
- package/blog/ru/is_next-intl_outdated.md +363 -0
- package/blog/ru/is_vue-i18n_outdated.md +338 -0
- package/blog/ru/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/ru/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/ru/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/ru/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/ru/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/ru/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/ru/what_is_internationalization.md +0 -2
- package/blog/tr/date_time_number_formatting_locales.md +216 -0
- package/blog/tr/detecting_missing_translations.md +202 -0
- package/blog/tr/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/tr/i18n_meaning.md +0 -2
- package/blog/tr/i18n_testing_strategies.md +179 -0
- package/blog/tr/intlayer_with_i18next.md +3 -3
- package/blog/tr/intlayer_with_next-i18next.md +3 -3
- package/blog/tr/intlayer_with_next-intl.md +3 -3
- package/blog/tr/intlayer_with_react-i18next.md +3 -3
- package/blog/tr/intlayer_with_react-intl.md +3 -3
- package/blog/tr/intlayer_with_vue-i18n.md +3 -3
- package/blog/tr/is_i18next_outdated.md +315 -0
- package/blog/tr/is_next-intl_outdated.md +363 -0
- package/blog/tr/is_vue-i18n_outdated.md +338 -0
- package/blog/tr/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/tr/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/tr/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/tr/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/tr/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/tr/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/tr/what_is_internationalization.md +0 -2
- package/blog/uk/date_time_number_formatting_locales.md +216 -0
- package/blog/uk/detecting_missing_translations.md +202 -0
- package/blog/uk/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/uk/i18n_meaning.md +0 -2
- package/blog/uk/i18n_testing_strategies.md +179 -0
- package/blog/uk/intlayer_with_i18next.md +3 -3
- package/blog/uk/intlayer_with_next-i18next.md +3 -3
- package/blog/uk/intlayer_with_next-intl.md +3 -3
- package/blog/uk/intlayer_with_react-i18next.md +3 -3
- package/blog/uk/intlayer_with_react-intl.md +3 -3
- package/blog/uk/intlayer_with_vue-i18n.md +3 -3
- package/blog/uk/is_i18next_outdated.md +315 -0
- package/blog/uk/is_next-intl_outdated.md +363 -0
- package/blog/uk/is_vue-i18n_outdated.md +338 -0
- package/blog/uk/list_i18n_technologies/build-tools/vite.md +177 -0
- package/blog/uk/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/uk/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/uk/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/uk/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/uk/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/uk/what_is_internationalization.md +0 -2
- package/blog/vi/date_time_number_formatting_locales.md +216 -0
- package/blog/vi/detecting_missing_translations.md +202 -0
- package/blog/vi/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/vi/i18n_meaning.md +0 -2
- package/blog/vi/i18n_testing_strategies.md +179 -0
- package/blog/vi/intlayer_with_i18next.md +3 -3
- package/blog/vi/intlayer_with_next-i18next.md +3 -3
- package/blog/vi/intlayer_with_next-intl.md +3 -3
- package/blog/vi/intlayer_with_react-i18next.md +3 -3
- package/blog/vi/intlayer_with_react-intl.md +3 -3
- package/blog/vi/intlayer_with_vue-i18n.md +3 -3
- package/blog/vi/is_i18next_outdated.md +317 -0
- package/blog/vi/is_next-intl_outdated.md +363 -0
- package/blog/vi/is_vue-i18n_outdated.md +338 -0
- package/blog/vi/list_i18n_technologies/build-tools/vite.md +177 -0
- package/blog/vi/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/vi/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/vi/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/vi/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/vi/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/vi/what_is_internationalization.md +0 -2
- package/blog/zh/date_time_number_formatting_locales.md +216 -0
- package/blog/zh/detecting_missing_translations.md +202 -0
- package/blog/zh/i18n_in_ci_cd_pipelines.md +247 -0
- package/blog/zh/i18n_meaning.md +0 -2
- package/blog/zh/i18n_testing_strategies.md +179 -0
- package/blog/zh/intlayer_with_i18next.md +3 -3
- package/blog/zh/intlayer_with_next-i18next.md +3 -3
- package/blog/zh/intlayer_with_next-intl.md +3 -3
- package/blog/zh/intlayer_with_react-i18next.md +3 -3
- package/blog/zh/intlayer_with_react-intl.md +3 -3
- package/blog/zh/intlayer_with_vue-i18n.md +3 -3
- package/blog/zh/is_i18next_outdated.md +317 -0
- package/blog/zh/is_next-intl_outdated.md +363 -0
- package/blog/zh/is_vue-i18n_outdated.md +338 -0
- package/blog/zh/list_i18n_technologies/build-tools/vite.md +179 -0
- package/blog/zh/list_i18n_technologies/frameworks/angular.md +0 -2
- package/blog/zh/list_i18n_technologies/frameworks/react-native.md +0 -2
- package/blog/zh/list_i18n_technologies/frameworks/react.md +0 -2
- package/blog/zh/list_i18n_technologies/frameworks/svelte.md +0 -2
- package/blog/zh/list_i18n_technologies/frameworks/vue.md +0 -2
- package/blog/zh/what_is_internationalization.md +0 -2
- package/dist/cjs/generated/blog.entry.cjs +320 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +320 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/types/authors.d.ts +5 -5
- package/dist/types/authors.d.ts.map +1 -1
- package/dist/types/blog.d.ts +10 -11
- package/dist/types/blog.d.ts.map +1 -1
- package/dist/types/common.d.ts +12 -13
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/doc.d.ts +10 -11
- package/dist/types/doc.d.ts.map +1 -1
- package/dist/types/frequentQuestions.d.ts +10 -11
- package/dist/types/frequentQuestions.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +17 -2
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -2
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +1 -2
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts +1 -2
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/dist/types/legal.d.ts +10 -11
- package/dist/types/legal.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +186 -186
- package/docs/ar/intlayer_with_adonisjs.md +3 -3
- package/docs/ar/intlayer_with_analog.md +3 -3
- package/docs/ar/intlayer_with_angular_19.md +3 -3
- package/docs/ar/intlayer_with_angular_21.md +3 -3
- package/docs/ar/intlayer_with_astro.md +3 -3
- package/docs/ar/intlayer_with_astro_lit.md +3 -3
- package/docs/ar/intlayer_with_astro_preact.md +3 -3
- package/docs/ar/intlayer_with_astro_react.md +3 -3
- package/docs/ar/intlayer_with_astro_solid.md +3 -3
- package/docs/ar/intlayer_with_astro_svelte.md +3 -3
- package/docs/ar/intlayer_with_astro_vanilla.md +3 -3
- package/docs/ar/intlayer_with_astro_vue.md +3 -3
- package/docs/ar/intlayer_with_create_react_app.md +3 -3
- package/docs/ar/intlayer_with_elysia.md +4 -4
- package/docs/ar/intlayer_with_express.md +3 -3
- package/docs/ar/intlayer_with_fastify.md +4 -4
- package/docs/ar/intlayer_with_hono.md +3 -3
- package/docs/ar/intlayer_with_lynx+react.md +3 -3
- package/docs/ar/intlayer_with_nestjs.md +3 -3
- package/docs/ar/intlayer_with_next-i18next.md +3 -3
- package/docs/ar/intlayer_with_nextjs_14.md +3 -3
- package/docs/ar/intlayer_with_nextjs_15.md +3 -3
- package/docs/ar/intlayer_with_nextjs_16.md +3 -3
- package/docs/ar/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/ar/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/ar/intlayer_with_nuxt.md +3 -3
- package/docs/ar/intlayer_with_react_native+expo.md +3 -3
- package/docs/ar/intlayer_with_react_router_v7.md +3 -3
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +3 -3
- package/docs/ar/intlayer_with_solid_start.md +3 -3
- package/docs/ar/intlayer_with_svelte_kit.md +3 -3
- package/docs/ar/intlayer_with_tanstack+solid.md +3 -3
- package/docs/ar/intlayer_with_tanstack.md +3 -3
- package/docs/ar/intlayer_with_vite+lit.md +3 -3
- package/docs/ar/intlayer_with_vite+preact.md +3 -3
- package/docs/ar/intlayer_with_vite+react.md +3 -3
- package/docs/ar/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/ar/intlayer_with_vite+solid.md +3 -3
- package/docs/ar/intlayer_with_vite+svelte.md +4 -12
- package/docs/ar/intlayer_with_vite+vanilla.md +3 -3
- package/docs/ar/intlayer_with_vite+vue.md +3 -3
- package/docs/ar/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/ar/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/ar/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/ar/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/ar/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/ar/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/bn/bundle_optimization.md +186 -186
- package/docs/bn/intlayer_with_angular_21.md +3 -3
- package/docs/bn/intlayer_with_fastify.md +4 -4
- package/docs/bn/intlayer_with_hono.md +3 -3
- package/docs/bn/intlayer_with_vite+lit.md +3 -3
- package/docs/bn/intlayer_with_vite+vanilla.md +3 -3
- package/docs/cs/bundle_optimization.md +186 -186
- package/docs/cs/intlayer_with_angular_21.md +3 -3
- package/docs/cs/intlayer_with_fastify.md +4 -4
- package/docs/cs/intlayer_with_hono.md +3 -3
- package/docs/cs/intlayer_with_vite+lit.md +3 -3
- package/docs/cs/intlayer_with_vite+vanilla.md +3 -3
- package/docs/de/bundle_optimization.md +186 -186
- package/docs/de/intlayer_with_adonisjs.md +3 -3
- package/docs/de/intlayer_with_analog.md +3 -3
- package/docs/de/intlayer_with_angular_19.md +3 -3
- package/docs/de/intlayer_with_angular_21.md +3 -3
- package/docs/de/intlayer_with_astro.md +3 -3
- package/docs/de/intlayer_with_astro_lit.md +3 -3
- package/docs/de/intlayer_with_astro_preact.md +3 -3
- package/docs/de/intlayer_with_astro_react.md +3 -3
- package/docs/de/intlayer_with_astro_solid.md +3 -3
- package/docs/de/intlayer_with_astro_svelte.md +3 -3
- package/docs/de/intlayer_with_astro_vanilla.md +3 -3
- package/docs/de/intlayer_with_astro_vue.md +3 -3
- package/docs/de/intlayer_with_create_react_app.md +3 -3
- package/docs/de/intlayer_with_elysia.md +4 -4
- package/docs/de/intlayer_with_express.md +3 -3
- package/docs/de/intlayer_with_fastify.md +4 -4
- package/docs/de/intlayer_with_hono.md +3 -3
- package/docs/de/intlayer_with_lynx+react.md +3 -3
- package/docs/de/intlayer_with_nestjs.md +3 -3
- package/docs/de/intlayer_with_next-i18next.md +3 -3
- package/docs/de/intlayer_with_nextjs_14.md +3 -3
- package/docs/de/intlayer_with_nextjs_15.md +3 -3
- package/docs/de/intlayer_with_nextjs_16.md +3 -3
- package/docs/de/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/de/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/de/intlayer_with_nuxt.md +3 -3
- package/docs/de/intlayer_with_react_native+expo.md +3 -3
- package/docs/de/intlayer_with_react_router_v7.md +3 -3
- package/docs/de/intlayer_with_solid_start.md +3 -3
- package/docs/de/intlayer_with_svelte_kit.md +3 -3
- package/docs/de/intlayer_with_tanstack+solid.md +3 -3
- package/docs/de/intlayer_with_tanstack.md +3 -3
- package/docs/de/intlayer_with_vite+lit.md +3 -3
- package/docs/de/intlayer_with_vite+preact.md +3 -3
- package/docs/de/intlayer_with_vite+react.md +3 -3
- package/docs/de/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/de/intlayer_with_vite+solid.md +3 -3
- package/docs/de/intlayer_with_vite+svelte.md +4 -12
- package/docs/de/intlayer_with_vite+vanilla.md +3 -3
- package/docs/de/intlayer_with_vite+vue.md +3 -3
- package/docs/de/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/de/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/de/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/de/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/de/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/en/bundle_optimization.md +186 -186
- package/docs/en/intlayer_with_adonisjs.md +3 -3
- package/docs/en/intlayer_with_analog.md +3 -3
- package/docs/en/intlayer_with_angular_19.md +3 -3
- package/docs/en/intlayer_with_angular_21.md +3 -3
- package/docs/en/intlayer_with_astro.md +3 -3
- package/docs/en/intlayer_with_astro_lit.md +3 -3
- package/docs/en/intlayer_with_astro_preact.md +3 -3
- package/docs/en/intlayer_with_astro_react.md +3 -3
- package/docs/en/intlayer_with_astro_solid.md +3 -3
- package/docs/en/intlayer_with_astro_svelte.md +3 -3
- package/docs/en/intlayer_with_astro_vanilla.md +3 -3
- package/docs/en/intlayer_with_astro_vue.md +3 -3
- package/docs/en/intlayer_with_create_react_app.md +3 -3
- package/docs/en/intlayer_with_elysia.md +4 -4
- package/docs/en/intlayer_with_express.md +3 -3
- package/docs/en/intlayer_with_fastify.md +4 -4
- package/docs/en/intlayer_with_hono.md +3 -3
- package/docs/en/intlayer_with_lynx+react.md +3 -3
- package/docs/en/intlayer_with_nestjs.md +3 -3
- package/docs/en/intlayer_with_next-i18next.md +3 -3
- package/docs/en/intlayer_with_nextjs_14.md +3 -3
- package/docs/en/intlayer_with_nextjs_15.md +3 -3
- package/docs/en/intlayer_with_nextjs_16.md +3 -3
- package/docs/en/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/en/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/en/intlayer_with_nuxt.md +3 -3
- package/docs/en/intlayer_with_react_native+expo.md +3 -3
- package/docs/en/intlayer_with_react_router_v7.md +3 -3
- package/docs/en/intlayer_with_solid_start.md +3 -3
- package/docs/en/intlayer_with_svelte_kit.md +3 -3
- package/docs/en/intlayer_with_tanstack+solid.md +3 -3
- package/docs/en/intlayer_with_tanstack.md +3 -3
- package/docs/en/intlayer_with_vite+lit.md +3 -3
- package/docs/en/intlayer_with_vite+preact.md +3 -3
- package/docs/en/intlayer_with_vite+react.md +3 -3
- package/docs/en/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/en/intlayer_with_vite+solid.md +3 -3
- package/docs/en/intlayer_with_vite+svelte.md +4 -12
- package/docs/en/intlayer_with_vite+vanilla.md +3 -3
- package/docs/en/intlayer_with_vite+vue.md +3 -3
- package/docs/en/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/en/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/en/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/en/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/en/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/en-GB/bundle_optimization.md +186 -186
- package/docs/en-GB/intlayer_with_adonisjs.md +3 -3
- package/docs/en-GB/intlayer_with_analog.md +3 -3
- package/docs/en-GB/intlayer_with_angular_19.md +3 -3
- package/docs/en-GB/intlayer_with_angular_21.md +3 -3
- package/docs/en-GB/intlayer_with_astro.md +3 -3
- package/docs/en-GB/intlayer_with_astro_lit.md +3 -3
- package/docs/en-GB/intlayer_with_astro_preact.md +3 -3
- package/docs/en-GB/intlayer_with_astro_react.md +3 -3
- package/docs/en-GB/intlayer_with_astro_solid.md +3 -3
- package/docs/en-GB/intlayer_with_astro_svelte.md +3 -3
- package/docs/en-GB/intlayer_with_astro_vanilla.md +3 -3
- package/docs/en-GB/intlayer_with_astro_vue.md +3 -3
- package/docs/en-GB/intlayer_with_create_react_app.md +3 -3
- package/docs/en-GB/intlayer_with_elysia.md +4 -4
- package/docs/en-GB/intlayer_with_express.md +3 -3
- package/docs/en-GB/intlayer_with_fastify.md +4 -4
- package/docs/en-GB/intlayer_with_hono.md +3 -3
- package/docs/en-GB/intlayer_with_lynx+react.md +3 -3
- package/docs/en-GB/intlayer_with_nestjs.md +3 -3
- package/docs/en-GB/intlayer_with_next-i18next.md +3 -3
- package/docs/en-GB/intlayer_with_nextjs_14.md +3 -3
- package/docs/en-GB/intlayer_with_nextjs_15.md +3 -3
- package/docs/en-GB/intlayer_with_nextjs_16.md +3 -3
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/en-GB/intlayer_with_nuxt.md +3 -3
- package/docs/en-GB/intlayer_with_react_native+expo.md +3 -3
- package/docs/en-GB/intlayer_with_react_router_v7.md +3 -3
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +3 -3
- package/docs/en-GB/intlayer_with_solid_start.md +3 -3
- package/docs/en-GB/intlayer_with_svelte_kit.md +3 -3
- package/docs/en-GB/intlayer_with_tanstack+solid.md +3 -3
- package/docs/en-GB/intlayer_with_tanstack.md +3 -3
- package/docs/en-GB/intlayer_with_vite+lit.md +3 -3
- package/docs/en-GB/intlayer_with_vite+preact.md +3 -3
- package/docs/en-GB/intlayer_with_vite+react.md +3 -3
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/en-GB/intlayer_with_vite+solid.md +3 -3
- package/docs/en-GB/intlayer_with_vite+svelte.md +4 -12
- package/docs/en-GB/intlayer_with_vite+vanilla.md +3 -3
- package/docs/en-GB/intlayer_with_vite+vue.md +3 -3
- package/docs/en-GB/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/en-GB/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/en-GB/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/en-GB/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/en-GB/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/en-GB/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/es/bundle_optimization.md +186 -186
- package/docs/es/intlayer_with_adonisjs.md +3 -3
- package/docs/es/intlayer_with_analog.md +3 -3
- package/docs/es/intlayer_with_angular_19.md +3 -3
- package/docs/es/intlayer_with_angular_21.md +3 -3
- package/docs/es/intlayer_with_astro.md +3 -3
- package/docs/es/intlayer_with_astro_lit.md +3 -3
- package/docs/es/intlayer_with_astro_preact.md +3 -3
- package/docs/es/intlayer_with_astro_react.md +3 -3
- package/docs/es/intlayer_with_astro_solid.md +3 -3
- package/docs/es/intlayer_with_astro_svelte.md +3 -3
- package/docs/es/intlayer_with_astro_vanilla.md +3 -3
- package/docs/es/intlayer_with_astro_vue.md +3 -3
- package/docs/es/intlayer_with_create_react_app.md +3 -3
- package/docs/es/intlayer_with_elysia.md +4 -4
- package/docs/es/intlayer_with_express.md +3 -3
- package/docs/es/intlayer_with_fastify.md +4 -4
- package/docs/es/intlayer_with_hono.md +3 -3
- package/docs/es/intlayer_with_lynx+react.md +3 -3
- package/docs/es/intlayer_with_nestjs.md +3 -3
- package/docs/es/intlayer_with_next-i18next.md +3 -3
- package/docs/es/intlayer_with_nextjs_14.md +3 -3
- package/docs/es/intlayer_with_nextjs_15.md +3 -3
- package/docs/es/intlayer_with_nextjs_16.md +3 -3
- package/docs/es/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/es/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/es/intlayer_with_nuxt.md +3 -3
- package/docs/es/intlayer_with_react_native+expo.md +3 -3
- package/docs/es/intlayer_with_react_router_v7.md +3 -3
- package/docs/es/intlayer_with_solid_start.md +3 -3
- package/docs/es/intlayer_with_svelte_kit.md +3 -3
- package/docs/es/intlayer_with_tanstack+solid.md +3 -3
- package/docs/es/intlayer_with_tanstack.md +3 -3
- package/docs/es/intlayer_with_vite+lit.md +3 -3
- package/docs/es/intlayer_with_vite+preact.md +3 -3
- package/docs/es/intlayer_with_vite+react.md +3 -3
- package/docs/es/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/es/intlayer_with_vite+solid.md +3 -3
- package/docs/es/intlayer_with_vite+svelte.md +4 -12
- package/docs/es/intlayer_with_vite+vanilla.md +3 -3
- package/docs/es/intlayer_with_vite+vue.md +3 -3
- package/docs/es/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/es/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/es/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/es/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/es/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/fr/bundle_optimization.md +186 -186
- package/docs/fr/intlayer_with_adonisjs.md +3 -3
- package/docs/fr/intlayer_with_analog.md +3 -3
- package/docs/fr/intlayer_with_angular_19.md +3 -3
- package/docs/fr/intlayer_with_angular_21.md +3 -3
- package/docs/fr/intlayer_with_astro.md +3 -3
- package/docs/fr/intlayer_with_astro_lit.md +3 -3
- package/docs/fr/intlayer_with_astro_preact.md +3 -3
- package/docs/fr/intlayer_with_astro_react.md +3 -3
- package/docs/fr/intlayer_with_astro_solid.md +3 -3
- package/docs/fr/intlayer_with_astro_svelte.md +3 -3
- package/docs/fr/intlayer_with_astro_vanilla.md +3 -3
- package/docs/fr/intlayer_with_astro_vue.md +3 -3
- package/docs/fr/intlayer_with_create_react_app.md +3 -3
- package/docs/fr/intlayer_with_elysia.md +4 -4
- package/docs/fr/intlayer_with_express.md +3 -3
- package/docs/fr/intlayer_with_fastify.md +4 -4
- package/docs/fr/intlayer_with_hono.md +3 -3
- package/docs/fr/intlayer_with_lynx+react.md +3 -3
- package/docs/fr/intlayer_with_nestjs.md +3 -3
- package/docs/fr/intlayer_with_next-i18next.md +3 -3
- package/docs/fr/intlayer_with_nextjs_14.md +3 -3
- package/docs/fr/intlayer_with_nextjs_15.md +3 -3
- package/docs/fr/intlayer_with_nextjs_16.md +3 -3
- package/docs/fr/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/fr/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/fr/intlayer_with_nuxt.md +3 -3
- package/docs/fr/intlayer_with_react_native+expo.md +3 -3
- package/docs/fr/intlayer_with_react_router_v7.md +3 -3
- package/docs/fr/intlayer_with_solid_start.md +3 -3
- package/docs/fr/intlayer_with_svelte_kit.md +3 -3
- package/docs/fr/intlayer_with_tanstack+solid.md +3 -3
- package/docs/fr/intlayer_with_tanstack.md +3 -3
- package/docs/fr/intlayer_with_vite+lit.md +3 -3
- package/docs/fr/intlayer_with_vite+preact.md +3 -3
- package/docs/fr/intlayer_with_vite+react.md +3 -3
- package/docs/fr/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/fr/intlayer_with_vite+solid.md +3 -3
- package/docs/fr/intlayer_with_vite+svelte.md +4 -12
- package/docs/fr/intlayer_with_vite+vanilla.md +3 -3
- package/docs/fr/intlayer_with_vite+vue.md +3 -3
- package/docs/fr/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/fr/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/fr/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/fr/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/fr/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/hi/bundle_optimization.md +186 -186
- package/docs/hi/intlayer_with_adonisjs.md +3 -3
- package/docs/hi/intlayer_with_analog.md +3 -3
- package/docs/hi/intlayer_with_angular_19.md +3 -3
- package/docs/hi/intlayer_with_angular_21.md +3 -3
- package/docs/hi/intlayer_with_astro.md +3 -3
- package/docs/hi/intlayer_with_astro_lit.md +3 -3
- package/docs/hi/intlayer_with_astro_preact.md +3 -3
- package/docs/hi/intlayer_with_astro_react.md +3 -3
- package/docs/hi/intlayer_with_astro_solid.md +3 -3
- package/docs/hi/intlayer_with_astro_svelte.md +3 -3
- package/docs/hi/intlayer_with_astro_vanilla.md +3 -3
- package/docs/hi/intlayer_with_astro_vue.md +3 -3
- package/docs/hi/intlayer_with_create_react_app.md +3 -3
- package/docs/hi/intlayer_with_elysia.md +4 -4
- package/docs/hi/intlayer_with_express.md +3 -3
- package/docs/hi/intlayer_with_fastify.md +4 -4
- package/docs/hi/intlayer_with_hono.md +3 -3
- package/docs/hi/intlayer_with_lynx+react.md +3 -3
- package/docs/hi/intlayer_with_nestjs.md +3 -3
- package/docs/hi/intlayer_with_next-i18next.md +3 -3
- package/docs/hi/intlayer_with_nextjs_14.md +3 -3
- package/docs/hi/intlayer_with_nextjs_15.md +3 -3
- package/docs/hi/intlayer_with_nextjs_16.md +3 -3
- package/docs/hi/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/hi/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/hi/intlayer_with_nuxt.md +3 -3
- package/docs/hi/intlayer_with_react_native+expo.md +3 -3
- package/docs/hi/intlayer_with_react_router_v7.md +3 -3
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +3 -3
- package/docs/hi/intlayer_with_solid_start.md +3 -3
- package/docs/hi/intlayer_with_svelte_kit.md +3 -3
- package/docs/hi/intlayer_with_tanstack+solid.md +3 -3
- package/docs/hi/intlayer_with_tanstack.md +3 -3
- package/docs/hi/intlayer_with_vite+lit.md +3 -3
- package/docs/hi/intlayer_with_vite+preact.md +3 -3
- package/docs/hi/intlayer_with_vite+react.md +3 -3
- package/docs/hi/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/hi/intlayer_with_vite+solid.md +3 -3
- package/docs/hi/intlayer_with_vite+svelte.md +4 -12
- package/docs/hi/intlayer_with_vite+vanilla.md +3 -3
- package/docs/hi/intlayer_with_vite+vue.md +3 -3
- package/docs/hi/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/hi/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/hi/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/hi/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/hi/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/hi/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/hi/packages/intlayer/index.md +3 -3
- package/docs/id/bundle_optimization.md +186 -186
- package/docs/id/intlayer_with_adonisjs.md +3 -3
- package/docs/id/intlayer_with_analog.md +3 -3
- package/docs/id/intlayer_with_angular_19.md +3 -3
- package/docs/id/intlayer_with_angular_21.md +3 -3
- package/docs/id/intlayer_with_astro.md +3 -3
- package/docs/id/intlayer_with_astro_lit.md +3 -3
- package/docs/id/intlayer_with_astro_preact.md +3 -3
- package/docs/id/intlayer_with_astro_react.md +3 -3
- package/docs/id/intlayer_with_astro_solid.md +3 -3
- package/docs/id/intlayer_with_astro_svelte.md +3 -3
- package/docs/id/intlayer_with_astro_vanilla.md +3 -3
- package/docs/id/intlayer_with_astro_vue.md +3 -3
- package/docs/id/intlayer_with_create_react_app.md +3 -3
- package/docs/id/intlayer_with_elysia.md +4 -4
- package/docs/id/intlayer_with_express.md +3 -3
- package/docs/id/intlayer_with_fastify.md +4 -4
- package/docs/id/intlayer_with_hono.md +3 -3
- package/docs/id/intlayer_with_lynx+react.md +3 -3
- package/docs/id/intlayer_with_nestjs.md +3 -3
- package/docs/id/intlayer_with_next-i18next.md +3 -3
- package/docs/id/intlayer_with_nextjs_14.md +3 -3
- package/docs/id/intlayer_with_nextjs_15.md +3 -3
- package/docs/id/intlayer_with_nextjs_16.md +3 -3
- package/docs/id/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/id/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/id/intlayer_with_nuxt.md +3 -3
- package/docs/id/intlayer_with_react_native+expo.md +3 -3
- package/docs/id/intlayer_with_react_router_v7.md +3 -3
- package/docs/id/intlayer_with_solid_start.md +3 -3
- package/docs/id/intlayer_with_svelte_kit.md +3 -3
- package/docs/id/intlayer_with_tanstack+solid.md +3 -3
- package/docs/id/intlayer_with_tanstack.md +3 -3
- package/docs/id/intlayer_with_vite+lit.md +3 -3
- package/docs/id/intlayer_with_vite+preact.md +3 -3
- package/docs/id/intlayer_with_vite+react.md +3 -3
- package/docs/id/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/id/intlayer_with_vite+solid.md +3 -3
- package/docs/id/intlayer_with_vite+svelte.md +4 -12
- package/docs/id/intlayer_with_vite+vanilla.md +3 -3
- package/docs/id/intlayer_with_vite+vue.md +3 -3
- package/docs/id/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/id/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/id/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/id/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/id/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/id/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/it/bundle_optimization.md +186 -186
- package/docs/it/intlayer_with_adonisjs.md +3 -3
- package/docs/it/intlayer_with_analog.md +3 -3
- package/docs/it/intlayer_with_angular_19.md +3 -3
- package/docs/it/intlayer_with_angular_21.md +3 -3
- package/docs/it/intlayer_with_astro.md +3 -3
- package/docs/it/intlayer_with_astro_lit.md +3 -3
- package/docs/it/intlayer_with_astro_preact.md +3 -3
- package/docs/it/intlayer_with_astro_react.md +3 -3
- package/docs/it/intlayer_with_astro_solid.md +3 -3
- package/docs/it/intlayer_with_astro_svelte.md +3 -3
- package/docs/it/intlayer_with_astro_vanilla.md +3 -3
- package/docs/it/intlayer_with_astro_vue.md +3 -3
- package/docs/it/intlayer_with_create_react_app.md +3 -3
- package/docs/it/intlayer_with_elysia.md +4 -4
- package/docs/it/intlayer_with_express.md +3 -3
- package/docs/it/intlayer_with_fastify.md +4 -4
- package/docs/it/intlayer_with_hono.md +3 -3
- package/docs/it/intlayer_with_lynx+react.md +3 -3
- package/docs/it/intlayer_with_nestjs.md +3 -3
- package/docs/it/intlayer_with_next-i18next.md +3 -3
- package/docs/it/intlayer_with_nextjs_14.md +3 -3
- package/docs/it/intlayer_with_nextjs_15.md +3 -3
- package/docs/it/intlayer_with_nextjs_16.md +3 -3
- package/docs/it/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/it/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/it/intlayer_with_nuxt.md +3 -3
- package/docs/it/intlayer_with_react_native+expo.md +3 -3
- package/docs/it/intlayer_with_react_router_v7.md +3 -3
- package/docs/it/intlayer_with_solid_start.md +3 -3
- package/docs/it/intlayer_with_svelte_kit.md +3 -3
- package/docs/it/intlayer_with_tanstack+solid.md +3 -3
- package/docs/it/intlayer_with_tanstack.md +3 -3
- package/docs/it/intlayer_with_vite+lit.md +3 -3
- package/docs/it/intlayer_with_vite+preact.md +3 -3
- package/docs/it/intlayer_with_vite+react.md +3 -3
- package/docs/it/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/it/intlayer_with_vite+solid.md +3 -3
- package/docs/it/intlayer_with_vite+svelte.md +4 -12
- package/docs/it/intlayer_with_vite+vanilla.md +3 -3
- package/docs/it/intlayer_with_vite+vue.md +3 -3
- package/docs/it/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/it/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/it/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/it/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/it/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/ja/bundle_optimization.md +186 -186
- package/docs/ja/intlayer_with_adonisjs.md +3 -3
- package/docs/ja/intlayer_with_analog.md +3 -3
- package/docs/ja/intlayer_with_angular_19.md +3 -3
- package/docs/ja/intlayer_with_angular_21.md +3 -3
- package/docs/ja/intlayer_with_astro.md +3 -3
- package/docs/ja/intlayer_with_astro_lit.md +3 -3
- package/docs/ja/intlayer_with_astro_preact.md +3 -3
- package/docs/ja/intlayer_with_astro_react.md +3 -3
- package/docs/ja/intlayer_with_astro_solid.md +3 -3
- package/docs/ja/intlayer_with_astro_svelte.md +3 -3
- package/docs/ja/intlayer_with_astro_vanilla.md +3 -3
- package/docs/ja/intlayer_with_astro_vue.md +3 -3
- package/docs/ja/intlayer_with_create_react_app.md +3 -3
- package/docs/ja/intlayer_with_elysia.md +4 -4
- package/docs/ja/intlayer_with_express.md +3 -3
- package/docs/ja/intlayer_with_fastify.md +4 -4
- package/docs/ja/intlayer_with_hono.md +3 -3
- package/docs/ja/intlayer_with_lynx+react.md +3 -3
- package/docs/ja/intlayer_with_nestjs.md +3 -3
- package/docs/ja/intlayer_with_next-i18next.md +3 -3
- package/docs/ja/intlayer_with_nextjs_14.md +3 -3
- package/docs/ja/intlayer_with_nextjs_15.md +3 -3
- package/docs/ja/intlayer_with_nextjs_16.md +3 -3
- package/docs/ja/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/ja/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/ja/intlayer_with_nuxt.md +3 -3
- package/docs/ja/intlayer_with_react_native+expo.md +3 -3
- package/docs/ja/intlayer_with_react_router_v7.md +3 -3
- package/docs/ja/intlayer_with_solid_start.md +3 -3
- package/docs/ja/intlayer_with_svelte_kit.md +3 -3
- package/docs/ja/intlayer_with_tanstack+solid.md +3 -3
- package/docs/ja/intlayer_with_tanstack.md +3 -3
- package/docs/ja/intlayer_with_vite+lit.md +3 -3
- package/docs/ja/intlayer_with_vite+preact.md +3 -3
- package/docs/ja/intlayer_with_vite+react.md +3 -3
- package/docs/ja/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/ja/intlayer_with_vite+solid.md +3 -3
- package/docs/ja/intlayer_with_vite+svelte.md +4 -12
- package/docs/ja/intlayer_with_vite+vanilla.md +3 -3
- package/docs/ja/intlayer_with_vite+vue.md +3 -3
- package/docs/ja/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/ja/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/ja/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/ja/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/ja/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/ko/bundle_optimization.md +186 -186
- package/docs/ko/intlayer_with_adonisjs.md +3 -3
- package/docs/ko/intlayer_with_analog.md +3 -3
- package/docs/ko/intlayer_with_angular_19.md +3 -3
- package/docs/ko/intlayer_with_angular_21.md +3 -3
- package/docs/ko/intlayer_with_astro.md +3 -3
- package/docs/ko/intlayer_with_astro_lit.md +3 -3
- package/docs/ko/intlayer_with_astro_preact.md +3 -3
- package/docs/ko/intlayer_with_astro_react.md +3 -3
- package/docs/ko/intlayer_with_astro_solid.md +3 -3
- package/docs/ko/intlayer_with_astro_svelte.md +3 -3
- package/docs/ko/intlayer_with_astro_vanilla.md +3 -3
- package/docs/ko/intlayer_with_astro_vue.md +3 -3
- package/docs/ko/intlayer_with_create_react_app.md +3 -3
- package/docs/ko/intlayer_with_elysia.md +4 -4
- package/docs/ko/intlayer_with_express.md +3 -3
- package/docs/ko/intlayer_with_fastify.md +4 -4
- package/docs/ko/intlayer_with_hono.md +3 -3
- package/docs/ko/intlayer_with_lynx+react.md +3 -3
- package/docs/ko/intlayer_with_nestjs.md +3 -3
- package/docs/ko/intlayer_with_next-i18next.md +3 -3
- package/docs/ko/intlayer_with_nextjs_14.md +3 -3
- package/docs/ko/intlayer_with_nextjs_15.md +3 -3
- package/docs/ko/intlayer_with_nextjs_16.md +3 -3
- package/docs/ko/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/ko/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/ko/intlayer_with_nuxt.md +3 -3
- package/docs/ko/intlayer_with_react_native+expo.md +3 -3
- package/docs/ko/intlayer_with_react_router_v7.md +3 -3
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +3 -3
- package/docs/ko/intlayer_with_solid_start.md +3 -3
- package/docs/ko/intlayer_with_svelte_kit.md +3 -3
- package/docs/ko/intlayer_with_tanstack+solid.md +3 -3
- package/docs/ko/intlayer_with_tanstack.md +3 -3
- package/docs/ko/intlayer_with_vite+lit.md +3 -3
- package/docs/ko/intlayer_with_vite+preact.md +3 -3
- package/docs/ko/intlayer_with_vite+react.md +3 -3
- package/docs/ko/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/ko/intlayer_with_vite+solid.md +3 -3
- package/docs/ko/intlayer_with_vite+svelte.md +4 -12
- package/docs/ko/intlayer_with_vite+vanilla.md +3 -3
- package/docs/ko/intlayer_with_vite+vue.md +3 -3
- package/docs/ko/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/ko/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/ko/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/ko/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/ko/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/nl/bundle_optimization.md +186 -186
- package/docs/nl/intlayer_with_angular_21.md +3 -3
- package/docs/nl/intlayer_with_fastify.md +4 -4
- package/docs/nl/intlayer_with_hono.md +3 -3
- package/docs/nl/intlayer_with_vite+lit.md +3 -3
- package/docs/nl/intlayer_with_vite+vanilla.md +3 -3
- package/docs/pl/bundle_optimization.md +186 -186
- package/docs/pl/intlayer_with_adonisjs.md +3 -3
- package/docs/pl/intlayer_with_analog.md +3 -3
- package/docs/pl/intlayer_with_angular_19.md +3 -3
- package/docs/pl/intlayer_with_angular_21.md +3 -3
- package/docs/pl/intlayer_with_astro.md +3 -3
- package/docs/pl/intlayer_with_astro_lit.md +3 -3
- package/docs/pl/intlayer_with_astro_preact.md +3 -3
- package/docs/pl/intlayer_with_astro_react.md +3 -3
- package/docs/pl/intlayer_with_astro_solid.md +3 -3
- package/docs/pl/intlayer_with_astro_svelte.md +3 -3
- package/docs/pl/intlayer_with_astro_vanilla.md +3 -3
- package/docs/pl/intlayer_with_astro_vue.md +3 -3
- package/docs/pl/intlayer_with_create_react_app.md +3 -3
- package/docs/pl/intlayer_with_elysia.md +4 -4
- package/docs/pl/intlayer_with_express.md +3 -3
- package/docs/pl/intlayer_with_fastify.md +4 -4
- package/docs/pl/intlayer_with_hono.md +3 -3
- package/docs/pl/intlayer_with_lynx+react.md +3 -3
- package/docs/pl/intlayer_with_nestjs.md +3 -3
- package/docs/pl/intlayer_with_next-i18next.md +3 -3
- package/docs/pl/intlayer_with_nextjs_14.md +3 -3
- package/docs/pl/intlayer_with_nextjs_15.md +3 -3
- package/docs/pl/intlayer_with_nextjs_16.md +3 -3
- package/docs/pl/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/pl/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/pl/intlayer_with_nuxt.md +3 -3
- package/docs/pl/intlayer_with_react_native+expo.md +3 -3
- package/docs/pl/intlayer_with_react_router_v7.md +3 -3
- package/docs/pl/intlayer_with_solid_start.md +3 -3
- package/docs/pl/intlayer_with_svelte_kit.md +3 -3
- package/docs/pl/intlayer_with_tanstack+solid.md +3 -3
- package/docs/pl/intlayer_with_tanstack.md +3 -3
- package/docs/pl/intlayer_with_vite+lit.md +3 -3
- package/docs/pl/intlayer_with_vite+preact.md +3 -3
- package/docs/pl/intlayer_with_vite+react.md +3 -3
- package/docs/pl/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/pl/intlayer_with_vite+solid.md +3 -3
- package/docs/pl/intlayer_with_vite+svelte.md +4 -12
- package/docs/pl/intlayer_with_vite+vanilla.md +3 -3
- package/docs/pl/intlayer_with_vite+vue.md +3 -3
- package/docs/pl/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/pl/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/pl/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/pl/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/pl/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/pt/bundle_optimization.md +186 -186
- package/docs/pt/intlayer_with_adonisjs.md +3 -3
- package/docs/pt/intlayer_with_analog.md +3 -3
- package/docs/pt/intlayer_with_angular_19.md +3 -3
- package/docs/pt/intlayer_with_angular_21.md +3 -3
- package/docs/pt/intlayer_with_astro.md +3 -3
- package/docs/pt/intlayer_with_astro_lit.md +3 -3
- package/docs/pt/intlayer_with_astro_preact.md +3 -3
- package/docs/pt/intlayer_with_astro_react.md +3 -3
- package/docs/pt/intlayer_with_astro_solid.md +3 -3
- package/docs/pt/intlayer_with_astro_svelte.md +3 -3
- package/docs/pt/intlayer_with_astro_vanilla.md +3 -3
- package/docs/pt/intlayer_with_astro_vue.md +3 -3
- package/docs/pt/intlayer_with_create_react_app.md +3 -3
- package/docs/pt/intlayer_with_elysia.md +4 -4
- package/docs/pt/intlayer_with_express.md +3 -3
- package/docs/pt/intlayer_with_fastify.md +4 -4
- package/docs/pt/intlayer_with_hono.md +3 -3
- package/docs/pt/intlayer_with_lynx+react.md +3 -3
- package/docs/pt/intlayer_with_nestjs.md +3 -3
- package/docs/pt/intlayer_with_next-i18next.md +3 -3
- package/docs/pt/intlayer_with_nextjs_14.md +3 -3
- package/docs/pt/intlayer_with_nextjs_15.md +3 -3
- package/docs/pt/intlayer_with_nextjs_16.md +3 -3
- package/docs/pt/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/pt/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/pt/intlayer_with_nuxt.md +3 -3
- package/docs/pt/intlayer_with_react_native+expo.md +3 -3
- package/docs/pt/intlayer_with_react_router_v7.md +3 -3
- package/docs/pt/intlayer_with_solid_start.md +3 -3
- package/docs/pt/intlayer_with_svelte_kit.md +3 -3
- package/docs/pt/intlayer_with_tanstack+solid.md +3 -3
- package/docs/pt/intlayer_with_tanstack.md +3 -3
- package/docs/pt/intlayer_with_vite+lit.md +3 -3
- package/docs/pt/intlayer_with_vite+preact.md +3 -3
- package/docs/pt/intlayer_with_vite+react.md +3 -3
- package/docs/pt/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/pt/intlayer_with_vite+solid.md +3 -3
- package/docs/pt/intlayer_with_vite+svelte.md +4 -12
- package/docs/pt/intlayer_with_vite+vanilla.md +3 -3
- package/docs/pt/intlayer_with_vite+vue.md +3 -3
- package/docs/pt/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/pt/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/pt/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/pt/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/pt/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/ru/bundle_optimization.md +186 -186
- package/docs/ru/intlayer_with_adonisjs.md +3 -3
- package/docs/ru/intlayer_with_analog.md +3 -3
- package/docs/ru/intlayer_with_angular_19.md +3 -3
- package/docs/ru/intlayer_with_angular_21.md +3 -3
- package/docs/ru/intlayer_with_astro.md +3 -3
- package/docs/ru/intlayer_with_astro_lit.md +3 -3
- package/docs/ru/intlayer_with_astro_preact.md +3 -3
- package/docs/ru/intlayer_with_astro_react.md +3 -3
- package/docs/ru/intlayer_with_astro_solid.md +3 -3
- package/docs/ru/intlayer_with_astro_svelte.md +3 -3
- package/docs/ru/intlayer_with_astro_vanilla.md +3 -3
- package/docs/ru/intlayer_with_astro_vue.md +3 -3
- package/docs/ru/intlayer_with_create_react_app.md +3 -3
- package/docs/ru/intlayer_with_elysia.md +4 -4
- package/docs/ru/intlayer_with_express.md +3 -3
- package/docs/ru/intlayer_with_fastify.md +4 -4
- package/docs/ru/intlayer_with_hono.md +3 -3
- package/docs/ru/intlayer_with_lynx+react.md +3 -3
- package/docs/ru/intlayer_with_nestjs.md +3 -3
- package/docs/ru/intlayer_with_next-i18next.md +3 -3
- package/docs/ru/intlayer_with_nextjs_14.md +3 -3
- package/docs/ru/intlayer_with_nextjs_15.md +3 -3
- package/docs/ru/intlayer_with_nextjs_16.md +3 -3
- package/docs/ru/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/ru/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/ru/intlayer_with_nuxt.md +3 -3
- package/docs/ru/intlayer_with_react_native+expo.md +3 -3
- package/docs/ru/intlayer_with_react_router_v7.md +3 -3
- package/docs/ru/intlayer_with_solid_start.md +3 -3
- package/docs/ru/intlayer_with_svelte_kit.md +3 -3
- package/docs/ru/intlayer_with_tanstack+solid.md +3 -3
- package/docs/ru/intlayer_with_tanstack.md +3 -3
- package/docs/ru/intlayer_with_vite+lit.md +3 -3
- package/docs/ru/intlayer_with_vite+preact.md +3 -3
- package/docs/ru/intlayer_with_vite+react.md +3 -3
- package/docs/ru/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/ru/intlayer_with_vite+solid.md +3 -3
- package/docs/ru/intlayer_with_vite+svelte.md +4 -12
- package/docs/ru/intlayer_with_vite+vanilla.md +3 -3
- package/docs/ru/intlayer_with_vite+vue.md +3 -3
- package/docs/ru/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/ru/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/ru/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/ru/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/ru/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/tr/bundle_optimization.md +186 -186
- package/docs/tr/intlayer_with_adonisjs.md +3 -3
- package/docs/tr/intlayer_with_analog.md +3 -3
- package/docs/tr/intlayer_with_angular_19.md +3 -3
- package/docs/tr/intlayer_with_angular_21.md +3 -3
- package/docs/tr/intlayer_with_astro.md +3 -3
- package/docs/tr/intlayer_with_astro_lit.md +3 -3
- package/docs/tr/intlayer_with_astro_preact.md +3 -3
- package/docs/tr/intlayer_with_astro_react.md +3 -3
- package/docs/tr/intlayer_with_astro_solid.md +3 -3
- package/docs/tr/intlayer_with_astro_svelte.md +3 -3
- package/docs/tr/intlayer_with_astro_vanilla.md +3 -3
- package/docs/tr/intlayer_with_astro_vue.md +3 -3
- package/docs/tr/intlayer_with_create_react_app.md +3 -3
- package/docs/tr/intlayer_with_elysia.md +4 -4
- package/docs/tr/intlayer_with_express.md +3 -3
- package/docs/tr/intlayer_with_fastify.md +4 -4
- package/docs/tr/intlayer_with_hono.md +3 -3
- package/docs/tr/intlayer_with_lynx+react.md +3 -3
- package/docs/tr/intlayer_with_nestjs.md +3 -3
- package/docs/tr/intlayer_with_next-i18next.md +3 -3
- package/docs/tr/intlayer_with_nextjs_14.md +3 -3
- package/docs/tr/intlayer_with_nextjs_15.md +3 -3
- package/docs/tr/intlayer_with_nextjs_16.md +3 -3
- package/docs/tr/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/tr/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/tr/intlayer_with_nuxt.md +3 -3
- package/docs/tr/intlayer_with_react_native+expo.md +3 -3
- package/docs/tr/intlayer_with_react_router_v7.md +3 -3
- package/docs/tr/intlayer_with_solid_start.md +3 -3
- package/docs/tr/intlayer_with_svelte_kit.md +3 -3
- package/docs/tr/intlayer_with_tanstack+solid.md +3 -3
- package/docs/tr/intlayer_with_tanstack.md +3 -3
- package/docs/tr/intlayer_with_vite+lit.md +3 -3
- package/docs/tr/intlayer_with_vite+preact.md +3 -3
- package/docs/tr/intlayer_with_vite+react.md +3 -3
- package/docs/tr/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/tr/intlayer_with_vite+solid.md +3 -3
- package/docs/tr/intlayer_with_vite+svelte.md +4 -12
- package/docs/tr/intlayer_with_vite+vanilla.md +3 -3
- package/docs/tr/intlayer_with_vite+vue.md +3 -3
- package/docs/tr/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/tr/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/tr/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/tr/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/tr/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/uk/bundle_optimization.md +186 -186
- package/docs/uk/intlayer_with_adonisjs.md +3 -3
- package/docs/uk/intlayer_with_analog.md +3 -3
- package/docs/uk/intlayer_with_angular_19.md +3 -3
- package/docs/uk/intlayer_with_angular_21.md +3 -3
- package/docs/uk/intlayer_with_astro.md +3 -3
- package/docs/uk/intlayer_with_astro_lit.md +3 -3
- package/docs/uk/intlayer_with_astro_preact.md +3 -3
- package/docs/uk/intlayer_with_astro_react.md +3 -3
- package/docs/uk/intlayer_with_astro_solid.md +3 -3
- package/docs/uk/intlayer_with_astro_svelte.md +3 -3
- package/docs/uk/intlayer_with_astro_vanilla.md +3 -3
- package/docs/uk/intlayer_with_astro_vue.md +3 -3
- package/docs/uk/intlayer_with_create_react_app.md +3 -3
- package/docs/uk/intlayer_with_elysia.md +4 -4
- package/docs/uk/intlayer_with_express.md +3 -3
- package/docs/uk/intlayer_with_fastify.md +4 -4
- package/docs/uk/intlayer_with_hono.md +3 -3
- package/docs/uk/intlayer_with_lynx+react.md +3 -3
- package/docs/uk/intlayer_with_nestjs.md +3 -3
- package/docs/uk/intlayer_with_next-i18next.md +3 -3
- package/docs/uk/intlayer_with_nextjs_14.md +3 -3
- package/docs/uk/intlayer_with_nextjs_15.md +3 -3
- package/docs/uk/intlayer_with_nextjs_16.md +3 -3
- package/docs/uk/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/uk/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/uk/intlayer_with_nuxt.md +3 -3
- package/docs/uk/intlayer_with_react_native+expo.md +3 -3
- package/docs/uk/intlayer_with_react_router_v7.md +3 -3
- package/docs/uk/intlayer_with_solid_start.md +3 -3
- package/docs/uk/intlayer_with_svelte_kit.md +3 -3
- package/docs/uk/intlayer_with_tanstack+solid.md +3 -3
- package/docs/uk/intlayer_with_tanstack.md +3 -3
- package/docs/uk/intlayer_with_vite+lit.md +3 -3
- package/docs/uk/intlayer_with_vite+preact.md +3 -3
- package/docs/uk/intlayer_with_vite+react.md +3 -3
- package/docs/uk/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/uk/intlayer_with_vite+solid.md +3 -3
- package/docs/uk/intlayer_with_vite+svelte.md +4 -12
- package/docs/uk/intlayer_with_vite+vanilla.md +3 -3
- package/docs/uk/intlayer_with_vite+vue.md +3 -3
- package/docs/uk/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/uk/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/uk/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/uk/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/uk/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/uk/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/ur/bundle_optimization.md +186 -186
- package/docs/ur/intlayer_with_angular_21.md +3 -3
- package/docs/ur/intlayer_with_fastify.md +4 -4
- package/docs/ur/intlayer_with_hono.md +3 -3
- package/docs/ur/intlayer_with_vite+lit.md +3 -3
- package/docs/ur/intlayer_with_vite+vanilla.md +3 -3
- package/docs/vi/bundle_optimization.md +186 -186
- package/docs/vi/intlayer_with_adonisjs.md +3 -3
- package/docs/vi/intlayer_with_analog.md +3 -3
- package/docs/vi/intlayer_with_angular_19.md +3 -3
- package/docs/vi/intlayer_with_angular_21.md +3 -3
- package/docs/vi/intlayer_with_astro.md +3 -3
- package/docs/vi/intlayer_with_astro_lit.md +3 -3
- package/docs/vi/intlayer_with_astro_preact.md +3 -3
- package/docs/vi/intlayer_with_astro_react.md +3 -3
- package/docs/vi/intlayer_with_astro_solid.md +3 -3
- package/docs/vi/intlayer_with_astro_svelte.md +3 -3
- package/docs/vi/intlayer_with_astro_vanilla.md +3 -3
- package/docs/vi/intlayer_with_astro_vue.md +3 -3
- package/docs/vi/intlayer_with_create_react_app.md +3 -3
- package/docs/vi/intlayer_with_elysia.md +4 -4
- package/docs/vi/intlayer_with_express.md +3 -3
- package/docs/vi/intlayer_with_fastify.md +4 -4
- package/docs/vi/intlayer_with_hono.md +3 -3
- package/docs/vi/intlayer_with_lynx+react.md +3 -3
- package/docs/vi/intlayer_with_nestjs.md +3 -3
- package/docs/vi/intlayer_with_next-i18next.md +3 -3
- package/docs/vi/intlayer_with_nextjs_14.md +3 -3
- package/docs/vi/intlayer_with_nextjs_15.md +3 -3
- package/docs/vi/intlayer_with_nextjs_16.md +3 -3
- package/docs/vi/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/vi/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/vi/intlayer_with_nuxt.md +3 -3
- package/docs/vi/intlayer_with_react_native+expo.md +3 -3
- package/docs/vi/intlayer_with_react_router_v7.md +3 -3
- package/docs/vi/intlayer_with_solid_start.md +3 -3
- package/docs/vi/intlayer_with_svelte_kit.md +3 -3
- package/docs/vi/intlayer_with_tanstack+solid.md +3 -3
- package/docs/vi/intlayer_with_tanstack.md +3 -3
- package/docs/vi/intlayer_with_vite+lit.md +3 -3
- package/docs/vi/intlayer_with_vite+preact.md +3 -3
- package/docs/vi/intlayer_with_vite+react.md +3 -3
- package/docs/vi/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/vi/intlayer_with_vite+solid.md +3 -3
- package/docs/vi/intlayer_with_vite+svelte.md +4 -12
- package/docs/vi/intlayer_with_vite+vanilla.md +3 -3
- package/docs/vi/intlayer_with_vite+vue.md +3 -3
- package/docs/vi/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/vi/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/vi/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/vi/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/vi/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/vi/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/zh/bundle_optimization.md +186 -186
- package/docs/zh/intlayer_with_adonisjs.md +3 -3
- package/docs/zh/intlayer_with_analog.md +3 -3
- package/docs/zh/intlayer_with_angular_19.md +3 -3
- package/docs/zh/intlayer_with_angular_21.md +3 -3
- package/docs/zh/intlayer_with_astro.md +3 -3
- package/docs/zh/intlayer_with_astro_lit.md +3 -3
- package/docs/zh/intlayer_with_astro_preact.md +3 -3
- package/docs/zh/intlayer_with_astro_react.md +3 -3
- package/docs/zh/intlayer_with_astro_solid.md +3 -3
- package/docs/zh/intlayer_with_astro_svelte.md +3 -3
- package/docs/zh/intlayer_with_astro_vanilla.md +3 -3
- package/docs/zh/intlayer_with_astro_vue.md +3 -3
- package/docs/zh/intlayer_with_create_react_app.md +3 -3
- package/docs/zh/intlayer_with_elysia.md +4 -4
- package/docs/zh/intlayer_with_express.md +3 -3
- package/docs/zh/intlayer_with_fastify.md +4 -4
- package/docs/zh/intlayer_with_hono.md +3 -3
- package/docs/zh/intlayer_with_lynx+react.md +3 -3
- package/docs/zh/intlayer_with_nestjs.md +3 -3
- package/docs/zh/intlayer_with_next-i18next.md +3 -3
- package/docs/zh/intlayer_with_nextjs_14.md +3 -3
- package/docs/zh/intlayer_with_nextjs_15.md +3 -3
- package/docs/zh/intlayer_with_nextjs_16.md +3 -3
- package/docs/zh/intlayer_with_nextjs_compiler.md +3 -3
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +3 -3
- package/docs/zh/intlayer_with_nextjs_page_router.md +3 -3
- package/docs/zh/intlayer_with_nuxt.md +3 -3
- package/docs/zh/intlayer_with_react_native+expo.md +3 -3
- package/docs/zh/intlayer_with_react_router_v7.md +3 -3
- package/docs/zh/intlayer_with_solid_start.md +3 -3
- package/docs/zh/intlayer_with_svelte_kit.md +3 -3
- package/docs/zh/intlayer_with_tanstack+solid.md +3 -3
- package/docs/zh/intlayer_with_tanstack.md +3 -3
- package/docs/zh/intlayer_with_vite+lit.md +3 -3
- package/docs/zh/intlayer_with_vite+preact.md +3 -3
- package/docs/zh/intlayer_with_vite+react.md +3 -3
- package/docs/zh/intlayer_with_vite+react_compiler.md +3 -3
- package/docs/zh/intlayer_with_vite+solid.md +3 -3
- package/docs/zh/intlayer_with_vite+svelte.md +4 -12
- package/docs/zh/intlayer_with_vite+vanilla.md +3 -3
- package/docs/zh/intlayer_with_vite+vue.md +3 -3
- package/docs/zh/migration_from_i18next_to_intlayer.md +3 -3
- package/docs/zh/migration_from_next-i18next_to_intlayer.md +3 -3
- package/docs/zh/migration_from_next-intl_to_intlayer.md +3 -3
- package/docs/zh/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
- package/docs/zh/migration_from_react-i18next_to_intlayer.md +3 -3
- package/docs/zh/migration_from_vue-i18n_to_intlayer.md +3 -3
- package/docs/zh-TW/bundle_optimization.md +186 -186
- package/docs/zh-TW/intlayer_with_angular_21.md +3 -3
- package/package.json +8 -8
- package/src/generated/blog.entry.ts +329 -0
package/blog/es/i18n_meaning.md
CHANGED
|
@@ -19,8 +19,6 @@ author: aymericzip
|
|
|
19
19
|
|
|
20
20
|
# Significado de i18n: ¿Qué es la internacionalización y por qué es importante?
|
|
21
21
|
|
|
22
|
-

|
|
23
|
-
|
|
24
22
|
## Entendiendo el "Significado de i18n"
|
|
25
23
|
|
|
26
24
|
Si estás involucrado en el desarrollo de software, el diseño web o el marketing digital, es probable que te hayas encontrado con el término **i18n**. El verdadero **significado de i18n** es simplemente un numerónimo para **internacionalización**.
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-02
|
|
3
|
+
updatedAt: 2026-09-02
|
|
4
|
+
title: "Cómo probar traducciones sin escribir pruebas frágiles"
|
|
5
|
+
description: Qué vale la pena probar en una aplicación i18n y qué no. Pruebas de renderizado con provider, pseudolocalización, cobertura RTL y plurales, y la trampa de los snapshots.
|
|
6
|
+
keywords:
|
|
7
|
+
- probar traducciones
|
|
8
|
+
- pruebas i18n
|
|
9
|
+
- testing library i18n
|
|
10
|
+
- pseudolocalización
|
|
11
|
+
- prueba provider locale
|
|
12
|
+
- snapshot test i18n
|
|
13
|
+
slugs:
|
|
14
|
+
- blog
|
|
15
|
+
- i18n-testing-strategies
|
|
16
|
+
author: aymericzip
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Cómo probar traducciones sin escribir pruebas frágiles
|
|
20
|
+
|
|
21
|
+
La mayoría de las suites de pruebas i18n fallan de dos formas. O bien realizan aserciones sobre el texto literal, de modo que cada cambio de redacción rompe cincuenta pruebas y el equipo termina eliminándolas. O bien renderizan todo en el locale predeterminado, sin verificar nada sobre los otros diecisiete. Ambos caminos conducen al mismo destino, una suite en la que nadie confía.
|
|
22
|
+
|
|
23
|
+
## Tabla de contenidos
|
|
24
|
+
|
|
25
|
+
<TOC/>
|
|
26
|
+
|
|
27
|
+
## Los patrones son independientes de la biblioteca
|
|
28
|
+
|
|
29
|
+
Cada patrón a continuación funciona en cualquier stack i18n. Cambia el provider por `I18nextProvider`, `NextIntlClientProvider` o `IntlProvider` y las pruebas permanecerán idénticas, ya que validan el resultado renderizado en lugar de una API de biblioteca.
|
|
30
|
+
|
|
31
|
+
El soporte de cobertura también se adapta: con el [plugin Sync JSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/plugins/sync-json.md) apuntando a tus catálogos actuales, o un [adaptador de compatibilidad](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/compat/index.md) creando alias sobre tus imports actuales, la aserción de cobertura se ejecuta sobre el JSON que ya tienes.
|
|
32
|
+
|
|
33
|
+
## Decide qué estás probando en realidad
|
|
34
|
+
|
|
35
|
+
La calidad de la traducción no se comprueba con una aserción de código. Ninguna aserción puede validar si el alemán suena natural, y asumir lo contrario llena la suite de cadenas hardcodeadas.
|
|
36
|
+
|
|
37
|
+
Lo que sí vale la pena probar es mecánico:
|
|
38
|
+
|
|
39
|
+
| Vale la pena probar | No vale la pena probar |
|
|
40
|
+
| :------------------------------------------ | :------------------------------- |
|
|
41
|
+
| Cada locale requerido tiene un valor | Si la redacción suena bien |
|
|
42
|
+
| El locale correcto llega al componente | El texto exacto de cada etiqueta |
|
|
43
|
+
| Los plurales resuelven cada categoría | Si el traductor hizo su trabajo |
|
|
44
|
+
| Locales RTL configuran dirección y espejo | Cada cadena en cada locale |
|
|
45
|
+
| Fechas y números formateados usan el locale | La precisión interna de `Intl` |
|
|
46
|
+
|
|
47
|
+
La cobertura pertenece a una prueba orientada a datos, no a las pruebas de componentes. Eso se detalla en [cómo detectar traducciones faltantes](https://github.com/aymericzip/intlayer/blob/main/docs/blog/es/detecting_missing_translations.md); este artículo se enfoca en el resto.
|
|
48
|
+
|
|
49
|
+
## Renderiza dentro de un provider y busca por rol
|
|
50
|
+
|
|
51
|
+
El patrón principal consiste en montar el componente dentro de un provider de locale y consultar por rol o identificador de prueba en lugar de por texto.
|
|
52
|
+
|
|
53
|
+
```tsx fileName="CartSummary.test.tsx"
|
|
54
|
+
import { render, screen } from "@testing-library/react";
|
|
55
|
+
import { IntlayerProvider } from "react-intlayer/client";
|
|
56
|
+
import { CartSummary } from "./CartSummary";
|
|
57
|
+
|
|
58
|
+
test("renderiza el encabezado del resumen en francés", () => {
|
|
59
|
+
render(
|
|
60
|
+
<IntlayerProvider locale="fr-FR">
|
|
61
|
+
<CartSummary />
|
|
62
|
+
</IntlayerProvider>
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
expect(screen.getByRole("heading")).toBeInTheDocument();
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Consultar `getByRole("heading")` sobrevive a un cambio de texto. `getByText("Récapitulatif")` no lo hace. Usa la cadena literal únicamente cuando el texto en sí sea el objeto de prueba, lo cual ocurre raramente.
|
|
70
|
+
|
|
71
|
+
Para atributos como `aria-label`, necesitas la cadena sin procesar en lugar de un nodo renderizable. En React, las entradas de `useIntlayer` exponen un campo `.value` para este propósito.
|
|
72
|
+
|
|
73
|
+
## Parametriza las pruebas entre locales
|
|
74
|
+
|
|
75
|
+
Un único cuerpo de prueba evaluado en cada locale aporta mucho más valor que una prueba separada por locale.
|
|
76
|
+
|
|
77
|
+
```tsx fileName="direction.test.tsx"
|
|
78
|
+
import { getHTMLTextDir } from "intlayer";
|
|
79
|
+
import { render } from "@testing-library/react";
|
|
80
|
+
import { IntlayerProvider } from "react-intlayer/client";
|
|
81
|
+
|
|
82
|
+
describe.each(["en", "fr", "ja", "ar"])("locale %s", (locale) => {
|
|
83
|
+
it("renderiza sin recurrir a la clave sin traducir", () => {
|
|
84
|
+
const { container } = render(
|
|
85
|
+
<IntlayerProvider locale={locale}>
|
|
86
|
+
<CartSummary />
|
|
87
|
+
</IntlayerProvider>
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
// Una clave renderizada significa que la resolución falló.
|
|
91
|
+
expect(container.textContent).not.toMatch(/^[a-z]+(\.[a-z]+)+$/);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it("establece la dirección de texto correcta", () => {
|
|
95
|
+
expect(getHTMLTextDir(locale)).toBe(locale === "ar" ? "rtl" : "ltr");
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
La primera aserción es una ventaja genérica económica: si la resolución falla y tu biblioteca imprime la clave, el DOM contendrá un formato similar a `cart.summary.title`. Esto detecta una clase completa de errores sin evaluar una sola cadena.
|
|
101
|
+
|
|
102
|
+
## La pseudolocalización revela lo que los catálogos no detectan
|
|
103
|
+
|
|
104
|
+
Añade un locale ficticio que transforme cada texto, por ejemplo convirtiendo `Checkout` en `[!!! Çĥéçķöũţ !!!]`. Luego renderiza la página en ese locale.
|
|
105
|
+
|
|
106
|
+
Cualquier elemento que permanezca en inglés estándar está hardcodeado en el código, y ninguna auditoría basada en catálogos puede percibirlo, ya que para las herramientas la cadena no existe. Los corchetes cumplen una segunda función: expanden el texto cerca de un 30 por ciento, exponiendo desbordes de interfaz antes de que ocurran en alemán.
|
|
107
|
+
|
|
108
|
+
Conviene ejecutar esto como un paso visual o end-to-end antes que como una prueba unitaria, ya que el fallo se detecta visualmente.
|
|
109
|
+
|
|
110
|
+
## Los plurales requieren una prueba por categoría, no por idioma
|
|
111
|
+
|
|
112
|
+
Los errores de plurales pasan desapercibidos porque el inglés solo maneja dos formas y muchos desarrolladores se limitan a ellas. El polaco tiene cuatro, el árabe seis.
|
|
113
|
+
|
|
114
|
+
```ts fileName="plural.test.ts"
|
|
115
|
+
// El árabe evalúa zero, one, two, few, many, other.
|
|
116
|
+
describe.each([0, 1, 2, 3, 11, 100])("cantidad %i", (count) => {
|
|
117
|
+
it("produce una cadena no vacía en árabe", () => {
|
|
118
|
+
expect(formatItems(count, "ar")).not.toBe("");
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Elige cantidades que cubran cada categoría CLDR para el idioma más complejo en lugar de verificar 1 y 2 en todas partes. `Intl.PluralRules` indica en qué categoría encaja un número, de modo que puedes deducir los valores de prueba en lugar de adivinarlos. Más detalles sobre las categorías en el [artículo sobre el formato de mensajes ICU](https://github.com/aymericzip/intlayer/blob/main/docs/blog/es/icu_message_format.md).
|
|
124
|
+
|
|
125
|
+
## La trampa de los snapshots
|
|
126
|
+
|
|
127
|
+
Los snapshots y la internacionalización son una mala combinación. Un snapshot de un componente localizado almacena cada cadena en su interior, de modo que un traductor corrigiendo un error ortográfico en portugués convierte una suite en verde en rojo, dentro de un archivo que ningún revisor puede evaluar. Tras varias falsas alarmas, alguien ejecuta `-u` sin revisar el diff y los snapshots pierden toda utilidad.
|
|
128
|
+
|
|
129
|
+
Si deseas utilizar snapshots, captúralos en un solo locale y considéralos como una comprobación estructural y no de contenido. Todo lo específico de cada locale debe verificarse con aserciones explícitas.
|
|
130
|
+
|
|
131
|
+
## Prueba la negociación de locale, no solo el renderizado
|
|
132
|
+
|
|
133
|
+
El error de i18n más habitual en producción no es una cadena faltante. Es la selección de un locale incorrecto: una URL marca `/fr/`, el cliente lee `navigator.language`, y no coinciden.
|
|
134
|
+
|
|
135
|
+
Prueba la lógica de resolución directamente, como una función pura independiente de los componentes:
|
|
136
|
+
|
|
137
|
+
```ts fileName="locale-resolution.test.ts"
|
|
138
|
+
it("prefiere la URL sobre la preferencia guardada", () => {
|
|
139
|
+
expect(resolveLocale({ url: "/fr/about", stored: "de", header: "ja" })).toBe(
|
|
140
|
+
"fr"
|
|
141
|
+
);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it("usa el header cuando la URL carece de prefijo", () => {
|
|
145
|
+
expect(resolveLocale({ url: "/about", stored: null, header: "ja" })).toBe(
|
|
146
|
+
"ja"
|
|
147
|
+
);
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Esta es la prueba de i18n de mayor valor que suele faltar en los proyectos, y no requiere DOM.
|
|
152
|
+
|
|
153
|
+
## Qué ejecutar y dónde
|
|
154
|
+
|
|
155
|
+
- **Unitaria**: negociación de locales, formateadores, categorías de plurales. Rápida, sin DOM.
|
|
156
|
+
- **Componente**: un renderizado con provider por locale, verificando roles y la ausencia de claves sin resolver.
|
|
157
|
+
- **Cobertura**: una prueba basada en datos que garantice la ausencia de locales requeridos faltantes.
|
|
158
|
+
- **Visual o end-to-end**: pase de pseudolocalización y una página RTL, pues esos fallos son visuales.
|
|
159
|
+
|
|
160
|
+
Mantén las tres primeras en la integración continua en cada commit. La última es económica en ejecuciones nocturnas y costosa en cada push.
|
|
161
|
+
|
|
162
|
+
## Errores comunes
|
|
163
|
+
|
|
164
|
+
- **Aserciones sobre texto literal en todas partes.** Garantiza el abandono de la suite en pocos meses.
|
|
165
|
+
- **Crear snapshots de componentes localizados.** Los traductores rompen el build y los revisores aprueban sin mirar.
|
|
166
|
+
- **Probar únicamente el locale predeterminado.** El único locale que nunca puede faltar.
|
|
167
|
+
- **Probar 1 y 2 para los plurales.** Pasa por alto las categorías que el inglés no posee.
|
|
168
|
+
- **Crear mocks de la librería i18n.** En ese punto solo estás probando que el mock devuelve cadenas.
|
|
169
|
+
- **No probar nunca la negociación de locales.** El fallo más común en entornos reales y el más sencillo de comprobar.
|
|
170
|
+
|
|
171
|
+
## Para profundizar
|
|
172
|
+
|
|
173
|
+
- [Probar tu contenido: auditoría CLI, API programática y aserciones UI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/testing.md)
|
|
174
|
+
- [Plugin de ESLint: detección de texto hardcodeado y contenido no utilizado](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/eslint.md)
|
|
175
|
+
- [Formateadores y utilidades de locale, incluyendo `getHTMLTextDir`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/formatters.md)
|
|
176
|
+
- [Informes de benchmark entre frameworks](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/benchmark/index.md)
|
|
177
|
+
- [Adaptador de compatibilidad react-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/compat/react-i18next.md)
|
|
178
|
+
- [Cómo detectar traducciones faltantes](https://github.com/aymericzip/intlayer/blob/main/docs/blog/es/detecting_missing_translations.md)
|
|
179
|
+
- [Formato de mensajes ICU: plurales, select y esqueletos](https://github.com/aymericzip/intlayer/blob/main/docs/blog/es/icu_message_format.md)
|
|
@@ -74,15 +74,15 @@ npx intlayer init --interactive
|
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
```bash packageManager="pnpm"
|
|
77
|
-
pnpm dlx intlayer
|
|
77
|
+
pnpm dlx intlayer init --interactive
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
```bash packageManager="yarn"
|
|
81
|
-
yarn dlx intlayer
|
|
81
|
+
yarn dlx intlayer init --interactive
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
```bash packageManager="bun"
|
|
85
|
-
bunx intlayer
|
|
85
|
+
bunx intlayer init --interactive
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
> la bandera `--interactive` es opcional. Usa `intlayer-cli init` si eres un agente de IA.
|
|
@@ -67,15 +67,15 @@ npx intlayer init --interactive
|
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
```bash packageManager="pnpm"
|
|
70
|
-
pnpm dlx intlayer
|
|
70
|
+
pnpm dlx intlayer init --interactive
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
```bash packageManager="yarn"
|
|
74
|
-
yarn dlx intlayer
|
|
74
|
+
yarn dlx intlayer init --interactive
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
```bash packageManager="bun"
|
|
78
|
-
bunx intlayer
|
|
78
|
+
bunx intlayer init --interactive
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
> la bandera `--interactive` es opcional. Usa `intlayer-cli init` si eres un agente de IA.
|
|
@@ -68,15 +68,15 @@ npx intlayer init --interactive
|
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
```bash packageManager="pnpm"
|
|
71
|
-
pnpm dlx intlayer
|
|
71
|
+
pnpm dlx intlayer init --interactive
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
```bash packageManager="yarn"
|
|
75
|
-
yarn dlx intlayer
|
|
75
|
+
yarn dlx intlayer init --interactive
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
```bash packageManager="bun"
|
|
79
|
-
bunx intlayer
|
|
79
|
+
bunx intlayer init --interactive
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
> la bandera `--interactive` es opcional. Usa `intlayer-cli init` si eres un agente de IA.
|
|
@@ -68,15 +68,15 @@ npx intlayer init --interactive
|
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
```bash packageManager="pnpm"
|
|
71
|
-
pnpm dlx intlayer
|
|
71
|
+
pnpm dlx intlayer init --interactive
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
```bash packageManager="yarn"
|
|
75
|
-
yarn dlx intlayer
|
|
75
|
+
yarn dlx intlayer init --interactive
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
```bash packageManager="bun"
|
|
79
|
-
bunx intlayer
|
|
79
|
+
bunx intlayer init --interactive
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
> la bandera `--interactive` es opcional. Usa `intlayer-cli init` si eres un agente de IA.
|
|
@@ -66,15 +66,15 @@ npx intlayer init --interactive
|
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
```bash packageManager="pnpm"
|
|
69
|
-
pnpm dlx intlayer
|
|
69
|
+
pnpm dlx intlayer init --interactive
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
```bash packageManager="yarn"
|
|
73
|
-
yarn dlx intlayer
|
|
73
|
+
yarn dlx intlayer init --interactive
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
```bash packageManager="bun"
|
|
77
|
-
bunx intlayer
|
|
77
|
+
bunx intlayer init --interactive
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
> la bandera `--interactive` es opcional. Usa `intlayer-cli init` si eres un agente de IA.
|
|
@@ -68,15 +68,15 @@ npx intlayer init --interactive
|
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
```bash packageManager="pnpm"
|
|
71
|
-
pnpm dlx intlayer
|
|
71
|
+
pnpm dlx intlayer init --interactive
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
```bash packageManager="yarn"
|
|
75
|
-
yarn dlx intlayer
|
|
75
|
+
yarn dlx intlayer init --interactive
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
```bash packageManager="bun"
|
|
79
|
-
bunx intlayer
|
|
79
|
+
bunx intlayer init --interactive
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
> la bandera `--interactive` es opcional. Usa `intlayer-cli init` si eres un agente de IA.
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-02
|
|
3
|
+
updatedAt: 2026-09-02
|
|
4
|
+
title: ¿Está i18next obsoleto en 2026?
|
|
5
|
+
description: i18next impulsa millones de sitios web, pero su arquitectura en tiempo de ejecución de 2011 muestra su antigüedad. Un vistazo al peso del bundle, los límites del tree-shaking y la falta de innovación.
|
|
6
|
+
keywords:
|
|
7
|
+
- i18next
|
|
8
|
+
- react-i18next
|
|
9
|
+
- next-i18next
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Internacionalización
|
|
12
|
+
- i18n
|
|
13
|
+
- Tamaño de bundle
|
|
14
|
+
- Blog
|
|
15
|
+
slugs:
|
|
16
|
+
- blog
|
|
17
|
+
- is-i18next-outdated
|
|
18
|
+
author: aymericzip
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# ¿Está i18next obsoleto en 2026?
|
|
22
|
+
|
|
23
|
+
`i18next` nació en 2011, mucho antes de que los componentes React, el empaquetado con Webpack o TypeScript se convirtieran en el estándar. Conquistó el ecosistema gracias a su flexibilidad y ubicuidad, ofreciendo plugins para cualquier tecnología y respuestas en StackOverflow para cada duda.
|
|
24
|
+
|
|
25
|
+
No es un proyecto abandonado, recibe parches regularmente. Sin embargo, existe una gran diferencia entre mantener funcionando un motor clásico y evolucionar activamente con las arquitecturas frontend actuales.
|
|
26
|
+
|
|
27
|
+
En los últimos años, el desarrollo frontend ha adoptado la compilación en tiempo de construcción, los React Server Components (RSC), el tree-shaking agresivo y los flujos guiados por IA. El núcleo de i18next sigue siendo lo que era hace más de una década: un singleton en tiempo de ejecución que resuelve claves textuales en el cliente.
|
|
28
|
+
|
|
29
|
+
<TOC/>
|
|
30
|
+
|
|
31
|
+
## Puntos clave
|
|
32
|
+
|
|
33
|
+
**Modo mantenimiento:**
|
|
34
|
+
|
|
35
|
+
Durante el último año, `next-i18next` registró ~63 commits (aproximadamente uno por semana) y `react-i18next` ~157, en su mayoría actualizaciones de dependencias y correcciones menores.
|
|
36
|
+
|
|
37
|
+
**Sobrecarga notable en runtime:**
|
|
38
|
+
|
|
39
|
+
`react-i18next` y `next-i18next` añaden ~17–18 KB gzipped (~60 KB minificados) antes de mostrar la primera palabra traducida, casi 4 veces más que `next-intlayer` (~4.7 KB).
|
|
40
|
+
|
|
41
|
+
**Fuga severa de contenidos:**
|
|
42
|
+
|
|
43
|
+
En configuraciones estáticas por defecto, hasta un **89.8%** de los datos de localización enviados a una página pertenece a otras rutas o idiomas no leídos.
|
|
44
|
+
|
|
45
|
+
**Tree-shaking inviable:**
|
|
46
|
+
|
|
47
|
+
Llamadas dinámicas como `t("home.hero.title")` no pueden ser analizadas por empaquetadores, forzando la inclusión completa de archivos JSON en el bundle del cliente.
|
|
48
|
+
|
|
49
|
+
**Modelo de negocio comercial:**
|
|
50
|
+
|
|
51
|
+
Los mantenedores operan Locize. Desarrollar un sistema de traducción local por IA sin coste en la CLI competiría directamente con su vía de ingresos principal.
|
|
52
|
+
|
|
53
|
+
## Mantenimiento frente a evolución activa
|
|
54
|
+
|
|
55
|
+
Las estrellas de GitHub reflejan la adopción histórica y no el impulso arquitectónico actual.
|
|
56
|
+
|
|
57
|
+
| Repositorio | Estrellas | Commits totales | Commits / año | Último commit |
|
|
58
|
+
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
59
|
+
| `i18next/i18next` | [](https://github.com/i18next/i18next/stargazers) | [](https://github.com/i18next/i18next/commits) | [](https://github.com/i18next/i18next/commits) | [](https://github.com/i18next/i18next/commits) |
|
|
60
|
+
| `i18next/react-i18next` | [](https://github.com/i18next/react-i18next/stargazers) | [](https://github.com/i18next/react-i18next/commits) | [](https://github.com/i18next/react-i18next/commits) | [](https://github.com/i18next/react-i18next/commits) |
|
|
61
|
+
| `i18next/next-i18next` | [](https://github.com/i18next/next-i18next/stargazers) | [](https://github.com/i18next/next-i18next/commits) | [](https://github.com/i18next/next-i18next/commits) | [](https://github.com/i18next/next-i18next/commits) |
|
|
62
|
+
| `aymericzip/intlayer` | [](https://github.com/aymericzip/intlayer/stargazers) | [](https://github.com/aymericzip/intlayer/commits) | [](https://github.com/aymericzip/intlayer/commits) | [](https://github.com/aymericzip/intlayer/commits) |
|
|
63
|
+
|
|
64
|
+
Actividad en los últimos doce meses:
|
|
65
|
+
|
|
66
|
+
| Proyecto | Commits históricos | Últimos 12 meses | Enfoque |
|
|
67
|
+
| --------------- | ------------------ | ---------------- | ----------------------------------------- |
|
|
68
|
+
| `next-i18next` | 1.311 | **63** | Compatibilidad con Next.js y correcciones |
|
|
69
|
+
| `react-i18next` | 1.988 | **157** | Tipos y mantenimiento |
|
|
70
|
+
| `i18next` core | 2.626 | **259** | Parches menores |
|
|
71
|
+
| Intlayer | 7.156 | **4.343** | Compilador, herramientas IDE y motor IA |
|
|
72
|
+
|
|
73
|
+
[](https://www.star-history.com/#i18next/i18next&i18next/react-i18next&i18next/next-i18next&aymericzip/intlayer)
|
|
74
|
+
|
|
75
|
+
Una librería pequeña puede ser madura y confiable. Pero las herramientas de internacionalización continúan avanzando: los empaquetadores modernos eliminan contenido sin referenciar durante el build, los LLM automatizan traducciones en CI y los editores dependen de servidores de lenguaje (LSP) y agentes IA. La arquitectura puramente en runtime de i18next frena su capacidad de integración.
|
|
76
|
+
|
|
77
|
+
## Medición del impacto en el bundle
|
|
78
|
+
|
|
79
|
+
<I18nBenchmark framework="tanstack" vertical/>
|
|
80
|
+
|
|
81
|
+
<ClickToOpenIframe
|
|
82
|
+
src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-tanstack.md"
|
|
83
|
+
width="100%"
|
|
84
|
+
height="600px"
|
|
85
|
+
style="border:none;"
|
|
86
|
+
/>
|
|
87
|
+
|
|
88
|
+
> Medido en un build de producción con 10 rutas y 10 idiomas con compresión gzip. Más detalles en el [informe del benchmark i18n](https://intlayer.org/es/doc/benchmark).
|
|
89
|
+
|
|
90
|
+
### Sobrecarga base de la librería
|
|
91
|
+
|
|
92
|
+
Peso inicial antes de cargar cualquier texto traducido:
|
|
93
|
+
|
|
94
|
+
| Librería | Gzipped | Minificado |
|
|
95
|
+
| ---------------------- | ---------- | ----------- |
|
|
96
|
+
| `next-i18next@16.0.5` | 17.8 KB | 61.2 KB |
|
|
97
|
+
| `react-i18next@17.0.2` | 17.3 KB | 59.8 KB |
|
|
98
|
+
| `intlayer@8.7.12` | **4.7 KB** | **12.8 KB** |
|
|
99
|
+
|
|
100
|
+
### Peso de página y fuga de contenido
|
|
101
|
+
|
|
102
|
+
Probado en React / TanStack Start (estrategia estática):
|
|
103
|
+
|
|
104
|
+
| Librería | JS medio / pág (gz) | Fuga idiomas | Fuga otras págs | Componente medio (gz) | Hidratación |
|
|
105
|
+
| --------------------- | ------------------- | ------------ | --------------- | --------------------- | ----------- |
|
|
106
|
+
| `react-i18next` | 180.3 KB | **50.0%** | **89.8%** | 24.3 KB | 85.1 ms |
|
|
107
|
+
| Intlayer | **127.8 KB** | 50.0% | **0.8%** | **7.1 KB** | **24.1 ms** |
|
|
108
|
+
| Intlayer (scoped dyn) | **118.1 KB** | **0.0%** | **0.8%** | **4.6 KB** | 23.7 ms |
|
|
109
|
+
|
|
110
|
+
En Next.js:
|
|
111
|
+
|
|
112
|
+
| Librería | JS medio / pág (gz) | Fuga otras págs | Componente medio (gz) |
|
|
113
|
+
| --------------- | ------------------- | --------------- | --------------------- |
|
|
114
|
+
| Base (sin i18n) | 150.8 KB | 0.0% | 0.7 KB |
|
|
115
|
+
| `next-i18next` | **227.5 KB** | **89.8%** | 24.5 KB |
|
|
116
|
+
| `next-intlayer` | **152.1 KB** | **0.0%** | **7.2 KB** |
|
|
117
|
+
|
|
118
|
+
### Conclusiones clave
|
|
119
|
+
|
|
120
|
+
**Peso de página:**
|
|
121
|
+
|
|
122
|
+
En Next.js, `next-i18next` añade **76.7 KB gzipped** frente al proyecto base, un incremento de ~50%. `next-intlayer` apenas suma 1.3 KB.
|
|
123
|
+
|
|
124
|
+
**Fuga de traducciones:**
|
|
125
|
+
|
|
126
|
+
Por defecto, casi el **90% del texto traducido** enviado a una ruta pertenece a otras pantallas. La gestión manual mediante namespaces resulta compleja y propensa a fallos.
|
|
127
|
+
|
|
128
|
+
**Tiempo de hidratación:**
|
|
129
|
+
|
|
130
|
+
Los componentes con `react-i18next` requirieron **85 ms** para hidratarse frente a **24 ms** con Intlayer. Transferir grandes estructuras JSON a los componentes perjudica la interactividad inicial.
|
|
131
|
+
|
|
132
|
+
## ¿Por qué i18next es pesado?
|
|
133
|
+
|
|
134
|
+
### Acumulación de funciones en tiempo de ejecución
|
|
135
|
+
|
|
136
|
+
Operar únicamente en el navegador exige entregar todas las características desde el inicio: interpolación, reglas plurales, contextos, registros de formateo y buses de eventos. Incluso una simple cadena de texto asume el coste del motor al completo.
|
|
137
|
+
|
|
138
|
+
### Las claves dinámicas impiden el tree-shaking
|
|
139
|
+
|
|
140
|
+
Dado que `"hero.title"` se evalúa dinámicamente en tiempo de ejecución, los empaquetadores no pueden prever qué textos se emplean realmente. Las cadenas innecesarias se incluyen invariablemente en los bundles.
|
|
141
|
+
|
|
142
|
+
<Tabs defaultTab="intlayer" group="techno">
|
|
143
|
+
<Tab label="i18next" value="i18next">
|
|
144
|
+
|
|
145
|
+
```tsx fileName="Component.tsx"
|
|
146
|
+
const { t } = useTranslation("home");
|
|
147
|
+
|
|
148
|
+
return <h1>{t("hero.title")}</h1>;
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
</Tab>
|
|
152
|
+
<Tab label="Intlayer" value="intlayer">
|
|
153
|
+
|
|
154
|
+
```tsx fileName="Hero.tsx"
|
|
155
|
+
const { title } = useIntlayer("hero");
|
|
156
|
+
|
|
157
|
+
return <h1>{title}</h1>;
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
</Tab>
|
|
161
|
+
</Tabs>
|
|
162
|
+
|
|
163
|
+
El [compilador de Intlayer](https://intlayer.org/es/doc/compiler) analiza qué consume `Hero.tsx` y retira campos sin utilizar antes de crear los bundles del cliente. Consulta [optimización de bundle](https://intlayer.org/es/doc/concept/bundle-optimization) para conocer los detalles.
|
|
164
|
+
|
|
165
|
+
## Experiencia de desarrollo
|
|
166
|
+
|
|
167
|
+
### JSON aislados frente a co-ubicación
|
|
168
|
+
|
|
169
|
+
Con i18next, el texto queda distribuido en carpetas JSON independientes del código. Intlayer agrupa las declaraciones de contenido junto a los propios componentes.
|
|
170
|
+
|
|
171
|
+
<Tabs defaultTab="intlayer" group="techno">
|
|
172
|
+
<Tab label="i18next" value="i18next">
|
|
173
|
+
|
|
174
|
+
```json fileName="locales/en/hero.json"
|
|
175
|
+
{
|
|
176
|
+
"title": "Ship in every language"
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```json fileName="locales/es/hero.json"
|
|
181
|
+
{
|
|
182
|
+
"title": "Lanza en todos los idiomas"
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
```tsx fileName="Hero.tsx"
|
|
187
|
+
import { useTranslation } from "react-i18next";
|
|
188
|
+
|
|
189
|
+
export const Hero = () => {
|
|
190
|
+
const { t } = useTranslation("hero");
|
|
191
|
+
return <h1>{t("title")}</h1>;
|
|
192
|
+
};
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
</Tab>
|
|
196
|
+
<Tab label="Intlayer" value="intlayer">
|
|
197
|
+
|
|
198
|
+
```ts fileName="hero.content.ts"
|
|
199
|
+
import { t, type Dictionary } from "intlayer";
|
|
200
|
+
|
|
201
|
+
export default {
|
|
202
|
+
key: "hero",
|
|
203
|
+
content: {
|
|
204
|
+
title: t({
|
|
205
|
+
en: "Ship in every language",
|
|
206
|
+
es: "Lanza en todos los idiomas",
|
|
207
|
+
}),
|
|
208
|
+
},
|
|
209
|
+
} satisfies Dictionary;
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
```tsx fileName="Hero.tsx"
|
|
213
|
+
import { useIntlayer } from "react-intlayer";
|
|
214
|
+
|
|
215
|
+
export const Hero = () => {
|
|
216
|
+
const { title } = useIntlayer("hero");
|
|
217
|
+
return <h1>{title}</h1>;
|
|
218
|
+
};
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
</Tab>
|
|
222
|
+
</Tabs>
|
|
223
|
+
|
|
224
|
+
Al mover o eliminar `Hero.tsx`, sus declaraciones de contenido se trasladan o eliminan con él.
|
|
225
|
+
|
|
226
|
+
### Autocompletado frente a seguridad de tipos estricta
|
|
227
|
+
|
|
228
|
+
Extender `CustomTypeOptions` permite el autocompletado de claves en el IDE, pero no asegura la integridad del contenido. Suprimir una clave en `es/home.json` no romperá tu compilación; simplemente generará un fallback en runtime.
|
|
229
|
+
|
|
230
|
+
Intlayer infiere tipos directamente de las declaraciones de contenido, y el [`strictMode`](https://intlayer.org/es/doc/concept/configuration) transforma traducciones ausentes en errores de compilación estrictos.
|
|
231
|
+
|
|
232
|
+
### Comparación de herramientas
|
|
233
|
+
|
|
234
|
+
| Característica | Ecosistema i18next | Intlayer |
|
|
235
|
+
| -------------------------- | ------------------ | ----------------------------------------------------------------------- |
|
|
236
|
+
| **Extensión VS Code** | Solo terceros | ✅ [Extensión oficial](https://intlayer.org/es/doc/vs-code-extension) |
|
|
237
|
+
| **Language Server (LSP)** | ❌ Ninguno | ✅ [LSP dedicado](https://intlayer.org/es/doc/lsp) |
|
|
238
|
+
| **Servidor MCP (para IA)** | ❌ Ninguno | ✅ [Servidor MCP integrado](https://intlayer.org/es/doc/mcp-server) |
|
|
239
|
+
| **Habilidades de Agente** | ❌ Ninguna | ✅ [Skills listas para usar](https://intlayer.org/es/doc/agent_skills) |
|
|
240
|
+
| **CMS Visual en contexto** | Locize (SaaS pago) | ✅ [Gratuito y Open Source](https://intlayer.org/es/doc/concept/editor) |
|
|
241
|
+
|
|
242
|
+
## Traducción y el modelo de Locize
|
|
243
|
+
|
|
244
|
+
Locize es el servicio comercial oficial fundado por los creadores de i18next. La financiación sostenible en open source es vital, pero este esquema genera un dilema: un proyecto monetizado mediante una plataforma SaaS de pago difícilmente priorizará un sistema local de traducción por IA gratuito en su CLI.
|
|
245
|
+
|
|
246
|
+
Intlayer adopta una postura abierta:
|
|
247
|
+
|
|
248
|
+
- [`intlayer fill`](https://intlayer.org/es/doc/concept/auto-fill) completa las traducciones pendientes en tu terminal o CI empleando tus propias credenciales API de OpenAI, Anthropic, Mistral o Gemini.
|
|
249
|
+
- El [CMS Intlayer](https://intlayer.org/es/doc/concept/cms) es código abierto y autoalojable con Docker Compose.
|
|
250
|
+
- El compilador, la CLI, el editor y el CMS se publican bajo licencia Apache 2.0.
|
|
251
|
+
|
|
252
|
+
## ¿Dónde sigue encajando i18next?
|
|
253
|
+
|
|
254
|
+
<AccordionGroup>
|
|
255
|
+
<Accordion header="Proyectos heredados estables">
|
|
256
|
+
|
|
257
|
+
Si tu sistema funciona bien y la dimensión del bundle no es un cuello de botella, una migración no resulta urgente.
|
|
258
|
+
|
|
259
|
+
</Accordion>
|
|
260
|
+
<Accordion header="Entornos particulares">
|
|
261
|
+
|
|
262
|
+
La amplia biblioteca de plugins de i18next admite arquitecturas específicas (Electron, jQuery clásico, puentes nativos personalizados) que los compiladores modernos no suelen contemplar.
|
|
263
|
+
|
|
264
|
+
</Accordion>
|
|
265
|
+
<Accordion header="Amplia base comunitaria">
|
|
266
|
+
|
|
267
|
+
El histórico en StackOverflow y GitHub ayuda a solucionar situaciones atípicas con rapidez.
|
|
268
|
+
|
|
269
|
+
</Accordion>
|
|
270
|
+
</AccordionGroup>
|
|
271
|
+
|
|
272
|
+
## ¿Cómo mejorar mi configuración de i18next existente?
|
|
273
|
+
|
|
274
|
+
Intlayer ofrece paquetes de compatibilidad directa que replican con exactitud las firmas de funciones de las bibliotecas i18next (`i18next`, `react-i18next` y `next-i18next`). No necesitas reescribir tus componentes para beneficiarte de las optimizaciones de un compilador moderno.
|
|
275
|
+
|
|
276
|
+
La configuración se realiza con un único comando:
|
|
277
|
+
|
|
278
|
+
```bash packageManager="npm"
|
|
279
|
+
npx intlayer init --interactive
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
```bash packageManager="pnpm"
|
|
283
|
+
pnpm dlx intlayer init --interactive
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
```bash packageManager="yarn"
|
|
287
|
+
yarn dlx intlayer init --interactive
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
```bash packageManager="bun"
|
|
291
|
+
bunx intlayer init --interactive
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
Esta interfaz de línea de comandos interactiva:
|
|
295
|
+
|
|
296
|
+
1. Instala el paquete de compatibilidad `@intlayer/i18next`.
|
|
297
|
+
2. Configura los alias del empaquetador para que tus importaciones habituales (`useTranslation`, `Trans`, `t`) apunten directamente a Intlayer, permitiendo remover la biblioteca anterior de tu `package.json`.
|
|
298
|
+
3. Activa de inmediato el soporte del servidor de lenguaje (LSP) en tu editor, la optimización de bundles en compilación (tree-shaking completo) y las herramientas locales de traducción con IA.
|
|
299
|
+
|
|
300
|
+
Para consultar los detalles paso a paso, explora nuestras guías:
|
|
301
|
+
|
|
302
|
+
- **Capas de compatibilidad:** Mantén tu sintaxis con los adaptadores para [i18next](https://intlayer.org/es/doc/compatibility/i18next), [react-i18next](https://intlayer.org/es/doc/compatibility/react-i18next) y [next-i18next](https://intlayer.org/es/doc/compatibility/next-i18next).
|
|
303
|
+
- **Migración de catálogos:** Convierte archivos JSON en diccionarios tipados con nuestras guías: [desde i18next](https://intlayer.org/es/doc/migration/i18next), [desde react-i18next](https://intlayer.org/es/doc/migration/react-i18next) o [desde next-i18next](https://intlayer.org/es/doc/migration/next-i18next).
|
|
304
|
+
- **Configuración híbrida:** Mantén el runtime de i18next mientras [usas Intlayer con i18next](https://intlayer.org/es/blog/intlayer-with-i18next) para generar tipos y autotraducir los catálogos.
|
|
305
|
+
|
|
306
|
+
Analiza tu aplicación en producción con el [escáner SEO i18n gratuito](https://intlayer.org/i18n-seo-scanner):
|
|
307
|
+
|
|
308
|
+
<ClickToOpenIframe src="https://intlayer.org/i18n-seo-scanner" width="100%" height="600px" style="border:none;"/>
|
|
309
|
+
|
|
310
|
+
## Lecturas recomendadas
|
|
311
|
+
|
|
312
|
+
- [Benchmark Next.js i18n: análisis completo de rendimiento](https://intlayer.org/es/doc/benchmark/nextjs)
|
|
313
|
+
- [react-i18next vs react-intl vs Intlayer](https://intlayer.org/es/blog/react-i18next-vs-react-intl-vs-intlayer)
|
|
314
|
+
- [¿Está next-intl obsoleto en 2026?](https://intlayer.org/es/blog/is-next-intl-outdated)
|
|
315
|
+
- [Arquitectura de compilación frente a i18n declarativa](https://intlayer.org/es/blog/compiler-vs-declarative-i18n)
|