Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 在组件外部使用VueI18n时出现问题_Vue.js_Vuejs2_Vue I18n - Fatal编程技术网

Vue.js 在组件外部使用VueI18n时出现问题

Vue.js 在组件外部使用VueI18n时出现问题,vue.js,vuejs2,vue-i18n,Vue.js,Vuejs2,Vue I18n,我试图在一个组件之外使用i18n,我发现这个解决方案告诉我使用Vue.i18n.translate('str'),但是当我调用它时,出现了一个错误,无法读取未定义的属性“translate” 我正在使用以下配置 main.js import i18n from './i18n/i18n'; new Vue({ router, store, i18n: i18n, render: h => h(App) }).$mount('#app') import Vu

我试图在一个组件之外使用i18n,我发现这个解决方案告诉我使用Vue.i18n.translate('str'),但是当我调用它时,出现了一个错误,无法读取未定义的属性“translate”

我正在使用以下配置

main.js

import i18n from './i18n/i18n';
new Vue({
    router,
    store,
    i18n: i18n,
    render: h => h(App)
}).$mount('#app')
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import i18nData from './i18nData'
Vue.use(VueI18n);
export default new VueI18n({
  locale: 'en',
  messages: i18nData,
});
export default {
    en: {
        //my messages
    }
}
i18n.js

import i18n from './i18n/i18n';
new Vue({
    router,
    store,
    i18n: i18n,
    render: h => h(App)
}).$mount('#app')
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import i18nData from './i18nData'
Vue.use(VueI18n);
export default new VueI18n({
  locale: 'en',
  messages: i18nData,
});
export default {
    en: {
        //my messages
    }
}
i18nda.js

import i18n from './i18n/i18n';
new Vue({
    router,
    store,
    i18n: i18n,
    render: h => h(App)
}).$mount('#app')
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import i18nData from './i18nData'
Vue.use(VueI18n);
export default new VueI18n({
  locale: 'en',
  messages: i18nData,
});
export default {
    en: {
        //my messages
    }
}
然后我试着用这个

import Vue from 'vue';
Vue.i18n.translate('someMessage');

有人能帮我吗?

您应该导入
i18n
而不是Vue

import i18n from './i18n'

i18n.tc('someMessage')

我设法做到了这一点:

import router from '../router';
翻译文本:

let translatedMessage = router.app.$t('someMessage');
获取当前语言:

let language = router.app.$i18n.locale;
在组件的
setup()
之外,在其上使用其翻译API(如
t
函数)

例如。在具有单元可测试组合函数的文件中:

//i18n/index.js
从“vue-i18n”导入{createI18n}
从“/en.json”导入en
...
导出默认createI18n({
日期时间格式:{en:{…}},
地区:'en',
消息:{en}
})
//功能/utils.js
//从“vue-i18n”导入{useI18n}
//const{t}=useI18n()//必须在'setup'函数的顶部调用未捕获的SyntaxError:
从“../i18n”导入i18n
常量{t}=i18n.global

像这样使用Vue。$i18n.translate()相同错误。无法读取未定义的属性“translate”此操作有效,但如果语言发生更改,我需要在VueI18n实例上应用,对吗?如果您的组件是被动的,它会自动应用。谢谢,我从Vue开始,在这种情况下,我需要做什么才能使组件成为被动的?这取决于情况。大多数情况下,我通过在Vue组件中使用
i18n.locale='en'
(或
this.$i18n.locale='en'
)来更改区域设置。应该有用。谢谢,我会试试这个。这对我来说很有用,谢谢。。。