@alekseivanov

Как использовать переменные в шаблоне Vue?

Я хочу использовать i18n
https://github.com/Haixing-Hu/vue-i18n

Я прописал в файле main.js

var Vue = require('vue');
var i18n = require('vue-i18n');

Vue.use(i18n, {
  baseUrl: 'resources/i18n'
});

new Vue({
  el: '#test-i18n',
  beforeCompile: function() {
    this.$setLanguage("zh-CN");
  },
  methods: {
    switchLanguage: function(lang) {
      this.$setLanguage(lang);
    }
  }
});

Я пытаюсь использовать переменные в файлах шаблона

<div id="test-i18n" class="message">
  <p>Language: {{$language}}</p>
  <p>{{$i18n.message.hello}}, {{$i18n.message.world}}</p>
</div>


В итоге это не срабатывает, при сборке в консоли браузера написано

Property or method "$language" is not defined on the instance but referenced during render. Make sure...
Property or method "i18n" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property...

Как сделать так, чтобы шаблон видел эти переменные?
  • Вопрос задан
  • 790 просмотров
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега Vue.js
beforeCompile:

Вот как? А версия vue у вас используется какая? Случайно не вторая? Если да, то...

Ну и в целом - это довольно смело, пытаться использовать плагин, не обновлявшийся три года. Есть мнение, что вам следует найти что-нибудь посвежее.
Ответ написан
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
Думаю, что проблема в несоответствии версий Vue и плагина https://github.com/Haixing-Hu/vue-i18n.
Для интернационализации есть более свежие пакеты, например https://kazupon.github.io/vue-i18n/.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы