1. 概述

菜单的国际化,其数据以json格式保存在jpaas_system库sys_menu表的NAME_字段里面。

2. 创建配置文件

配置内容如下:

export default {
        'zh-CN':[
            {
                name: "zh-CN",
                comment: "中文",
                tip:"内容不能为空"
            },
            {
                name: "en-US",
                comment: "英文",
                tip:"内容不能为空"
            }
        ],
        'en-US': [
            {
                name: "zh-CN",
                comment: "chinese",
                tip:"Content cannot be empty"
            },
            {
                name: "en-US",
                comment: "english",
                tip:"Content cannot be empty"
            }
        ]
}

3. 前端代码改造

关键代码如下:

import langs from "@/locales/lang";

data() {
   return {
        langs:langs,
        langItems:[],
        messages:["zh-CN","en-US"]
    }
},
created() {
   this.langItems = this.langs[this.$i18n.locale];
},
methods: {
    handleEdit(record) {
         var nameJson = JSON.parse(data.nameJson);
         data['zh-CN'] = nameJson.['zh-CN'];
         data['en-US'] = nameJson.['en-US'];
    },
    handleSubmit(e) {
          let json = {};
          json['zh-CN'] = values['zh-CN'];
          json['en-US'] = values['en-US'];
          this.$set(values,'name',JSON.stringify(json))
    }
}

4. 后端代码改造

4.1 获取实体

关键代码如下:

           String name = menu.getName();
            try{
                JSONObject jo = JSONObject.parseObject(name);
                menu.setNameJson(jo.toJSONString());
            }catch (Exception e){
                JSONObject jo = new JSONObject();
                jo.put("zh-CN", name);
                menu.setNameJson(jo.toJSONString());
            }

4.2 获取列表

关键代码如下:

            if(list != null && list.size() > 0){
            for(SysMenu menu : list){
                String name = menu.getName();
                try{
                    JSONObject jo = JSONObject.parseObject(name);
                    if(LocaleContextHolder.getLocale().getLanguage().equals("en")){
                        name = jo.getString("en-US");
                    }else{
                        name = jo.getString("zh-CN");
                    }
                    menu.setName(name);
                }catch (Exception e){

                }
            }
  }

4.3 获取首页菜单列表

关键代码如下:

            if(menuDtos != null && menuDtos.size() > 0){
            for(SysMenuDto menu : menuDtos){
                String name = menu.getName();
                try{
                    JSONObject jo = JSONObject.parseObject(name);
                    if(LocaleContextHolder.getLocale().getLanguage().equals("en")){
                        name = jo.getString("en-US");
                    }else{
                        name = jo.getString("zh-CN");
                    }
                    menu.setName(name);
                }catch (Exception e){

                }
            }
}
文档更新时间: 2021-07-02 18:24   作者:朱方华