添加国际化
This commit is contained in:
parent
d4b7b2b830
commit
1a86f88b44
|
@ -0,0 +1,31 @@
|
||||||
|
package net.mingsoft.config;
|
||||||
|
|
||||||
|
import com.jagregory.shiro.freemarker.ShiroTags;
|
||||||
|
import freemarker.template.TemplateException;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 读取国际化配置,传递给freemker
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class I18NConfig {
|
||||||
|
@Autowired
|
||||||
|
protected freemarker.template.Configuration configuration;
|
||||||
|
|
||||||
|
@Value("${ms.local.default:zh_CN}")
|
||||||
|
private String defaultLocal;
|
||||||
|
@Value("${ms.local.messages:zh_CN,en_US}")
|
||||||
|
private String messages;
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
public void init() throws IOException, TemplateException {
|
||||||
|
configuration.setSharedVariable("localDefault",defaultLocal);
|
||||||
|
configuration.setSharedVariable("localMessages",messages.split(","));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -13,6 +13,9 @@ logging:
|
||||||
path: log #会在项目的根目录下生成log目录,里面会生成对应的日期目录,日期目录下面生成日志压缩包备份文件,默认按每10M分割一个日志文件,例如:log/2020-01/app-2020-01-03-18.1.log.gz(表示2020年1月3号下午六点的第一个备份),也可以根据实际情况写绝对路径,例如:d:/log
|
path: log #会在项目的根目录下生成log目录,里面会生成对应的日期目录,日期目录下面生成日志压缩包备份文件,默认按每10M分割一个日志文件,例如:log/2020-01/app-2020-01-03-18.1.log.gz(表示2020年1月3号下午六点的第一个备份),也可以根据实际情况写绝对路径,例如:d:/log
|
||||||
|
|
||||||
ms:
|
ms:
|
||||||
|
local:
|
||||||
|
default: zh_CN #默认语言
|
||||||
|
messages: zh_CN,en_US #全部语言
|
||||||
# scheme: https #解决使用代理服务器代理应用时标签解析域名依旧为http的问题
|
# scheme: https #解决使用代理服务器代理应用时标签解析域名依旧为http的问题
|
||||||
swagger:
|
swagger:
|
||||||
enable: true #启用swagger文档,生产的时候务必关掉
|
enable: true #启用swagger文档,生产的时候务必关掉
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
<#list localMessages as item>
|
||||||
|
<script src="${base}/static/locale/lang/${modeldir}/${item}.js"></script>
|
||||||
|
</#list>
|
||||||
|
<script>
|
||||||
|
(function(window) {
|
||||||
|
var defaultLocal = '${localDefault}' //默认语言
|
||||||
|
|
||||||
|
var localeMessage = [] //添加语言
|
||||||
|
<#list localMessages as item>
|
||||||
|
localeMessage.push('${item}')
|
||||||
|
</#list>
|
||||||
|
window.indexlocale = {
|
||||||
|
language:defaultLocal
|
||||||
|
}
|
||||||
|
//获取后台index的语言
|
||||||
|
if(parent!=null&&parent.indexVue!=undefined&&parent.indexVue.locale!=undefined){
|
||||||
|
window.indexlocale = parent.indexVue.locale
|
||||||
|
}
|
||||||
|
window.i18n = new VueI18n({
|
||||||
|
locale: window.indexlocale.language, // 设置地区
|
||||||
|
fallbackLocale: defaultLocal,
|
||||||
|
|
||||||
|
})
|
||||||
|
//加载语言
|
||||||
|
localeMessage.forEach(function (value) {
|
||||||
|
if(window[value]!=undefined){
|
||||||
|
var message = window[value]
|
||||||
|
if(window['base_'+value]!=undefined){
|
||||||
|
message = Object.assign({},message,window['base_'+value])
|
||||||
|
}
|
||||||
|
i18n.setLocaleMessage(value,message)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
var localElement = i18n.getLocaleMessage(i18n.locale)
|
||||||
|
if(Object.keys(localElement).indexOf("el")!=-1){
|
||||||
|
ELEMENT.locale(localElement)
|
||||||
|
}
|
||||||
|
})(window);
|
||||||
|
</script>
|
|
@ -0,0 +1,26 @@
|
||||||
|
var base_en_US={
|
||||||
|
base:{
|
||||||
|
operate:{
|
||||||
|
save:'save',
|
||||||
|
back:'back',
|
||||||
|
edit:'edit',
|
||||||
|
back:'back',
|
||||||
|
cancel:'cancel',
|
||||||
|
del:'del',
|
||||||
|
rest:'rest',
|
||||||
|
search:'search',
|
||||||
|
filter:'filter',
|
||||||
|
action:'action',
|
||||||
|
confirm:'confirm'
|
||||||
|
},
|
||||||
|
message:{
|
||||||
|
success:'success',
|
||||||
|
tip:'tip',
|
||||||
|
confirmdel:'This operation will permanently delete the selection. Do you want to continue',
|
||||||
|
empty:'empty',
|
||||||
|
exist:'exist',
|
||||||
|
fail:'fail',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Object.assign(base_en_US,ELEMENT.lang.en)
|
|
@ -0,0 +1,26 @@
|
||||||
|
var base_zh_CN={
|
||||||
|
base:{
|
||||||
|
operate:{
|
||||||
|
add:'新增',
|
||||||
|
save:'保存',
|
||||||
|
edit:'编辑',
|
||||||
|
back:'返回',
|
||||||
|
cancel:'取消',
|
||||||
|
del:'删除',
|
||||||
|
rest:'重置',
|
||||||
|
search:'查询',
|
||||||
|
filter:'塞选',
|
||||||
|
action:'操作',
|
||||||
|
confirm:'确定'
|
||||||
|
},
|
||||||
|
message:{
|
||||||
|
success:'成功',
|
||||||
|
tip:'提示',
|
||||||
|
confirmdel:'此操作将永久删除所选内容, 是否继续',
|
||||||
|
empty:'暂无数据',
|
||||||
|
exist:'已存在',
|
||||||
|
fail:'失败',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Object.assign(base_zh_CN,ELEMENT.lang.zhCN)
|
|
@ -0,0 +1,139 @@
|
||||||
|
(function (global, factory) {
|
||||||
|
if (typeof define === "function" && define.amd) {
|
||||||
|
define('element/locale/en', ['module', 'exports'], factory);
|
||||||
|
} else if (typeof exports !== "undefined") {
|
||||||
|
factory(module, exports);
|
||||||
|
} else {
|
||||||
|
var mod = {
|
||||||
|
exports: {}
|
||||||
|
};
|
||||||
|
factory(mod, mod.exports);
|
||||||
|
global.ELEMENT.lang = global.ELEMENT.lang || {};
|
||||||
|
global.ELEMENT.lang.en = mod.exports;
|
||||||
|
}
|
||||||
|
})(this, function (module, exports) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.default = {
|
||||||
|
el: {
|
||||||
|
colorpicker: {
|
||||||
|
confirm: 'OK',
|
||||||
|
clear: 'Clear'
|
||||||
|
},
|
||||||
|
datepicker: {
|
||||||
|
now: 'Now',
|
||||||
|
today: 'Today',
|
||||||
|
cancel: 'Cancel',
|
||||||
|
clear: 'Clear',
|
||||||
|
confirm: 'OK',
|
||||||
|
selectDate: 'Select date',
|
||||||
|
selectTime: 'Select time',
|
||||||
|
startDate: 'Start Date',
|
||||||
|
startTime: 'Start Time',
|
||||||
|
endDate: 'End Date',
|
||||||
|
endTime: 'End Time',
|
||||||
|
prevYear: 'Previous Year',
|
||||||
|
nextYear: 'Next Year',
|
||||||
|
prevMonth: 'Previous Month',
|
||||||
|
nextMonth: 'Next Month',
|
||||||
|
year: '',
|
||||||
|
month1: 'January',
|
||||||
|
month2: 'February',
|
||||||
|
month3: 'March',
|
||||||
|
month4: 'April',
|
||||||
|
month5: 'May',
|
||||||
|
month6: 'June',
|
||||||
|
month7: 'July',
|
||||||
|
month8: 'August',
|
||||||
|
month9: 'September',
|
||||||
|
month10: 'October',
|
||||||
|
month11: 'November',
|
||||||
|
month12: 'December',
|
||||||
|
week: 'week',
|
||||||
|
weeks: {
|
||||||
|
sun: 'Sun',
|
||||||
|
mon: 'Mon',
|
||||||
|
tue: 'Tue',
|
||||||
|
wed: 'Wed',
|
||||||
|
thu: 'Thu',
|
||||||
|
fri: 'Fri',
|
||||||
|
sat: 'Sat'
|
||||||
|
},
|
||||||
|
months: {
|
||||||
|
jan: 'Jan',
|
||||||
|
feb: 'Feb',
|
||||||
|
mar: 'Mar',
|
||||||
|
apr: 'Apr',
|
||||||
|
may: 'May',
|
||||||
|
jun: 'Jun',
|
||||||
|
jul: 'Jul',
|
||||||
|
aug: 'Aug',
|
||||||
|
sep: 'Sep',
|
||||||
|
oct: 'Oct',
|
||||||
|
nov: 'Nov',
|
||||||
|
dec: 'Dec'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
loading: 'Loading',
|
||||||
|
noMatch: 'No matching data',
|
||||||
|
noData: 'No data',
|
||||||
|
placeholder: 'Select'
|
||||||
|
},
|
||||||
|
cascader: {
|
||||||
|
noMatch: 'No matching data',
|
||||||
|
loading: 'Loading',
|
||||||
|
placeholder: 'Select',
|
||||||
|
noData: 'No data'
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
goto: 'Go to',
|
||||||
|
pagesize: '/page',
|
||||||
|
total: 'Total {total}',
|
||||||
|
pageClassifier: ''
|
||||||
|
},
|
||||||
|
messagebox: {
|
||||||
|
title: 'Message',
|
||||||
|
confirm: 'OK',
|
||||||
|
cancel: 'Cancel',
|
||||||
|
error: 'Illegal input'
|
||||||
|
},
|
||||||
|
upload: {
|
||||||
|
deleteTip: 'press delete to remove',
|
||||||
|
delete: 'Delete',
|
||||||
|
preview: 'Preview',
|
||||||
|
continue: 'Continue'
|
||||||
|
},
|
||||||
|
table: {
|
||||||
|
emptyText: 'No Data',
|
||||||
|
confirmFilter: 'Confirm',
|
||||||
|
resetFilter: 'Reset',
|
||||||
|
clearFilter: 'All',
|
||||||
|
sumText: 'Sum'
|
||||||
|
},
|
||||||
|
tree: {
|
||||||
|
emptyText: 'No Data'
|
||||||
|
},
|
||||||
|
transfer: {
|
||||||
|
noMatch: 'No matching data',
|
||||||
|
noData: 'No data',
|
||||||
|
titles: ['List 1', 'List 2'], // to be translated
|
||||||
|
filterPlaceholder: 'Enter keyword', // to be translated
|
||||||
|
noCheckedFormat: '{total} items', // to be translated
|
||||||
|
hasCheckedFormat: '{checked}/{total} checked' // to be translated
|
||||||
|
},
|
||||||
|
image: {
|
||||||
|
error: 'FAILED'
|
||||||
|
},
|
||||||
|
pageHeader: {
|
||||||
|
title: 'Back' // to be translated
|
||||||
|
},
|
||||||
|
popconfirm: {
|
||||||
|
confirmButtonText: 'Yes',
|
||||||
|
cancelButtonText: 'No'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
module.exports = exports['default'];
|
||||||
|
});
|
|
@ -0,0 +1,139 @@
|
||||||
|
(function (global, factory) {
|
||||||
|
if (typeof define === "function" && define.amd) {
|
||||||
|
define('element/locale/zh-CN', ['module', 'exports'], factory);
|
||||||
|
} else if (typeof exports !== "undefined") {
|
||||||
|
factory(module, exports);
|
||||||
|
} else {
|
||||||
|
var mod = {
|
||||||
|
exports: {}
|
||||||
|
};
|
||||||
|
factory(mod, mod.exports);
|
||||||
|
global.ELEMENT.lang = global.ELEMENT.lang || {};
|
||||||
|
global.ELEMENT.lang.zhCN = mod.exports;
|
||||||
|
}
|
||||||
|
})(this, function (module, exports) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.default = {
|
||||||
|
el: {
|
||||||
|
colorpicker: {
|
||||||
|
confirm: '确定',
|
||||||
|
clear: '清空'
|
||||||
|
},
|
||||||
|
datepicker: {
|
||||||
|
now: '此刻',
|
||||||
|
today: '今天',
|
||||||
|
cancel: '取消',
|
||||||
|
clear: '清空',
|
||||||
|
confirm: '确定',
|
||||||
|
selectDate: '选择日期',
|
||||||
|
selectTime: '选择时间',
|
||||||
|
startDate: '开始日期',
|
||||||
|
startTime: '开始时间',
|
||||||
|
endDate: '结束日期',
|
||||||
|
endTime: '结束时间',
|
||||||
|
prevYear: '前一年',
|
||||||
|
nextYear: '后一年',
|
||||||
|
prevMonth: '上个月',
|
||||||
|
nextMonth: '下个月',
|
||||||
|
year: '年',
|
||||||
|
month1: '1 月',
|
||||||
|
month2: '2 月',
|
||||||
|
month3: '3 月',
|
||||||
|
month4: '4 月',
|
||||||
|
month5: '5 月',
|
||||||
|
month6: '6 月',
|
||||||
|
month7: '7 月',
|
||||||
|
month8: '8 月',
|
||||||
|
month9: '9 月',
|
||||||
|
month10: '10 月',
|
||||||
|
month11: '11 月',
|
||||||
|
month12: '12 月',
|
||||||
|
// week: '周次',
|
||||||
|
weeks: {
|
||||||
|
sun: '日',
|
||||||
|
mon: '一',
|
||||||
|
tue: '二',
|
||||||
|
wed: '三',
|
||||||
|
thu: '四',
|
||||||
|
fri: '五',
|
||||||
|
sat: '六'
|
||||||
|
},
|
||||||
|
months: {
|
||||||
|
jan: '一月',
|
||||||
|
feb: '二月',
|
||||||
|
mar: '三月',
|
||||||
|
apr: '四月',
|
||||||
|
may: '五月',
|
||||||
|
jun: '六月',
|
||||||
|
jul: '七月',
|
||||||
|
aug: '八月',
|
||||||
|
sep: '九月',
|
||||||
|
oct: '十月',
|
||||||
|
nov: '十一月',
|
||||||
|
dec: '十二月'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
loading: '加载中',
|
||||||
|
noMatch: '无匹配数据',
|
||||||
|
noData: '无数据',
|
||||||
|
placeholder: '请选择'
|
||||||
|
},
|
||||||
|
cascader: {
|
||||||
|
noMatch: '无匹配数据',
|
||||||
|
loading: '加载中',
|
||||||
|
placeholder: '请选择',
|
||||||
|
noData: '暂无数据'
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
goto: '前往',
|
||||||
|
pagesize: '条/页',
|
||||||
|
total: '共 {total} 条',
|
||||||
|
pageClassifier: '页'
|
||||||
|
},
|
||||||
|
messagebox: {
|
||||||
|
title: '提示',
|
||||||
|
confirm: '确定',
|
||||||
|
cancel: '取消',
|
||||||
|
error: '输入的数据不合法!'
|
||||||
|
},
|
||||||
|
upload: {
|
||||||
|
deleteTip: '按 delete 键可删除',
|
||||||
|
delete: '删除',
|
||||||
|
preview: '查看图片',
|
||||||
|
continue: '继续上传'
|
||||||
|
},
|
||||||
|
table: {
|
||||||
|
emptyText: '暂无数据',
|
||||||
|
confirmFilter: '筛选',
|
||||||
|
resetFilter: '重置',
|
||||||
|
clearFilter: '全部',
|
||||||
|
sumText: '合计'
|
||||||
|
},
|
||||||
|
tree: {
|
||||||
|
emptyText: '暂无数据'
|
||||||
|
},
|
||||||
|
transfer: {
|
||||||
|
noMatch: '无匹配数据',
|
||||||
|
noData: '无数据',
|
||||||
|
titles: ['列表 1', '列表 2'],
|
||||||
|
filterPlaceholder: '请输入搜索内容',
|
||||||
|
noCheckedFormat: '共 {total} 项',
|
||||||
|
hasCheckedFormat: '已选 {checked}/{total} 项'
|
||||||
|
},
|
||||||
|
image: {
|
||||||
|
error: '加载失败'
|
||||||
|
},
|
||||||
|
pageHeader: {
|
||||||
|
title: '返回'
|
||||||
|
},
|
||||||
|
popconfirm: {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
module.exports = exports['default'];
|
||||||
|
});
|
Loading…
Reference in New Issue