jeecg官方文档:参考
jeecg前端的国际化解决方案:参考
后台管理系统,放置一个中英文切换选择按钮。页面切换所选语言后,系统会重新加载,获取对应的语言数据,并且下次打开默认之前选择语言。
vue-i18n,可参考官方文档
如弹出确认框,可选择高级后,再点击接受即可
不知为啥会弹出危险确认框,如害怕不安全,也可自行查询相关查找相关资料
$ npm install vue-i18n
export default {
lang: '中文',
field:{
companyName:'公司名称',
},
common:{
placeholder:{
input:"请输入{content}"
}
},
}
export default {
lang: 'English',
field:{
companyName:'companyName',
},
common: {
placeholder:{
input:"please input {content}"
}
}
/*中英文切换*/
import VueI18n from 'vue-i18n'
import enLocale from '@/components/lang/en-US'
import zhLocale from '@/components/lang/zh-CN'
Vue.use(VueI18n)
/*中英文切换*/
Vue.use(VueI18n)
const messages = {
'en-US': {
...enLocale,
},
'zh-CN': {
...zhLocale,
}
}
const i18n = new VueI18n({
locale: Vue.ls.get("language", "zh-CN"),
messages
})
SSO.init(() => {
main()
})
function main() {
new Vue({
router,
store,
i18n,
mounted () {},
render: h => h(App)
}).$mount('#app')
}
修改 components/setting/SettingDrawer.vue
语言设置
中文
英文
整体风格设置 {{ $t('lang') }}
{{$t('button.searchQuery')}}
{{$t('button.searchReset')}}
{
title:this.$t('field.companyName'),
align:"center",
dataIndex: 'name'
},
(1).前端通过form添加数据时,对应的切换语言数据都要添加,并保存至数据库。
(2).前端切换语言后,查询数据时,接口携带对应的语言类型传至后台。
(3).后台要新增对应数据的共用实体类。
(4).后台通过前端传的语言类型,获取数据后再赋值给新增的返回实体类。这样前端也方便展示,只用接收返回的共用实体类数据。
prouctWrapper.select("*," + languageEnum.type() + " as type," + languageEnum.desc() + " as desc");
@Getter
public enum LanguageEnum {
china("zh","zh_desc"),
english("en", "en_name"),
;
private String type;
private String desc;
LanguageEnum(String type, String desc) {
this.type = type;
this.desc = desc;
}
public static LanguageEnum getLanguageEnum(String type){
for (LanguageEnum value : LanguageEnum.values()) {
if (value.type.equals(type)) {
return value;
}
}
return null;
}
}
@Component
public static String getLanguage(){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String language = request.getHeader("language");
if(StringUtils.isBlank(language)){
return LanguageEnum.china.getType();
}
return language;
}