Vuetify 数据的国际化 table header

Internationalization of Vuetify data table header

我正在尝试使用 Vuetify + I18n 将我的数据 table header 国际化。

当我翻译我的普通代码时,它工作正常,但现在我需要翻译我的数据 table 的 header 使用 Vuetify 构建。

我已经尝试在 header 中添加代码 this.$vuetify.t('$vuetify.activity.username')this.$t('$vuetify.activity.username'),但没有任何反应。语言始终为英语 (en)。

有人知道如何解决吗?

我在下面发送我的代码。

提前致谢。

Activity.vue

export default {
  data () {
    return {
      headers: [
        { text: 'ID', value: 'id', width: '1%', align: 'left' },
        { text: this.$vuetify.t('$vuetify.activity.username'), value: 'username', width: '1%' },
        ...
      ]
    }
  },
  ...
}

main.js

import messages from './assets/lang'

Vue.use(VueI18n)

const i18n = new VueI18n({
  locale: 'en',
  messages
})

// Vue.use(Vuetify)
Vue.use(Vuetify, {
  lang: {
    t: (key, ...params) => i18n.t(key, params)
  }
})

./assets/lang/index.js

module.exports = {
  en: {
    ...
    $vuetify: {
      dataIterator: {
        rowsPerPageText: 'Items per page:',
        ...
      },
      ...
      activity: {
        username: 'Username'
      }
    }
  },
  pt: {
    ...
    $vuetify: {
      dataIterator: {
        rowsPerPageText: 'Itens por página:',
        ...
      },
      ...
      activity: {
        username: 'Nome do usuário'
      }
    }
  }
}

对于 Vuetify 2.x

<v-data-table :headers="headers" ...

并放入计算数据

 computed: {   
    headers () {
      return [
        {
          text: this.$t('title'),
          align: 'left',
          sortable: false,
          value: 'title'
        },

对于 Vuetify 1.x

您可以将您的翻译函数放入 headerCell 插槽中。当您将函数放入 Activity.vue 中的 headers: 对象时,它不会起作用,只需将您的翻译键放在那里并使用带插槽的模板即可。

<v-data-table>
    ....
    <template slot="headerCell" slot-scope="props">
        {{ $t(props.header.text) }}
    </template>
    ....

您可以将 header 放入计算函数中。当本地改变时,headers 将被更新

computed:{

    headers(){
      return [
        { text: 'ID', value: 'id', width: '1%', align: 'left' },
        { text: this.$vuetify.t('$vuetify.activity.username'), value: 'username', width: '1%' },
        ...
      ]
    }
...
}