Vue-i18n 'Невозможно прочитать свойство' _t 'из неопределенного в Proxy.Vue. $ T' - PullRequest
0 голосов
/ 13 февраля 2019

Проблемы с включением vue-i18n в мое приложение.Использовал эту страницу как источник вдохновения.

  <b-navbar-nav class="ml-auto" >
    <b-nav-item-dropdown :text="display_name" right>
      <b-dropdown-item disabled>{{ $t('username') }}: {{ username }}</b-dropdown-item>
      <b-dropdown-item disabled>Organisation: {{ organisation }}</b-dropdown-item>
    </b-nav-item-dropdown>
  </b-navbar-nav>

Выдает ошибку: Cannot read property '_t' of undefined at Proxy.Vue.$t Отслеживание ошибки в Chrome devtools приводит меня к строке 149 (инструкция возврата) vue-i18n.esm.js:

Vue.prototype.$t = function (key) {
  var values = [], len = arguments.length - 1;
  while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];

  var i18n = this.$i18n;
  return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))
};

Я использую конфигурацию веб-пакета vue-cli-3 и установил vue-i18n из npm и использую в качестве плагина.

i18n.js (в src / pluginsкаталог):

import Vue from 'vue/dist/vue.js';
import VueI18n from 'vue-i18n';

Vue.use(VueI18n);

const messages = {
  'en': {
    username: 'Username',
    ...
  },
  'se': {
    username: 'Användarnamn',
    ...
  }
};

export let i18n = new VueI18n({
  locale: 'en', // set locale
  fallbackLocale: 'se', // set fallback locale
  messages, // set locale messages
});

main.js:

import Vue from 'vue/dist/vue.js'
import VueRouter from 'vue-router'
import BootstrapVue from 'bootstrap-vue'
import VueSpinners from 'vue-spinners'

import i18n from './plugins/i18n'
...
new Vue({
  router,
  i18n,
  data() {
    return store;
  },
  render: h => h(App)
}).$mount('#app')

Зависимости от package.json:

"dependencies": {
  "axios": "^0.18.0",
  "bootstrap-vue": "^2.0.0-rc.11",
  "npm": "^6.5.0",
  "ol": "^5.3.0",
  "proj4": "^2.5.0",
  "qs": "^6.6.0",
  "vue": "^2.5.17",
  "vue-i18n": "^8.8.1",
  "vue-router": "^3.0.2",
  "vue-spinners": "^1.0.2"
},

Что мне нужно сделать?

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Если кто-то пришел сюда с той же проблемой, но использует export default, у меня было это в моем main.js:

import translations from './translations';

new Vue({
    translations,
    ...
}).$mount('#app');

Где translations / index.js загрузил плагин и все как обычно,Видимо, вы должны назвать импорт 'i18n' для правильной работы:

import i18n from './translations';

new Vue({
    i18n,
    ...
}).$mount('#app');
0 голосов
/ 13 февраля 2019

Ах, смущающе просто, я изменил

import i18n from './plugins/i18n'

на

import {i18n} from './plugins/i18n'

и все работает сейчас.

...