Перевести весь компонент через i18n в vuejs - PullRequest
0 голосов
/ 25 июня 2019

Я хочу перевести весь свой компонент с i18n, и я не знаю, как использовать $ t () в этом случае. У меня есть такие данные

[
{"prizeCount":"300","prizeSum":"2442000","gameStartAt":"2018-01-08 13:00:00.000000"},       
  {"prizeCount":"288","prizeSum":"2530000","gameStartAt":"2018-01-09 12:00:00.000000"}
]

Я передаю эти данные в таблицу :items="mydata" и хочу перевести заголовок моих полей, например, хочу перевести призCount на другой язык. Я использую vue-bootstrap. Каково лучшее решение для этого?

main.js:

import Vue from 'vue'
import App from './App'
import router from './router'
import BootstrapVue from 'bootstrap-vue'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'
import i18n from './i18n'

Vue.config.productionTip = false
Vue.use(BootstrapVue)
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,

  components: {
    App
  },

  i18n,
  template: '<App/>'
})

1 Ответ

1 голос
/ 25 июня 2019

Вы можете добавить это так:

new Vue({
  el: '#app',
  router,

  components: {
    App
  },

  i18n,
  t: i18n.t,
  template: '<App/>'
})

Чем в вашем компоненте вы можете использовать $t или this.$t в своих методах.

Для получения ключей от вашего объекта вы можете сделать так:

data: [
 {"prizeCount":"300","prizeSum":"2442000","gameStartAt":"2018-01-08 13:00:00"},       
 {"prizeCount":"288","prizeSum":"2530000","gameStartAt":"2018-01-09 12:00:00"}
]

data.forEach( obj => {
  let keys = Object.keys(obj)
  // ['prizeCount', 'prizeSum', 'gameStartAt']
  newData = []
  newObj = {}
  keys.forEach( key => {
    let val = obj[key]
    let trans = this.$t(key)
    newObj[trans] = val
  })

  newData.push(newObj)
})
...