diff --git a/src/layui.js b/src/layui.js index b8f6af3d..1ab2625e 100644 --- a/src/layui.js +++ b/src/layui.js @@ -97,6 +97,31 @@ day: '天' } }, + layer: { + confirm: '确定', + cancel: '取消', + defaultTitle: '信息', + prompt: { + InputLengthPrompt: '最多输入 {length} 个字符', + }, + photos: { + noData: '没有图片', + tools:{ + rotate: '旋转', + scaleX: '水平变换', + zoomIn: '放大', + zoomOut: '缩小', + reset: '还原', + close: '关闭' + }, + viewOriginal: '查看原图', + urlError: { + Prompt: '当前图片地址异常,
是否继续查看下一张?', + confirm: '下一张', + cancel: '不看了' + } + } + }, laypage: { prev: '上一页', next: '下一页', @@ -1194,6 +1219,8 @@ Class.prototype.i18nTranslation = function(key){ var that = this; var args = arguments; + console.log(that); + var i18n = that.cache.i18n; var i18nMessage = i18n.messages[i18n.locale]; diff --git a/src/modules/layer.js b/src/modules/layer.js index a4463e98..58974ca7 100644 --- a/src/modules/layer.js +++ b/src/modules/layer.js @@ -9,6 +9,7 @@ var isLayui = window.layui && layui.define; var $; var win; + var ready = { getPath: function(){ var jsPath = (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') ? document.currentScript.src : function(){ @@ -27,15 +28,38 @@ var ready = { return GLOBAL.layer_dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1); }(), config: { - removeFocus: true + removeFocus: true, + lang: { + confirm: '确定', + cancel: '取消', + defaultTitle: '信息', + prompt: { + InputLengthPrompt: '最多输入 {length} 个字符' + }, + photos: { + noData: '没有图片', + tools: { + rotate: '旋转', + scaleX: '水平变换', + zoomIn: '放大', + zoomOut: '缩小', + reset: '还原', + close: '关闭' + }, + viewOriginal: '查看原图', + urlError: { + Prompt: '当前图片地址异常,
是否继续查看下一张?', + confirm: '下一张', + cancel: '不看了' + } + } + }, }, end: {}, beforeEnd: {}, events: {resize: {}}, minStackIndex: 0, minStackArr: [], - btn: [layui.$t('确定'), layui.$t('取消')], - // 五种原始层模式 type: ['dialog', 'page', 'iframe', 'loading', 'tips'], @@ -99,6 +123,48 @@ var ready = { } }; + /** + * 获取对象中的值,lodash _.get 简易版 + * @param {Record} obj + * @param {string} path + * @param {any} defaultValue + */ +var get = function (obj, path, defaultValue) { + // 'a[0].b.c' ==> ['a', '0', 'b', 'c'] + var casePath = path.replace(/\[(\d+)\]/g, '.$1').split('.'); + var result = obj; + + for (var i = 0; i < casePath.length; i++) { + result = result && result[casePath[i]]; + if (result === null || result === undefined) { + return defaultValue; + } + } + + return result; +} + +// 根据给定的键从国际化消息中获取翻译后的内容 +var $t = false + ? layui.$t.bind(layui) + : function(key){ + // 非 layui 环境去除命名空间前缀,从 config.lang 中取值 + // TODO 简化版,暂不文档化,不支持配置多个 locale + key = key.replace(/^lay\.layer\./, ''); + var result = get(ready.config.lang, key, key); + if(typeof result === 'string' && arguments.length > 1) { + var opts = arguments[1]; + return result.replace(/\{(\w+)\}/g, function(match, key) { + return opts[key] !== undefined ? opts[key] : match; + }) + } + return result; + }; + +// default btnText 需要在 $t 之后初始化 +ready.btn = [$t('lay.layer.confirm'), $t('lay.layer.cancel')]; + + // 默认内置方法。 var layer = { v: '3.7.0', @@ -268,7 +334,7 @@ Class.pt.config = { shade: 0.3, fixed: true, move: doms[1], - title: layui.$t('信息'), + title: $t('lay.layer.defaultTitle'), offset: 'auto', area: 'auto', closeBtn: 1, @@ -1444,7 +1510,7 @@ layer.prompt = function(options, yes){ return layer.open($.extend({ type: 1, - btn: [layui.$t('确定'),layui.$t('取消')], + btn: [$t('lay.layer.confirm'),$t('lay.layer.cancel')], content: content, skin: 'layui-layer-prompt' + skin('prompt'), maxWidth: win.width(), @@ -1457,7 +1523,7 @@ layer.prompt = function(options, yes){ yes: function(index){ var value = prompt.val(); if(value.length > (options.maxlength||500)) { - layer.tips(layui.$t('最多输入')+ (options.maxlength || 500) +layui.$t('个字符'), prompt, {tips: 1}); + layer.tips($t('lay.layer.prompt.InputLengthPrompt', {length: (options.maxlength || 500)}), prompt, {tips: 1}); } else { yes && yes(value, index, prompt); } @@ -1571,7 +1637,7 @@ layer.photos = function(options, loop, key){ // 不直接弹出 if (!loop) return; } else if (data.length === 0){ - return layer.msg(layui.$t('没有图片')); + return layer.msg($t('lay.layer.photos.noData')); } // 上一张 @@ -1716,7 +1782,7 @@ layer.photos = function(options, loop, key){ }); // 滑动切换图片事件,仅限 layui 中 - if(window.layui || window.lay){ + if(isLayui || (window.lay && typeof window.lay === 'function')){ var lay = window.layui.lay || window.lay; var touchEndCallback = function(e, state){ var duration = Date.now() - state.timeStart; @@ -1819,12 +1885,12 @@ layer.photos = function(options, loop, key){ if (options.toolbar) { arr.push([ '
', - layui.$t(''), - layui.$t(''), - layui.$t(''), - layui.$t(''), - layui.$t(''), - layui.$t(''), + '', + '', + '', + '', + '', + '', '
' ].join('')); } @@ -1834,7 +1900,7 @@ layer.photos = function(options, loop, key){ arr.push([''].join('')); } @@ -1856,9 +1922,9 @@ layer.photos = function(options, loop, key){ }, options)); }, function(){ layer.close(dict.loadi); - layer.msg(layui.$t('当前图片地址异常,
是否继续查看下一张?'), { + layer.msg($t('lay.layer.photos.urlError.prompt'), { time: 30000, - btn: [layui.$t('下一张'), layui.$t('不看了')], + btn: [$t('lay.layer.photos.urlError.confirm'), $t('lay.layer.photos.urlError.cancel')], yes: function(){ data.length > 1 && dict.imgnext(true,true); }