添加国际化
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
|
||||
|
||||
ms:
|
||||
local:
|
||||
default: zh_CN #默认语言
|
||||
messages: zh_CN,en_US #全部语言
|
||||
# scheme: https #解决使用代理服务器代理应用时标签解析域名依旧为http的问题
|
||||
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