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%' },
...
]
}
...
}
我正在尝试使用 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%' },
...
]
}
...
}