vite-plugin-vue-i18n custom block messages aren't loaded
Reporting a bug?
Hi guys,
I have been using
I migrated from Vue 2 to 3 and Vue i18n from v8 to 9. I used vue cli and vue i18n loader for the custom block. Since the migration, i now use vue 3 + Vue i18n v9 + vite vite-plugin-vue-i18n.
I want to use the legacy api for i18n to minimize the page migration work. However, $t only picks up the global resources loaded from vite.config and my i18n setting below
export default defineConfig({
plugins: [
vue(),
vueI18n({
// if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false`
compositionOnly: false,
include: resolve(__dirname, "./src/locales/**"),
}),
],
});
import { createI18n } from "vue-i18n";
import messages from "@intlify/vite-plugin-vue-i18n/messages";
const i18n = createI18n({
legacy: true, // you must set `false`, to use Composition API
locale: 'en-US',
fallbackLocale: 'en-US',
messages,
});
The
Is it a bug or not supported or I missed something?
Expected behavior
Reproduction
see description above
Issue Package
vite-plugin-vue-i18n
System Info
System:
OS: Windows 10 10.0.22598
CPU: (8) x64 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz
Memory: 10.05 GB / 31.71 GB
Binaries:
Node: 16.14.2 - C:\Program Files\nodejs\node.EXE
npm: 8.5.5 - C:\Program Files\nodejs\npm.CMD
Browsers:
Edge: Spartan (44.22598.200.0), Chromium (101.0.1210.39)
Internet Explorer: 11.0.22598.1
Screenshot
No response
Additional context
No response
Validations
- [X] Read the Contributing Guidelines.
- [X] Read the README
- [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- [X] Check that this is a concrete bug. For Q&A open a GitHub Discussion.
I'm using vue-i18n-bridge with vite-plugin-vue-i18n in composition mode. Custom block messages aren't loaded either.
I tried to use custom block with vue3 in legacy mode, and it works,code below https://stackblitz.com/edit/vitejs-vite-7wz2pl?file=src/App.vue
But I don't konw how to use i18n like this with vue2, can anyone help me?
Same problem here. I'm trying to progressively a big project to Vue 3 and trying to at least get vue-i18n to work with SFC blocks and Vite with Vue 2.7 while relying on global $t() function. Global messages coming from files are ok, but SFC blocks are not interpreted.
I've tried a lot of variations, including unplugin-vue and the bundle tools.
Same with Nuxt3 + unplugin-vue-i18n
Vue's context.messages doesn't include locales defined in SFCs
Sorry I have not been able to reply for a while now.
I have been focused on nuxtjs/i18n for a while now. I recently released a nutxjs/i18n beta version of it and will be looking at an issue soon.
Pleases wait🙏
Sorry I have not been able to reply for a while now.
I have been focused on nuxtjs/i18n for a while now. I recently released a nutxjs/i18n beta version of it and will be looking at an issue soon.
Pleases wait🙏
Thanks for the hard work. Btw, will nuxtjs/i18n work with this plugin? What's the benefits of using it over pure plugin/i18n.ts with this plugin in a Nuxt project?
One year later, I am still experiencing this problem. Any progress? Anyone has found a workaround?
@kazupon any progress thanks ?
I also encountered this problem and I solved it with the composable useI18n. The composable works with custom block messages, but the $t function does not.
<template>
<h1>{{ t('headline') }}</h1>
</template>
<i18n lang="json5">
{
de: {
headline: 'Überschrift'
},
en: {
headline: 'Headline'
},
}
</i18n>
<script lang="ts" setup>
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
</script>