我有一个项目,我需要在Vuex商店内进行翻译。但是当我试图在商店内使用i18n进行翻译时,我总是遇到错误。
我尝试使用下面的import语句在存储中导入i18n的示例。
import i18n from '@/i18n';
在我的Vue项目的main.js文件中,我导入并使用i18n文件:
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import { store } from './store';
import i18n from './i18n';
createApp(App).use(i18n).use(store).use(router).mount('#app');
这是我的i18n.js文件,位于src
文件夹中:
import { createI18n } from 'vue-i18n';
function loadLocaleMessages() {
const locales = require.context(
'./locales',
true,
/[A-Za-z0-9-_,\s]+\.json$/i
);
const messages = {};
locales.keys().forEach((key) => {
const matched = key.match(/([A-Za-z0-9-_]+)\./i);
if (matched && matched.length > 1) {
const locale = matched[1];
messages[locale] = locales(key);
}
});
return messages;
}
export default createI18n({
legacy: false,
locale: localStorage.locale ?? 'nl',
globalInjection: true,
messages: loadLocaleMessages(),
});
3条答案
按热度按时间e4yzc0pl1#
对于那些在Vuex商店中使用i18 n的Vue 3用户来说,我可以这样实现:
translations/index.js*基本设置 *
main.js*导入store和i18 n并在Vue应用示例中使用 *
Vuex store module file with getter example:
xnifntxz2#
我在Vuex中使用了vue-i18 n。也许它对你有帮助。
创建vue-i18n.js文件如下;
并将其导入到Vue的main.js文件中;
将其导入到您的商店或模块中(我在我的vuex模块中导入);
然后在任何你想要的地方使用它(action,mutation,setter或者getter);
js文件;
dojqjjoe3#
我可以在我的商店里使用这个.$i18n: