1234567891011121314151617181920212223242526272829303132333435363738 |
- import defaultLang from 'element-ui/src/locale/lang/zh-CN';
- import Vue from 'vue';
- import deepmerge from 'deepmerge';
- import Format from './format';
- const format = Format(Vue);
- let lang = defaultLang;
- let merged = false;
- export const t = function(path, options) {
- const vuei18n = Object.getPrototypeOf(this || Vue).$t;
- if (typeof vuei18n === 'function') {
- if (!merged) {
- merged = true;
- Vue.locale(
- Vue.config.lang,
- deepmerge(lang, Vue.locale(Vue.config.lang) || {}, { clone: true })
- );
- }
- return vuei18n.apply(this, [path, options]);
- }
- const array = path.split('.');
- let current = lang;
- for (var i = 0, j = array.length; i < j; i++) {
- var property = array[i];
- var value = current[property];
- if (i === j - 1) return format(value, options);
- if (!value) return '';
- current = value;
- }
- return '';
- };
- export const use = function(l) {
- lang = l || lang;
- };
- export default { use, t };
|