Realtime i18n Vuejs не обновляет текст в выпадающем списке

#typescript #vue.js #vue-i18n

#typescript #vue.js #vue-i18n

Вопрос:

Мне нужно немедленное обновление при смене языка на i18n в select

HTML

 <base-dropdown-item
        v-for="(f, i) in filters"
        :key="`dropdown-${i}`"
        @click="filter = f"
        >{{ f.label }}</base-dropdown-item
 

typescript

 data() {
return {
  q: '',
  filter: { label: this.$t('myTasks.filter.Incomplete'), value: 2 },
  filters: [
    { label: this.$t('myTasks.filter.Incomplete'), value: 2 },
    { label: this.$t('myTasks.filter.done'), value: 3 },
    { label: this.$t('myTasks.filter.all'), value: 1 }
  ],

  qTasks: []
};
},
watch: {
'filter.value'() {
  this.$emit('filter', this.filter);
},
};
 

Мне нужно менять язык в режиме реального времени
, когда мне нужно обновить

Ответ №1:

Язык не изменится, потому что вы определяете метки внутри данных. Попробуйте переместить его в вычисляемое свойство.

 
    computed: {
      filters() {
        return [
          { label: this.$t('myTasks.filter.Incomplete'), value: 2 },
          { label: this.$t('myTasks.filter.done'), value: 3 },
          { label: this.$t('myTasks.filter.all'), value: 1 }
        ];
      },
    },

 

Как только вы переместите его в вычисляемый реквизит, значение меток должно измениться в соответствии с языком

Ответ №2:

Похоже, вы не меняете языковой стандарт в примере.

Возможно, документация поможет вам. Я не уверен, правильно ли вы настроили языковые сообщения. Вы можете использовать $i18n.locale для изменения локали локально внутри компонента или $root.$i18n.locale для изменения ее глобально в вашем приложении.