新增i18n多语言模块

pull/65/head
fengshuonan 2021-01-29 22:38:23 +08:00
parent e766f4313a
commit 6e08dd417e
3 changed files with 95 additions and 25 deletions

View File

@ -152,7 +152,8 @@ layui.config({
func: '../../expand/module/func/func',
dict: '../../expand/module/dict/dict',
gunsSelect: '../../expand/module/gunsSelect/gunsSelect',
ws: '../../expand/module/webSocket/webSocket'
ws: '../../expand/module/webSocket/webSocket',
i18n: '../../expand/module/i18n/i18n'
}).use(['layer', 'admin'], function () {
var $ = layui.jquery;

View File

@ -0,0 +1,75 @@
/**
* 多语言相关方法的封装
*
* @author fengshuonan
* @date 2021/1/29 21:49
*/
layui.define(['HttpRequest'], function (exports) {
var HttpRequest = layui.HttpRequest;
var i18n = {
/**
* 获取多语言的种类
*/
getLanguageTypes: function () {
var results = null;
var languageRequest = new HttpRequest(Feng.ctxPath + "/i18n/getAllLanguages", 'get', function (data) {
results = data.data;
}, function (data) {
layer.msg("获取语言列表失败!" + data.message, {icon: 5, anim: 6});
});
languageRequest.start();
return results;
},
/**
* 改变当前用户显示的语言种类
*
* @param code 多语言种类的编码
*/
changeUserTranslation: function (code) {
var changeLanguageRequest = new HttpRequest(Feng.ctxPath + "/i18n/changeUserTranslation", 'post', function (data) {
window.location.href = Feng.ctxPath + "/";
}, function (data) {
layer.msg("切换多语言失败!" + data.message, {icon: 5, anim: 6});
});
changeLanguageRequest.set("tranLanguageCode", code);
changeLanguageRequest.start(true);
},
/**
* 加载当前语言字典并加入到缓存
*/
loadAndCacheTranslation: function () {
var request = new HttpRequest(Feng.ctxPath + "/i18n/getUserTranslation", 'get', function (data) {
layui.data('system', {
key: "translationBook",
value: data.data
});
}, function (data) {
layer.msg("加载语言字典失败!" + data.message, {icon: 5, anim: 6});
});
request.start();
},
/**
* 通过翻译项编码翻译某个值
*/
translate: function (tranCode, defaultValue) {
var translationBook = layui.data('system').translationBook;
if (typeof translationBook === 'undefined' || translationBook == null || translationBook === '') {
return defaultValue;
} else {
if (typeof translationBook[tranCode] === 'undefined' || translationBook[tranCode] == null || translationBook[tranCode] === '') {
return defaultValue;
} else {
return translationBook[tranCode];
}
}
}
};
exports('i18n', i18n);
});

View File

@ -45,7 +45,7 @@
<script>
var wsInst = null
layui.use(['layer', 'element', 'admin', 'index', 'HttpRequest', 'ws', 'notice'], function () {
layui.use(['layer', 'element', 'admin', 'index', 'HttpRequest', 'ws', 'notice', 'i18n'], function () {
var $ = layui.jquery;
var layer = layui.layer;
var admin = layui.admin;
@ -53,31 +53,25 @@
var HttpRequest = layui.HttpRequest;
var ws = layui.ws;
var notice = layui.notice;
var i18n = layui.i18n;
//获取支持的语言列表
var languageRequest = new HttpRequest(Feng.ctxPath + "/i18n/getAllLanguages", 'get', function (data) {
for (var i = 0; i < data.data.length; i++) {
var code = data.data[i].code;
var description = data.data[i].name;
$("#languageDiv").append('<dd lay-unselect><a id="tran-' + code + '" href="javascript:;">' + description + '</a></dd>');
let languageTypes = i18n.getLanguageTypes();
for (var i = 0; i < languageTypes.length; i++) {
var code = languageTypes[i].code;
var description = languageTypes[i].name;
$("#languageDiv").append('<dd lay-unselect><a id="tran-' + code + '" href="javascript:;">' + description + '</a></dd>');
//设置监听事件,设置点击按钮切换当前系统语言
(function (code) {
$('#tran-' + code).click(function () {
var changeLanguageRequest = new HttpRequest(Feng.ctxPath + "/i18n/changeUserTranslation", 'post', function (data) {
window.location.href = Feng.ctxPath + "/";
}, function (data) {
layer.msg("切换多语言失败!" + data.message, {icon: 5, anim: 6});
});
changeLanguageRequest.set("tranLanguageCode", code);
changeLanguageRequest.start(true);
});
})(code);
}
}, function (data) {
layer.msg("获取语言列表失败!" + data.responseJSON.message, {icon: 5, anim: 6});
});
languageRequest.start();
//设置监听事件,设置点击按钮切换当前系统语言
(function (code) {
$('#tran-' + code).click(function () {
i18n.changeUserTranslation(code);
});
})(code);
}
// 记载并缓存翻译的字典
i18n.loadAndCacheTranslation();
// 默认加载主页
index.loadHome({
@ -126,7 +120,7 @@
try {
let msg = JSON.parse(data)
notice.info({
title: '['+msg.businessTypeValue+']'+msg.messageTitle,
title: '[' + msg.businessTypeValue + ']' + msg.messageTitle,
message: msg.messageContent,
timeout: false
});