index.js 963 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import defaultLang from 'element-ui/src/locale/lang/zh-CN';
  2. import Vue from 'vue';
  3. import deepmerge from 'deepmerge';
  4. import Format from './format';
  5. const format = Format(Vue);
  6. let lang = defaultLang;
  7. let merged = false;
  8. export const t = function(path, options) {
  9. const vuei18n = Object.getPrototypeOf(this || Vue).$t;
  10. if (typeof vuei18n === 'function') {
  11. if (!merged) {
  12. merged = true;
  13. Vue.locale(
  14. Vue.config.lang,
  15. deepmerge(lang, Vue.locale(Vue.config.lang) || {}, { clone: true })
  16. );
  17. }
  18. return vuei18n.apply(this, [path, options]);
  19. }
  20. const array = path.split('.');
  21. let current = lang;
  22. for (var i = 0, j = array.length; i < j; i++) {
  23. var property = array[i];
  24. var value = current[property];
  25. if (i === j - 1) return format(value, options);
  26. if (!value) return '';
  27. current = value;
  28. }
  29. return '';
  30. };
  31. export const use = function(l) {
  32. lang = l || lang;
  33. };
  34. export default { use, t };