自定义变量项目的Vuej和i18n

vfhzx4xs  于 2022-12-30  发布在  Vue.js
关注(0)|答案(1)|浏览(116)

我获取了一些带有自己翻译的条目,但是不知怎么的,我不能很好地使用vue-i18 n(https://vue-i18n.intlify.dev/)。
我目前的翻译是通过json文件加载的,效果很好,但是我找不到任何当前的信息来添加vue-i18 n的动态变量。
所以我写了一个小代码来实现这个。

<template>
  <div class="products">
    <ul>
      <li v-bind:key="value.id" v-for="(value,key) in items">
         {{ c(key) }}
      </li>
    </ul>
  </div>
</template>

<script setup>
import { i18n } from '../lang/i18n'

// items remotely fetched
const items = {
  title: {
    en: 'english title',
    de: 'englischer Titel'
  },
  desc: {
    en: 'english description',
    de: 'deutsche beschreibung'
  },
  upcoming: {
    en: 'english upcoming'
  }
}

const c = (text) => {
  return (items[text][i18n.global.locale] ? items[text][i18n.global.locale] : items[text][i18n.global.fallbackLocale])
}

</script>

它工作得很好,但我不想再重新发明轮子,如果它已经存在。像这样的事情可能吗?

kb5ga3dv

kb5ga3dv1#

将const c = (text)更改为计算属性,如下所示:

const c = computed((text) => {
  return (items[text][i18n.global.locale] ? items[text][i18n.global.locale] : items[text][i18n.global.fallbackLocale]);
})

这个应该可以了。

相关问题