yyuap-template
Version:
template project which is based on tinper
148 lines (135 loc) • 4.93 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['module', 'exports', 'underscore', './pack', 'c-url', './jDiwork'], factory);
} else if (typeof exports !== "undefined") {
factory(module, exports, require('underscore'), require('./pack'), require('c-url'), require('./jDiwork'));
} else {
var mod = {
exports: {}
};
factory(mod, mod.exports, global.underscore, global.pack, global.cUrl, global.jDiwork);
global.index2 = mod.exports;
}
})(this, function (module, exports, _underscore, LangPack, Url) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _underscore2 = _interopRequireDefault(_underscore);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var LangUtil = function LangUtil() {
//this.initialize.apply(this, arguments);
};
LangUtil.prototype = {
/**
* @return zh-CN、zh-TW、zh-HK、ar-EG、vi-VN、ja-JP
*/
lang: '',
/**
* @return zhcn、zhtw、zhhk、areg、vivn、jajp
*/
langType: '',
/**
* 支持的语言列表
*/
languages: ['zh_CN'],
/**
* 获取的语言类型
*/
uiTemplateLanguage: '',
/**
* 获取的默认语言类型
*/
uiTemplateDefaultLanguage: '',
/**
* 初始化化入口
*/
initialize: function initialize(startCreateHander, createThis) {
//cfg = cfg || {};
var lang = void 0;
var langType = void 0;
var self = this;
jDiwork.getContext(function (param) {
var uiTemLanguage = param.locale || 'zh_CN';
var defaultLanguage = "en_US";
try {
var multilist = JSON.parse(param.multilist);
if (multilist && multilist instanceof Array) {
multilist.forEach(function (item) {
if (item.default) {
defaultLanguage = item.langCode;
}
});
};
} catch (err) {
console.log(err);
}
self.uiTemplateDefaultLanguage = defaultLanguage;
lang = self.getLanguage(uiTemLanguage);
if (lang.indexOf('_') == -1) {
langType = lang.replace('-', '').toLowerCase();
} else {
langType = lang.replace('_', '').toLowerCase();
}
document.getElementsByTagName('html')[0].setAttribute('lang', lang);
document.getElementsByTagName('body')[0].classList.add(langType);
//测试
self.uiTemplateLanguage = lang;
self.pack = LangPack[langType];
self.langType = langType;
startCreateHander(createThis);
});
},
/**
* 获取语言。优先级:URL配置 > 系统语言 > 默认语言
*/
getLanguage: function getLanguage(Language) {
if (Url.query('_lang')) {
// 配置页面语言
return Url.query('_lang');
} else if (Language) {
// diwork语言
return Language;
} else {
return this.languages[0]; // 若没有,获取第一个活动语言。
}
},
/**
* 渲染模版内容
* @param tplStr模版内容
* @param data 数据
* @splitWidthEM 默认false
*/
template: function template(tplStr, data, insertEM) {
var tpl = (this.pack[tplStr] || tplStr) + '';
insertEM = typeof insertEM == 'undefined' ? false : true;
if (!tpl) {
return '';
}
// for 活动规则。段落分隔符号:@@@@
if (tpl.indexOf('@@@@') >= 0) {
var strArr = [];
strArr.push('<ul>');
tpl.split('@@@@').forEach(function (item, index) {
item && strArr.push('<li>' + item + '</li>');
});
strArr.push('</ul>');
tpl = strArr.join('');
}
tpl = tpl.replace(/\{([\s\S]+?)\}/ig, function ($0, $1) {
if (insertEM) {
return '<em class="' + $1 + '">' + data[$1] + '</em>';
} else {
return data[$1];
}
});
return tpl;
}
};
exports.default = new LangUtil();
module.exports = exports['default'];
});