仅使用CDN将Vuetify与i18n一起使用

Zim*_*Gil 7 javascript vue.js vuetify.js vue-i18n

我正在一个没有Node或Vue-cli的静态环境中的Vue项目,我们正在使用CDN导入Vue,Vuetify和vue-i18n

我们需要有使用Vue的,国际化翻译Vuetify组件,如显示这里

这是我尝试过的一个码本,试图平移底部的分页部分。

我尝试使用Vue.use()但无法正常工作,控制台中没有错误,页面上也没有翻译。

import App from '../components/App.vue.js';
import i18n from '../lang/languages.js';
import store from './store/store.js';

Vue.filter('toUpperCase', function(value) {
  return value.toUpperCase();
});

Vue.config.devtools = true;

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

new Vue({
  i18n,
  store,
  el: '#app',
  render: (h) => h(App)
});
Run Code Online (Sandbox Code Playgroud)

lang / languages.js:

import { russian } from './languages/russian.js';
import { chineseSimple } from './languages/chinese-simple.js';
import { german } from './languages/german.js';
import { portuguese} from './languages/portuguese.js';

const languages = {
  'ru': russian,
  'zh-Hans': chineseSimple,
  'de': german,
  'pt': portuguese,
};

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

export default i18n;

Run Code Online (Sandbox Code Playgroud)

Ali*_*ami 1

您正在寻找的内容在发行版中不可用CDN。你可能会问为什么?

看看这段代码

const Vuetify: VuetifyPlugin = {
  install (Vue: VueConstructor, args?: VuetifyUseOptions): void {
    Vue.use(VuetifyComponent, {
      components,
      directives,
      ...args
    })
  },
  version: __VUETIFY_VERSION__
}

if (typeof window !== 'undefined' && window.Vue) {
  window.Vue.use(Vuetify)
}
Run Code Online (Sandbox Code Playgroud)

尤其是这一部分:

if (typeof window !== 'undefined' && window.Vue) {
  window.Vue.use(Vuetify)
}
Run Code Online (Sandbox Code Playgroud)

它会自动安装 Vuetify,无需任何配置(例如语言等),因此您Vue.use(Vuetify, {..})不会被调用,因为Vue 不会安装插件两次

你能做什么?

  1. 克隆 Vuetify 存储库并更改这部分代码并为您自己构建一个新的 dist。
  2. 保存为文件vuetify.dist.js并更改该部分代码
  3. 使用一些我不推荐的棘手的解决方法,但我为您创建了一个示例。

这是一个代码笔示例,我实际上做了什么:

  1. 使用 script 标签加载 Vue.js 文件
  2. 使用 fetch api 下载内容vuetify.dist.min.js
  3. 更换window.Vue为其他东西以确保vuetify不会自动安装!
  4. 评估更改后的代码

我根本不推荐这种方法

fetch("https://cdnjs.cloudflare.com/ajax/libs/vuetify/1.5.14/vuetify.min.js")
  .then(res => res.text())
  .then(vutify => {
    eval(vutify.replace("window.Vue", "window.Vue2"));

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

    const App = Vue.component("app", {
      template: `
Run Code Online (Sandbox Code Playgroud)