nuxt-modules / i18n

I18n module for Nuxt
https://i18n.nuxtjs.org
MIT License
1.75k stars 483 forks source link

`bundle.onlyLocales` not working for SFC #2588

Closed alexbidenko closed 1 month ago

alexbidenko commented 11 months ago

Environment

"nuxt": "^3.8.2" "@nuxtjs/i18n": "^8.0.0-rc.6" "node": "20.7.0"

Reproduction

https://github.com/alexbidenko/i18n-problem

Just pnpm i, pnpm build and pnpm preview. In network tab of dev tools you can see, that both of lacales exists in bundle.

P.S. in example I use Lazy for component, but and without it problem is same. Lazy is added for better visibility in the network tab

image

Describe the bug

New bundle.onlyLocales feature is very usefull, but not working for Single File Component locales. If I use <i18n> blocks in component, every locales will be included in result bundle. Expected result is only locales described in bundle.onlyLocales will be included.

Additional context

Motivation.

If project is large (hundreds of pages with tens of locales) that performance will be bad. For optimization is usefull build different versions of site for every locales. Every build will contains only one locale. And every page (or components) of every build will contains self locale strings. Then every locales will be downloaded to browser optimized.

Logs

No response

BobbieGoede commented 11 months ago

Hmm that's odd, specifically when using multiple <i18n> blocks it doesn't work, it does work when using multiple locales in a single <i18n> block.

This functionality is powered by @intlify/unplugin-vue-i18n, I think onlyLocales currently does not support multiple <i18n locale="x"> block, I recommend opening an issue on its repo here https://github.com/intlify/bundle-tools/tree/main/packages/unplugin-vue-i18n.

alexbidenko commented 11 months ago

@BobbieGoede thank you very much for single block hint - I didn't know :)

But different blocks is also problem - and I have opened issue in their repository: https://github.com/intlify/bundle-tools/issues/329

imslepov commented 6 months ago

@BobbieGoede I fixed this bug, the issue can be closed when the packages @intlify/bundle-tools and @intlify/unplugin-vue-i18n are updated.

kazupon commented 6 months ago

@intlify/unplugin-vue-i18n latest version will not still released ... We will release the latest version of @intlify/unplugin-vue-i18n with vue-i18n v10. nuxt i18n also needs a major release.

BobbieGoede commented 1 month ago

Can confirm this is resolved in v9, since it depends on a breaking dependency update this can't be backported to v8. Modified reproduction using v9 here https://stackblitz.com/edit/alexbidenko-i18n-problem-icaomd?file=nuxt.config.ts