index.ts 723 B

12345678910111213141516171819202122232425262728293031323334
  1. import Vue from 'vue';
  2. import { deepAssign } from '../utils/deep-assign';
  3. import defaultMessages from './lang/zh-CN';
  4. declare module 'vue' {
  5. interface VueConstructor {
  6. util: {
  7. defineReactive(obj: object, key: string, value: any): void;
  8. };
  9. }
  10. }
  11. const proto = Vue.prototype;
  12. const { defineReactive } = Vue.util;
  13. defineReactive(proto, '$vantLang', 'zh-CN');
  14. defineReactive(proto, '$vantMessages', {
  15. 'zh-CN': defaultMessages
  16. });
  17. export default {
  18. messages() {
  19. return proto.$vantMessages[proto.$vantLang];
  20. },
  21. use(lang: string, messages?: object) {
  22. proto.$vantLang = lang;
  23. this.add({ [lang]: messages });
  24. },
  25. add(messages = {}) {
  26. deepAssign(proto.$vantMessages, messages);
  27. }
  28. };