vue-i18n 不使用 vuetify 组件字符串

vue-i18n not use vuetify components strings

我尝试使用 vue-i18n 来翻译我的应用程序。我也使用 vuetify 和 vue cli。

目前我会说英语和德语。 这是我的项目结构和代码。

main.js

import Vue from "vue";
import i18n from "./plugins/i18n";
import vuetify from "./plugins/vuetify";

Vue.config.productionTip = false;

new Vue({
  vuetify,
  i18n,
  render: (h) => h(App),
}).$mount("#app");

plugins/i18n.js

import Vue from "vue";
import VueI18n from "vue-i18n";
import de from "@/locale/de";
import en from "@/locale/en";

Vue.use(VueI18n);

const messages = {
  de: de,
  en: en,
};

const i18n = new VueI18n({
  locale: "de",
  fallbackLocale: "en",
  messages,
});

export default i18n;

locale/en.js

export default {
    hello: "hello",
};

locale/de.js

export default {
    hello: "Hallo",
    $vuetify: {
        dataIterator: {
          rowsPerPageText: "Einträge pro Seite:",
          pageText: "{0}-{1} von {2}",
        },
    }
};

plugins/vuetify.js

import Vue from "vue";
import Vuetify from "vuetify/lib/framework";
import i18n from "./i18n";

Vue.use(Vuetify);

export default new Vuetify({
  lang: {
    t: (key, ...params) => i18n.t(key, params),
  },
});

hello 翻译一切正常,但 vuetify 组件未按预期工作。 我想在将来为几个 vuetify 组件添加一个德语翻译。 但目前 a 想使用 vuetify 的原始名称。那是行不通的。

例如,v-select 组件如下所示:

其他组件也不工作。

我做错了什么?

您缺少默认的 vuetify 组件语言环境。您应该通过在您的语言环境中重写它们或在每个语言环境文件的开头导入它来提供它。

locale/en.js

import { en } from 'vuetify/lib/locale'

export default {
  $vuetify: { ...en },
  hello: "hello",
};

locale/de.js

import { de } from 'vuetify/lib/locale'

export default {
  hello: "Hallo",
  $vuetify: {
    ...de,
    dataIterator: {
      rowsPerPageText: "Einträge pro Seite:",
      pageText: "{0}-{1} von {2}",
    },
  }
};