添加国际化

This commit is contained in:
sgjj 2020-09-18 16:51:29 +08:00
parent d4b7b2b830
commit 1a86f88b44
7 changed files with 403 additions and 0 deletions

View File

@ -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(","));
}
}

View File

@ -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文档生产的时候务必关掉

View File

@ -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>

View File

@ -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)

View File

@ -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)

View File

@ -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'];
});

View File

@ -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'];
});