@intlayer/docs 9.5.1 → 9.5.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/history_of_i18n.md +304 -0
- package/blog/ar/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/ar/i18next_vs_intlayer.md +445 -0
- package/blog/ar/is_i18next_outdated.md +1 -1
- package/blog/ar/is_next-intl_outdated.md +1 -1
- package/blog/ar/is_vue-i18n_outdated.md +1 -1
- package/blog/ar/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/ar/lingui_vs_intlayer.md +381 -0
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/ar/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/ar/next-intl_vs_intlayer.md +397 -0
- package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +286 -0
- package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/de/history_of_i18n.md +304 -0
- package/blog/de/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/de/i18next_vs_intlayer.md +445 -0
- package/blog/de/is_i18next_outdated.md +1 -1
- package/blog/de/is_next-intl_outdated.md +1 -1
- package/blog/de/is_vue-i18n_outdated.md +1 -1
- package/blog/de/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/de/lingui_vs_intlayer.md +381 -0
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/de/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/de/next-intl_vs_intlayer.md +415 -0
- package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/de/vue-i18n_vs_intlayer_benchmark.md +355 -0
- package/blog/en/history_of_i18n.md +304 -0
- package/blog/en/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/en/i18next_vs_intlayer.md +445 -0
- package/blog/en/is_i18next_outdated.md +1 -1
- package/blog/en/is_next-intl_outdated.md +1 -1
- package/blog/en/is_vue-i18n_outdated.md +1 -1
- package/blog/en/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/en/lingui_vs_intlayer.md +381 -0
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/en/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/en/next-intl_vs_intlayer.md +415 -0
- package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/en/vue-i18n_vs_intlayer.md +1 -1
- package/blog/en/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/en-GB/history_of_i18n.md +304 -0
- package/blog/en-GB/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/en-GB/i18next_vs_intlayer.md +445 -0
- package/blog/en-GB/is_i18next_outdated.md +1 -1
- package/blog/en-GB/is_next-intl_outdated.md +1 -1
- package/blog/en-GB/is_vue-i18n_outdated.md +1 -1
- package/blog/en-GB/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/en-GB/lingui_vs_intlayer.md +381 -0
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/en-GB/next-intl_vs_intlayer.md +415 -0
- package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/en-GB/vue-i18n_vs_intlayer.md +1 -1
- package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +245 -0
- package/blog/es/history_of_i18n.md +304 -0
- package/blog/es/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/es/i18next_vs_intlayer.md +445 -0
- package/blog/es/is_i18next_outdated.md +1 -1
- package/blog/es/is_next-intl_outdated.md +1 -1
- package/blog/es/is_vue-i18n_outdated.md +1 -1
- package/blog/es/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/es/lingui_vs_intlayer.md +381 -0
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/es/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/es/next-intl_vs_intlayer.md +417 -0
- package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/es/vue-i18n_vs_intlayer_benchmark.md +363 -0
- package/blog/fr/history_of_i18n.md +304 -0
- package/blog/fr/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/fr/i18next_vs_intlayer.md +445 -0
- package/blog/fr/is_i18next_outdated.md +1 -1
- package/blog/fr/is_next-intl_outdated.md +1 -1
- package/blog/fr/is_vue-i18n_outdated.md +1 -1
- package/blog/fr/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/fr/lingui_vs_intlayer.md +381 -0
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/fr/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/fr/next-intl_vs_intlayer.md +417 -0
- package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +287 -0
- package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +39 -0
- package/blog/hi/history_of_i18n.md +304 -0
- package/blog/hi/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/hi/i18next_vs_intlayer.md +445 -0
- package/blog/hi/is_i18next_outdated.md +1 -1
- package/blog/hi/is_next-intl_outdated.md +1 -1
- package/blog/hi/is_vue-i18n_outdated.md +1 -1
- package/blog/hi/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/hi/lingui_vs_intlayer.md +381 -0
- package/blog/hi/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/hi/next-intl_vs_intlayer.md +397 -0
- package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/id/history_of_i18n.md +304 -0
- package/blog/id/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/id/i18next_vs_intlayer.md +445 -0
- package/blog/id/is_i18next_outdated.md +1 -1
- package/blog/id/is_next-intl_outdated.md +1 -1
- package/blog/id/is_vue-i18n_outdated.md +1 -1
- package/blog/id/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/id/lingui_vs_intlayer.md +381 -0
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/id/next-intl_vs_intlayer-next-intl.md +310 -0
- package/blog/id/next-intl_vs_intlayer.md +397 -0
- package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +36 -0
- package/blog/id/vue-i18n_vs_intlayer.md +1 -1
- package/blog/id/vue-i18n_vs_intlayer_benchmark.md +41 -0
- package/blog/it/history_of_i18n.md +304 -0
- package/blog/it/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/it/i18next_vs_intlayer.md +445 -0
- package/blog/it/is_i18next_outdated.md +1 -1
- package/blog/it/is_next-intl_outdated.md +1 -1
- package/blog/it/is_vue-i18n_outdated.md +1 -1
- package/blog/it/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/it/lingui_vs_intlayer.md +381 -0
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/it/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/it/next-intl_vs_intlayer.md +418 -0
- package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/it/vue-i18n_vs_intlayer_benchmark.md +34 -0
- package/blog/ja/history_of_i18n.md +304 -0
- package/blog/ja/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/ja/i18next_vs_intlayer.md +447 -0
- package/blog/ja/is_i18next_outdated.md +1 -1
- package/blog/ja/is_next-intl_outdated.md +1 -1
- package/blog/ja/is_vue-i18n_outdated.md +1 -1
- package/blog/ja/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/ja/lingui_vs_intlayer.md +381 -0
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/ja/next-intl_vs_intlayer-next-intl.md +310 -0
- package/blog/ja/next-intl_vs_intlayer.md +422 -0
- package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/ja/vue-i18n_vs_intlayer.md +1 -1
- package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/ko/history_of_i18n.md +304 -0
- package/blog/ko/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/ko/i18next_vs_intlayer.md +447 -0
- package/blog/ko/is_i18next_outdated.md +1 -1
- package/blog/ko/is_next-intl_outdated.md +1 -1
- package/blog/ko/is_vue-i18n_outdated.md +1 -1
- package/blog/ko/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/ko/lingui_vs_intlayer.md +381 -0
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/ko/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/ko/next-intl_vs_intlayer.md +397 -0
- package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/ko/vue-i18n_vs_intlayer.md +1 -1
- package/blog/ko/vue-i18n_vs_intlayer_benchmark.md +366 -0
- package/blog/pl/history_of_i18n.md +304 -0
- package/blog/pl/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/pl/i18next_vs_intlayer.md +445 -0
- package/blog/pl/is_i18next_outdated.md +1 -1
- package/blog/pl/is_next-intl_outdated.md +1 -1
- package/blog/pl/is_vue-i18n_outdated.md +1 -1
- package/blog/pl/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/pl/lingui_vs_intlayer.md +381 -0
- package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/pl/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/pl/next-intl_vs_intlayer.md +397 -0
- package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +289 -0
- package/blog/pl/vue-i18n_vs_intlayer.md +1 -1
- package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/pt/history_of_i18n.md +304 -0
- package/blog/pt/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/pt/i18next_vs_intlayer.md +445 -0
- package/blog/pt/is_i18next_outdated.md +1 -1
- package/blog/pt/is_next-intl_outdated.md +1 -1
- package/blog/pt/is_vue-i18n_outdated.md +1 -1
- package/blog/pt/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/pt/lingui_vs_intlayer.md +381 -0
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/pt/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/pt/next-intl_vs_intlayer.md +411 -0
- package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/ru/history_of_i18n.md +304 -0
- package/blog/ru/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/ru/i18next_vs_intlayer.md +445 -0
- package/blog/ru/is_i18next_outdated.md +1 -1
- package/blog/ru/is_next-intl_outdated.md +1 -1
- package/blog/ru/is_vue-i18n_outdated.md +1 -1
- package/blog/ru/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/ru/lingui_vs_intlayer.md +381 -0
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/ru/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/ru/next-intl_vs_intlayer.md +417 -0
- package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +54 -0
- package/blog/tr/history_of_i18n.md +304 -0
- package/blog/tr/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/tr/i18next_vs_intlayer.md +445 -0
- package/blog/tr/is_i18next_outdated.md +1 -1
- package/blog/tr/is_next-intl_outdated.md +1 -1
- package/blog/tr/is_vue-i18n_outdated.md +1 -1
- package/blog/tr/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/tr/lingui_vs_intlayer.md +381 -0
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/tr/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/tr/next-intl_vs_intlayer.md +397 -0
- package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/tr/vue-i18n_vs_intlayer.md +1 -1
- package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/uk/history_of_i18n.md +304 -0
- package/blog/uk/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/uk/i18next_vs_intlayer.md +445 -0
- package/blog/uk/is_i18next_outdated.md +1 -1
- package/blog/uk/is_next-intl_outdated.md +1 -1
- package/blog/uk/is_vue-i18n_outdated.md +1 -1
- package/blog/uk/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/uk/lingui_vs_intlayer.md +381 -0
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/uk/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/uk/next-intl_vs_intlayer.md +397 -0
- package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +270 -0
- package/blog/uk/vue-i18n_vs_intlayer.md +1 -1
- package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/vi/history_of_i18n.md +304 -0
- package/blog/vi/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/vi/i18next_vs_intlayer.md +445 -0
- package/blog/vi/is_i18next_outdated.md +1 -1
- package/blog/vi/is_next-intl_outdated.md +1 -1
- package/blog/vi/is_vue-i18n_outdated.md +1 -1
- package/blog/vi/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/vi/lingui_vs_intlayer.md +381 -0
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/vi/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/vi/next-intl_vs_intlayer.md +397 -0
- package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/vi/vue-i18n_vs_intlayer.md +1 -1
- package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +0 -0
- package/blog/zh/history_of_i18n.md +304 -0
- package/blog/zh/i18next_vs_intlayer-i18next.md +327 -0
- package/blog/zh/i18next_vs_intlayer.md +445 -0
- package/blog/zh/is_i18next_outdated.md +1 -1
- package/blog/zh/is_next-intl_outdated.md +1 -1
- package/blog/zh/is_vue-i18n_outdated.md +1 -1
- package/blog/zh/lingui_vs_intlayer-lingui.md +304 -0
- package/blog/zh/lingui_vs_intlayer.md +381 -0
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
- package/blog/zh/next-intl_vs_intlayer-next-intl.md +309 -0
- package/blog/zh/next-intl_vs_intlayer.md +422 -0
- package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +1 -1
- package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
- package/blog/zh/vue-i18n_vs_intlayer.md +1 -1
- package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +30 -0
- package/dist/cjs/generated/blog.entry.cjs +180 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +0 -20
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +20 -0
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +180 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +0 -20
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +20 -0
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +9 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +0 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/docs/ar/benchmark/index.md +4 -1
- package/docs/ar/benchmark/nextjs.md +33 -28
- package/docs/ar/benchmark/solid.md +14 -11
- package/docs/ar/benchmark/svelte.md +13 -10
- package/docs/ar/benchmark/tanstack.md +30 -25
- package/docs/ar/benchmark/vue.md +12 -8
- package/docs/ar/cli/build.md +8 -1
- package/docs/ar/cli/configuration.md +3 -1
- package/docs/ar/cli/doc-review.md +8 -1
- package/docs/ar/cli/doc-translate.md +5 -1
- package/docs/ar/cli/extract.md +2 -1
- package/docs/ar/cli/fill.md +5 -1
- package/docs/ar/cli/index.md +4 -5
- package/docs/ar/cli/live.md +5 -1
- package/docs/ar/cli/login.md +2 -2
- package/docs/ar/cli/pull.md +5 -1
- package/docs/ar/cli/push.md +5 -1
- package/docs/ar/cli/scan.md +5 -1
- package/docs/ar/cli/standalone.md +5 -1
- package/docs/ar/cli/test.md +5 -1
- package/docs/ar/cli/watch.md +5 -1
- package/docs/ar/compat/i18n-js.md +1 -1
- package/docs/ar/compat/i18next.md +1 -1
- package/docs/ar/compat/lingui.md +1 -1
- package/docs/ar/compat/next-i18next.md +1 -1
- package/docs/ar/compat/next-intl.md +1 -1
- package/docs/ar/compat/next-translate.md +1 -1
- package/docs/ar/compat/ngx-translate.md +1 -1
- package/docs/ar/compat/nuxtjs-i18n.md +1 -1
- package/docs/ar/compat/polyglot.md +1 -1
- package/docs/ar/compat/react-i18next.md +1 -1
- package/docs/ar/compat/react-intl.md +1 -1
- package/docs/ar/compat/svelte-i18n.md +1 -1
- package/docs/ar/compat/transloco.md +1 -1
- package/docs/ar/compat/vue-i18n.md +1 -1
- package/docs/ar/interest_of_intlayer.md +1 -1
- package/docs/ar/intlayer_with_remix_3.md +543 -0
- package/docs/bn/cli/index.md +4 -5
- package/docs/bn/cli/scan.md +5 -1
- package/docs/bn/cli/standalone.md +5 -1
- package/docs/bn/interest_of_intlayer.md +1 -1
- package/docs/cs/cli/index.md +4 -5
- package/docs/cs/cli/scan.md +5 -1
- package/docs/cs/cli/standalone.md +5 -1
- package/docs/cs/interest_of_intlayer.md +1 -1
- package/docs/de/benchmark/index.md +4 -1
- package/docs/de/benchmark/nextjs.md +33 -28
- package/docs/de/benchmark/solid.md +14 -11
- package/docs/de/benchmark/svelte.md +13 -10
- package/docs/de/benchmark/tanstack.md +30 -25
- package/docs/de/benchmark/vue.md +12 -8
- package/docs/de/cli/build.md +8 -1
- package/docs/de/cli/configuration.md +3 -1
- package/docs/de/cli/doc-review.md +8 -1
- package/docs/de/cli/doc-translate.md +5 -1
- package/docs/de/cli/extract.md +2 -1
- package/docs/de/cli/fill.md +5 -1
- package/docs/de/cli/index.md +4 -5
- package/docs/de/cli/live.md +5 -1
- package/docs/de/cli/login.md +2 -2
- package/docs/de/cli/pull.md +5 -1
- package/docs/de/cli/push.md +5 -1
- package/docs/de/cli/scan.md +5 -1
- package/docs/de/cli/standalone.md +5 -1
- package/docs/de/cli/test.md +5 -1
- package/docs/de/cli/watch.md +5 -1
- package/docs/de/compat/i18n-js.md +1 -1
- package/docs/de/compat/i18next.md +1 -1
- package/docs/de/compat/lingui.md +1 -1
- package/docs/de/compat/next-i18next.md +1 -1
- package/docs/de/compat/next-intl.md +1 -1
- package/docs/de/compat/next-translate.md +1 -1
- package/docs/de/compat/ngx-translate.md +1 -1
- package/docs/de/compat/nuxtjs-i18n.md +1 -1
- package/docs/de/compat/polyglot.md +1 -1
- package/docs/de/compat/react-i18next.md +1 -1
- package/docs/de/compat/react-intl.md +1 -1
- package/docs/de/compat/svelte-i18n.md +1 -1
- package/docs/de/compat/transloco.md +1 -1
- package/docs/de/compat/vue-i18n.md +1 -1
- package/docs/de/interest_of_intlayer.md +1 -1
- package/docs/de/intlayer_with_remix_3.md +543 -0
- package/docs/en/benchmark/index.md +4 -1
- package/docs/en/benchmark/nextjs.md +33 -28
- package/docs/en/benchmark/solid.md +14 -11
- package/docs/en/benchmark/svelte.md +13 -10
- package/docs/en/benchmark/tanstack.md +31 -26
- package/docs/en/benchmark/vue.md +12 -8
- package/docs/en/cli/build.md +8 -1
- package/docs/en/cli/configuration.md +3 -1
- package/docs/en/cli/doc-review.md +8 -1
- package/docs/en/cli/doc-translate.md +5 -1
- package/docs/en/cli/extract.md +2 -1
- package/docs/en/cli/fill.md +5 -1
- package/docs/en/cli/index.md +4 -5
- package/docs/en/cli/live.md +5 -1
- package/docs/en/cli/login.md +2 -2
- package/docs/en/cli/pull.md +5 -1
- package/docs/en/cli/push.md +5 -1
- package/docs/en/cli/scan.md +5 -1
- package/docs/en/cli/standalone.md +5 -1
- package/docs/en/cli/test.md +5 -1
- package/docs/en/cli/watch.md +5 -1
- package/docs/en/compat/i18n-js.md +1 -1
- package/docs/en/compat/i18next.md +1 -1
- package/docs/en/compat/lingui.md +1 -1
- package/docs/en/compat/next-i18next.md +1 -1
- package/docs/en/compat/next-intl.md +1 -1
- package/docs/en/compat/next-translate.md +1 -1
- package/docs/en/compat/ngx-translate.md +1 -1
- package/docs/en/compat/nuxtjs-i18n.md +1 -1
- package/docs/en/compat/polyglot.md +1 -1
- package/docs/en/compat/react-i18next.md +1 -1
- package/docs/en/compat/react-intl.md +1 -1
- package/docs/en/compat/svelte-i18n.md +1 -1
- package/docs/en/compat/transloco.md +1 -1
- package/docs/en/compat/vue-i18n.md +1 -1
- package/docs/en/interest_of_intlayer.md +1 -1
- package/docs/en/intlayer_with_remix_3.md +103 -71
- package/docs/en-GB/benchmark/index.md +4 -1
- package/docs/en-GB/benchmark/nextjs.md +33 -28
- package/docs/en-GB/benchmark/solid.md +14 -11
- package/docs/en-GB/benchmark/svelte.md +13 -10
- package/docs/en-GB/benchmark/tanstack.md +30 -25
- package/docs/en-GB/benchmark/vue.md +12 -8
- package/docs/en-GB/cli/build.md +8 -1
- package/docs/en-GB/cli/configuration.md +3 -1
- package/docs/en-GB/cli/doc-review.md +8 -1
- package/docs/en-GB/cli/doc-translate.md +5 -1
- package/docs/en-GB/cli/extract.md +2 -1
- package/docs/en-GB/cli/fill.md +5 -1
- package/docs/en-GB/cli/index.md +4 -5
- package/docs/en-GB/cli/live.md +5 -1
- package/docs/en-GB/cli/login.md +2 -2
- package/docs/en-GB/cli/pull.md +5 -1
- package/docs/en-GB/cli/push.md +5 -1
- package/docs/en-GB/cli/scan.md +5 -1
- package/docs/en-GB/cli/standalone.md +5 -1
- package/docs/en-GB/cli/test.md +5 -1
- package/docs/en-GB/cli/watch.md +5 -1
- package/docs/en-GB/compat/i18n-js.md +1 -1
- package/docs/en-GB/compat/i18next.md +1 -1
- package/docs/en-GB/compat/lingui.md +1 -1
- package/docs/en-GB/compat/next-i18next.md +1 -1
- package/docs/en-GB/compat/next-intl.md +1 -1
- package/docs/en-GB/compat/next-translate.md +1 -1
- package/docs/en-GB/compat/ngx-translate.md +1 -1
- package/docs/en-GB/compat/nuxtjs-i18n.md +1 -1
- package/docs/en-GB/compat/polyglot.md +1 -1
- package/docs/en-GB/compat/react-i18next.md +1 -1
- package/docs/en-GB/compat/react-intl.md +1 -1
- package/docs/en-GB/compat/svelte-i18n.md +1 -1
- package/docs/en-GB/compat/transloco.md +1 -1
- package/docs/en-GB/compat/vue-i18n.md +1 -1
- package/docs/en-GB/interest_of_intlayer.md +1 -1
- package/docs/en-GB/intlayer_with_remix_3.md +558 -0
- package/docs/es/benchmark/index.md +4 -1
- package/docs/es/benchmark/nextjs.md +33 -28
- package/docs/es/benchmark/solid.md +14 -11
- package/docs/es/benchmark/svelte.md +13 -10
- package/docs/es/benchmark/tanstack.md +30 -25
- package/docs/es/benchmark/vue.md +12 -8
- package/docs/es/cli/build.md +8 -1
- package/docs/es/cli/configuration.md +3 -1
- package/docs/es/cli/doc-review.md +8 -1
- package/docs/es/cli/doc-translate.md +5 -1
- package/docs/es/cli/extract.md +2 -1
- package/docs/es/cli/fill.md +5 -1
- package/docs/es/cli/index.md +4 -5
- package/docs/es/cli/live.md +5 -1
- package/docs/es/cli/login.md +2 -2
- package/docs/es/cli/pull.md +5 -1
- package/docs/es/cli/push.md +5 -1
- package/docs/es/cli/scan.md +5 -1
- package/docs/es/cli/standalone.md +5 -1
- package/docs/es/cli/test.md +5 -1
- package/docs/es/cli/watch.md +5 -1
- package/docs/es/compat/i18n-js.md +1 -1
- package/docs/es/compat/i18next.md +1 -1
- package/docs/es/compat/lingui.md +1 -1
- package/docs/es/compat/next-i18next.md +1 -1
- package/docs/es/compat/next-intl.md +1 -1
- package/docs/es/compat/next-translate.md +1 -1
- package/docs/es/compat/ngx-translate.md +1 -1
- package/docs/es/compat/nuxtjs-i18n.md +1 -1
- package/docs/es/compat/polyglot.md +1 -1
- package/docs/es/compat/react-i18next.md +1 -1
- package/docs/es/compat/react-intl.md +1 -1
- package/docs/es/compat/svelte-i18n.md +1 -1
- package/docs/es/compat/transloco.md +1 -1
- package/docs/es/compat/vue-i18n.md +1 -1
- package/docs/es/interest_of_intlayer.md +1 -1
- package/docs/es/intlayer_with_remix_3.md +540 -0
- package/docs/fr/benchmark/index.md +4 -1
- package/docs/fr/benchmark/nextjs.md +33 -28
- package/docs/fr/benchmark/solid.md +14 -11
- package/docs/fr/benchmark/svelte.md +13 -10
- package/docs/fr/benchmark/tanstack.md +30 -25
- package/docs/fr/benchmark/vue.md +12 -8
- package/docs/fr/cli/build.md +8 -1
- package/docs/fr/cli/configuration.md +3 -1
- package/docs/fr/cli/doc-review.md +8 -1
- package/docs/fr/cli/doc-translate.md +5 -1
- package/docs/fr/cli/extract.md +2 -1
- package/docs/fr/cli/fill.md +5 -1
- package/docs/fr/cli/index.md +4 -5
- package/docs/fr/cli/live.md +5 -1
- package/docs/fr/cli/login.md +2 -2
- package/docs/fr/cli/pull.md +5 -1
- package/docs/fr/cli/push.md +5 -1
- package/docs/fr/cli/scan.md +5 -1
- package/docs/fr/cli/standalone.md +5 -1
- package/docs/fr/cli/test.md +5 -1
- package/docs/fr/cli/watch.md +5 -1
- package/docs/fr/compat/i18n-js.md +1 -1
- package/docs/fr/compat/i18next.md +1 -1
- package/docs/fr/compat/lingui.md +1 -1
- package/docs/fr/compat/next-i18next.md +1 -1
- package/docs/fr/compat/next-intl.md +1 -1
- package/docs/fr/compat/next-translate.md +1 -1
- package/docs/fr/compat/ngx-translate.md +1 -1
- package/docs/fr/compat/nuxtjs-i18n.md +1 -1
- package/docs/fr/compat/polyglot.md +1 -1
- package/docs/fr/compat/react-i18next.md +1 -1
- package/docs/fr/compat/react-intl.md +1 -1
- package/docs/fr/compat/svelte-i18n.md +1 -1
- package/docs/fr/compat/transloco.md +1 -1
- package/docs/fr/compat/vue-i18n.md +1 -1
- package/docs/fr/interest_of_intlayer.md +1 -1
- package/docs/fr/intlayer_with_remix_3.md +540 -0
- package/docs/hi/benchmark/index.md +4 -1
- package/docs/hi/benchmark/nextjs.md +33 -28
- package/docs/hi/benchmark/solid.md +14 -11
- package/docs/hi/benchmark/svelte.md +13 -10
- package/docs/hi/benchmark/tanstack.md +30 -25
- package/docs/hi/benchmark/vue.md +12 -8
- package/docs/hi/cli/build.md +8 -1
- package/docs/hi/cli/configuration.md +3 -1
- package/docs/hi/cli/doc-review.md +8 -1
- package/docs/hi/cli/doc-translate.md +5 -1
- package/docs/hi/cli/extract.md +2 -1
- package/docs/hi/cli/fill.md +5 -1
- package/docs/hi/cli/index.md +4 -5
- package/docs/hi/cli/live.md +5 -1
- package/docs/hi/cli/login.md +2 -2
- package/docs/hi/cli/pull.md +5 -1
- package/docs/hi/cli/push.md +5 -1
- package/docs/hi/cli/scan.md +5 -1
- package/docs/hi/cli/standalone.md +5 -1
- package/docs/hi/cli/test.md +5 -1
- package/docs/hi/cli/watch.md +5 -1
- package/docs/hi/compat/i18n-js.md +1 -1
- package/docs/hi/compat/i18next.md +1 -1
- package/docs/hi/compat/lingui.md +1 -1
- package/docs/hi/compat/next-i18next.md +1 -1
- package/docs/hi/compat/next-intl.md +1 -1
- package/docs/hi/compat/next-translate.md +1 -1
- package/docs/hi/compat/ngx-translate.md +1 -1
- package/docs/hi/compat/nuxtjs-i18n.md +1 -1
- package/docs/hi/compat/polyglot.md +1 -1
- package/docs/hi/compat/react-i18next.md +1 -1
- package/docs/hi/compat/react-intl.md +1 -1
- package/docs/hi/compat/svelte-i18n.md +1 -1
- package/docs/hi/compat/transloco.md +1 -1
- package/docs/hi/compat/vue-i18n.md +1 -1
- package/docs/hi/interest_of_intlayer.md +1 -1
- package/docs/hi/intlayer_with_remix_3.md +543 -0
- package/docs/id/benchmark/index.md +4 -1
- package/docs/id/benchmark/nextjs.md +33 -28
- package/docs/id/benchmark/solid.md +14 -11
- package/docs/id/benchmark/svelte.md +13 -10
- package/docs/id/benchmark/tanstack.md +30 -25
- package/docs/id/benchmark/vue.md +12 -8
- package/docs/id/cli/build.md +8 -1
- package/docs/id/cli/configuration.md +3 -1
- package/docs/id/cli/doc-review.md +8 -1
- package/docs/id/cli/doc-translate.md +5 -1
- package/docs/id/cli/extract.md +2 -1
- package/docs/id/cli/fill.md +5 -1
- package/docs/id/cli/index.md +4 -5
- package/docs/id/cli/live.md +5 -1
- package/docs/id/cli/login.md +2 -2
- package/docs/id/cli/pull.md +5 -1
- package/docs/id/cli/push.md +5 -1
- package/docs/id/cli/scan.md +5 -1
- package/docs/id/cli/standalone.md +5 -1
- package/docs/id/cli/test.md +5 -1
- package/docs/id/cli/watch.md +5 -1
- package/docs/id/compat/i18n-js.md +1 -1
- package/docs/id/compat/i18next.md +1 -1
- package/docs/id/compat/lingui.md +1 -1
- package/docs/id/compat/next-i18next.md +1 -1
- package/docs/id/compat/next-intl.md +1 -1
- package/docs/id/compat/next-translate.md +1 -1
- package/docs/id/compat/ngx-translate.md +1 -1
- package/docs/id/compat/nuxtjs-i18n.md +1 -1
- package/docs/id/compat/polyglot.md +1 -1
- package/docs/id/compat/react-i18next.md +1 -1
- package/docs/id/compat/react-intl.md +1 -1
- package/docs/id/compat/svelte-i18n.md +1 -1
- package/docs/id/compat/transloco.md +1 -1
- package/docs/id/compat/vue-i18n.md +1 -1
- package/docs/id/interest_of_intlayer.md +1 -1
- package/docs/id/intlayer_with_remix_3.md +566 -0
- package/docs/it/benchmark/index.md +4 -1
- package/docs/it/benchmark/nextjs.md +33 -28
- package/docs/it/benchmark/solid.md +14 -11
- package/docs/it/benchmark/svelte.md +13 -10
- package/docs/it/benchmark/tanstack.md +30 -25
- package/docs/it/benchmark/vue.md +12 -8
- package/docs/it/cli/build.md +8 -1
- package/docs/it/cli/configuration.md +3 -1
- package/docs/it/cli/doc-review.md +8 -1
- package/docs/it/cli/doc-translate.md +5 -1
- package/docs/it/cli/extract.md +2 -1
- package/docs/it/cli/fill.md +5 -1
- package/docs/it/cli/index.md +4 -5
- package/docs/it/cli/live.md +5 -1
- package/docs/it/cli/login.md +2 -2
- package/docs/it/cli/pull.md +5 -1
- package/docs/it/cli/push.md +5 -1
- package/docs/it/cli/scan.md +5 -1
- package/docs/it/cli/standalone.md +5 -1
- package/docs/it/cli/test.md +5 -1
- package/docs/it/cli/watch.md +5 -1
- package/docs/it/compat/i18n-js.md +1 -1
- package/docs/it/compat/i18next.md +1 -1
- package/docs/it/compat/lingui.md +1 -1
- package/docs/it/compat/next-i18next.md +1 -1
- package/docs/it/compat/next-intl.md +1 -1
- package/docs/it/compat/next-translate.md +1 -1
- package/docs/it/compat/ngx-translate.md +1 -1
- package/docs/it/compat/nuxtjs-i18n.md +1 -1
- package/docs/it/compat/polyglot.md +1 -1
- package/docs/it/compat/react-i18next.md +1 -1
- package/docs/it/compat/react-intl.md +1 -1
- package/docs/it/compat/svelte-i18n.md +1 -1
- package/docs/it/compat/transloco.md +1 -1
- package/docs/it/compat/vue-i18n.md +1 -1
- package/docs/it/interest_of_intlayer.md +1 -1
- package/docs/it/intlayer_with_remix_3.md +558 -0
- package/docs/ja/benchmark/index.md +4 -1
- package/docs/ja/benchmark/nextjs.md +33 -28
- package/docs/ja/benchmark/solid.md +14 -11
- package/docs/ja/benchmark/svelte.md +13 -10
- package/docs/ja/benchmark/tanstack.md +30 -25
- package/docs/ja/benchmark/vue.md +12 -8
- package/docs/ja/cli/build.md +8 -1
- package/docs/ja/cli/configuration.md +3 -1
- package/docs/ja/cli/doc-review.md +8 -1
- package/docs/ja/cli/doc-translate.md +5 -1
- package/docs/ja/cli/extract.md +2 -1
- package/docs/ja/cli/fill.md +5 -1
- package/docs/ja/cli/index.md +4 -5
- package/docs/ja/cli/live.md +5 -1
- package/docs/ja/cli/login.md +2 -2
- package/docs/ja/cli/pull.md +5 -1
- package/docs/ja/cli/push.md +5 -1
- package/docs/ja/cli/scan.md +5 -1
- package/docs/ja/cli/standalone.md +5 -1
- package/docs/ja/cli/test.md +5 -1
- package/docs/ja/cli/watch.md +5 -1
- package/docs/ja/compat/i18n-js.md +1 -1
- package/docs/ja/compat/i18next.md +1 -1
- package/docs/ja/compat/lingui.md +1 -1
- package/docs/ja/compat/next-i18next.md +1 -1
- package/docs/ja/compat/next-intl.md +1 -1
- package/docs/ja/compat/next-translate.md +1 -1
- package/docs/ja/compat/ngx-translate.md +1 -1
- package/docs/ja/compat/nuxtjs-i18n.md +1 -1
- package/docs/ja/compat/polyglot.md +1 -1
- package/docs/ja/compat/react-i18next.md +1 -1
- package/docs/ja/compat/react-intl.md +1 -1
- package/docs/ja/compat/svelte-i18n.md +1 -1
- package/docs/ja/compat/transloco.md +1 -1
- package/docs/ja/compat/vue-i18n.md +1 -1
- package/docs/ja/interest_of_intlayer.md +1 -1
- package/docs/ja/intlayer_with_remix_3.md +558 -0
- package/docs/ko/benchmark/index.md +4 -1
- package/docs/ko/benchmark/nextjs.md +33 -28
- package/docs/ko/benchmark/solid.md +14 -11
- package/docs/ko/benchmark/svelte.md +13 -10
- package/docs/ko/benchmark/tanstack.md +30 -25
- package/docs/ko/benchmark/vue.md +12 -8
- package/docs/ko/cli/build.md +8 -1
- package/docs/ko/cli/configuration.md +3 -1
- package/docs/ko/cli/doc-review.md +8 -1
- package/docs/ko/cli/doc-translate.md +5 -1
- package/docs/ko/cli/extract.md +2 -1
- package/docs/ko/cli/fill.md +5 -1
- package/docs/ko/cli/index.md +4 -5
- package/docs/ko/cli/live.md +5 -1
- package/docs/ko/cli/login.md +2 -2
- package/docs/ko/cli/pull.md +5 -1
- package/docs/ko/cli/push.md +5 -1
- package/docs/ko/cli/scan.md +5 -1
- package/docs/ko/cli/standalone.md +5 -1
- package/docs/ko/cli/test.md +5 -1
- package/docs/ko/cli/watch.md +5 -1
- package/docs/ko/compat/i18n-js.md +1 -1
- package/docs/ko/compat/i18next.md +1 -1
- package/docs/ko/compat/lingui.md +1 -1
- package/docs/ko/compat/next-i18next.md +1 -1
- package/docs/ko/compat/next-intl.md +1 -1
- package/docs/ko/compat/next-translate.md +1 -1
- package/docs/ko/compat/ngx-translate.md +1 -1
- package/docs/ko/compat/nuxtjs-i18n.md +1 -1
- package/docs/ko/compat/polyglot.md +1 -1
- package/docs/ko/compat/react-i18next.md +1 -1
- package/docs/ko/compat/react-intl.md +1 -1
- package/docs/ko/compat/svelte-i18n.md +1 -1
- package/docs/ko/compat/transloco.md +1 -1
- package/docs/ko/compat/vue-i18n.md +1 -1
- package/docs/ko/interest_of_intlayer.md +1 -1
- package/docs/ko/intlayer_with_remix_3.md +543 -0
- package/docs/nl/cli/index.md +4 -5
- package/docs/nl/cli/scan.md +5 -1
- package/docs/nl/cli/standalone.md +5 -1
- package/docs/nl/interest_of_intlayer.md +1 -1
- package/docs/pl/benchmark/index.md +4 -1
- package/docs/pl/benchmark/nextjs.md +33 -28
- package/docs/pl/benchmark/solid.md +14 -11
- package/docs/pl/benchmark/svelte.md +13 -10
- package/docs/pl/benchmark/tanstack.md +30 -25
- package/docs/pl/benchmark/vue.md +12 -8
- package/docs/pl/cli/build.md +8 -1
- package/docs/pl/cli/configuration.md +3 -1
- package/docs/pl/cli/doc-review.md +8 -1
- package/docs/pl/cli/doc-translate.md +5 -1
- package/docs/pl/cli/extract.md +2 -1
- package/docs/pl/cli/fill.md +5 -1
- package/docs/pl/cli/index.md +4 -5
- package/docs/pl/cli/live.md +5 -1
- package/docs/pl/cli/login.md +2 -2
- package/docs/pl/cli/pull.md +5 -1
- package/docs/pl/cli/push.md +5 -1
- package/docs/pl/cli/scan.md +5 -1
- package/docs/pl/cli/standalone.md +5 -1
- package/docs/pl/cli/test.md +5 -1
- package/docs/pl/cli/watch.md +5 -1
- package/docs/pl/compat/i18n-js.md +1 -1
- package/docs/pl/compat/i18next.md +1 -1
- package/docs/pl/compat/lingui.md +1 -1
- package/docs/pl/compat/next-i18next.md +1 -1
- package/docs/pl/compat/next-intl.md +1 -1
- package/docs/pl/compat/next-translate.md +1 -1
- package/docs/pl/compat/ngx-translate.md +1 -1
- package/docs/pl/compat/nuxtjs-i18n.md +1 -1
- package/docs/pl/compat/polyglot.md +1 -1
- package/docs/pl/compat/react-i18next.md +1 -1
- package/docs/pl/compat/react-intl.md +1 -1
- package/docs/pl/compat/svelte-i18n.md +1 -1
- package/docs/pl/compat/transloco.md +1 -1
- package/docs/pl/compat/vue-i18n.md +1 -1
- package/docs/pl/interest_of_intlayer.md +1 -1
- package/docs/pl/intlayer_with_remix_3.md +551 -0
- package/docs/pt/benchmark/index.md +4 -1
- package/docs/pt/benchmark/nextjs.md +33 -28
- package/docs/pt/benchmark/solid.md +14 -11
- package/docs/pt/benchmark/svelte.md +13 -10
- package/docs/pt/benchmark/tanstack.md +30 -25
- package/docs/pt/benchmark/vue.md +12 -8
- package/docs/pt/cli/build.md +8 -1
- package/docs/pt/cli/configuration.md +3 -1
- package/docs/pt/cli/doc-review.md +8 -1
- package/docs/pt/cli/doc-translate.md +5 -1
- package/docs/pt/cli/extract.md +2 -1
- package/docs/pt/cli/fill.md +5 -1
- package/docs/pt/cli/index.md +4 -5
- package/docs/pt/cli/live.md +5 -1
- package/docs/pt/cli/login.md +2 -2
- package/docs/pt/cli/pull.md +5 -1
- package/docs/pt/cli/push.md +5 -1
- package/docs/pt/cli/scan.md +5 -1
- package/docs/pt/cli/standalone.md +5 -1
- package/docs/pt/cli/test.md +5 -1
- package/docs/pt/cli/watch.md +5 -1
- package/docs/pt/compat/i18n-js.md +1 -1
- package/docs/pt/compat/i18next.md +1 -1
- package/docs/pt/compat/lingui.md +1 -1
- package/docs/pt/compat/next-i18next.md +1 -1
- package/docs/pt/compat/next-intl.md +1 -1
- package/docs/pt/compat/next-translate.md +1 -1
- package/docs/pt/compat/ngx-translate.md +1 -1
- package/docs/pt/compat/nuxtjs-i18n.md +1 -1
- package/docs/pt/compat/polyglot.md +1 -1
- package/docs/pt/compat/react-i18next.md +1 -1
- package/docs/pt/compat/react-intl.md +1 -1
- package/docs/pt/compat/svelte-i18n.md +1 -1
- package/docs/pt/compat/transloco.md +1 -1
- package/docs/pt/compat/vue-i18n.md +1 -1
- package/docs/pt/interest_of_intlayer.md +1 -1
- package/docs/pt/intlayer_with_remix_3.md +558 -0
- package/docs/ru/benchmark/index.md +4 -1
- package/docs/ru/benchmark/nextjs.md +33 -28
- package/docs/ru/benchmark/solid.md +14 -11
- package/docs/ru/benchmark/svelte.md +13 -10
- package/docs/ru/benchmark/tanstack.md +30 -25
- package/docs/ru/benchmark/vue.md +12 -8
- package/docs/ru/cli/build.md +8 -1
- package/docs/ru/cli/configuration.md +3 -1
- package/docs/ru/cli/doc-review.md +8 -1
- package/docs/ru/cli/doc-translate.md +5 -1
- package/docs/ru/cli/extract.md +2 -1
- package/docs/ru/cli/fill.md +5 -1
- package/docs/ru/cli/index.md +4 -5
- package/docs/ru/cli/live.md +5 -1
- package/docs/ru/cli/login.md +2 -2
- package/docs/ru/cli/pull.md +5 -1
- package/docs/ru/cli/push.md +5 -1
- package/docs/ru/cli/scan.md +5 -1
- package/docs/ru/cli/standalone.md +5 -1
- package/docs/ru/cli/test.md +5 -1
- package/docs/ru/cli/watch.md +5 -1
- package/docs/ru/compat/i18n-js.md +1 -1
- package/docs/ru/compat/i18next.md +1 -1
- package/docs/ru/compat/lingui.md +1 -1
- package/docs/ru/compat/next-i18next.md +1 -1
- package/docs/ru/compat/next-intl.md +1 -1
- package/docs/ru/compat/next-translate.md +1 -1
- package/docs/ru/compat/ngx-translate.md +1 -1
- package/docs/ru/compat/nuxtjs-i18n.md +1 -1
- package/docs/ru/compat/polyglot.md +1 -1
- package/docs/ru/compat/react-i18next.md +1 -1
- package/docs/ru/compat/react-intl.md +1 -1
- package/docs/ru/compat/svelte-i18n.md +1 -1
- package/docs/ru/compat/transloco.md +1 -1
- package/docs/ru/compat/vue-i18n.md +1 -1
- package/docs/ru/interest_of_intlayer.md +1 -1
- package/docs/ru/intlayer_with_remix_3.md +558 -0
- package/docs/tr/benchmark/index.md +4 -1
- package/docs/tr/benchmark/nextjs.md +33 -28
- package/docs/tr/benchmark/solid.md +14 -11
- package/docs/tr/benchmark/svelte.md +13 -10
- package/docs/tr/benchmark/tanstack.md +30 -25
- package/docs/tr/benchmark/vue.md +12 -8
- package/docs/tr/cli/build.md +8 -1
- package/docs/tr/cli/configuration.md +3 -1
- package/docs/tr/cli/doc-review.md +8 -1
- package/docs/tr/cli/doc-translate.md +5 -1
- package/docs/tr/cli/extract.md +2 -1
- package/docs/tr/cli/fill.md +5 -1
- package/docs/tr/cli/index.md +4 -5
- package/docs/tr/cli/live.md +5 -1
- package/docs/tr/cli/login.md +2 -2
- package/docs/tr/cli/pull.md +5 -1
- package/docs/tr/cli/push.md +5 -1
- package/docs/tr/cli/scan.md +5 -1
- package/docs/tr/cli/standalone.md +5 -1
- package/docs/tr/cli/test.md +5 -1
- package/docs/tr/cli/watch.md +5 -1
- package/docs/tr/compat/i18n-js.md +1 -1
- package/docs/tr/compat/i18next.md +1 -1
- package/docs/tr/compat/lingui.md +1 -1
- package/docs/tr/compat/next-i18next.md +1 -1
- package/docs/tr/compat/next-intl.md +1 -1
- package/docs/tr/compat/next-translate.md +1 -1
- package/docs/tr/compat/ngx-translate.md +1 -1
- package/docs/tr/compat/nuxtjs-i18n.md +1 -1
- package/docs/tr/compat/polyglot.md +1 -1
- package/docs/tr/compat/react-i18next.md +1 -1
- package/docs/tr/compat/react-intl.md +1 -1
- package/docs/tr/compat/svelte-i18n.md +1 -1
- package/docs/tr/compat/transloco.md +1 -1
- package/docs/tr/compat/vue-i18n.md +1 -1
- package/docs/tr/interest_of_intlayer.md +1 -1
- package/docs/tr/intlayer_with_remix_3.md +566 -0
- package/docs/uk/benchmark/index.md +4 -1
- package/docs/uk/benchmark/nextjs.md +33 -28
- package/docs/uk/benchmark/solid.md +14 -11
- package/docs/uk/benchmark/svelte.md +13 -10
- package/docs/uk/benchmark/tanstack.md +30 -25
- package/docs/uk/benchmark/vue.md +12 -8
- package/docs/uk/cli/build.md +8 -1
- package/docs/uk/cli/configuration.md +3 -1
- package/docs/uk/cli/doc-review.md +8 -1
- package/docs/uk/cli/doc-translate.md +5 -1
- package/docs/uk/cli/extract.md +2 -1
- package/docs/uk/cli/fill.md +5 -1
- package/docs/uk/cli/index.md +4 -5
- package/docs/uk/cli/live.md +5 -1
- package/docs/uk/cli/login.md +2 -2
- package/docs/uk/cli/pull.md +5 -1
- package/docs/uk/cli/push.md +5 -1
- package/docs/uk/cli/scan.md +5 -1
- package/docs/uk/cli/standalone.md +5 -1
- package/docs/uk/cli/test.md +5 -1
- package/docs/uk/cli/watch.md +5 -1
- package/docs/uk/compat/i18n-js.md +1 -1
- package/docs/uk/compat/i18next.md +1 -1
- package/docs/uk/compat/lingui.md +1 -1
- package/docs/uk/compat/next-i18next.md +1 -1
- package/docs/uk/compat/next-intl.md +1 -1
- package/docs/uk/compat/next-translate.md +1 -1
- package/docs/uk/compat/ngx-translate.md +1 -1
- package/docs/uk/compat/nuxtjs-i18n.md +1 -1
- package/docs/uk/compat/polyglot.md +1 -1
- package/docs/uk/compat/react-i18next.md +1 -1
- package/docs/uk/compat/react-intl.md +1 -1
- package/docs/uk/compat/svelte-i18n.md +1 -1
- package/docs/uk/compat/transloco.md +1 -1
- package/docs/uk/compat/vue-i18n.md +1 -1
- package/docs/uk/interest_of_intlayer.md +1 -1
- package/docs/uk/intlayer_with_remix_3.md +566 -0
- package/docs/ur/cli/index.md +4 -5
- package/docs/ur/cli/scan.md +5 -1
- package/docs/ur/cli/standalone.md +5 -1
- package/docs/ur/interest_of_intlayer.md +1 -1
- package/docs/vi/benchmark/index.md +4 -1
- package/docs/vi/benchmark/nextjs.md +33 -28
- package/docs/vi/benchmark/solid.md +14 -11
- package/docs/vi/benchmark/svelte.md +13 -10
- package/docs/vi/benchmark/tanstack.md +30 -25
- package/docs/vi/benchmark/vue.md +12 -8
- package/docs/vi/cli/build.md +8 -1
- package/docs/vi/cli/configuration.md +3 -1
- package/docs/vi/cli/doc-review.md +8 -1
- package/docs/vi/cli/doc-translate.md +5 -1
- package/docs/vi/cli/extract.md +2 -1
- package/docs/vi/cli/fill.md +5 -1
- package/docs/vi/cli/index.md +4 -5
- package/docs/vi/cli/live.md +5 -1
- package/docs/vi/cli/login.md +2 -2
- package/docs/vi/cli/pull.md +5 -1
- package/docs/vi/cli/push.md +5 -1
- package/docs/vi/cli/scan.md +5 -1
- package/docs/vi/cli/standalone.md +5 -1
- package/docs/vi/cli/test.md +5 -1
- package/docs/vi/cli/watch.md +5 -1
- package/docs/vi/compat/i18n-js.md +1 -1
- package/docs/vi/compat/i18next.md +1 -1
- package/docs/vi/compat/lingui.md +1 -1
- package/docs/vi/compat/next-i18next.md +1 -1
- package/docs/vi/compat/next-intl.md +1 -1
- package/docs/vi/compat/next-translate.md +1 -1
- package/docs/vi/compat/ngx-translate.md +1 -1
- package/docs/vi/compat/nuxtjs-i18n.md +1 -1
- package/docs/vi/compat/polyglot.md +1 -1
- package/docs/vi/compat/react-i18next.md +1 -1
- package/docs/vi/compat/react-intl.md +1 -1
- package/docs/vi/compat/svelte-i18n.md +1 -1
- package/docs/vi/compat/transloco.md +1 -1
- package/docs/vi/compat/vue-i18n.md +1 -1
- package/docs/vi/interest_of_intlayer.md +1 -1
- package/docs/vi/intlayer_with_remix_3.md +566 -0
- package/docs/zh/benchmark/index.md +4 -1
- package/docs/zh/benchmark/nextjs.md +33 -28
- package/docs/zh/benchmark/solid.md +14 -11
- package/docs/zh/benchmark/svelte.md +13 -10
- package/docs/zh/benchmark/tanstack.md +30 -25
- package/docs/zh/benchmark/vue.md +12 -8
- package/docs/zh/cli/build.md +8 -1
- package/docs/zh/cli/configuration.md +3 -1
- package/docs/zh/cli/doc-review.md +8 -1
- package/docs/zh/cli/doc-translate.md +5 -1
- package/docs/zh/cli/extract.md +2 -1
- package/docs/zh/cli/fill.md +5 -1
- package/docs/zh/cli/index.md +4 -5
- package/docs/zh/cli/live.md +5 -1
- package/docs/zh/cli/login.md +2 -2
- package/docs/zh/cli/pull.md +5 -1
- package/docs/zh/cli/push.md +5 -1
- package/docs/zh/cli/scan.md +5 -1
- package/docs/zh/cli/standalone.md +5 -1
- package/docs/zh/cli/test.md +5 -1
- package/docs/zh/cli/watch.md +5 -1
- package/docs/zh/compat/i18n-js.md +1 -1
- package/docs/zh/compat/i18next.md +1 -1
- package/docs/zh/compat/lingui.md +1 -1
- package/docs/zh/compat/next-i18next.md +1 -1
- package/docs/zh/compat/next-intl.md +1 -1
- package/docs/zh/compat/next-translate.md +1 -1
- package/docs/zh/compat/ngx-translate.md +1 -1
- package/docs/zh/compat/nuxtjs-i18n.md +1 -1
- package/docs/zh/compat/polyglot.md +1 -1
- package/docs/zh/compat/react-i18next.md +1 -1
- package/docs/zh/compat/react-intl.md +1 -1
- package/docs/zh/compat/svelte-i18n.md +1 -1
- package/docs/zh/compat/transloco.md +1 -1
- package/docs/zh/compat/vue-i18n.md +1 -1
- package/docs/zh/interest_of_intlayer.md +1 -1
- package/docs/zh/intlayer_with_remix_3.md +558 -0
- package/docs/zh-TW/interest_of_intlayer.md +1 -1
- package/frequent_questions/ar/claude_code_token_consumption.md +152 -0
- package/frequent_questions/de/claude_code_token_consumption.md +152 -0
- package/frequent_questions/en/claude_code_token_consumption.md +152 -0
- package/frequent_questions/en-GB/claude_code_token_consumption.md +152 -0
- package/frequent_questions/es/claude_code_token_consumption.md +152 -0
- package/frequent_questions/fr/claude_code_token_consumption.md +152 -0
- package/frequent_questions/hi/claude_code_token_consumption.md +152 -0
- package/frequent_questions/id/claude_code_token_consumption.md +152 -0
- package/frequent_questions/it/claude_code_token_consumption.md +152 -0
- package/frequent_questions/ja/claude_code_token_consumption.md +152 -0
- package/frequent_questions/ko/claude_code_token_consumption.md +152 -0
- package/frequent_questions/pl/claude_code_token_consumption.md +152 -0
- package/frequent_questions/pt/claude_code_token_consumption.md +152 -0
- package/frequent_questions/ru/claude_code_token_consumption.md +152 -0
- package/frequent_questions/tr/claude_code_token_consumption.md +152 -0
- package/frequent_questions/uk/claude_code_token_consumption.md +152 -0
- package/frequent_questions/vi/claude_code_token_consumption.md +152 -0
- package/frequent_questions/zh/claude_code_token_consumption.md +152 -0
- package/package.json +7 -7
- package/src/generated/blog.entry.ts +180 -0
- package/src/generated/docs.entry.ts +0 -20
- package/src/generated/frequentQuestions.entry.ts +20 -0
- package/docs/ar/cli/ci.md +0 -186
- package/docs/de/cli/ci.md +0 -186
- package/docs/en/cli/ci.md +0 -216
- package/docs/en-GB/cli/ci.md +0 -186
- package/docs/es/cli/ci.md +0 -186
- package/docs/fr/cli/ci.md +0 -186
- package/docs/hi/cli/ci.md +0 -186
- package/docs/id/cli/ci.md +0 -186
- package/docs/it/cli/ci.md +0 -186
- package/docs/ja/cli/ci.md +0 -186
- package/docs/ko/cli/ci.md +0 -186
- package/docs/pl/cli/ci.md +0 -186
- package/docs/pt/cli/ci.md +0 -186
- package/docs/ru/cli/ci.md +0 -186
- package/docs/tr/cli/ci.md +0 -186
- package/docs/uk/cli/ci.md +0 -186
- package/docs/vi/cli/ci.md +0 -186
- package/docs/zh/cli/ci.md +0 -186
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-13
|
|
3
|
+
updatedAt: 2026-09-13
|
|
4
|
+
title: "vue-i18n vs @intlayer/vue-i18n:相同的 API,不同的 Bundle"
|
|
5
|
+
description: 当 Vue 3 应用保持其 vue-i18n 调用但通过 @intlayer/vue-i18n compat 适配器提供服务时会发生什么变化。在相同的 Vite + Vue 代码上测量的每页 JavaScript、运行时大小、组件大小和泄漏,以及适配器保留、忽略和无法替换的内容。
|
|
6
|
+
keywords:
|
|
7
|
+
- vue-i18n
|
|
8
|
+
- "@intlayer/vue-i18n"
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Compat adapter
|
|
11
|
+
- Migration
|
|
12
|
+
- Internationalization
|
|
13
|
+
- i18n
|
|
14
|
+
- Benchmark
|
|
15
|
+
- Bundle size
|
|
16
|
+
- Blog
|
|
17
|
+
- Vue
|
|
18
|
+
- Nuxt
|
|
19
|
+
- Vite
|
|
20
|
+
slugs:
|
|
21
|
+
- blog
|
|
22
|
+
- vue-i18n-vs-intlayer-vue-i18n
|
|
23
|
+
author: aymericzip
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# vue-i18n VS @intlayer/vue-i18n | 相同的 API,不同的 Bundle
|
|
27
|
+
|
|
28
|
+
`@intlayer/vue-i18n` 是一个兼容适配器:它公开了 `vue-i18n` API(`createI18n`、`useI18n`、`t()`、`d()`、`n()`、`$t`、`v-t`、`i18n.global.locale`...),并从 Intlayer 编译的字典中提供服务。你的 `.vue` 文件不会改变。改变的是 `t("footer.github")` 绑定的内容。
|
|
29
|
+
|
|
30
|
+
本文在同一个 Vite + Vue 3 应用上测量了这个替换,该应用分别使用 `vue-i18n` 和适配器构建。数据来自 [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom)。如需了解 `vue-i18n` 和 Intlayer 作为库的对比,请阅读 [vue-i18n vs Intlayer](https://intlayer.org/blog/vue-i18n-vs-intlayer) 和 [vue-i18n vs Intlayer 基准测试](https://intlayer.org/blog/vue-i18n-vs-intlayer-benchmark)。本文讨论的是当你保持组件不变时,适配器会带来什么改变。
|
|
31
|
+
|
|
32
|
+
<TOC/>
|
|
33
|
+
|
|
34
|
+
> **总结**: 在同一个 Vite + Vue 3 应用中,将 `vue-i18n` 替换为 `@intlayer/vue-i18n` 后,每页 JavaScript 从 **134.9 KB 降至 47.0 KB** gzip(不含 i18n 的应用为 41.3 KB),运行时从 **24.3 KB 降至 7.9 KB**,平均组件从 **196 KB 降至 8.4 KB**,跨页面字符串泄露从 **90% 降至 0%**,且无需编辑任何 `.vue` 文件。`createI18n({ messages })` 仍作为备选方案继续工作;移除 JSON 导入即可获得上述数字。SFC `<i18n>` 块和运行时 `setLocaleMessage()` 这两个功能无法转移。
|
|
35
|
+
|
|
36
|
+
## 什么是 `@intlayer/vue-i18n`
|
|
37
|
+
|
|
38
|
+
`vue-i18n` 是一个运行时库。`createI18n({ messages: { en, fr, ... } })` 构建一个全局实例,持有每个区域的所有消息;`useI18n()` 将每个组件绑定到它;`t("footer.github")` 在渲染时遍历树。这种设计使得 SFC `<i18n>` 块和 `setLocaleMessage()` 成为可能,同时也是为什么每个组件的依赖图包含整个树的原因。
|
|
39
|
+
|
|
40
|
+
`@intlayer/vue-i18n` 保持 API 并替换树:
|
|
41
|
+
|
|
42
|
+
1. **导入别名。** `@intlayer/vue-i18n/plugin` 中的 `vueI18nVitePlugin()` 包装 `vite-intlayer` 并添加一个 `resolve.alias`,使得 `vue-i18n` 解析为 `@intlayer/vue-i18n`。没有导入被重命名。
|
|
43
|
+
2. **JSON 作为真实来源。** `syncJSON` 插件读取你现有的 `locales/{locale}.json`(使用 `format: "vue-i18n"`,以便正确解析 `{name}`、`{0}` 列表插值和 `"car | cars"` 管道复数),当 CLI 或 CMS 更新它们时,会将翻译写回。
|
|
44
|
+
3. **调用点绑定。** Intlayer 优化通过重写 `useI18n()` 调用点,使组件接收其键名在活跃locale中的字典,作为bundler可以追踪和分割的imports。
|
|
45
|
+
|
|
46
|
+
```vue fileName="src/components/Footer.vue"
|
|
47
|
+
<!-- 你的代码,保持不变 -->
|
|
48
|
+
<script setup lang="ts">
|
|
49
|
+
import { useI18n } from "vue-i18n";
|
|
50
|
+
|
|
51
|
+
const { t } = useI18n();
|
|
52
|
+
</script>
|
|
53
|
+
|
|
54
|
+
<template>
|
|
55
|
+
<a href="https://github.com/intlayer-org/benchmark-bloom">{{
|
|
56
|
+
t("footer.github")
|
|
57
|
+
}}</a>
|
|
58
|
+
</template>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```ts fileName="编译器生成的内容 (简化版)"
|
|
62
|
+
import _dicHash_footer from "../.intlayer/dictionaries/footer.mjs";
|
|
63
|
+
import { useDictionary as useI18n } from "@intlayer/vue-i18n";
|
|
64
|
+
|
|
65
|
+
const { t } = useI18n(_dicHash_footer);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
该组件不再访问全局消息树。它只访问 `footer`。这就是为什么下面的组件大小列从 196 KB 下降到 8 KB。
|
|
69
|
+
|
|
70
|
+
## adapter 保留、忽略和不替换的内容
|
|
71
|
+
|
|
72
|
+
| `vue-i18n` API | 使用 `@intlayer/vue-i18n` |
|
|
73
|
+
| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
74
|
+
| `useI18n()` → `{ t, d, n, te, tm, rt, locale, availableLocales }` | ✅ 保留。`t` 键针对你的字典进行了类型化 |
|
|
75
|
+
| `t("key", { name })`, `t("key", [a, b])`, `t("key", count)` | ✅ 保留。`{name}`、`{0}` 和管道分隔的复数形式解析方式与以前相同 |
|
|
76
|
+
| `d(date, "long")`, `n(value, "currency")` | ✅ 保留。来自 `createI18n()` 的 `datetimeFormats` / `numberFormats` 得到遵守,由原生 `Intl` 提供支持 |
|
|
77
|
+
| `i18n.global.locale.value = "fr"` | ✅ 保留。由 Intlayer 客户端支持的 `WritableComputedRef`;响应式行为与之前相同 |
|
|
78
|
+
| `$t`, `$tc`, `$te`, `$tm`, `$rt`, `$d`, `$n`, `$i18n`(Options API) | ✅ 保留。由 `app.use(i18n)` 注册到 `app.config.globalProperties` |
|
|
79
|
+
| `v-t` 指令 | ✅ 保留 |
|
|
80
|
+
| `legacy: true` | ✅ 接受 |
|
|
81
|
+
| `createI18n({ messages })` | ⚠️ `messages` 被用作**运行时 fallback**,并会有开发警告。移除 JSON imports 以获得 bundle 优化 |
|
|
82
|
+
| `setLocaleMessage()`, `mergeLocaleMessage()` | ❌ 警告并不执行任何操作。运行时消息加载被构建时字典替代 |
|
|
83
|
+
| SFC `<i18n>` 自定义块 | ❌ 不被读取。将这些消息移入 locale JSON(或组件旁的 `.content.ts`) |
|
|
84
|
+
| `@nuxtjs/i18n` | ⚠️ 独立适配器,请查看 [Nuxt 兼容性文档](https://intlayer.org/doc/compatibility/nuxtjs-i18n) |
|
|
85
|
+
|
|
86
|
+
## 基准测试
|
|
87
|
+
|
|
88
|
+
### 测量了什么
|
|
89
|
+
|
|
90
|
+
[Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom) 套件使用相同的 Vite + Vue 3 应用程序构建每个设置:**10 个页面**(home、about、blog、careers、contact、FAQ、pricing、products、settings、team),**10 个语言环境**(`en`、`fr`、`es`、`de`、`it`、`pt`、`zh`、`ja`、`ko`、`ru`),相同的组件和相同的内容。页面在 `en` 和 `fr` 中进行测量。
|
|
91
|
+
|
|
92
|
+
两者都以**静态**配置构建,这是大多数 Vue 项目使用的配置:对于 `vue-i18n`,每个语言环境的 JSON 导入并传递给 `createI18n({ messages })`;对于适配器,使用相同的组件,改变 `vite.config.ts` 和 `intlayer.config.ts` 并移除 `messages` 导入。包含原生 `vue-intlayer` 作为参考。
|
|
93
|
+
|
|
94
|
+
对于每个构建,套件记录:
|
|
95
|
+
|
|
96
|
+
- **Lib size**: 空组件的 gzip(和压缩后)大小,该组件仅导入 i18n 库。
|
|
97
|
+
- **Page JS**: 每个页面下载的 gzip JavaScript,在所有页面和语言环境中平均。
|
|
98
|
+
- **Locale leak %**: 下载的 JS 中属于用户**未**查看的语言环境的已翻译字符串的份额。
|
|
99
|
+
- **Page leak %**: 下载的 JS 中属于用户**未**访问的页面的已翻译字符串的份额。
|
|
100
|
+
- **Component avg**: 单独编译的每个组件的平均 gzip 大小。
|
|
101
|
+
- **E2E reactivity**: 选择新语言环境和 `html[lang]` 在 DOM 中更新之间的实际时间(Playwright,5 次迭代)。
|
|
102
|
+
- **Page load**: `PerformanceNavigationTiming.duration`。
|
|
103
|
+
|
|
104
|
+
> 下面的数字来自 **2026-09-12** 运行的数据,使用 `vue-i18n` 11.4.0 和 `@intlayer/vue-i18n` 9.5.1。测试应用程序故意很小(每个语言环境只有几十个字符串),所以泄露百分比描述的是一个**模式**:当你的内容增加时,泄露会增长,但运行时成本保持不变。
|
|
105
|
+
|
|
106
|
+
### Vite + Vue 3 的结果
|
|
107
|
+
|
|
108
|
+
| Setup | Strategy | Lib size (gz) | Lib size (min) | Page JS avg (gz) | Locale leak | Page leak | Component avg (gz) | E2E reactivity | Page load |
|
|
109
|
+
| ------------------------ | -------- | ------------: | -------------: | ---------------: | ----------: | --------: | -----------------: | -------------: | ---------: |
|
|
110
|
+
| **base** (no i18n) | - | 0.0 KB | 0.0 KB | 41.3 KB | 0.0% | - | 1.1 KB | 1.8 ms | 10.8 ms |
|
|
111
|
+
| `vue-i18n` | static | 24.3 KB | 83.2 KB | 134.9 KB | 50.0% | 90.0% | 196.0 KB | 2.8 ms | 13.6 ms |
|
|
112
|
+
| **`@intlayer/vue-i18n`** | static | **7.9 KB** | **23.2 KB** | **47.0 KB** | **15.0%** | **0.0%** | **8.4 KB** | **1.5 ms** | **9.3 ms** |
|
|
113
|
+
| `vue-intlayer` (native) | static | 3.9 KB | 11.1 KB | 57.1 KB | 56.8% | 0.0% | 7.7 KB | 4.5 ms | 13.8 ms |
|
|
114
|
+
| `vue-intlayer` (native) | dynamic | 3.9 KB | 11.1 KB | 59.8 KB | 50.0% | 0.0% | 6.5 KB | 4.0 ms | 15.8 ms |
|
|
115
|
+
|
|
116
|
+
> 基础应用的页面泄漏列为空:没有 i18n 库,指纹识别会在共享块中挑选硬编码的字符串,该数字没有意义。
|
|
117
|
+
|
|
118
|
+
**如何理解它**
|
|
119
|
+
|
|
120
|
+
- **每个页面减少 88 KB,组件相同。** `vue-i18n` 将 41.3 KB 的应用增加到 **134.9 KB**。相同组件的适配器构建落在 **47.0 KB**,比基础应用多 5.7 KB。大多数差异来自 `createI18n({ messages })` 将 74.9 KB 的 `src/locales` 拉入每个页面,而适配器从不将其作为一个块捆绑。
|
|
121
|
+
- **运行时缩小 3 倍。** 仅导入 `vue-i18n` 的空组件成本为 **24.3 KB gzip / 83.2 KB minified**:`@intlify/core-base`、message compiler 和 runtime。adapter 成本为 **7.9 KB / 23.2 KB**,大部分是 Intlayer 的 core 加上 `vue-i18n` API surface。
|
|
122
|
+
- **组件:小 23 倍。** 单独编译的 `useI18n()` 组件平均为 **196 KB**,因为 `t` 绑定到持有每个 locale 所有消息的实例。使用 adapter,相同的组件平均为 **8.4 KB**:它到达自己的字典。
|
|
123
|
+
- **泄漏。** `vue-i18n` 在每个页面上都会打包每个语言环境和每个页面的字符串:50% 的语言环境泄漏(在两个指纹识别的语言环境上;捆绑十个语言环境时实际浪费更高),90% 的页面泄漏。该适配器将页面泄漏降低到 **0%**,因为每个组件只导入其自己的字典。在这次 `static` 运行中,语言环境泄漏为 15%;`importMode: 'dynamic'` 是移除它的设置,该配置不在此 Vue 运行中。
|
|
124
|
+
- **响应性和页面加载。** 对于两者而言,语言环境切换成本低廉(1.5-2.8 ms);一旦消息在内存中,Vue 的响应性系统会实现这一点。页面加载从 13.6 ms 降低到 **9.3 ms**,与减少 88 KB 的 JavaScript 解析量一致。
|
|
125
|
+
- **关于原生行。** `vue-intlayer` 在此运行中在 `static` 模式下捆绑了每个区域设置,达到 57.1 KB,运行时为 3.9 KB;适配器的同步字典携带更少的外国语言环境字符串,因此每页数据更低。原生运行时仍然是三者中最轻的,其 `.content.ts` 模型是 SFC `<i18n>` 块找到其等效项的地方。
|
|
126
|
+
|
|
127
|
+
## 为什么数字会变化
|
|
128
|
+
|
|
129
|
+
`src/components/` 中的内容没有改变,所以收益来自 `useI18n` 绑定到的内容。
|
|
130
|
+
|
|
131
|
+
**使用 `vue-i18n`** 时,绑定是全局实例。`createI18n({ messages: { en, fr, ... } })` 是一个导入,包含所有内容;每个调用 `useI18n()` 的组件都可以访问所有内容,因此 bundler 无法在实例以下进行分割。优化意味着 _你_ 需要按路由拆分 `en.json`,在路由守卫中调用 `setLocaleMessage()`,并在组件移动时保持路由到文件的映射正确。
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
.
|
|
135
|
+
├── locales
|
|
136
|
+
│ ├── en.json # 每个页面的字符串
|
|
137
|
+
│ └── fr.json
|
|
138
|
+
└── src
|
|
139
|
+
├── i18n.ts # createI18n({ messages: { en, fr, ... } })
|
|
140
|
+
├── main.ts # app.use(i18n)
|
|
141
|
+
└── components
|
|
142
|
+
└── Footer.vue # useI18n(); t("footer.github")
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**使用 `@intlayer/vue-i18n`**,绑定是字典。`syncJSON` 将 `en.json` 的每个顶级键转换为字典;优化过程将组件所需的那些作为导入提供给 bundler 追踪并按页面拆分。
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
.
|
|
149
|
+
├── intlayer.config.ts # syncJSON({ format: "vue-i18n", source: ... })
|
|
150
|
+
├── locales
|
|
151
|
+
│ ├── en.json # 未更改,仍为真实来源
|
|
152
|
+
│ └── fr.json
|
|
153
|
+
├── .intlayer/ # 生成:每个顶级键对应一个字典,每个语言环境
|
|
154
|
+
└── src
|
|
155
|
+
├── i18n.ts # createI18n({}) ← messages 导入已删除
|
|
156
|
+
├── main.ts # app.use(i18n) ← 未更改
|
|
157
|
+
└── components
|
|
158
|
+
└── Footer.vue # useI18n(); t("footer.github") ← 未更改
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`i18n.ts` 中的 `messages` 导入是唯一需要删除的一行。那就是 88 KB。
|
|
162
|
+
|
|
163
|
+
## 分三个步骤迁移
|
|
164
|
+
|
|
165
|
+
<Steps>
|
|
166
|
+
<Step number={1} title="安装">
|
|
167
|
+
|
|
168
|
+
```bash packageManager="npm"
|
|
169
|
+
npx intlayer init --interactive
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
```bash packageManager="pnpm"
|
|
173
|
+
pnpm dlx intlayer init --interactive
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
```bash packageManager="yarn"
|
|
177
|
+
yarn dlx intlayer init --interactive
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```bash packageManager="bun"
|
|
181
|
+
bunx intlayer init --interactive
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
该命令检测 `vue-i18n`,安装 `intlayer`、`vue-intlayer`、`@intlayer/vue-i18n` 和 `@intlayer/sync-json-plugin`,并预填充 `intlayer.config.ts`。保持 `vue-i18n` 已安装:它是一个对等依赖项,并提供类型。
|
|
185
|
+
|
|
186
|
+
</Step>
|
|
187
|
+
<Step number={2} title="将 Intlayer 指向您的 locale 文件">
|
|
188
|
+
|
|
189
|
+
```ts fileName="intlayer.config.ts"
|
|
190
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
191
|
+
import { syncJSON } from "@intlayer/sync-json-plugin";
|
|
192
|
+
|
|
193
|
+
const config: IntlayerConfig = {
|
|
194
|
+
internationalization: {
|
|
195
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
196
|
+
defaultLocale: Locales.ENGLISH,
|
|
197
|
+
},
|
|
198
|
+
dictionary: {
|
|
199
|
+
// "static" 捆绑每个语言环境; "dynamic" 按需加载活跃的语言环境
|
|
200
|
+
importMode: "dynamic",
|
|
201
|
+
format: "vue-i18n",
|
|
202
|
+
},
|
|
203
|
+
plugins: [
|
|
204
|
+
syncJSON({
|
|
205
|
+
// vue-i18n 方言: {name}, {0}, "car | cars"
|
|
206
|
+
format: "vue-i18n",
|
|
207
|
+
source: ({ locale }) => `./locales/${locale}.json`,
|
|
208
|
+
location: "locales",
|
|
209
|
+
}),
|
|
210
|
+
],
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
export default config;
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
`locales/{locale}.json` 保持在原来的位置。每个顶级键(`footer`、`hero`...)都会变成一个字典。
|
|
217
|
+
|
|
218
|
+
</Step>
|
|
219
|
+
<Step number={3} title="添加插件并删除消息导入">
|
|
220
|
+
|
|
221
|
+
```ts fileName="vite.config.ts"
|
|
222
|
+
import { defineConfig } from "vite";
|
|
223
|
+
import vue from "@vitejs/plugin-vue";
|
|
224
|
+
import { vueI18nVitePlugin } from "@intlayer/vue-i18n/plugin";
|
|
225
|
+
|
|
226
|
+
export default defineConfig({
|
|
227
|
+
plugins: [vue(), vueI18nVitePlugin()],
|
|
228
|
+
});
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
```ts fileName="src/i18n.ts"
|
|
232
|
+
import { createI18n } from "vue-i18n";
|
|
233
|
+
|
|
234
|
+
// 之前: createI18n({ locale: "en", messages: { en, fr, es } })
|
|
235
|
+
export const i18n = createI18n({ locale: "en" });
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
`vueI18nVitePlugin()` 包装了 `vite-intlayer`(内容监听、字典编译、优化过程)并将 `vue-i18n` 别名指向适配器。移除 `messages` 导入是减少 88 KB 的关键;保留它会使应用继续工作,但会同时发送两个版本。
|
|
239
|
+
|
|
240
|
+
</Step>
|
|
241
|
+
</Steps>
|
|
242
|
+
|
|
243
|
+
### 之后可以删除的内容
|
|
244
|
+
|
|
245
|
+
| 文件 / 模式 | 原因 |
|
|
246
|
+
| ----------------------------------------------- | ------------------------------------------------------------- |
|
|
247
|
+
| `import en from "./locales/en.json"` 及类似语句 | 仅由适配器用作回退方案。这是 88 KB 的来源 |
|
|
248
|
+
| 路由守卫中的 `setLocaleMessage()` | 无操作。按路由加载现在是编译器的工作 |
|
|
249
|
+
| `@intlify/unplugin-vue-i18n` | 不需要:它预编译消息和 SFC blocks,而适配器不读取这些内容 |
|
|
250
|
+
| SFC `<i18n>` 块 | 未被读取;将它们移动到 locale JSON 或每个组件的 `.content.ts` |
|
|
251
|
+
|
|
252
|
+
### 除了字节数之外你还能获得什么
|
|
253
|
+
|
|
254
|
+
- **类型化的键。** `t("footer.github")` 针对编译的 `footer` 字典进行类型检查;错误的路径会产生 TypeScript 错误,而不是将键呈现为文本。
|
|
255
|
+
- **`npx intlayer test`** 在 CI 中对任何 locale 中缺少的键失败。**`npx intlayer fill`** 使用你自己的提供商密钥(OpenAI、Anthropic、Mistral、Gemini...)翻译缺少的键,并将其写回 `locales/{locale}.json`。
|
|
256
|
+
- **Visual Editor 和 CMS** 操作相同的 JSON,因此非开发人员可以通过 UI 进行编辑,文件会自动更新。
|
|
257
|
+
- **逐步迁移到 `.content.ts`。** 任何组件都可以通过一个共同位置的内容文件从 `useI18n()` 切换到 `useIntlayer("footer")`。JSON 和 `.content.ts` 字典可以共存并合并。
|
|
258
|
+
|
|
259
|
+
## 开始前需要了解的限制
|
|
260
|
+
|
|
261
|
+
- **SFC `<i18n>` 块不被读取。** 如果你的消息存在于组件内部,它们需要移动到 locale 文件(或 `.content.ts`,这是相同的想法但带有类型)。
|
|
262
|
+
- **运行时消息加载已消除。** `setLocaleMessage()` 和 `mergeLocaleMessage()` 会发出警告并返回。从 CMS 在运行时获取的翻译需要 Intlayer 的 CMS,或者使用 `intlayer pull` / `push` 命令。
|
|
263
|
+
- **`messages` 是一个回退方案,不是免费的。** 在 `createI18n()` 中保留 JSON 导入会在 bundle 中保留 75 KB。一旦 `intlayer test` 通过,就删除它们。
|
|
264
|
+
- **该适配器不是原生运行时。** 7.9 KB 对比 `vue-intlayer` 的 3.9 KB。一旦每个组件都迁移到 `useIntlayer`,就可以删除它。
|
|
265
|
+
|
|
266
|
+
## 何时使用哪个?
|
|
267
|
+
|
|
268
|
+
- **继续使用 `vue-i18n`** 如果你的应用依赖 SFC `<i18n>` 块、运行时 `setLocaleMessage()` 流程,或者 90 KB 每页对你的用户来说不是问题。
|
|
269
|
+
- **使用 `@intlayer/vue-i18n`** 如果你在用 `vue-i18n` 并想要节省 88 KB、缩小 23 倍的组件、0% 页面泄漏、类型化的键和 CI 检查,而无需编辑 `.vue` 文件。这是现有 `vue-i18n` codebase 的入口点。
|
|
270
|
+
- **使用原生方案(`vue-intlayer`)** 用于新项目,或在适配器完成其工作后。它具有最轻的运行时(3.9 KB)和按组件的 `.content.ts` 模型,用类型化内容替代 `<i18n>` 块。
|
|
271
|
+
|
|
272
|
+
## 相关比较
|
|
273
|
+
|
|
274
|
+
- [vue-i18n vs Intlayer](https://intlayer.org/blog/vue-i18n-vs-intlayer) (功能和开发体验)
|
|
275
|
+
- [vue-i18n vs Intlayer benchmark](https://intlayer.org/blog/vue-i18n-vs-intlayer-benchmark) (库,相同基准)
|
|
276
|
+
- [next-intl vs @intlayer/next-intl](https://intlayer.org/blog/next-intl-vs-intlayer-next-intl) (相同adapter系列)
|
|
277
|
+
- [i18next vs @intlayer/i18next](https://intlayer.org/blog/i18next-vs-intlayer-i18next) (相同adapter系列)
|
|
278
|
+
- [Lingui vs @intlayer/lingui](https://intlayer.org/blog/lingui-vs-intlayer-lingui) (相同adapter系列)
|
|
279
|
+
- [迁移指南:vue-i18n 到 Intlayer](https://intlayer.org/doc/migration/vue-i18n)
|
|
280
|
+
- [兼容适配器参考:vue-i18n](https://intlayer.org/doc/compatibility/vue-i18n), [Nuxt i18n](https://intlayer.org/doc/compatibility/nuxtjs-i18n)
|
|
281
|
+
|
|
282
|
+
## 总结
|
|
283
|
+
|
|
284
|
+
`@intlayer/vue-i18n` 改变了 `useI18n()` 的绑定方式:从持有每个locale的每条消息的全局实例转变为为该组件编译的字典。在同一个 Vite + Vue 3 应用上,每页减少 **88 KB**,运行时减少 **3倍**,组件减少 **23倍**,页面泄漏 **0%**,仅需配置文件、一行插件和删除一个导入。SFC `<i18n>` 块和运行时消息加载是它不支持的两个功能,而原生 `vue-intlayer` 运行时仍然保持其一半的大小。
|
|
285
|
+
|
|
286
|
+
所有原始数据、测试应用程序和脚本都在 [Benchmark Bloom 仓库](https://github.com/intlayer-org/benchmark-bloom) 中。自己运行它。
|
|
287
|
+
|
|
288
|
+
有关更多详细信息,请参考 ['Why Intlayer?' 文档](https://intlayer.org/doc/why)。
|
|
@@ -236,7 +236,7 @@ const { greeting } = useIntlayer("component-example");
|
|
|
236
236
|
|
|
237
237
|
GitHub stars 是项目受欢迎程度、社区信任度和长期相关性的强有力指标。虽然不是技术质量的直接衡量标准,但它们反映了有多少开发者认为该项目有用、关注其进展,以及可能会采用它。对于估计项目的价值,stars 有助于在各种方案之间进行性能对比,并提供生态系统增长的见解。
|
|
238
238
|
|
|
239
|
-
[](https://
|
|
239
|
+
[](https://star-history.com/#intlify/vue-i18n&aymericzip/intlayer)
|
|
240
240
|
|
|
241
241
|
## 结论
|
|
242
242
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-09-13
|
|
3
|
+
updatedAt: 2026-09-13
|
|
4
|
+
title: "vue-i18n vs Intlayer: 2026 基准测试"
|
|
5
|
+
description: 在相同的 Vite + Vue 3 应用上测量 vue-i18n 和 Intlayer。库大小、每页 JavaScript、内容泄漏、组件大小和语言切换响应性,附带详细数据说明。
|
|
6
|
+
keywords:
|
|
7
|
+
- vue-i18n
|
|
8
|
+
- Intlayer
|
|
9
|
+
- 国际化
|
|
10
|
+
- i18n
|
|
11
|
+
- 基准测试
|
|
12
|
+
- 包大小
|
|
13
|
+
- 博客
|
|
14
|
+
- Vue
|
|
15
|
+
- Nuxt
|
|
16
|
+
- Vite
|
|
17
|
+
- JavaScript
|
|
18
|
+
slugs:
|
|
19
|
+
- blog
|
|
20
|
+
- vue-i18n-vs-intlayer-benchmark
|
|
21
|
+
author: aymericzip
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# vue-i18n vs Intlayer | Vue 国际化(i18n)基准测试
|
|
25
|
+
|
|
26
|
+
`vue-i18n` 是 Vue 的参考 i18n 库。Intlayer 是一个基于编译器、组件作用域的替代方案,具有 Vue 集成(`vue-intlayer`)。我们已经比较过它们的[功能和开发体验](https://intlayer.org/blog/vue-i18n-vs-intlayer)。本文着眼于每个库在应用构建后的成本。
|
|
27
|
+
|
|
28
|
+
数据来自 [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom),这是一个开源套件,使用每个库构建相同的应用程序,并记录浏览器实际下载和执行的内容。
|
|
29
|
+
|
|
30
|
+
<TOC/>
|
|
@@ -114,6 +114,26 @@ const blogEntry = {
|
|
|
114
114
|
vi: readLocale("detecting_missing_translations.md", "vi"),
|
|
115
115
|
uk: readLocale("detecting_missing_translations.md", "uk")
|
|
116
116
|
},
|
|
117
|
+
"./blog/en/history_of_i18n.md": {
|
|
118
|
+
en: readLocale("history_of_i18n.md", "en"),
|
|
119
|
+
es: readLocale("history_of_i18n.md", "es"),
|
|
120
|
+
ru: readLocale("history_of_i18n.md", "ru"),
|
|
121
|
+
ja: readLocale("history_of_i18n.md", "ja"),
|
|
122
|
+
fr: readLocale("history_of_i18n.md", "fr"),
|
|
123
|
+
ko: readLocale("history_of_i18n.md", "ko"),
|
|
124
|
+
zh: readLocale("history_of_i18n.md", "zh"),
|
|
125
|
+
de: readLocale("history_of_i18n.md", "de"),
|
|
126
|
+
ar: readLocale("history_of_i18n.md", "ar"),
|
|
127
|
+
it: readLocale("history_of_i18n.md", "it"),
|
|
128
|
+
"en-GB": readLocale("history_of_i18n.md", "en-GB"),
|
|
129
|
+
pt: readLocale("history_of_i18n.md", "pt"),
|
|
130
|
+
hi: readLocale("history_of_i18n.md", "hi"),
|
|
131
|
+
tr: readLocale("history_of_i18n.md", "tr"),
|
|
132
|
+
pl: readLocale("history_of_i18n.md", "pl"),
|
|
133
|
+
id: readLocale("history_of_i18n.md", "id"),
|
|
134
|
+
vi: readLocale("history_of_i18n.md", "vi"),
|
|
135
|
+
uk: readLocale("history_of_i18n.md", "uk")
|
|
136
|
+
},
|
|
117
137
|
"./blog/en/hreflang_guide_multilingual_seo.md": {
|
|
118
138
|
en: readLocale("hreflang_guide_multilingual_seo.md", "en"),
|
|
119
139
|
es: readLocale("hreflang_guide_multilingual_seo.md", "es"),
|
|
@@ -234,6 +254,46 @@ const blogEntry = {
|
|
|
234
254
|
vi: readLocale("i18n_using_next-intl.md", "vi"),
|
|
235
255
|
uk: readLocale("i18n_using_next-intl.md", "uk")
|
|
236
256
|
},
|
|
257
|
+
"./blog/en/i18next_vs_intlayer-i18next.md": {
|
|
258
|
+
en: readLocale("i18next_vs_intlayer-i18next.md", "en"),
|
|
259
|
+
es: readLocale("i18next_vs_intlayer-i18next.md", "es"),
|
|
260
|
+
ru: readLocale("i18next_vs_intlayer-i18next.md", "ru"),
|
|
261
|
+
ja: readLocale("i18next_vs_intlayer-i18next.md", "ja"),
|
|
262
|
+
fr: readLocale("i18next_vs_intlayer-i18next.md", "fr"),
|
|
263
|
+
ko: readLocale("i18next_vs_intlayer-i18next.md", "ko"),
|
|
264
|
+
zh: readLocale("i18next_vs_intlayer-i18next.md", "zh"),
|
|
265
|
+
de: readLocale("i18next_vs_intlayer-i18next.md", "de"),
|
|
266
|
+
ar: readLocale("i18next_vs_intlayer-i18next.md", "ar"),
|
|
267
|
+
it: readLocale("i18next_vs_intlayer-i18next.md", "it"),
|
|
268
|
+
"en-GB": readLocale("i18next_vs_intlayer-i18next.md", "en-GB"),
|
|
269
|
+
pt: readLocale("i18next_vs_intlayer-i18next.md", "pt"),
|
|
270
|
+
hi: readLocale("i18next_vs_intlayer-i18next.md", "hi"),
|
|
271
|
+
tr: readLocale("i18next_vs_intlayer-i18next.md", "tr"),
|
|
272
|
+
pl: readLocale("i18next_vs_intlayer-i18next.md", "pl"),
|
|
273
|
+
id: readLocale("i18next_vs_intlayer-i18next.md", "id"),
|
|
274
|
+
vi: readLocale("i18next_vs_intlayer-i18next.md", "vi"),
|
|
275
|
+
uk: readLocale("i18next_vs_intlayer-i18next.md", "uk")
|
|
276
|
+
},
|
|
277
|
+
"./blog/en/i18next_vs_intlayer.md": {
|
|
278
|
+
en: readLocale("i18next_vs_intlayer.md", "en"),
|
|
279
|
+
es: readLocale("i18next_vs_intlayer.md", "es"),
|
|
280
|
+
ru: readLocale("i18next_vs_intlayer.md", "ru"),
|
|
281
|
+
ja: readLocale("i18next_vs_intlayer.md", "ja"),
|
|
282
|
+
fr: readLocale("i18next_vs_intlayer.md", "fr"),
|
|
283
|
+
ko: readLocale("i18next_vs_intlayer.md", "ko"),
|
|
284
|
+
zh: readLocale("i18next_vs_intlayer.md", "zh"),
|
|
285
|
+
de: readLocale("i18next_vs_intlayer.md", "de"),
|
|
286
|
+
ar: readLocale("i18next_vs_intlayer.md", "ar"),
|
|
287
|
+
it: readLocale("i18next_vs_intlayer.md", "it"),
|
|
288
|
+
"en-GB": readLocale("i18next_vs_intlayer.md", "en-GB"),
|
|
289
|
+
pt: readLocale("i18next_vs_intlayer.md", "pt"),
|
|
290
|
+
hi: readLocale("i18next_vs_intlayer.md", "hi"),
|
|
291
|
+
tr: readLocale("i18next_vs_intlayer.md", "tr"),
|
|
292
|
+
pl: readLocale("i18next_vs_intlayer.md", "pl"),
|
|
293
|
+
id: readLocale("i18next_vs_intlayer.md", "id"),
|
|
294
|
+
vi: readLocale("i18next_vs_intlayer.md", "vi"),
|
|
295
|
+
uk: readLocale("i18next_vs_intlayer.md", "uk")
|
|
296
|
+
},
|
|
237
297
|
"./blog/en/icu_message_format.md": {
|
|
238
298
|
en: readLocale("icu_message_format.md", "en"),
|
|
239
299
|
es: readLocale("icu_message_format.md", "es"),
|
|
@@ -534,6 +594,46 @@ const blogEntry = {
|
|
|
534
594
|
vi: readLocale("l10n_platform_alternative/phrase.md", "vi"),
|
|
535
595
|
uk: readLocale("l10n_platform_alternative/phrase.md", "uk")
|
|
536
596
|
},
|
|
597
|
+
"./blog/en/lingui_vs_intlayer-lingui.md": {
|
|
598
|
+
en: readLocale("lingui_vs_intlayer-lingui.md", "en"),
|
|
599
|
+
es: readLocale("lingui_vs_intlayer-lingui.md", "es"),
|
|
600
|
+
ru: readLocale("lingui_vs_intlayer-lingui.md", "ru"),
|
|
601
|
+
ja: readLocale("lingui_vs_intlayer-lingui.md", "ja"),
|
|
602
|
+
fr: readLocale("lingui_vs_intlayer-lingui.md", "fr"),
|
|
603
|
+
ko: readLocale("lingui_vs_intlayer-lingui.md", "ko"),
|
|
604
|
+
zh: readLocale("lingui_vs_intlayer-lingui.md", "zh"),
|
|
605
|
+
de: readLocale("lingui_vs_intlayer-lingui.md", "de"),
|
|
606
|
+
ar: readLocale("lingui_vs_intlayer-lingui.md", "ar"),
|
|
607
|
+
it: readLocale("lingui_vs_intlayer-lingui.md", "it"),
|
|
608
|
+
"en-GB": readLocale("lingui_vs_intlayer-lingui.md", "en-GB"),
|
|
609
|
+
pt: readLocale("lingui_vs_intlayer-lingui.md", "pt"),
|
|
610
|
+
hi: readLocale("lingui_vs_intlayer-lingui.md", "hi"),
|
|
611
|
+
tr: readLocale("lingui_vs_intlayer-lingui.md", "tr"),
|
|
612
|
+
pl: readLocale("lingui_vs_intlayer-lingui.md", "pl"),
|
|
613
|
+
id: readLocale("lingui_vs_intlayer-lingui.md", "id"),
|
|
614
|
+
vi: readLocale("lingui_vs_intlayer-lingui.md", "vi"),
|
|
615
|
+
uk: readLocale("lingui_vs_intlayer-lingui.md", "uk")
|
|
616
|
+
},
|
|
617
|
+
"./blog/en/lingui_vs_intlayer.md": {
|
|
618
|
+
en: readLocale("lingui_vs_intlayer.md", "en"),
|
|
619
|
+
es: readLocale("lingui_vs_intlayer.md", "es"),
|
|
620
|
+
ru: readLocale("lingui_vs_intlayer.md", "ru"),
|
|
621
|
+
ja: readLocale("lingui_vs_intlayer.md", "ja"),
|
|
622
|
+
fr: readLocale("lingui_vs_intlayer.md", "fr"),
|
|
623
|
+
ko: readLocale("lingui_vs_intlayer.md", "ko"),
|
|
624
|
+
zh: readLocale("lingui_vs_intlayer.md", "zh"),
|
|
625
|
+
de: readLocale("lingui_vs_intlayer.md", "de"),
|
|
626
|
+
ar: readLocale("lingui_vs_intlayer.md", "ar"),
|
|
627
|
+
it: readLocale("lingui_vs_intlayer.md", "it"),
|
|
628
|
+
"en-GB": readLocale("lingui_vs_intlayer.md", "en-GB"),
|
|
629
|
+
pt: readLocale("lingui_vs_intlayer.md", "pt"),
|
|
630
|
+
hi: readLocale("lingui_vs_intlayer.md", "hi"),
|
|
631
|
+
tr: readLocale("lingui_vs_intlayer.md", "tr"),
|
|
632
|
+
pl: readLocale("lingui_vs_intlayer.md", "pl"),
|
|
633
|
+
id: readLocale("lingui_vs_intlayer.md", "id"),
|
|
634
|
+
vi: readLocale("lingui_vs_intlayer.md", "vi"),
|
|
635
|
+
uk: readLocale("lingui_vs_intlayer.md", "uk")
|
|
636
|
+
},
|
|
537
637
|
"./blog/en/list_i18n_technologies/build-tools/vite.md": {
|
|
538
638
|
en: readLocale("list_i18n_technologies/build-tools/vite.md", "en"),
|
|
539
639
|
es: readLocale("list_i18n_technologies/build-tools/vite.md", "es"),
|
|
@@ -814,6 +914,46 @@ const blogEntry = {
|
|
|
814
914
|
vi: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "vi"),
|
|
815
915
|
uk: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "uk")
|
|
816
916
|
},
|
|
917
|
+
"./blog/en/next-intl_vs_intlayer-next-intl.md": {
|
|
918
|
+
en: readLocale("next-intl_vs_intlayer-next-intl.md", "en"),
|
|
919
|
+
es: readLocale("next-intl_vs_intlayer-next-intl.md", "es"),
|
|
920
|
+
ru: readLocale("next-intl_vs_intlayer-next-intl.md", "ru"),
|
|
921
|
+
ja: readLocale("next-intl_vs_intlayer-next-intl.md", "ja"),
|
|
922
|
+
fr: readLocale("next-intl_vs_intlayer-next-intl.md", "fr"),
|
|
923
|
+
ko: readLocale("next-intl_vs_intlayer-next-intl.md", "ko"),
|
|
924
|
+
zh: readLocale("next-intl_vs_intlayer-next-intl.md", "zh"),
|
|
925
|
+
de: readLocale("next-intl_vs_intlayer-next-intl.md", "de"),
|
|
926
|
+
ar: readLocale("next-intl_vs_intlayer-next-intl.md", "ar"),
|
|
927
|
+
it: readLocale("next-intl_vs_intlayer-next-intl.md", "it"),
|
|
928
|
+
"en-GB": readLocale("next-intl_vs_intlayer-next-intl.md", "en-GB"),
|
|
929
|
+
pt: readLocale("next-intl_vs_intlayer-next-intl.md", "pt"),
|
|
930
|
+
hi: readLocale("next-intl_vs_intlayer-next-intl.md", "hi"),
|
|
931
|
+
tr: readLocale("next-intl_vs_intlayer-next-intl.md", "tr"),
|
|
932
|
+
pl: readLocale("next-intl_vs_intlayer-next-intl.md", "pl"),
|
|
933
|
+
id: readLocale("next-intl_vs_intlayer-next-intl.md", "id"),
|
|
934
|
+
vi: readLocale("next-intl_vs_intlayer-next-intl.md", "vi"),
|
|
935
|
+
uk: readLocale("next-intl_vs_intlayer-next-intl.md", "uk")
|
|
936
|
+
},
|
|
937
|
+
"./blog/en/next-intl_vs_intlayer.md": {
|
|
938
|
+
en: readLocale("next-intl_vs_intlayer.md", "en"),
|
|
939
|
+
es: readLocale("next-intl_vs_intlayer.md", "es"),
|
|
940
|
+
ru: readLocale("next-intl_vs_intlayer.md", "ru"),
|
|
941
|
+
ja: readLocale("next-intl_vs_intlayer.md", "ja"),
|
|
942
|
+
fr: readLocale("next-intl_vs_intlayer.md", "fr"),
|
|
943
|
+
ko: readLocale("next-intl_vs_intlayer.md", "ko"),
|
|
944
|
+
zh: readLocale("next-intl_vs_intlayer.md", "zh"),
|
|
945
|
+
de: readLocale("next-intl_vs_intlayer.md", "de"),
|
|
946
|
+
ar: readLocale("next-intl_vs_intlayer.md", "ar"),
|
|
947
|
+
it: readLocale("next-intl_vs_intlayer.md", "it"),
|
|
948
|
+
"en-GB": readLocale("next-intl_vs_intlayer.md", "en-GB"),
|
|
949
|
+
pt: readLocale("next-intl_vs_intlayer.md", "pt"),
|
|
950
|
+
hi: readLocale("next-intl_vs_intlayer.md", "hi"),
|
|
951
|
+
tr: readLocale("next-intl_vs_intlayer.md", "tr"),
|
|
952
|
+
pl: readLocale("next-intl_vs_intlayer.md", "pl"),
|
|
953
|
+
id: readLocale("next-intl_vs_intlayer.md", "id"),
|
|
954
|
+
vi: readLocale("next-intl_vs_intlayer.md", "vi"),
|
|
955
|
+
uk: readLocale("next-intl_vs_intlayer.md", "uk")
|
|
956
|
+
},
|
|
817
957
|
"./blog/en/nextjs-multilingual-seo-comparison.md": {
|
|
818
958
|
en: readLocale("nextjs-multilingual-seo-comparison.md", "en"),
|
|
819
959
|
es: readLocale("nextjs-multilingual-seo-comparison.md", "es"),
|
|
@@ -934,6 +1074,26 @@ const blogEntry = {
|
|
|
934
1074
|
vi: readLocale("transform_existing_vite_react_app_using_compiler.md", "vi"),
|
|
935
1075
|
uk: readLocale("transform_existing_vite_react_app_using_compiler.md", "uk")
|
|
936
1076
|
},
|
|
1077
|
+
"./blog/en/vue-i18n_vs_intlayer-vue-i18n.md": {
|
|
1078
|
+
en: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "en"),
|
|
1079
|
+
es: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "es"),
|
|
1080
|
+
ru: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "ru"),
|
|
1081
|
+
ja: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "ja"),
|
|
1082
|
+
fr: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "fr"),
|
|
1083
|
+
ko: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "ko"),
|
|
1084
|
+
zh: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "zh"),
|
|
1085
|
+
de: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "de"),
|
|
1086
|
+
ar: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "ar"),
|
|
1087
|
+
it: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "it"),
|
|
1088
|
+
"en-GB": readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "en-GB"),
|
|
1089
|
+
pt: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "pt"),
|
|
1090
|
+
hi: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "hi"),
|
|
1091
|
+
tr: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "tr"),
|
|
1092
|
+
pl: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "pl"),
|
|
1093
|
+
id: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "id"),
|
|
1094
|
+
vi: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "vi"),
|
|
1095
|
+
uk: readLocale("vue-i18n_vs_intlayer-vue-i18n.md", "uk")
|
|
1096
|
+
},
|
|
937
1097
|
"./blog/en/vue-i18n_vs_intlayer.md": {
|
|
938
1098
|
en: readLocale("vue-i18n_vs_intlayer.md", "en"),
|
|
939
1099
|
es: readLocale("vue-i18n_vs_intlayer.md", "es"),
|
|
@@ -954,6 +1114,26 @@ const blogEntry = {
|
|
|
954
1114
|
vi: readLocale("vue-i18n_vs_intlayer.md", "vi"),
|
|
955
1115
|
uk: readLocale("vue-i18n_vs_intlayer.md", "uk")
|
|
956
1116
|
},
|
|
1117
|
+
"./blog/en/vue-i18n_vs_intlayer_benchmark.md": {
|
|
1118
|
+
en: readLocale("vue-i18n_vs_intlayer_benchmark.md", "en"),
|
|
1119
|
+
es: readLocale("vue-i18n_vs_intlayer_benchmark.md", "es"),
|
|
1120
|
+
ru: readLocale("vue-i18n_vs_intlayer_benchmark.md", "ru"),
|
|
1121
|
+
ja: readLocale("vue-i18n_vs_intlayer_benchmark.md", "ja"),
|
|
1122
|
+
fr: readLocale("vue-i18n_vs_intlayer_benchmark.md", "fr"),
|
|
1123
|
+
ko: readLocale("vue-i18n_vs_intlayer_benchmark.md", "ko"),
|
|
1124
|
+
zh: readLocale("vue-i18n_vs_intlayer_benchmark.md", "zh"),
|
|
1125
|
+
de: readLocale("vue-i18n_vs_intlayer_benchmark.md", "de"),
|
|
1126
|
+
ar: readLocale("vue-i18n_vs_intlayer_benchmark.md", "ar"),
|
|
1127
|
+
it: readLocale("vue-i18n_vs_intlayer_benchmark.md", "it"),
|
|
1128
|
+
"en-GB": readLocale("vue-i18n_vs_intlayer_benchmark.md", "en-GB"),
|
|
1129
|
+
pt: readLocale("vue-i18n_vs_intlayer_benchmark.md", "pt"),
|
|
1130
|
+
hi: readLocale("vue-i18n_vs_intlayer_benchmark.md", "hi"),
|
|
1131
|
+
tr: readLocale("vue-i18n_vs_intlayer_benchmark.md", "tr"),
|
|
1132
|
+
pl: readLocale("vue-i18n_vs_intlayer_benchmark.md", "pl"),
|
|
1133
|
+
id: readLocale("vue-i18n_vs_intlayer_benchmark.md", "id"),
|
|
1134
|
+
vi: readLocale("vue-i18n_vs_intlayer_benchmark.md", "vi"),
|
|
1135
|
+
uk: readLocale("vue-i18n_vs_intlayer_benchmark.md", "uk")
|
|
1136
|
+
},
|
|
957
1137
|
"./blog/en/what_is_internationalization.md": {
|
|
958
1138
|
en: readLocale("what_is_internationalization.md", "en"),
|
|
959
1139
|
es: readLocale("what_is_internationalization.md", "es"),
|