@intlayer/docs 9.4.1 → 9.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/blog/ar/date_time_number_formatting_locales.md +216 -0
- package/blog/ar/detecting_missing_translations.md +202 -0
- package/blog/ar/hreflang_guide_multilingual_seo.md +317 -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 -5
- package/blog/ar/intlayer_with_next-i18next.md +3 -7
- 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 -7
- 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/hreflang_guide_multilingual_seo.md +314 -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 -7
- 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/hreflang_guide_multilingual_seo.md +314 -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 -5
- package/blog/en/intlayer_with_next-i18next.md +3 -5
- package/blog/en/intlayer_with_next-intl.md +3 -5
- package/blog/en/intlayer_with_react-i18next.md +3 -3
- package/blog/en/intlayer_with_react-intl.md +3 -5
- package/blog/en/intlayer_with_vue-i18n.md +3 -5
- 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/hreflang_guide_multilingual_seo.md +314 -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/hreflang_guide_multilingual_seo.md +314 -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/hreflang_guide_multilingual_seo.md +315 -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/hreflang_guide_multilingual_seo.md +323 -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 -5
- package/blog/hi/intlayer_with_next-i18next.md +3 -7
- 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 -7
- 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/hreflang_guide_multilingual_seo.md +314 -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 -5
- package/blog/id/intlayer_with_next-i18next.md +3 -7
- 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 -7
- 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/hreflang_guide_multilingual_seo.md +315 -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 -5
- package/blog/it/intlayer_with_next-i18next.md +3 -7
- 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 -7
- 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/hreflang_guide_multilingual_seo.md +320 -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/hreflang_guide_multilingual_seo.md +314 -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 -5
- package/blog/ko/intlayer_with_next-i18next.md +3 -7
- 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 -7
- 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/hreflang_guide_multilingual_seo.md +316 -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/hreflang_guide_multilingual_seo.md +314 -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 -5
- package/blog/pt/intlayer_with_next-i18next.md +3 -7
- 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 -7
- 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/hreflang_guide_multilingual_seo.md +314 -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/hreflang_guide_multilingual_seo.md +314 -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 -5
- package/blog/tr/intlayer_with_next-i18next.md +3 -7
- 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 -7
- 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/hreflang_guide_multilingual_seo.md +314 -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 -5
- package/blog/uk/intlayer_with_next-i18next.md +3 -5
- package/blog/uk/intlayer_with_next-intl.md +3 -5
- package/blog/uk/intlayer_with_react-i18next.md +3 -3
- package/blog/uk/intlayer_with_react-intl.md +3 -5
- package/blog/uk/intlayer_with_vue-i18n.md +3 -5
- 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/hreflang_guide_multilingual_seo.md +314 -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 -5
- package/blog/vi/intlayer_with_next-i18next.md +3 -7
- 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 -7
- 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/hreflang_guide_multilingual_seo.md +314 -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 -5
- package/blog/zh/intlayer_with_next-i18next.md +3 -5
- package/blog/zh/intlayer_with_next-intl.md +3 -5
- package/blog/zh/intlayer_with_react-i18next.md +3 -3
- package/blog/zh/intlayer_with_react-intl.md +3 -5
- package/blog/zh/intlayer_with_vue-i18n.md +3 -5
- 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/common.cjs +29 -6
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +340 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +20 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/common.mjs +29 -6
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +340 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +20 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +17 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/analytics.md +458 -12
- package/docs/ar/bundle_optimization.md +186 -186
- package/docs/ar/configuration.md +98 -0
- package/docs/ar/dictionary/content_file.md +4 -4
- package/docs/ar/dictionary/html.md +117 -1
- package/docs/ar/dictionary/markdown.md +18 -1
- package/docs/ar/dictionary/plurial.md +5 -2
- package/docs/ar/how_works_intlayer.md +92 -0
- package/docs/ar/interest_of_intlayer.md +106 -9
- package/docs/ar/intlayer_CMS.md +92 -0
- package/docs/ar/intlayer_visual_editor.md +87 -1
- package/docs/ar/intlayer_with_adonisjs.md +124 -3
- package/docs/ar/intlayer_with_analog.md +119 -11
- package/docs/ar/intlayer_with_angular_19.md +118 -11
- package/docs/ar/intlayer_with_angular_21.md +112 -11
- package/docs/ar/intlayer_with_astro.md +120 -23
- package/docs/ar/intlayer_with_astro_lit.md +121 -13
- package/docs/ar/intlayer_with_astro_preact.md +121 -13
- package/docs/ar/intlayer_with_astro_react.md +121 -13
- package/docs/ar/intlayer_with_astro_solid.md +121 -13
- package/docs/ar/intlayer_with_astro_svelte.md +121 -13
- package/docs/ar/intlayer_with_astro_vanilla.md +115 -13
- package/docs/ar/intlayer_with_astro_vue.md +121 -13
- package/docs/ar/intlayer_with_create_react_app.md +108 -3
- package/docs/ar/intlayer_with_elysia.md +125 -4
- package/docs/ar/intlayer_with_express.md +117 -3
- package/docs/ar/intlayer_with_fastify.md +119 -4
- package/docs/ar/intlayer_with_hono.md +117 -3
- package/docs/ar/intlayer_with_htmx.md +771 -0
- package/docs/ar/intlayer_with_lynx+react.md +10 -17
- package/docs/ar/intlayer_with_nestjs.md +118 -3
- package/docs/ar/intlayer_with_next-i18next.md +3 -3
- package/docs/ar/intlayer_with_nextjs_14.md +147 -123
- package/docs/ar/intlayer_with_nextjs_15.md +129 -54
- package/docs/ar/intlayer_with_nextjs_16.md +130 -52
- package/docs/ar/intlayer_with_nextjs_compiler.md +125 -16
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +124 -12
- package/docs/ar/intlayer_with_nextjs_page_router.md +142 -110
- package/docs/ar/intlayer_with_nuxt.md +113 -11
- package/docs/ar/intlayer_with_react_native+expo.md +105 -10
- package/docs/ar/intlayer_with_react_router_v7.md +122 -13
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +125 -25
- package/docs/ar/intlayer_with_solid_start.md +118 -4
- package/docs/ar/intlayer_with_storybook.md +7 -20
- package/docs/ar/intlayer_with_svelte_kit.md +110 -20
- package/docs/ar/intlayer_with_tanstack+solid.md +127 -25
- package/docs/ar/intlayer_with_tanstack.md +137 -46
- package/docs/ar/intlayer_with_vanilla.md +117 -9
- package/docs/ar/intlayer_with_vite+lit.md +121 -11
- package/docs/ar/intlayer_with_vite+preact.md +151 -43
- package/docs/ar/intlayer_with_vite+react.md +111 -23
- package/docs/ar/intlayer_with_vite+react_compiler.md +109 -4
- package/docs/ar/intlayer_with_vite+solid.md +117 -8
- package/docs/ar/intlayer_with_vite+svelte.md +122 -20
- package/docs/ar/intlayer_with_vite+vanilla.md +128 -11
- package/docs/ar/intlayer_with_vite+vue.md +108 -12
- package/docs/ar/introduction.md +104 -1
- package/docs/ar/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/ar/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/ar/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/ar/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/ar/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/ar/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/ar/packages/vite-intlayer/intlayerMinify.md +1 -1
- 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/bn/introduction.md +0 -1
- package/docs/cs/bundle_optimization.md +186 -186
- package/docs/cs/interest_of_intlayer.md +0 -1
- 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_storybook.md +0 -12
- package/docs/cs/intlayer_with_vanilla.md +2 -1
- package/docs/cs/intlayer_with_vite+lit.md +3 -3
- package/docs/cs/intlayer_with_vite+vanilla.md +3 -3
- package/docs/cs/introduction.md +0 -1
- package/docs/de/analytics.md +458 -12
- package/docs/de/bundle_optimization.md +186 -186
- package/docs/de/configuration.md +99 -1
- package/docs/de/dictionary/content_file.md +4 -4
- package/docs/de/dictionary/markdown.md +3 -0
- package/docs/de/dictionary/plurial.md +6 -3
- package/docs/de/how_works_intlayer.md +93 -1
- package/docs/de/interest_of_intlayer.md +97 -2
- package/docs/de/intlayer_CMS.md +93 -1
- package/docs/de/intlayer_visual_editor.md +88 -2
- package/docs/de/intlayer_with_adonisjs.md +124 -4
- package/docs/de/intlayer_with_analog.md +114 -5
- package/docs/de/intlayer_with_angular_19.md +112 -5
- package/docs/de/intlayer_with_angular_21.md +106 -5
- package/docs/de/intlayer_with_astro.md +114 -17
- package/docs/de/intlayer_with_astro_lit.md +115 -7
- package/docs/de/intlayer_with_astro_preact.md +115 -7
- package/docs/de/intlayer_with_astro_react.md +115 -7
- package/docs/de/intlayer_with_astro_solid.md +115 -7
- package/docs/de/intlayer_with_astro_svelte.md +115 -7
- package/docs/de/intlayer_with_astro_vanilla.md +109 -7
- package/docs/de/intlayer_with_astro_vue.md +115 -7
- package/docs/de/intlayer_with_create_react_app.md +110 -5
- package/docs/de/intlayer_with_elysia.md +125 -5
- package/docs/de/intlayer_with_express.md +118 -4
- package/docs/de/intlayer_with_fastify.md +119 -5
- package/docs/de/intlayer_with_hono.md +118 -4
- package/docs/de/intlayer_with_htmx.md +770 -0
- package/docs/de/intlayer_with_lynx+react.md +3 -10
- package/docs/de/intlayer_with_nestjs.md +118 -4
- package/docs/de/intlayer_with_next-i18next.md +3 -3
- package/docs/de/intlayer_with_nextjs_14.md +141 -113
- package/docs/de/intlayer_with_nextjs_15.md +123 -48
- package/docs/de/intlayer_with_nextjs_16.md +150 -54
- package/docs/de/intlayer_with_nextjs_compiler.md +116 -6
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +118 -6
- package/docs/de/intlayer_with_nextjs_page_router.md +124 -98
- package/docs/de/intlayer_with_nuxt.md +107 -5
- package/docs/de/intlayer_with_react_native+expo.md +106 -11
- package/docs/de/intlayer_with_react_router_v7.md +116 -7
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/de/intlayer_with_solid_start.md +120 -5
- package/docs/de/intlayer_with_storybook.md +0 -13
- package/docs/de/intlayer_with_svelte_kit.md +102 -5
- package/docs/de/intlayer_with_tanstack+solid.md +122 -19
- package/docs/de/intlayer_with_tanstack.md +234 -155
- package/docs/de/intlayer_with_vanilla.md +111 -3
- package/docs/de/intlayer_with_vite+lit.md +116 -5
- package/docs/de/intlayer_with_vite+preact.md +173 -36
- package/docs/de/intlayer_with_vite+react.md +105 -9
- package/docs/de/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/de/intlayer_with_vite+solid.md +116 -5
- package/docs/de/intlayer_with_vite+svelte.md +117 -14
- package/docs/de/intlayer_with_vite+vanilla.md +122 -5
- package/docs/de/intlayer_with_vite+vue.md +101 -5
- package/docs/de/introduction.md +105 -2
- package/docs/de/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/de/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/de/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/de/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/de/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/de/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/en/bundle_optimization.md +186 -186
- package/docs/en/configuration.md +99 -1
- package/docs/en/dictionary/content_file.md +4 -4
- package/docs/en/how_works_intlayer.md +93 -1
- package/docs/en/interest_of_intlayer.md +97 -2
- package/docs/en/intlayer_CMS.md +93 -1
- package/docs/en/intlayer_visual_editor.md +88 -2
- package/docs/en/intlayer_with_adonisjs.md +124 -4
- package/docs/en/intlayer_with_analog.md +114 -5
- package/docs/en/intlayer_with_angular_19.md +112 -5
- package/docs/en/intlayer_with_angular_21.md +106 -5
- package/docs/en/intlayer_with_astro.md +110 -7
- package/docs/en/intlayer_with_astro_lit.md +115 -7
- package/docs/en/intlayer_with_astro_preact.md +115 -7
- package/docs/en/intlayer_with_astro_react.md +115 -7
- package/docs/en/intlayer_with_astro_solid.md +115 -7
- package/docs/en/intlayer_with_astro_svelte.md +115 -7
- package/docs/en/intlayer_with_astro_vanilla.md +109 -7
- package/docs/en/intlayer_with_astro_vue.md +115 -7
- package/docs/en/intlayer_with_create_react_app.md +108 -5
- package/docs/en/intlayer_with_elysia.md +125 -5
- package/docs/en/intlayer_with_express.md +118 -4
- package/docs/en/intlayer_with_fastify.md +119 -5
- package/docs/en/intlayer_with_hono.md +118 -4
- package/docs/en/intlayer_with_htmx.md +754 -0
- package/docs/en/intlayer_with_lynx+react.md +3 -10
- package/docs/en/intlayer_with_nestjs.md +118 -4
- package/docs/en/intlayer_with_next-i18next.md +3 -3
- package/docs/en/intlayer_with_nextjs_14.md +123 -46
- package/docs/en/intlayer_with_nextjs_15.md +123 -47
- package/docs/en/intlayer_with_nextjs_16.md +124 -46
- package/docs/en/intlayer_with_nextjs_compiler.md +114 -5
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +118 -6
- package/docs/en/intlayer_with_nextjs_page_router.md +113 -98
- package/docs/en/intlayer_with_nuxt.md +107 -5
- package/docs/en/intlayer_with_react_native+expo.md +106 -11
- package/docs/en/intlayer_with_react_router_v7.md +116 -7
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +112 -5
- package/docs/en/intlayer_with_solid_start.md +120 -5
- package/docs/en/intlayer_with_storybook.md +0 -13
- package/docs/en/intlayer_with_svelte_kit.md +102 -5
- package/docs/en/intlayer_with_tanstack+solid.md +123 -19
- package/docs/en/intlayer_with_tanstack.md +117 -19
- package/docs/en/intlayer_with_vanilla.md +111 -3
- package/docs/en/intlayer_with_vite+lit.md +116 -5
- package/docs/en/intlayer_with_vite+preact.md +146 -37
- package/docs/en/intlayer_with_vite+react.md +104 -7
- package/docs/en/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/en/intlayer_with_vite+solid.md +116 -5
- package/docs/en/intlayer_with_vite+svelte.md +117 -14
- package/docs/en/intlayer_with_vite+vanilla.md +122 -5
- package/docs/en/intlayer_with_vite+vue.md +101 -5
- package/docs/en/introduction.md +105 -2
- package/docs/en/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/en/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/en/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/en/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/en/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/en/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/en-GB/analytics.md +527 -58
- package/docs/en-GB/bundle_optimization.md +186 -186
- package/docs/en-GB/configuration.md +99 -1
- package/docs/en-GB/dictionary/content_file.md +4 -4
- package/docs/en-GB/dictionary/html.md +117 -1
- package/docs/en-GB/dictionary/markdown.md +18 -1
- package/docs/en-GB/dictionary/plurial.md +5 -2
- package/docs/en-GB/dictionary/translation.md +1 -1
- package/docs/en-GB/how_works_intlayer.md +93 -1
- package/docs/en-GB/interest_of_intlayer.md +97 -2
- package/docs/en-GB/intlayer_CMS.md +93 -1
- package/docs/en-GB/intlayer_visual_editor.md +88 -2
- package/docs/en-GB/intlayer_with_adonisjs.md +124 -4
- package/docs/en-GB/intlayer_with_analog.md +114 -5
- package/docs/en-GB/intlayer_with_angular_19.md +112 -5
- package/docs/en-GB/intlayer_with_angular_21.md +106 -5
- package/docs/en-GB/intlayer_with_astro.md +114 -17
- package/docs/en-GB/intlayer_with_astro_lit.md +115 -7
- package/docs/en-GB/intlayer_with_astro_preact.md +115 -7
- package/docs/en-GB/intlayer_with_astro_react.md +115 -7
- package/docs/en-GB/intlayer_with_astro_solid.md +115 -7
- package/docs/en-GB/intlayer_with_astro_svelte.md +115 -7
- package/docs/en-GB/intlayer_with_astro_vanilla.md +109 -7
- package/docs/en-GB/intlayer_with_astro_vue.md +115 -7
- package/docs/en-GB/intlayer_with_create_react_app.md +108 -5
- package/docs/en-GB/intlayer_with_elysia.md +125 -5
- package/docs/en-GB/intlayer_with_express.md +118 -4
- package/docs/en-GB/intlayer_with_fastify.md +119 -5
- package/docs/en-GB/intlayer_with_hono.md +118 -4
- package/docs/en-GB/intlayer_with_htmx.md +757 -0
- package/docs/en-GB/intlayer_with_lynx+react.md +3 -10
- package/docs/en-GB/intlayer_with_nestjs.md +118 -4
- package/docs/en-GB/intlayer_with_next-i18next.md +3 -3
- package/docs/en-GB/intlayer_with_nextjs_14.md +123 -47
- package/docs/en-GB/intlayer_with_nextjs_15.md +126 -48
- package/docs/en-GB/intlayer_with_nextjs_16.md +124 -47
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +124 -15
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +118 -6
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +125 -140
- package/docs/en-GB/intlayer_with_nuxt.md +107 -5
- package/docs/en-GB/intlayer_with_react_native+expo.md +106 -11
- package/docs/en-GB/intlayer_with_react_router_v7.md +116 -7
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +114 -7
- package/docs/en-GB/intlayer_with_solid_start.md +120 -5
- package/docs/en-GB/intlayer_with_storybook.md +0 -13
- package/docs/en-GB/intlayer_with_svelte_kit.md +102 -5
- package/docs/en-GB/intlayer_with_tanstack+solid.md +123 -19
- package/docs/en-GB/intlayer_with_tanstack.md +258 -170
- package/docs/en-GB/intlayer_with_vanilla.md +111 -3
- package/docs/en-GB/intlayer_with_vite+lit.md +116 -5
- package/docs/en-GB/intlayer_with_vite+preact.md +182 -35
- package/docs/en-GB/intlayer_with_vite+react.md +104 -16
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/en-GB/intlayer_with_vite+solid.md +121 -5
- package/docs/en-GB/intlayer_with_vite+svelte.md +117 -23
- package/docs/en-GB/intlayer_with_vite+vanilla.md +122 -5
- package/docs/en-GB/intlayer_with_vite+vue.md +105 -11
- package/docs/en-GB/introduction.md +105 -2
- package/docs/en-GB/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/en-GB/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/en-GB/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/en-GB/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/en-GB/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/en-GB/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/en-GB/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/es/analytics.md +458 -12
- package/docs/es/bundle_optimization.md +186 -186
- package/docs/es/configuration.md +99 -1
- package/docs/es/dictionary/content_file.md +4 -4
- package/docs/es/dictionary/markdown.md +18 -1
- package/docs/es/dictionary/plurial.md +5 -2
- package/docs/es/how_works_intlayer.md +93 -1
- package/docs/es/interest_of_intlayer.md +97 -2
- package/docs/es/intlayer_CMS.md +93 -1
- package/docs/es/intlayer_visual_editor.md +88 -2
- package/docs/es/intlayer_with_adonisjs.md +124 -4
- package/docs/es/intlayer_with_analog.md +114 -5
- package/docs/es/intlayer_with_angular_19.md +112 -5
- package/docs/es/intlayer_with_angular_21.md +106 -5
- package/docs/es/intlayer_with_astro.md +114 -17
- package/docs/es/intlayer_with_astro_lit.md +115 -7
- package/docs/es/intlayer_with_astro_preact.md +115 -7
- package/docs/es/intlayer_with_astro_react.md +115 -7
- package/docs/es/intlayer_with_astro_solid.md +115 -7
- package/docs/es/intlayer_with_astro_svelte.md +115 -7
- package/docs/es/intlayer_with_astro_vanilla.md +109 -7
- package/docs/es/intlayer_with_astro_vue.md +115 -7
- package/docs/es/intlayer_with_create_react_app.md +110 -5
- package/docs/es/intlayer_with_elysia.md +125 -5
- package/docs/es/intlayer_with_express.md +118 -4
- package/docs/es/intlayer_with_fastify.md +119 -5
- package/docs/es/intlayer_with_hono.md +118 -4
- package/docs/es/intlayer_with_htmx.md +763 -0
- package/docs/es/intlayer_with_lynx+react.md +3 -10
- package/docs/es/intlayer_with_nestjs.md +118 -4
- package/docs/es/intlayer_with_next-i18next.md +3 -3
- package/docs/es/intlayer_with_nextjs_14.md +123 -47
- package/docs/es/intlayer_with_nextjs_15.md +126 -48
- package/docs/es/intlayer_with_nextjs_16.md +145 -55
- package/docs/es/intlayer_with_nextjs_compiler.md +125 -15
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +118 -6
- package/docs/es/intlayer_with_nextjs_page_router.md +113 -98
- package/docs/es/intlayer_with_nuxt.md +107 -5
- package/docs/es/intlayer_with_react_native+expo.md +106 -11
- package/docs/es/intlayer_with_react_router_v7.md +116 -7
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/es/intlayer_with_solid_start.md +120 -5
- package/docs/es/intlayer_with_storybook.md +0 -13
- package/docs/es/intlayer_with_svelte_kit.md +102 -5
- package/docs/es/intlayer_with_tanstack+solid.md +122 -19
- package/docs/es/intlayer_with_tanstack.md +255 -150
- package/docs/es/intlayer_with_vanilla.md +111 -3
- package/docs/es/intlayer_with_vite+lit.md +116 -5
- package/docs/es/intlayer_with_vite+preact.md +146 -37
- package/docs/es/intlayer_with_vite+react.md +104 -7
- package/docs/es/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/es/intlayer_with_vite+solid.md +117 -5
- package/docs/es/intlayer_with_vite+svelte.md +117 -14
- package/docs/es/intlayer_with_vite+vanilla.md +122 -5
- package/docs/es/intlayer_with_vite+vue.md +102 -6
- package/docs/es/introduction.md +105 -2
- package/docs/es/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/es/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/es/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/es/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/es/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/es/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/fr/analytics.md +437 -13
- package/docs/fr/bundle_optimization.md +186 -186
- package/docs/fr/configuration.md +99 -1
- package/docs/fr/dictionary/content_file.md +4 -4
- package/docs/fr/dictionary/markdown.md +18 -1
- package/docs/fr/dictionary/plurial.md +5 -2
- package/docs/fr/how_works_intlayer.md +93 -1
- package/docs/fr/interest_of_intlayer.md +97 -2
- package/docs/fr/intlayer_CMS.md +93 -1
- package/docs/fr/intlayer_visual_editor.md +88 -2
- package/docs/fr/intlayer_with_adonisjs.md +124 -4
- package/docs/fr/intlayer_with_analog.md +114 -5
- package/docs/fr/intlayer_with_angular_19.md +112 -5
- package/docs/fr/intlayer_with_angular_21.md +106 -5
- package/docs/fr/intlayer_with_astro.md +114 -17
- package/docs/fr/intlayer_with_astro_lit.md +115 -7
- package/docs/fr/intlayer_with_astro_preact.md +115 -7
- package/docs/fr/intlayer_with_astro_react.md +115 -7
- package/docs/fr/intlayer_with_astro_solid.md +115 -7
- package/docs/fr/intlayer_with_astro_svelte.md +115 -7
- package/docs/fr/intlayer_with_astro_vanilla.md +109 -7
- package/docs/fr/intlayer_with_astro_vue.md +115 -7
- package/docs/fr/intlayer_with_create_react_app.md +110 -5
- package/docs/fr/intlayer_with_elysia.md +125 -5
- package/docs/fr/intlayer_with_express.md +118 -4
- package/docs/fr/intlayer_with_fastify.md +119 -5
- package/docs/fr/intlayer_with_hono.md +118 -4
- package/docs/fr/intlayer_with_htmx.md +756 -0
- package/docs/fr/intlayer_with_lynx+react.md +3 -10
- package/docs/fr/intlayer_with_nestjs.md +118 -4
- package/docs/fr/intlayer_with_next-i18next.md +3 -3
- package/docs/fr/intlayer_with_nextjs_14.md +141 -113
- package/docs/fr/intlayer_with_nextjs_15.md +127 -49
- package/docs/fr/intlayer_with_nextjs_16.md +124 -46
- package/docs/fr/intlayer_with_nextjs_compiler.md +125 -15
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +118 -6
- package/docs/fr/intlayer_with_nextjs_page_router.md +113 -98
- package/docs/fr/intlayer_with_nuxt.md +107 -5
- package/docs/fr/intlayer_with_react_native+expo.md +106 -11
- package/docs/fr/intlayer_with_react_router_v7.md +120 -13
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/fr/intlayer_with_solid_start.md +120 -5
- package/docs/fr/intlayer_with_storybook.md +0 -13
- package/docs/fr/intlayer_with_svelte_kit.md +102 -5
- package/docs/fr/intlayer_with_tanstack+solid.md +122 -19
- package/docs/fr/intlayer_with_tanstack.md +238 -131
- package/docs/fr/intlayer_with_vanilla.md +111 -3
- package/docs/fr/intlayer_with_vite+lit.md +116 -5
- package/docs/fr/intlayer_with_vite+preact.md +146 -37
- package/docs/fr/intlayer_with_vite+react.md +104 -7
- package/docs/fr/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/fr/intlayer_with_vite+solid.md +117 -5
- package/docs/fr/intlayer_with_vite+svelte.md +117 -14
- package/docs/fr/intlayer_with_vite+vanilla.md +122 -5
- package/docs/fr/intlayer_with_vite+vue.md +102 -6
- package/docs/fr/introduction.md +105 -2
- package/docs/fr/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/fr/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/fr/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/fr/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/fr/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/fr/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/hi/analytics.md +488 -21
- package/docs/hi/bundle_optimization.md +186 -186
- package/docs/hi/configuration.md +98 -0
- package/docs/hi/dictionary/content_file.md +4 -4
- package/docs/hi/dictionary/html.md +100 -3
- package/docs/hi/dictionary/markdown.md +3 -0
- package/docs/hi/dictionary/plurial.md +6 -3
- package/docs/hi/how_works_intlayer.md +92 -0
- package/docs/hi/interest_of_intlayer.md +106 -9
- package/docs/hi/intlayer_CMS.md +92 -0
- package/docs/hi/intlayer_visual_editor.md +87 -1
- package/docs/hi/intlayer_with_adonisjs.md +124 -3
- package/docs/hi/intlayer_with_analog.md +119 -11
- package/docs/hi/intlayer_with_angular_19.md +118 -11
- package/docs/hi/intlayer_with_angular_21.md +112 -11
- package/docs/hi/intlayer_with_astro.md +120 -23
- package/docs/hi/intlayer_with_astro_lit.md +121 -13
- package/docs/hi/intlayer_with_astro_preact.md +121 -13
- package/docs/hi/intlayer_with_astro_react.md +121 -13
- package/docs/hi/intlayer_with_astro_solid.md +121 -13
- package/docs/hi/intlayer_with_astro_svelte.md +121 -13
- package/docs/hi/intlayer_with_astro_vanilla.md +115 -13
- package/docs/hi/intlayer_with_astro_vue.md +121 -13
- package/docs/hi/intlayer_with_create_react_app.md +109 -4
- package/docs/hi/intlayer_with_elysia.md +125 -4
- package/docs/hi/intlayer_with_express.md +117 -3
- package/docs/hi/intlayer_with_fastify.md +119 -4
- package/docs/hi/intlayer_with_hono.md +117 -3
- package/docs/hi/intlayer_with_htmx.md +771 -0
- package/docs/hi/intlayer_with_lynx+react.md +10 -17
- package/docs/hi/intlayer_with_nestjs.md +118 -3
- package/docs/hi/intlayer_with_next-i18next.md +3 -3
- package/docs/hi/intlayer_with_nextjs_14.md +147 -123
- package/docs/hi/intlayer_with_nextjs_15.md +132 -54
- package/docs/hi/intlayer_with_nextjs_16.md +132 -53
- package/docs/hi/intlayer_with_nextjs_compiler.md +124 -15
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +124 -12
- package/docs/hi/intlayer_with_nextjs_page_router.md +126 -99
- package/docs/hi/intlayer_with_nuxt.md +113 -11
- package/docs/hi/intlayer_with_react_native+expo.md +105 -10
- package/docs/hi/intlayer_with_react_router_v7.md +122 -13
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +125 -25
- package/docs/hi/intlayer_with_solid_start.md +118 -4
- package/docs/hi/intlayer_with_storybook.md +7 -20
- package/docs/hi/intlayer_with_svelte_kit.md +108 -11
- package/docs/hi/intlayer_with_tanstack+solid.md +127 -25
- package/docs/hi/intlayer_with_tanstack.md +272 -158
- package/docs/hi/intlayer_with_vanilla.md +117 -9
- package/docs/hi/intlayer_with_vite+lit.md +121 -11
- package/docs/hi/intlayer_with_vite+preact.md +173 -44
- package/docs/hi/intlayer_with_vite+react.md +111 -23
- package/docs/hi/intlayer_with_vite+react_compiler.md +109 -4
- package/docs/hi/intlayer_with_vite+solid.md +121 -11
- package/docs/hi/intlayer_with_vite+svelte.md +124 -21
- package/docs/hi/intlayer_with_vite+vanilla.md +128 -11
- package/docs/hi/intlayer_with_vite+vue.md +107 -11
- package/docs/hi/introduction.md +104 -1
- package/docs/hi/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/hi/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/hi/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/hi/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/hi/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/hi/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/hi/packages/intlayer/index.md +3 -3
- package/docs/hi/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/id/analytics.md +488 -21
- package/docs/id/bundle_optimization.md +186 -186
- package/docs/id/configuration.md +98 -0
- package/docs/id/dictionary/content_file.md +4 -4
- package/docs/id/dictionary/markdown.md +3 -0
- package/docs/id/dictionary/plurial.md +5 -2
- package/docs/id/how_works_intlayer.md +92 -0
- package/docs/id/interest_of_intlayer.md +96 -1
- package/docs/id/intlayer_CMS.md +92 -0
- package/docs/id/intlayer_visual_editor.md +87 -1
- package/docs/id/intlayer_with_adonisjs.md +124 -3
- package/docs/id/intlayer_with_analog.md +112 -4
- package/docs/id/intlayer_with_angular_19.md +111 -4
- package/docs/id/intlayer_with_angular_21.md +105 -4
- package/docs/id/intlayer_with_astro.md +113 -16
- package/docs/id/intlayer_with_astro_lit.md +114 -6
- package/docs/id/intlayer_with_astro_preact.md +114 -6
- package/docs/id/intlayer_with_astro_react.md +114 -6
- package/docs/id/intlayer_with_astro_solid.md +114 -6
- package/docs/id/intlayer_with_astro_svelte.md +114 -6
- package/docs/id/intlayer_with_astro_vanilla.md +108 -6
- package/docs/id/intlayer_with_astro_vue.md +114 -6
- package/docs/id/intlayer_with_create_react_app.md +109 -4
- package/docs/id/intlayer_with_elysia.md +125 -4
- package/docs/id/intlayer_with_express.md +117 -3
- package/docs/id/intlayer_with_fastify.md +119 -4
- package/docs/id/intlayer_with_hono.md +117 -3
- package/docs/id/intlayer_with_htmx.md +761 -0
- package/docs/id/intlayer_with_lynx+react.md +3 -10
- package/docs/id/intlayer_with_nestjs.md +118 -3
- package/docs/id/intlayer_with_next-i18next.md +3 -3
- package/docs/id/intlayer_with_nextjs_14.md +135 -69
- package/docs/id/intlayer_with_nextjs_15.md +122 -46
- package/docs/id/intlayer_with_nextjs_16.md +125 -45
- package/docs/id/intlayer_with_nextjs_compiler.md +125 -17
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +117 -5
- package/docs/id/intlayer_with_nextjs_page_router.md +114 -97
- package/docs/id/intlayer_with_nuxt.md +106 -4
- package/docs/id/intlayer_with_react_native+expo.md +105 -10
- package/docs/id/intlayer_with_react_router_v7.md +115 -6
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +116 -16
- package/docs/id/intlayer_with_solid_start.md +118 -4
- package/docs/id/intlayer_with_storybook.md +0 -13
- package/docs/id/intlayer_with_svelte_kit.md +101 -4
- package/docs/id/intlayer_with_tanstack+solid.md +120 -18
- package/docs/id/intlayer_with_tanstack.md +232 -132
- package/docs/id/intlayer_with_vanilla.md +110 -2
- package/docs/id/intlayer_with_vite+lit.md +114 -4
- package/docs/id/intlayer_with_vite+preact.md +144 -36
- package/docs/id/intlayer_with_vite+react.md +104 -16
- package/docs/id/intlayer_with_vite+react_compiler.md +109 -4
- package/docs/id/intlayer_with_vite+solid.md +115 -4
- package/docs/id/intlayer_with_vite+svelte.md +115 -13
- package/docs/id/intlayer_with_vite+vanilla.md +121 -4
- package/docs/id/intlayer_with_vite+vue.md +100 -4
- package/docs/id/introduction.md +104 -1
- package/docs/id/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/id/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/id/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/id/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/id/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/id/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/id/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/it/analytics.md +488 -21
- package/docs/it/bundle_optimization.md +186 -186
- package/docs/it/configuration.md +99 -1
- package/docs/it/dictionary/content_file.md +4 -4
- package/docs/it/dictionary/markdown.md +18 -1
- package/docs/it/dictionary/plurial.md +5 -2
- package/docs/it/how_works_intlayer.md +93 -1
- package/docs/it/interest_of_intlayer.md +97 -2
- package/docs/it/intlayer_CMS.md +93 -1
- package/docs/it/intlayer_visual_editor.md +88 -2
- package/docs/it/intlayer_with_adonisjs.md +124 -4
- package/docs/it/intlayer_with_analog.md +114 -5
- package/docs/it/intlayer_with_angular_19.md +112 -5
- package/docs/it/intlayer_with_angular_21.md +106 -5
- package/docs/it/intlayer_with_astro.md +114 -17
- package/docs/it/intlayer_with_astro_lit.md +115 -7
- package/docs/it/intlayer_with_astro_preact.md +115 -7
- package/docs/it/intlayer_with_astro_react.md +115 -7
- package/docs/it/intlayer_with_astro_solid.md +115 -7
- package/docs/it/intlayer_with_astro_svelte.md +115 -7
- package/docs/it/intlayer_with_astro_vanilla.md +109 -7
- package/docs/it/intlayer_with_astro_vue.md +115 -7
- package/docs/it/intlayer_with_create_react_app.md +110 -5
- package/docs/it/intlayer_with_elysia.md +125 -5
- package/docs/it/intlayer_with_express.md +118 -4
- package/docs/it/intlayer_with_fastify.md +119 -5
- package/docs/it/intlayer_with_hono.md +118 -4
- package/docs/it/intlayer_with_htmx.md +761 -0
- package/docs/it/intlayer_with_lynx+react.md +3 -10
- package/docs/it/intlayer_with_nestjs.md +118 -4
- package/docs/it/intlayer_with_next-i18next.md +3 -3
- package/docs/it/intlayer_with_nextjs_14.md +141 -118
- package/docs/it/intlayer_with_nextjs_15.md +127 -50
- package/docs/it/intlayer_with_nextjs_16.md +126 -47
- package/docs/it/intlayer_with_nextjs_compiler.md +126 -17
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +118 -6
- package/docs/it/intlayer_with_nextjs_page_router.md +122 -98
- package/docs/it/intlayer_with_nuxt.md +107 -5
- package/docs/it/intlayer_with_react_native+expo.md +106 -11
- package/docs/it/intlayer_with_react_router_v7.md +116 -7
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/it/intlayer_with_solid_start.md +120 -5
- package/docs/it/intlayer_with_storybook.md +0 -13
- package/docs/it/intlayer_with_svelte_kit.md +102 -5
- package/docs/it/intlayer_with_tanstack+solid.md +122 -19
- package/docs/it/intlayer_with_tanstack.md +235 -134
- package/docs/it/intlayer_with_vanilla.md +111 -3
- package/docs/it/intlayer_with_vite+lit.md +116 -5
- package/docs/it/intlayer_with_vite+preact.md +146 -37
- package/docs/it/intlayer_with_vite+react.md +105 -17
- package/docs/it/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/it/intlayer_with_vite+solid.md +117 -5
- package/docs/it/intlayer_with_vite+svelte.md +117 -14
- package/docs/it/intlayer_with_vite+vanilla.md +122 -5
- package/docs/it/intlayer_with_vite+vue.md +102 -6
- package/docs/it/introduction.md +105 -2
- package/docs/it/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/it/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/it/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/it/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/it/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/it/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/ja/analytics.md +458 -12
- package/docs/ja/bundle_optimization.md +186 -186
- package/docs/ja/configuration.md +99 -1
- package/docs/ja/dictionary/content_file.md +4 -4
- package/docs/ja/dictionary/plurial.md +5 -2
- package/docs/ja/how_works_intlayer.md +93 -1
- package/docs/ja/interest_of_intlayer.md +107 -10
- package/docs/ja/intlayer_CMS.md +93 -1
- package/docs/ja/intlayer_visual_editor.md +88 -2
- package/docs/ja/intlayer_with_adonisjs.md +124 -4
- package/docs/ja/intlayer_with_analog.md +122 -13
- package/docs/ja/intlayer_with_angular_19.md +120 -13
- package/docs/ja/intlayer_with_angular_21.md +114 -13
- package/docs/ja/intlayer_with_astro.md +122 -25
- package/docs/ja/intlayer_with_astro_lit.md +123 -15
- package/docs/ja/intlayer_with_astro_preact.md +123 -15
- package/docs/ja/intlayer_with_astro_react.md +123 -15
- package/docs/ja/intlayer_with_astro_solid.md +123 -15
- package/docs/ja/intlayer_with_astro_svelte.md +123 -15
- package/docs/ja/intlayer_with_astro_vanilla.md +117 -15
- package/docs/ja/intlayer_with_astro_vue.md +123 -15
- package/docs/ja/intlayer_with_create_react_app.md +110 -5
- package/docs/ja/intlayer_with_elysia.md +125 -5
- package/docs/ja/intlayer_with_express.md +124 -4
- package/docs/ja/intlayer_with_fastify.md +119 -5
- package/docs/ja/intlayer_with_hono.md +118 -4
- package/docs/ja/intlayer_with_htmx.md +769 -0
- package/docs/ja/intlayer_with_lynx+react.md +11 -18
- package/docs/ja/intlayer_with_nestjs.md +118 -4
- package/docs/ja/intlayer_with_next-i18next.md +3 -3
- package/docs/ja/intlayer_with_nextjs_14.md +131 -54
- package/docs/ja/intlayer_with_nextjs_15.md +139 -62
- package/docs/ja/intlayer_with_nextjs_16.md +134 -55
- package/docs/ja/intlayer_with_nextjs_compiler.md +126 -18
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +126 -14
- package/docs/ja/intlayer_with_nextjs_page_router.md +218 -113
- package/docs/ja/intlayer_with_nuxt.md +115 -13
- package/docs/ja/intlayer_with_react_native+expo.md +106 -11
- package/docs/ja/intlayer_with_react_router_v7.md +124 -14
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +123 -23
- package/docs/ja/intlayer_with_solid_start.md +120 -5
- package/docs/ja/intlayer_with_storybook.md +8 -21
- package/docs/ja/intlayer_with_svelte_kit.md +110 -13
- package/docs/ja/intlayer_with_tanstack+solid.md +131 -27
- package/docs/ja/intlayer_with_tanstack.md +257 -206
- package/docs/ja/intlayer_with_vanilla.md +119 -11
- package/docs/ja/intlayer_with_vite+lit.md +124 -13
- package/docs/ja/intlayer_with_vite+preact.md +154 -26
- package/docs/ja/intlayer_with_vite+react.md +112 -15
- package/docs/ja/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/ja/intlayer_with_vite+solid.md +124 -13
- package/docs/ja/intlayer_with_vite+svelte.md +125 -22
- package/docs/ja/intlayer_with_vite+vanilla.md +130 -13
- package/docs/ja/intlayer_with_vite+vue.md +110 -14
- package/docs/ja/introduction.md +105 -2
- package/docs/ja/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/ja/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/ja/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/ja/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/ja/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/ja/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/ko/analytics.md +457 -11
- package/docs/ko/bundle_optimization.md +186 -186
- package/docs/ko/configuration.md +99 -1
- package/docs/ko/dictionary/content_file.md +4 -4
- package/docs/ko/dictionary/markdown.md +18 -1
- package/docs/ko/dictionary/plurial.md +6 -3
- package/docs/ko/how_works_intlayer.md +93 -1
- package/docs/ko/interest_of_intlayer.md +98 -3
- package/docs/ko/intlayer_CMS.md +93 -1
- package/docs/ko/intlayer_visual_editor.md +88 -2
- package/docs/ko/intlayer_with_adonisjs.md +124 -4
- package/docs/ko/intlayer_with_analog.md +114 -5
- package/docs/ko/intlayer_with_angular_19.md +113 -6
- package/docs/ko/intlayer_with_angular_21.md +107 -6
- package/docs/ko/intlayer_with_astro.md +122 -22
- package/docs/ko/intlayer_with_astro_lit.md +115 -7
- package/docs/ko/intlayer_with_astro_preact.md +115 -7
- package/docs/ko/intlayer_with_astro_react.md +115 -7
- package/docs/ko/intlayer_with_astro_solid.md +115 -7
- package/docs/ko/intlayer_with_astro_svelte.md +115 -7
- package/docs/ko/intlayer_with_astro_vanilla.md +109 -7
- package/docs/ko/intlayer_with_astro_vue.md +115 -7
- package/docs/ko/intlayer_with_create_react_app.md +110 -8
- package/docs/ko/intlayer_with_elysia.md +125 -5
- package/docs/ko/intlayer_with_express.md +118 -4
- package/docs/ko/intlayer_with_fastify.md +119 -6
- package/docs/ko/intlayer_with_hono.md +118 -4
- package/docs/ko/intlayer_with_htmx.md +763 -0
- package/docs/ko/intlayer_with_lynx+react.md +3 -10
- package/docs/ko/intlayer_with_nestjs.md +118 -4
- package/docs/ko/intlayer_with_next-i18next.md +3 -3
- package/docs/ko/intlayer_with_nextjs_14.md +121 -45
- package/docs/ko/intlayer_with_nextjs_15.md +121 -46
- package/docs/ko/intlayer_with_nextjs_16.md +124 -46
- package/docs/ko/intlayer_with_nextjs_compiler.md +113 -4
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +120 -10
- package/docs/ko/intlayer_with_nextjs_page_router.md +113 -97
- package/docs/ko/intlayer_with_nuxt.md +107 -5
- package/docs/ko/intlayer_with_react_native+expo.md +106 -11
- package/docs/ko/intlayer_with_react_router_v7.md +119 -13
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +116 -14
- package/docs/ko/intlayer_with_solid_start.md +125 -10
- package/docs/ko/intlayer_with_storybook.md +0 -14
- package/docs/ko/intlayer_with_svelte_kit.md +102 -5
- package/docs/ko/intlayer_with_tanstack+solid.md +124 -20
- package/docs/ko/intlayer_with_tanstack.md +263 -194
- package/docs/ko/intlayer_with_vanilla.md +111 -2
- package/docs/ko/intlayer_with_vite+lit.md +117 -6
- package/docs/ko/intlayer_with_vite+preact.md +146 -37
- package/docs/ko/intlayer_with_vite+react.md +104 -8
- package/docs/ko/intlayer_with_vite+react_compiler.md +110 -13
- package/docs/ko/intlayer_with_vite+solid.md +118 -5
- package/docs/ko/intlayer_with_vite+svelte.md +118 -18
- package/docs/ko/intlayer_with_vite+vanilla.md +124 -14
- package/docs/ko/intlayer_with_vite+vue.md +102 -6
- package/docs/ko/introduction.md +105 -2
- package/docs/ko/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/ko/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/ko/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/ko/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/ko/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/ko/packages/express-intlayer/t.md +9 -6
- package/docs/ko/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/nl/bundle_optimization.md +186 -186
- package/docs/nl/interest_of_intlayer.md +0 -1
- 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_storybook.md +0 -12
- package/docs/nl/intlayer_with_vanilla.md +2 -1
- package/docs/nl/intlayer_with_vite+lit.md +3 -3
- package/docs/nl/intlayer_with_vite+vanilla.md +3 -3
- package/docs/nl/introduction.md +0 -1
- package/docs/pl/analytics.md +488 -21
- package/docs/pl/bundle_optimization.md +186 -186
- package/docs/pl/configuration.md +98 -0
- package/docs/pl/dictionary/content_file.md +4 -4
- package/docs/pl/dictionary/markdown.md +3 -0
- package/docs/pl/dictionary/plurial.md +5 -2
- package/docs/pl/how_works_intlayer.md +92 -0
- package/docs/pl/interest_of_intlayer.md +96 -1
- package/docs/pl/intlayer_CMS.md +92 -0
- package/docs/pl/intlayer_visual_editor.md +87 -1
- package/docs/pl/intlayer_with_adonisjs.md +123 -3
- package/docs/pl/intlayer_with_analog.md +119 -11
- package/docs/pl/intlayer_with_angular_19.md +118 -11
- package/docs/pl/intlayer_with_angular_21.md +112 -11
- package/docs/pl/intlayer_with_astro.md +120 -23
- package/docs/pl/intlayer_with_astro_lit.md +121 -13
- package/docs/pl/intlayer_with_astro_preact.md +121 -13
- package/docs/pl/intlayer_with_astro_react.md +121 -13
- package/docs/pl/intlayer_with_astro_solid.md +121 -13
- package/docs/pl/intlayer_with_astro_svelte.md +121 -13
- package/docs/pl/intlayer_with_astro_vanilla.md +115 -13
- package/docs/pl/intlayer_with_astro_vue.md +121 -13
- package/docs/pl/intlayer_with_create_react_app.md +109 -4
- package/docs/pl/intlayer_with_elysia.md +124 -4
- package/docs/pl/intlayer_with_express.md +117 -3
- package/docs/pl/intlayer_with_fastify.md +118 -4
- package/docs/pl/intlayer_with_hono.md +117 -3
- package/docs/pl/intlayer_with_htmx.md +767 -0
- package/docs/pl/intlayer_with_lynx+react.md +10 -17
- package/docs/pl/intlayer_with_nestjs.md +117 -3
- package/docs/pl/intlayer_with_next-i18next.md +3 -3
- package/docs/pl/intlayer_with_nextjs_14.md +130 -53
- package/docs/pl/intlayer_with_nextjs_15.md +144 -65
- package/docs/pl/intlayer_with_nextjs_16.md +131 -54
- package/docs/pl/intlayer_with_nextjs_compiler.md +125 -16
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +125 -13
- package/docs/pl/intlayer_with_nextjs_page_router.md +118 -100
- package/docs/pl/intlayer_with_nuxt.md +113 -11
- package/docs/pl/intlayer_with_react_native+expo.md +105 -10
- package/docs/pl/intlayer_with_react_router_v7.md +134 -25
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +121 -20
- package/docs/pl/intlayer_with_solid_start.md +118 -4
- package/docs/pl/intlayer_with_storybook.md +7 -20
- package/docs/pl/intlayer_with_svelte_kit.md +108 -11
- package/docs/pl/intlayer_with_tanstack+solid.md +127 -25
- package/docs/pl/intlayer_with_tanstack.md +241 -163
- package/docs/pl/intlayer_with_vanilla.md +117 -9
- package/docs/pl/intlayer_with_vite+lit.md +121 -11
- package/docs/pl/intlayer_with_vite+preact.md +151 -43
- package/docs/pl/intlayer_with_vite+react.md +111 -23
- package/docs/pl/intlayer_with_vite+react_compiler.md +111 -6
- package/docs/pl/intlayer_with_vite+solid.md +115 -8
- package/docs/pl/intlayer_with_vite+svelte.md +122 -20
- package/docs/pl/intlayer_with_vite+vanilla.md +128 -11
- package/docs/pl/intlayer_with_vite+vue.md +107 -11
- package/docs/pl/introduction.md +104 -1
- package/docs/pl/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/pl/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/pl/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/pl/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/pl/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/pl/packages/next-intlayer/useIntlayer.md +3 -0
- package/docs/pl/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/pt/analytics.md +488 -21
- package/docs/pt/bundle_optimization.md +186 -186
- package/docs/pt/configuration.md +99 -1
- package/docs/pt/dictionary/content_file.md +4 -4
- package/docs/pt/dictionary/html.md +18 -1
- package/docs/pt/dictionary/markdown.md +3 -0
- package/docs/pt/dictionary/plurial.md +5 -2
- package/docs/pt/how_works_intlayer.md +93 -1
- package/docs/pt/interest_of_intlayer.md +98 -3
- package/docs/pt/intlayer_CMS.md +93 -1
- package/docs/pt/intlayer_visual_editor.md +88 -2
- package/docs/pt/intlayer_with_adonisjs.md +124 -4
- package/docs/pt/intlayer_with_analog.md +115 -6
- package/docs/pt/intlayer_with_angular_19.md +112 -5
- package/docs/pt/intlayer_with_angular_21.md +106 -5
- package/docs/pt/intlayer_with_astro.md +114 -17
- package/docs/pt/intlayer_with_astro_lit.md +115 -7
- package/docs/pt/intlayer_with_astro_preact.md +115 -7
- package/docs/pt/intlayer_with_astro_react.md +115 -7
- package/docs/pt/intlayer_with_astro_solid.md +115 -7
- package/docs/pt/intlayer_with_astro_svelte.md +115 -7
- package/docs/pt/intlayer_with_astro_vanilla.md +109 -7
- package/docs/pt/intlayer_with_astro_vue.md +114 -6
- package/docs/pt/intlayer_with_create_react_app.md +110 -5
- package/docs/pt/intlayer_with_elysia.md +125 -5
- package/docs/pt/intlayer_with_express.md +118 -4
- package/docs/pt/intlayer_with_fastify.md +119 -6
- package/docs/pt/intlayer_with_hono.md +118 -4
- package/docs/pt/intlayer_with_htmx.md +771 -0
- package/docs/pt/intlayer_with_lynx+react.md +3 -10
- package/docs/pt/intlayer_with_nestjs.md +118 -4
- package/docs/pt/intlayer_with_next-i18next.md +3 -3
- package/docs/pt/intlayer_with_nextjs_14.md +141 -120
- package/docs/pt/intlayer_with_nextjs_15.md +123 -48
- package/docs/pt/intlayer_with_nextjs_16.md +125 -48
- package/docs/pt/intlayer_with_nextjs_compiler.md +125 -15
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +118 -6
- package/docs/pt/intlayer_with_nextjs_page_router.md +124 -98
- package/docs/pt/intlayer_with_nuxt.md +107 -5
- package/docs/pt/intlayer_with_react_native+expo.md +106 -11
- package/docs/pt/intlayer_with_react_router_v7.md +143 -36
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +115 -8
- package/docs/pt/intlayer_with_solid_start.md +124 -9
- package/docs/pt/intlayer_with_storybook.md +0 -13
- package/docs/pt/intlayer_with_svelte_kit.md +102 -5
- package/docs/pt/intlayer_with_tanstack+solid.md +123 -19
- package/docs/pt/intlayer_with_tanstack.md +255 -147
- package/docs/pt/intlayer_with_vanilla.md +111 -3
- package/docs/pt/intlayer_with_vite+lit.md +116 -5
- package/docs/pt/intlayer_with_vite+preact.md +146 -37
- package/docs/pt/intlayer_with_vite+react.md +104 -7
- package/docs/pt/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/pt/intlayer_with_vite+solid.md +117 -5
- package/docs/pt/intlayer_with_vite+svelte.md +117 -14
- package/docs/pt/intlayer_with_vite+vanilla.md +122 -5
- package/docs/pt/intlayer_with_vite+vue.md +101 -5
- package/docs/pt/introduction.md +105 -2
- package/docs/pt/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/pt/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/pt/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/pt/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/pt/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/pt/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/ru/analytics.md +458 -12
- package/docs/ru/bundle_optimization.md +186 -186
- package/docs/ru/cli/doc-review.md +0 -2
- package/docs/ru/configuration.md +99 -1
- package/docs/ru/dictionary/content_file.md +4 -4
- package/docs/ru/dictionary/markdown.md +0 -2
- package/docs/ru/dictionary/plurial.md +6 -3
- package/docs/ru/dictionary/translation.md +1 -1
- package/docs/ru/how_works_intlayer.md +93 -1
- package/docs/ru/interest_of_intlayer.md +97 -2
- package/docs/ru/intlayer_CMS.md +93 -1
- package/docs/ru/intlayer_visual_editor.md +88 -2
- package/docs/ru/intlayer_with_adonisjs.md +124 -4
- package/docs/ru/intlayer_with_analog.md +114 -5
- package/docs/ru/intlayer_with_angular_19.md +112 -5
- package/docs/ru/intlayer_with_angular_21.md +106 -5
- package/docs/ru/intlayer_with_astro.md +114 -17
- package/docs/ru/intlayer_with_astro_lit.md +115 -7
- package/docs/ru/intlayer_with_astro_preact.md +115 -7
- package/docs/ru/intlayer_with_astro_react.md +115 -7
- package/docs/ru/intlayer_with_astro_solid.md +115 -7
- package/docs/ru/intlayer_with_astro_svelte.md +115 -7
- package/docs/ru/intlayer_with_astro_vanilla.md +109 -7
- package/docs/ru/intlayer_with_astro_vue.md +115 -7
- package/docs/ru/intlayer_with_create_react_app.md +110 -5
- package/docs/ru/intlayer_with_elysia.md +125 -5
- package/docs/ru/intlayer_with_express.md +118 -4
- package/docs/ru/intlayer_with_fastify.md +119 -5
- package/docs/ru/intlayer_with_hono.md +118 -4
- package/docs/ru/intlayer_with_htmx.md +767 -0
- package/docs/ru/intlayer_with_lynx+react.md +3 -10
- package/docs/ru/intlayer_with_nestjs.md +118 -4
- package/docs/ru/intlayer_with_next-i18next.md +3 -3
- package/docs/ru/intlayer_with_nextjs_14.md +141 -117
- package/docs/ru/intlayer_with_nextjs_15.md +126 -65
- package/docs/ru/intlayer_with_nextjs_16.md +125 -48
- package/docs/ru/intlayer_with_nextjs_compiler.md +126 -17
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +118 -6
- package/docs/ru/intlayer_with_nextjs_page_router.md +113 -98
- package/docs/ru/intlayer_with_nuxt.md +107 -5
- package/docs/ru/intlayer_with_react_native+expo.md +106 -11
- package/docs/ru/intlayer_with_react_router_v7.md +116 -7
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/ru/intlayer_with_solid_start.md +120 -5
- package/docs/ru/intlayer_with_storybook.md +0 -13
- package/docs/ru/intlayer_with_svelte_kit.md +102 -5
- package/docs/ru/intlayer_with_tanstack+solid.md +122 -19
- package/docs/ru/intlayer_with_tanstack.md +233 -154
- package/docs/ru/intlayer_with_vanilla.md +111 -3
- package/docs/ru/intlayer_with_vite+lit.md +116 -5
- package/docs/ru/intlayer_with_vite+preact.md +146 -37
- package/docs/ru/intlayer_with_vite+react.md +105 -17
- package/docs/ru/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/ru/intlayer_with_vite+solid.md +117 -5
- package/docs/ru/intlayer_with_vite+svelte.md +119 -24
- package/docs/ru/intlayer_with_vite+vanilla.md +122 -5
- package/docs/ru/intlayer_with_vite+vue.md +102 -6
- package/docs/ru/introduction.md +105 -2
- package/docs/ru/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/ru/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/ru/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/ru/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/ru/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/ru/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/tr/analytics.md +488 -21
- package/docs/tr/bundle_optimization.md +186 -186
- package/docs/tr/cli/doc-review.md +0 -2
- package/docs/tr/configuration.md +98 -0
- package/docs/tr/dictionary/content_file.md +4 -4
- package/docs/tr/dictionary/markdown.md +3 -0
- package/docs/tr/dictionary/plurial.md +6 -3
- package/docs/tr/how_works_intlayer.md +92 -0
- package/docs/tr/interest_of_intlayer.md +96 -1
- package/docs/tr/intlayer_CMS.md +92 -0
- package/docs/tr/intlayer_visual_editor.md +87 -1
- package/docs/tr/intlayer_with_adonisjs.md +124 -3
- package/docs/tr/intlayer_with_analog.md +112 -4
- package/docs/tr/intlayer_with_angular_19.md +111 -4
- package/docs/tr/intlayer_with_angular_21.md +105 -4
- package/docs/tr/intlayer_with_astro.md +120 -30
- package/docs/tr/intlayer_with_astro_lit.md +114 -6
- package/docs/tr/intlayer_with_astro_preact.md +114 -6
- package/docs/tr/intlayer_with_astro_react.md +114 -6
- package/docs/tr/intlayer_with_astro_solid.md +114 -6
- package/docs/tr/intlayer_with_astro_svelte.md +114 -6
- package/docs/tr/intlayer_with_astro_vanilla.md +108 -6
- package/docs/tr/intlayer_with_astro_vue.md +114 -6
- package/docs/tr/intlayer_with_create_react_app.md +109 -4
- package/docs/tr/intlayer_with_elysia.md +125 -4
- package/docs/tr/intlayer_with_express.md +117 -3
- package/docs/tr/intlayer_with_fastify.md +119 -4
- package/docs/tr/intlayer_with_hono.md +117 -3
- package/docs/tr/intlayer_with_htmx.md +761 -0
- package/docs/tr/intlayer_with_lynx+react.md +3 -10
- package/docs/tr/intlayer_with_nestjs.md +118 -3
- package/docs/tr/intlayer_with_next-i18next.md +3 -3
- package/docs/tr/intlayer_with_nextjs_14.md +128 -54
- package/docs/tr/intlayer_with_nextjs_15.md +122 -47
- package/docs/tr/intlayer_with_nextjs_16.md +123 -46
- package/docs/tr/intlayer_with_nextjs_compiler.md +124 -16
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +117 -5
- package/docs/tr/intlayer_with_nextjs_page_router.md +127 -123
- package/docs/tr/intlayer_with_nuxt.md +106 -4
- package/docs/tr/intlayer_with_react_native+expo.md +105 -10
- package/docs/tr/intlayer_with_react_router_v7.md +115 -6
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +110 -3
- package/docs/tr/intlayer_with_solid_start.md +118 -4
- package/docs/tr/intlayer_with_storybook.md +0 -13
- package/docs/tr/intlayer_with_svelte_kit.md +101 -4
- package/docs/tr/intlayer_with_tanstack+solid.md +120 -18
- package/docs/tr/intlayer_with_tanstack.md +262 -131
- package/docs/tr/intlayer_with_vanilla.md +110 -2
- package/docs/tr/intlayer_with_vite+lit.md +114 -4
- package/docs/tr/intlayer_with_vite+preact.md +144 -36
- package/docs/tr/intlayer_with_vite+react.md +103 -6
- package/docs/tr/intlayer_with_vite+react_compiler.md +109 -4
- package/docs/tr/intlayer_with_vite+solid.md +115 -4
- package/docs/tr/intlayer_with_vite+svelte.md +115 -13
- package/docs/tr/intlayer_with_vite+vanilla.md +121 -4
- package/docs/tr/intlayer_with_vite+vue.md +102 -7
- package/docs/tr/introduction.md +104 -1
- package/docs/tr/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/tr/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/tr/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/tr/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/tr/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/tr/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/uk/analytics.md +488 -21
- package/docs/uk/bundle_optimization.md +186 -186
- package/docs/uk/configuration.md +98 -0
- package/docs/uk/dictionary/content_file.md +4 -4
- package/docs/uk/dictionary/markdown.md +3 -0
- package/docs/uk/dictionary/plurial.md +6 -3
- package/docs/uk/how_works_intlayer.md +92 -0
- package/docs/uk/interest_of_intlayer.md +96 -1
- package/docs/uk/intlayer_CMS.md +92 -0
- package/docs/uk/intlayer_visual_editor.md +87 -1
- package/docs/uk/intlayer_with_adonisjs.md +124 -3
- package/docs/uk/intlayer_with_analog.md +112 -4
- package/docs/uk/intlayer_with_angular_19.md +111 -4
- package/docs/uk/intlayer_with_angular_21.md +105 -4
- package/docs/uk/intlayer_with_astro.md +113 -16
- package/docs/uk/intlayer_with_astro_lit.md +114 -6
- package/docs/uk/intlayer_with_astro_preact.md +114 -6
- package/docs/uk/intlayer_with_astro_react.md +114 -6
- package/docs/uk/intlayer_with_astro_solid.md +114 -6
- package/docs/uk/intlayer_with_astro_svelte.md +114 -6
- package/docs/uk/intlayer_with_astro_vanilla.md +108 -6
- package/docs/uk/intlayer_with_astro_vue.md +114 -6
- package/docs/uk/intlayer_with_create_react_app.md +109 -4
- package/docs/uk/intlayer_with_elysia.md +125 -4
- package/docs/uk/intlayer_with_express.md +117 -3
- package/docs/uk/intlayer_with_fastify.md +119 -4
- package/docs/uk/intlayer_with_hono.md +117 -3
- package/docs/uk/intlayer_with_htmx.md +760 -0
- package/docs/uk/intlayer_with_lynx+react.md +3 -10
- package/docs/uk/intlayer_with_nestjs.md +118 -3
- package/docs/uk/intlayer_with_next-i18next.md +3 -3
- package/docs/uk/intlayer_with_nextjs_14.md +122 -47
- package/docs/uk/intlayer_with_nextjs_15.md +136 -59
- package/docs/uk/intlayer_with_nextjs_16.md +124 -47
- package/docs/uk/intlayer_with_nextjs_compiler.md +125 -17
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +117 -5
- package/docs/uk/intlayer_with_nextjs_page_router.md +114 -99
- package/docs/uk/intlayer_with_nuxt.md +106 -4
- package/docs/uk/intlayer_with_react_native+expo.md +105 -10
- package/docs/uk/intlayer_with_react_router_v7.md +115 -6
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +110 -3
- package/docs/uk/intlayer_with_solid_start.md +118 -4
- package/docs/uk/intlayer_with_storybook.md +0 -13
- package/docs/uk/intlayer_with_svelte_kit.md +101 -4
- package/docs/uk/intlayer_with_tanstack+solid.md +120 -18
- package/docs/uk/intlayer_with_tanstack.md +238 -135
- package/docs/uk/intlayer_with_vanilla.md +110 -2
- package/docs/uk/intlayer_with_vite+lit.md +114 -4
- package/docs/uk/intlayer_with_vite+preact.md +170 -34
- package/docs/uk/intlayer_with_vite+react.md +104 -16
- package/docs/uk/intlayer_with_vite+react_compiler.md +109 -4
- package/docs/uk/intlayer_with_vite+solid.md +115 -4
- package/docs/uk/intlayer_with_vite+svelte.md +115 -13
- package/docs/uk/intlayer_with_vite+vanilla.md +121 -4
- package/docs/uk/intlayer_with_vite+vue.md +100 -4
- package/docs/uk/introduction.md +104 -1
- package/docs/uk/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/uk/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/uk/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/uk/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/uk/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/uk/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/uk/packages/vite-intlayer/intlayerMinify.md +1 -1
- 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_storybook.md +0 -12
- package/docs/ur/intlayer_with_vanilla.md +2 -1
- package/docs/ur/intlayer_with_vite+lit.md +3 -3
- package/docs/ur/intlayer_with_vite+vanilla.md +3 -3
- package/docs/ur/introduction.md +0 -1
- package/docs/vi/analytics.md +488 -21
- package/docs/vi/bundle_optimization.md +186 -186
- package/docs/vi/configuration.md +98 -0
- package/docs/vi/dictionary/content_file.md +4 -4
- package/docs/vi/dictionary/markdown.md +3 -0
- package/docs/vi/dictionary/plurial.md +5 -2
- package/docs/vi/how_works_intlayer.md +92 -0
- package/docs/vi/interest_of_intlayer.md +96 -1
- package/docs/vi/intlayer_CMS.md +92 -0
- package/docs/vi/intlayer_visual_editor.md +87 -1
- package/docs/vi/intlayer_with_adonisjs.md +124 -3
- package/docs/vi/intlayer_with_analog.md +112 -4
- package/docs/vi/intlayer_with_angular_19.md +111 -4
- package/docs/vi/intlayer_with_angular_21.md +105 -4
- package/docs/vi/intlayer_with_astro.md +113 -16
- package/docs/vi/intlayer_with_astro_lit.md +114 -6
- package/docs/vi/intlayer_with_astro_preact.md +114 -6
- package/docs/vi/intlayer_with_astro_react.md +114 -6
- package/docs/vi/intlayer_with_astro_solid.md +114 -6
- package/docs/vi/intlayer_with_astro_svelte.md +114 -6
- package/docs/vi/intlayer_with_astro_vanilla.md +108 -6
- package/docs/vi/intlayer_with_astro_vue.md +114 -6
- package/docs/vi/intlayer_with_create_react_app.md +109 -4
- package/docs/vi/intlayer_with_elysia.md +125 -4
- package/docs/vi/intlayer_with_express.md +117 -3
- package/docs/vi/intlayer_with_fastify.md +119 -4
- package/docs/vi/intlayer_with_hono.md +117 -3
- package/docs/vi/intlayer_with_htmx.md +760 -0
- package/docs/vi/intlayer_with_lynx+react.md +3 -10
- package/docs/vi/intlayer_with_nestjs.md +118 -3
- package/docs/vi/intlayer_with_next-i18next.md +3 -3
- package/docs/vi/intlayer_with_nextjs_14.md +136 -56
- package/docs/vi/intlayer_with_nextjs_15.md +136 -59
- package/docs/vi/intlayer_with_nextjs_16.md +124 -47
- package/docs/vi/intlayer_with_nextjs_compiler.md +125 -17
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +117 -5
- package/docs/vi/intlayer_with_nextjs_page_router.md +114 -95
- package/docs/vi/intlayer_with_nuxt.md +106 -4
- package/docs/vi/intlayer_with_react_native+expo.md +105 -10
- package/docs/vi/intlayer_with_react_router_v7.md +115 -6
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +116 -16
- package/docs/vi/intlayer_with_solid_start.md +118 -4
- package/docs/vi/intlayer_with_storybook.md +0 -13
- package/docs/vi/intlayer_with_svelte_kit.md +101 -4
- package/docs/vi/intlayer_with_tanstack+solid.md +120 -18
- package/docs/vi/intlayer_with_tanstack.md +252 -172
- package/docs/vi/intlayer_with_vanilla.md +110 -2
- package/docs/vi/intlayer_with_vite+lit.md +114 -4
- package/docs/vi/intlayer_with_vite+preact.md +150 -17
- package/docs/vi/intlayer_with_vite+react.md +104 -16
- package/docs/vi/intlayer_with_vite+react_compiler.md +109 -4
- package/docs/vi/intlayer_with_vite+solid.md +115 -4
- package/docs/vi/intlayer_with_vite+svelte.md +115 -13
- package/docs/vi/intlayer_with_vite+vanilla.md +121 -4
- package/docs/vi/intlayer_with_vite+vue.md +100 -4
- package/docs/vi/introduction.md +104 -1
- package/docs/vi/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/vi/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/vi/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/vi/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/vi/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/vi/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/vi/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/zh/analytics.md +458 -12
- package/docs/zh/bundle_optimization.md +186 -186
- package/docs/zh/configuration.md +99 -1
- package/docs/zh/dictionary/content_file.md +4 -4
- package/docs/zh/dictionary/markdown.md +18 -1
- package/docs/zh/dictionary/plurial.md +6 -3
- package/docs/zh/how_works_intlayer.md +93 -1
- package/docs/zh/interest_of_intlayer.md +108 -13
- package/docs/zh/intlayer_CMS.md +93 -1
- package/docs/zh/intlayer_visual_editor.md +88 -2
- package/docs/zh/intlayer_with_adonisjs.md +124 -4
- package/docs/zh/intlayer_with_analog.md +121 -12
- package/docs/zh/intlayer_with_angular_19.md +120 -13
- package/docs/zh/intlayer_with_angular_21.md +113 -12
- package/docs/zh/intlayer_with_astro.md +111 -7
- package/docs/zh/intlayer_with_astro_lit.md +117 -10
- package/docs/zh/intlayer_with_astro_preact.md +117 -10
- package/docs/zh/intlayer_with_astro_react.md +117 -10
- package/docs/zh/intlayer_with_astro_solid.md +117 -10
- package/docs/zh/intlayer_with_astro_svelte.md +117 -10
- package/docs/zh/intlayer_with_astro_vanilla.md +111 -10
- package/docs/zh/intlayer_with_astro_vue.md +117 -10
- package/docs/zh/intlayer_with_create_react_app.md +113 -9
- package/docs/zh/intlayer_with_elysia.md +125 -5
- package/docs/zh/intlayer_with_express.md +118 -4
- package/docs/zh/intlayer_with_fastify.md +119 -5
- package/docs/zh/intlayer_with_hono.md +118 -4
- package/docs/zh/intlayer_with_htmx.md +769 -0
- package/docs/zh/intlayer_with_lynx+react.md +11 -16
- package/docs/zh/intlayer_with_nestjs.md +118 -4
- package/docs/zh/intlayer_with_next-i18next.md +3 -3
- package/docs/zh/intlayer_with_nextjs_14.md +123 -48
- package/docs/zh/intlayer_with_nextjs_15.md +124 -47
- package/docs/zh/intlayer_with_nextjs_16.md +124 -45
- package/docs/zh/intlayer_with_nextjs_compiler.md +124 -17
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +125 -13
- package/docs/zh/intlayer_with_nextjs_page_router.md +113 -97
- package/docs/zh/intlayer_with_nuxt.md +114 -12
- package/docs/zh/intlayer_with_react_native+expo.md +106 -11
- package/docs/zh/intlayer_with_react_router_v7.md +134 -31
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +134 -30
- package/docs/zh/intlayer_with_solid_start.md +125 -10
- package/docs/zh/intlayer_with_storybook.md +7 -20
- package/docs/zh/intlayer_with_svelte_kit.md +109 -12
- package/docs/zh/intlayer_with_tanstack+solid.md +132 -32
- package/docs/zh/intlayer_with_tanstack.md +254 -194
- package/docs/zh/intlayer_with_vanilla.md +118 -10
- package/docs/zh/intlayer_with_vite+lit.md +124 -11
- package/docs/zh/intlayer_with_vite+preact.md +153 -44
- package/docs/zh/intlayer_with_vite+react.md +107 -15
- package/docs/zh/intlayer_with_vite+react_compiler.md +110 -5
- package/docs/zh/intlayer_with_vite+solid.md +116 -5
- package/docs/zh/intlayer_with_vite+svelte.md +131 -26
- package/docs/zh/intlayer_with_vite+vanilla.md +129 -12
- package/docs/zh/intlayer_with_vite+vue.md +102 -6
- package/docs/zh/introduction.md +105 -2
- package/docs/zh/migration_from_i18next_to_intlayer.md +3 -5
- package/docs/zh/migration_from_next-i18next_to_intlayer.md +3 -5
- package/docs/zh/migration_from_next-intl_to_intlayer.md +3 -5
- package/docs/zh/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
- package/docs/zh/migration_from_react-i18next_to_intlayer.md +3 -5
- package/docs/zh/migration_from_vue-i18n_to_intlayer.md +3 -5
- package/docs/zh/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/zh/releases/v6.md +1 -1
- package/docs/zh-TW/bundle_optimization.md +186 -186
- package/docs/zh-TW/intlayer_with_angular_21.md +3 -3
- package/docs/zh-TW/introduction.md +0 -1
- package/package.json +7 -7
- package/src/common.ts +45 -18
- package/src/generated/blog.entry.ts +349 -0
- package/src/generated/docs.entry.ts +20 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-02
|
|
3
|
+
updatedAt: 2026-09-02
|
|
4
|
+
title: "Formatear fechas y números por idioma con Intl"
|
|
5
|
+
description: Probablemente no necesitas una librería de formateo. Cómo maneja Intl fechas, números, monedas y listas por idioma, el costo de caché y el bug de zona horaria en producción.
|
|
6
|
+
keywords:
|
|
7
|
+
- formatear fecha por idioma
|
|
8
|
+
- Intl.DateTimeFormat
|
|
9
|
+
- Intl.NumberFormat
|
|
10
|
+
- toLocaleDateString
|
|
11
|
+
- formato moneda locale
|
|
12
|
+
- formato tiempo relativo
|
|
13
|
+
slugs:
|
|
14
|
+
- blog
|
|
15
|
+
- date-time-number-formatting-locales
|
|
16
|
+
author: aymericzip
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Formatear fechas y números por idioma con Intl
|
|
20
|
+
|
|
21
|
+
Traducir cadenas de texto es la mitad visible de la internacionalización. La otra mitad, la que suele saturar los reportes de errores, es el formateo: un usuario en Alemania que ve `1,234.56` en vez de `1.234,56`, un usuario en Japón que ve `08/02/2026` y asume que es agosto, o una fecha que se renderiza distinto en el servidor y en el navegador, rompiendo la hidratación en React.
|
|
22
|
+
|
|
23
|
+
Nada de eso requiere dependencias externas. `Intl` ya está presente de forma nativa en cualquier entorno moderno.
|
|
24
|
+
|
|
25
|
+
## Tabla de contenidos
|
|
26
|
+
|
|
27
|
+
<TOC/>
|
|
28
|
+
|
|
29
|
+
## Comienza eliminando tu helper de fechas
|
|
30
|
+
|
|
31
|
+
Casi cualquier repositorio conserva una función `formatDate` escrita antes de contemplar la internacionalización. Suele forzar un orden rígido, un separador y, por lo general, nombres de meses en inglés.
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
// Lo que deberías borrar.
|
|
35
|
+
const formatDate = (d: Date) =>
|
|
36
|
+
`${d.getMonth() + 1}/${d.getDate()}/${d.getFullYear()}`;
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
`Intl.DateTimeFormat` la reemplaza y resuelve el formato de manera adecuada en cada idioma:
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
new Intl.DateTimeFormat("de-DE", { dateStyle: "long" }).format(date);
|
|
43
|
+
// "2. August 2026"
|
|
44
|
+
new Intl.DateTimeFormat("ja-JP", { dateStyle: "long" }).format(date);
|
|
45
|
+
// "2026年8月2日"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Lo mismo ocurre con los valores numéricos. `toFixed(2)` produce `1234.56` en todas partes, lo cual es incorrecto en casi toda Europa.
|
|
49
|
+
|
|
50
|
+
## Qué cubre `Intl`
|
|
51
|
+
|
|
52
|
+
| API | Caso de uso |
|
|
53
|
+
| :------------------------ | :----------------------------------------------------------------- |
|
|
54
|
+
| `Intl.DateTimeFormat` | Fechas y horas, con ajustes predefinidos `dateStyle` / `timeStyle` |
|
|
55
|
+
| `Intl.NumberFormat` | Decimales, divisas, porcentajes, unidades, notación compacta |
|
|
56
|
+
| `Intl.RelativeTimeFormat` | "hace 3 días", "en 2 horas" |
|
|
57
|
+
| `Intl.ListFormat` | "a, b y c" frente a "a, b, and c" |
|
|
58
|
+
| `Intl.PluralRules` | Categoría de plural a la que pertenece un valor numérico |
|
|
59
|
+
| `Intl.Collator` | Ordenación alfabética correcta según cada lengua |
|
|
60
|
+
|
|
61
|
+
`Intl.Collator` es el gran olvidado. Ejecutar `array.sort()` sobre cadenas utiliza el orden de los puntos de código Unicode, de modo que los caracteres con tilde terminan ordenados tras la `z` y la `ö` sueca se sitúa en un lugar erróneo. Si ordenas listas que los usuarios van a leer, utiliza siempre un collator.
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
["zebra", "édouard", "apple"].sort(new Intl.Collator("es").compare);
|
|
65
|
+
// ["apple", "édouard", "zebra"]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Prefiere preajustes antes que opciones construidas a mano
|
|
69
|
+
|
|
70
|
+
`dateStyle` y `timeStyle` dejan que el locale determine el orden lógico y los separadores pertinentes. Especificar `year`, `month` y `day` por separado otorga un control que rara vez conviene tener, ya que el orden correcto cambia por región y terminas sobreescribiendo los datos de CLDR con tus propias suposiciones.
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
// El idioma determina la estructura.
|
|
74
|
+
new Intl.DateTimeFormat(locale, { dateStyle: "medium" }).format(d);
|
|
75
|
+
|
|
76
|
+
// Forzaste la estructura, y te equivocarás en otra región.
|
|
77
|
+
new Intl.DateTimeFormat(locale, {
|
|
78
|
+
year: "numeric",
|
|
79
|
+
month: "2-digit",
|
|
80
|
+
day: "2-digit",
|
|
81
|
+
}).format(d);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Usa componentes explícitos únicamente cuando el diseño visual exija con exactitud un ancho fijo, como en una columna de tabla estrecha.
|
|
85
|
+
|
|
86
|
+
## Crear formateadores es costoso
|
|
87
|
+
|
|
88
|
+
Este es un detalle de rendimiento clave. Construir un `Intl.NumberFormat` implica cargar datos de locale en memoria, y es una operación mucho más pesada que la subsiguiente llamada a `.format()`. Hacerlo dentro de un bucle de renderizado sobre mil filas genera un impacto medible.
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
// Reconstruye el formateador en cada iteración.
|
|
92
|
+
rows.map((r) => new Intl.NumberFormat(locale).format(r.total));
|
|
93
|
+
|
|
94
|
+
// Construye una vez y reutiliza.
|
|
95
|
+
const nf = new Intl.NumberFormat(locale);
|
|
96
|
+
rows.map((r) => nf.format(r.total));
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
`toLocaleDateString()` y `toLocaleString()` esconden exactamente el mismo problema: cada invocación genera un nuevo formateador. Son tolerables para un dato aislado, pero pésimos para una lista.
|
|
100
|
+
|
|
101
|
+
Guárdalos en caché mediante la combinación de idioma y opciones:
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
const cache = new Map<string, Intl.NumberFormat>();
|
|
105
|
+
|
|
106
|
+
const getNumberFormat = (
|
|
107
|
+
locale: string,
|
|
108
|
+
options: Intl.NumberFormatOptions = {}
|
|
109
|
+
) => {
|
|
110
|
+
const key = `${locale}:${JSON.stringify(options)}`;
|
|
111
|
+
let formatter = cache.get(key);
|
|
112
|
+
if (!formatter) {
|
|
113
|
+
formatter = new Intl.NumberFormat(locale, options);
|
|
114
|
+
cache.set(key, formatter);
|
|
115
|
+
}
|
|
116
|
+
return formatter;
|
|
117
|
+
};
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## El bug de zona horaria que solo salta en producción
|
|
121
|
+
|
|
122
|
+
Este problema ha costado tardes enteras. El servidor genera una fecha durante el SSR, el navegador la hidrata en el cliente, y React lanza un error de hydration mismatch porque ambas partes generaron un texto diferente.
|
|
123
|
+
|
|
124
|
+
La raíz del problema radica en que `Intl.DateTimeFormat` recurre a la zona horaria del sistema operativo cuando no se especifica ninguna. Tu servidor en producción corre bajo UTC, mientras que tu ordenador local está en otra zona horaria. Como resultado, el fallo es invisible en local y solo estalla en producción.
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
// Un servidor en UTC y un navegador en UTC+9 difieren. Error de hidratación.
|
|
128
|
+
new Intl.DateTimeFormat(locale, { dateStyle: "short" }).format(d);
|
|
129
|
+
|
|
130
|
+
// Ambos coinciden sin ambigüedades.
|
|
131
|
+
new Intl.DateTimeFormat(locale, { dateStyle: "short", timeZone: "UTC" }).format(
|
|
132
|
+
d
|
|
133
|
+
);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Tres soluciones prácticas:
|
|
137
|
+
|
|
138
|
+
- **Fijar la zona horaria** en el servidor y pasarla explícitamente. Determinista, pero todo el mundo ve la hora en UTC.
|
|
139
|
+
- **Renderizar solo en el cliente**, manteniendo un placeholder estable durante el SSR. Preciso para el usuario, aunque añade un pequeño parpadeo.
|
|
140
|
+
- **Guardar la zona horaria del usuario** y pasarla en ambos entornos. La mejor experiencia, con algo más de trabajo de sincronización.
|
|
141
|
+
|
|
142
|
+
Elijas la que elijas, define siempre `timeZone` de forma explícita en cualquier fecha que se renderice tanto en el servidor como en el cliente. Una fecha sin zona horaria asignada es una fecha con dos valores contradictorios.
|
|
143
|
+
|
|
144
|
+
## Una divisa necesita una divisa, no un idioma
|
|
145
|
+
|
|
146
|
+
El idioma y la divisa son independientes. `fr-FR` no implica euros de forma estricta: un usuario francés puede estar revisando una factura en dólares estadounidenses.
|
|
147
|
+
|
|
148
|
+
```ts
|
|
149
|
+
new Intl.NumberFormat("fr-FR", { style: "currency", currency: "USD" }).format(
|
|
150
|
+
1234.5
|
|
151
|
+
);
|
|
152
|
+
// "1 234,50 $US"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
El locale define los separadores, los grupos de dígitos y la posición del símbolo. La moneda proviene de tus datos de negocio. Deducir una a partir de la otra genera incidencias en facturación.
|
|
156
|
+
|
|
157
|
+
Considera también la opción `currencyDisplay`. En interfaces donde conviven varias monedas que usan el signo de dólar, `"code"` despeja la ambigüedad entre dólares estadounidenses, canadienses y australianos.
|
|
158
|
+
|
|
159
|
+
## El tiempo relativo es más legible que una marca temporal absoluta
|
|
160
|
+
|
|
161
|
+
Para sucesos recientes, "hace 2 horas" supera a cualquier fecha estática, e `Intl.RelativeTimeFormat` se encarga de localizarlo adecuadamente.
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
new Intl.RelativeTimeFormat("es", { numeric: "auto" }).format(-1, "day");
|
|
165
|
+
// "ayer"
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
`numeric: "auto"` es la clave para obtener "ayer" en lugar de "hace 1 día". Sin esta opción obtendrás la forma numérica estricta en cada idioma, lo que resulta artificial.
|
|
169
|
+
|
|
170
|
+
## Qué aporta Intlayer
|
|
171
|
+
|
|
172
|
+
Intlayer envuelve estas APIs en utilidades con caché integrada para que no tengas que mantener un mapa manual, aplicando el idioma activo de forma predeterminada sin requerir pasarlo en cada invocación.
|
|
173
|
+
|
|
174
|
+
```ts
|
|
175
|
+
import {
|
|
176
|
+
number,
|
|
177
|
+
currency,
|
|
178
|
+
date,
|
|
179
|
+
relativeTime,
|
|
180
|
+
units,
|
|
181
|
+
compact,
|
|
182
|
+
list,
|
|
183
|
+
} from "intlayer";
|
|
184
|
+
|
|
185
|
+
number(1234.5); // "1.234,5"
|
|
186
|
+
currency(1234.5, { currency: "EUR" }); // "1.234,50 €"
|
|
187
|
+
date(new Date(), "short");
|
|
188
|
+
relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "hace 2 horas"
|
|
189
|
+
units(5, { unit: "kilometer", unitDisplay: "long" }); // "5 kilómetros"
|
|
190
|
+
compact(1200); // "1,2 K"
|
|
191
|
+
list(["manzana", "plátano", "naranja"]); // "manzana, plátano y naranja"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
La función `date()` admite preajustes (`"short"`, `"long"`, `"dateOnly"`, `"timeOnly"`, `"full"`), de manera que los casos habituales no precisen de un objeto de opciones extenso. Existen equivalentes para React y Vue como hooks y composables que resuelven el idioma activo directamente desde el contexto de la aplicación.
|
|
195
|
+
|
|
196
|
+
Esto representa una capa de caché y resolución de locale por defecto construida sobre las APIs estándar de la plataforma. La lógica de formateo sigue siendo la de `Intl`. Puedes consultar las firmas completas en la [documentación de formateadores](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/formatters.md).
|
|
197
|
+
|
|
198
|
+
## Errores habituales
|
|
199
|
+
|
|
200
|
+
- **`toLocaleDateString()` sin indicar locale.** Toma la configuración regional del host, que en un servidor depende de cómo se construyó el contenedor.
|
|
201
|
+
- **Formatear dentro de un bucle.** La instanciación del formateador concentra casi todo el costo. Construye una sola vez.
|
|
202
|
+
- **Omitir `timeZone` en fechas isomórficas.** Desencadena errores de hidratación imposibles de reproducir en tu máquina local.
|
|
203
|
+
- **Inferir la moneda a partir del idioma.** `fr-FR` no implica automáticamente euros.
|
|
204
|
+
- **Usar `sort()` directo sobre texto visible.** Emplea siempre `Intl.Collator`.
|
|
205
|
+
- **Escribir meses o días fijos en el código.** Ya están disponibles en CLDR para cada idioma.
|
|
206
|
+
- **Mantener `numeric: "always"` en tiempo relativo.** Provoca "hace 1 día" en lenguas que cuentan con una palabra específica como ayer.
|
|
207
|
+
|
|
208
|
+
## Para profundizar
|
|
209
|
+
|
|
210
|
+
- [Formateadores y utilidades de idioma: `number`, `currency`, `date`, `relativeTime`, `list`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/formatters.md)
|
|
211
|
+
- [Referencia de configuración](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/configuration.md)
|
|
212
|
+
- [Informes de benchmark entre frameworks](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/benchmark/index.md)
|
|
213
|
+
- [Adaptador de compatibilidad react-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/compat/react-intl.md)
|
|
214
|
+
- [Formato de mensajes ICU: plurales, selección y esqueletos numéricos](https://github.com/aymericzip/intlayer/blob/main/docs/blog/es/icu_message_format.md)
|
|
215
|
+
- [Cómo probar traducciones, incluyendo formateadores y plurales](https://github.com/aymericzip/intlayer/blob/main/docs/blog/es/i18n_testing_strategies.md)
|
|
216
|
+
- [Qué abarca realmente la internacionalización](https://github.com/aymericzip/intlayer/blob/main/docs/blog/es/what_is_internationalization.md)
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-02
|
|
3
|
+
updatedAt: 2026-09-02
|
|
4
|
+
title: "Cómo detectar traducciones faltantes antes de que lo hagan tus usuarios"
|
|
5
|
+
description: Las traducciones faltantes fallan en silencio. Por qué el fallback las oculta, las cuatro capas de detección efectivas y cómo bloquear una compilación por una clave no traducida.
|
|
6
|
+
keywords:
|
|
7
|
+
- encontrar traducciones faltantes
|
|
8
|
+
- claves de traducción faltantes
|
|
9
|
+
- auditoría i18n
|
|
10
|
+
- cadenas no traducidas
|
|
11
|
+
- cobertura de traducción
|
|
12
|
+
- lint i18n
|
|
13
|
+
slugs:
|
|
14
|
+
- blog
|
|
15
|
+
- detecting-missing-translations
|
|
16
|
+
author: aymericzip
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Cómo detectar traducciones faltantes antes de que lo hagan tus usuarios
|
|
20
|
+
|
|
21
|
+
Una traducción faltante casi nunca genera una excepción explícita. Según tu configuración, le muestra el texto en inglés a un usuario en Japón, o imprime `checkout.summary.total` en plena pantalla en producción. Ambos problemas se despliegan, ambos pasan la revisión de código sin alertas, y ambos terminan siendo descubiertos por un cliente antes que por ti.
|
|
22
|
+
|
|
23
|
+
## Tabla de contenidos
|
|
24
|
+
|
|
25
|
+
<TOC/>
|
|
26
|
+
|
|
27
|
+
## Esto aplica sin importar la biblioteca que utilices
|
|
28
|
+
|
|
29
|
+
Nada de lo expuesto aquí depende de una tecnología en particular. Las capas de detección funcionan igual en i18next, react-i18next, next-intl, react-intl, vue-i18n, next-translate o Lingui, porque todas resuelven las claves y fallan bajo la misma lógica.
|
|
30
|
+
|
|
31
|
+
Las herramientas también son portables. Si tus mensajes están hoy en catálogos JSON, el [plugin Sync JSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/plugins/sync-json.md) conecta Intlayer a esos archivos para que obtengas los comandos de auditoría, autocompletado y pruebas sin mover tu contenido ni alterar un solo import:
|
|
32
|
+
|
|
33
|
+
```ts fileName="intlayer.config.ts"
|
|
34
|
+
import { syncJSON } from "@intlayer/sync-json-plugin";
|
|
35
|
+
|
|
36
|
+
const config = {
|
|
37
|
+
plugins: [
|
|
38
|
+
syncJSON({
|
|
39
|
+
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
40
|
+
format: "i18next", // o "icu" para next-intl / react-intl
|
|
41
|
+
}),
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export default config;
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Si prefieres mantener idéntica la API en tiempo de ejecución, los [adaptadores de compatibilidad](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/compat/index.md) crean alias para `useTranslation`, `$t` y similares en el empaquetador. En cualquier caso, toma los comandos siguientes como una implementación concreta de la idea, no como una imposición.
|
|
49
|
+
|
|
50
|
+
## Por qué son invisibles
|
|
51
|
+
|
|
52
|
+
Cada biblioteca de i18n resuelve una clave mediante la misma cadena: buscar en el locale activo, recurrir a un valor predeterminado por fallback y, si eso falla, devolver la clave literal. Este último paso es el verdadero problema. No hay error, no hay advertencia en producción y ningún test falla, porque nada en la canalización considera anormal una clave no traducida.
|
|
53
|
+
|
|
54
|
+
El fallback empeora las cosas en lugar de solucionarlas. Una página que se muestra silenciosamente en inglés luce impecable para un desarrollador que habla inglés y para cada verificación automatizada de tu CI. El error solo es perceptible para la persona que no comprende el resultado.
|
|
55
|
+
|
|
56
|
+
Así que la pregunta no es "cómo manejo las traducciones faltantes en tiempo de ejecución". Es "cómo hago que sea imposible hacer merge de una traducción faltante".
|
|
57
|
+
|
|
58
|
+
## Los cuatro lugares donde puedes detectarlas
|
|
59
|
+
|
|
60
|
+
Cada capa detecta situaciones que las otras ignoran. Necesitas más de una.
|
|
61
|
+
|
|
62
|
+
| Capa | Detecta | Pasa por alto |
|
|
63
|
+
| :-------------- | :------------------------------------------- | :--------------------------------------------- |
|
|
64
|
+
| Tipos | Claves que no existen en absoluto | Clave existente pero sin traducir en `ja` |
|
|
65
|
+
| Linter | Cadenas fijas nunca enviadas a traducir | Claves omitidas de un catálogo |
|
|
66
|
+
| Auditoría | Cobertura de locales en cada clave declarada | Textos que nunca se prepararon para traducir |
|
|
67
|
+
| Tests de render | Claves que se resuelven pero se muestran mal | Todo lo no cubierto explícitamente por un test |
|
|
68
|
+
|
|
69
|
+
La brecha habitual en la mayoría de los equipos está en la tercera fila: saben que sus claves son válidas, pero nada comprueba que los dieciocho idiomas cuenten efectivamente con un valor.
|
|
70
|
+
|
|
71
|
+
## Capa 1: haz que la clave sea un tipo, no un string
|
|
72
|
+
|
|
73
|
+
`t("checkout.summry.total")` es un simple error tipográfico que compila sin problemas. Si tus claves son cadenas planas, cada cambio de nombre es un riesgo en producción y cada eliminación deja una clave huérfana.
|
|
74
|
+
|
|
75
|
+
Las claves tipadas convierten ese error en un fallo de compilación. `react-i18next` lo soporta mediante declaration merging, `next-intl` lo infiere de la estructura de mensajes, Lingui deriva identificadores del texto de origen e Intlayer genera tipos a partir de los archivos de declaración. Todos cumplen su propósito; lo que cambia es la cantidad de código de configuración que debes escribir.
|
|
76
|
+
|
|
77
|
+
Esta capa es necesaria pero no suficiente. Los tipos describen la estructura del catálogo por defecto. No dicen nada sobre si el coreano tiene un valor asignado para esa clave.
|
|
78
|
+
|
|
79
|
+
## Capa 2: inspecciona con linter las cadenas que nunca llegaron a ser claves
|
|
80
|
+
|
|
81
|
+
La traducción que no encuentras suele ser la que nunca se externalizó. Un texto hardcodeado dentro de un componente es invisible para cualquier auditoría de catálogo, porque para las herramientas simplemente no existe.
|
|
82
|
+
|
|
83
|
+
El plugin de ESLint de Intlayer cubre esto con `no-raw-text`, sumado a `no-unused-content` para el caso inverso: contenido declarado que ya no se utiliza en ninguna parte.
|
|
84
|
+
|
|
85
|
+
```js fileName="eslint.config.mjs"
|
|
86
|
+
import intlayer from "@intlayer/eslint-plugin";
|
|
87
|
+
|
|
88
|
+
export default [
|
|
89
|
+
intlayer.configs.recommended,
|
|
90
|
+
{
|
|
91
|
+
rules: {
|
|
92
|
+
"@intlayer/no-raw-text": "error",
|
|
93
|
+
"@intlayer/no-unused-content": "warn",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
`no-unused-content` evita que los catálogos crezcan descontroladamente. Las claves muertas no rompen la aplicación, pero engrosan innecesariamente las facturas de traducción. Revisa la lista de reglas en la [documentación del plugin ESLint](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/eslint.md).
|
|
100
|
+
|
|
101
|
+
## Capa 3: audita la cobertura de locales
|
|
102
|
+
|
|
103
|
+
Esta capa responde directamente a la pregunta principal. Intlayer la incluye como comando de CLI:
|
|
104
|
+
|
|
105
|
+
```bash packageManager="npm"
|
|
106
|
+
npx intlayer content test
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Lee los idiomas configurados y los diccionarios declarados, e informa con precisión qué claves faltan en qué idiomas y en qué archivo.
|
|
110
|
+
|
|
111
|
+
Un detalle crucial antes de incorporarlo en tus pipelines: **el CLI imprime un reporte pero devuelve código de salida cero.** Si lo agregas esperando que bloquee un build defectuoso, obtendrás una ejecución verde con un informe que nadie leerá. Para bloquear builds, utiliza la API programática que se detalla a continuación.
|
|
112
|
+
|
|
113
|
+
## Capa 4: compruébalo mediante aserciones en la suite de pruebas
|
|
114
|
+
|
|
115
|
+
`listMissingTranslations()` te devuelve la misma auditoría estructurada como datos, ideal para crear una barrera de compilación.
|
|
116
|
+
|
|
117
|
+
```ts fileName="i18n.test.ts"
|
|
118
|
+
/* @vitest-environment node */
|
|
119
|
+
import { listMissingTranslations } from "intlayer/cli";
|
|
120
|
+
import { describe, expect, it } from "vitest";
|
|
121
|
+
|
|
122
|
+
describe("translations", () => {
|
|
123
|
+
it("no tiene locales requeridos faltantes", async () => {
|
|
124
|
+
const result = await listMissingTranslations();
|
|
125
|
+
|
|
126
|
+
if (result.missingRequiredLocales.length > 0) {
|
|
127
|
+
console.log(result.missingTranslations);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
expect(result.missingRequiredLocales).toHaveLength(0);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Se devuelven tres campos y la distinción es importante:
|
|
136
|
+
|
|
137
|
+
- `missingTranslations`: por cada clave, qué idiomas faltan y en qué archivo se encuentran. Esto es lo que imprimes si la prueba falla.
|
|
138
|
+
- `missingLocales`: la unión de idiomas faltantes en todas las claves.
|
|
139
|
+
- `missingRequiredLocales`: limitado a los `requiredLocales` de tu configuración, o todos si no definiste la propiedad.
|
|
140
|
+
|
|
141
|
+
## `requiredLocales` es el parámetro que hace viable el control
|
|
142
|
+
|
|
143
|
+
Soportar dieciocho idiomas no significa que todos deban estar completos al 100% para poder desplegar. Casi todos los equipos tienen un nivel crítico que bloquea el lanzamiento y otro nivel que se completa progresivamente.
|
|
144
|
+
|
|
145
|
+
```ts fileName="intlayer.config.ts"
|
|
146
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
147
|
+
|
|
148
|
+
const config: IntlayerConfig = {
|
|
149
|
+
internationalization: {
|
|
150
|
+
locales: [
|
|
151
|
+
Locales.ENGLISH,
|
|
152
|
+
Locales.FRENCH,
|
|
153
|
+
Locales.JAPANESE,
|
|
154
|
+
Locales.POLISH,
|
|
155
|
+
],
|
|
156
|
+
requiredLocales: [Locales.ENGLISH, Locales.FRENCH],
|
|
157
|
+
defaultLocale: Locales.ENGLISH,
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
export default config;
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Sin `requiredLocales`, cada idioma configurado se vuelve obligatorio y tu build permanecerá roto hasta que llegue la última traducción. Esa es la razón por la que los equipos terminan desactivando el chequeo por completo, lo cual es peor que no tenerlo.
|
|
165
|
+
|
|
166
|
+
## Encontrar las omisiones que ya están en producción
|
|
167
|
+
|
|
168
|
+
Las capas anteriores evitan nuevas omisiones. Para una aplicación que ya está en vivo, dos estrategias resultan muy útiles.
|
|
169
|
+
|
|
170
|
+
**Pseudolocalización.** Ejecuta un idioma ficticio donde cada cadena se modifique, por ejemplo `[!!! Ĉĥéçķöũţ !!!]`. Cualquier texto que permanezca en inglés normal está hardcodeado. Descubre en diez minutos lo que una auditoría de catálogo no puede ver por diseño, ya que analiza la página renderizada y no los archivos de datos.
|
|
171
|
+
|
|
172
|
+
**Rastrea tu propio sitio.** Si manejas URLs localizadas, haz peticiones a páginas de muestra por cada idioma y busca en el HTML las cadenas de tu idioma base. Una página en `/ja/` que contiene "Add to cart" es una traducción faltante o un fallback no planificado.
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
curl -s https://example.com/ja/checkout | grep -c "Add to cart"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Llenar los vacíos
|
|
179
|
+
|
|
180
|
+
Cuando sabes qué falta, `intlayer fill` autocompleta las entradas vacías, y la opción `autoFill` genera archivos por idioma al declarar contenido. Consulta [autoFill](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/autoFill.md).
|
|
181
|
+
|
|
182
|
+
Conviene ser realistas: las traducciones generadas automáticamente convierten una falta _visible_ en una falta _invisible_. La clave ahora tiene contenido, la auditoría se pone en verde y nadie ha revisado el texto. Úsalo para desbloquear entregas y luego envía las salidas a revisión humana en todo texto crítico para la toma de decisiones. Es una ayuda inicial, no un reemplazo.
|
|
183
|
+
|
|
184
|
+
## Errores comunes
|
|
185
|
+
|
|
186
|
+
- **Tratar el fallback como una funcionalidad de protección.** Es solo una estrategia de renderizado de emergencia, no una red de seguridad. Una página que calladamente sale en inglés es un bug que nadie reporta.
|
|
187
|
+
- **Confiar en el reporte de CLI para bloquear CI.** `intlayer content test` sale con código cero. Usa una aserción en tests.
|
|
188
|
+
- **Exigir todos los idiomas.** La comprobación se desactiva en cuanto frena una entrega por una traducción parcial.
|
|
189
|
+
- **Auditar catálogos pero nunca la pantalla renderizada.** Las cadenas hardcodeadas son invisibles en los catálogos por definición.
|
|
190
|
+
- **Comprobar únicamente el idioma por defecto.** Es el único que nunca va a faltar.
|
|
191
|
+
- **Dar por cerrado el ciclo solo con autocompletado de IA.** Auditoría en verde con textos jamás revisados.
|
|
192
|
+
|
|
193
|
+
## Para profundizar
|
|
194
|
+
|
|
195
|
+
- [Probar el contenido: auditoría CLI, API programática y aserciones UI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/testing.md)
|
|
196
|
+
- [Reglas del plugin ESLint, incluyendo `no-raw-text` y `no-unused-content`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/eslint.md)
|
|
197
|
+
- [autoFill: generación de archivos de declaración por locale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/autoFill.md)
|
|
198
|
+
- [Referencia de configuración: `locales`, `requiredLocales`, `defaultLocale`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/configuration.md)
|
|
199
|
+
- [Informes de benchmark entre frameworks](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/benchmark/index.md)
|
|
200
|
+
- [Adaptador de compatibilidad i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/compat/i18next.md)
|
|
201
|
+
- [Qué abarca realmente la internacionalización](https://github.com/aymericzip/intlayer/blob/main/docs/blog/es/what_is_internationalization.md)
|
|
202
|
+
- [i18n por componente vs centralizada](https://github.com/aymericzip/intlayer/blob/main/docs/blog/es/per-component_vs_centralized_i18n.md)
|