JeecgBoot Vue2前端国际化语言切换

JeecgBoot-antd Vue2前端国际化语言切换

jeecg官方文档:参考
jeecg前端的国际化解决方案:参考

一.需求场景

后台管理系统,放置一个中英文切换选择按钮。页面切换所选语言后,系统会重新加载,获取对应的语言数据,并且下次打开默认之前选择语言。

二.页面组件

vue-i18n,可参考官方文档
如弹出确认框,可选择高级后,再点击接受即可
不知为啥会弹出危险确认框,如害怕不安全,也可自行查询相关查找相关资料

1.安装 vue-i18n:
$ npm install vue-i18n
2. 修改 App.vue 文件,原基础上添加
<template>
  <a-config-provider :locale="locale">
    <div id="app">
      <router-view/>
    </div>
  </a-config-provider>
</template>
<script>
  import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
  import enUS from 'ant-design-vue/lib/locale-provider/en_US'
  import enquireScreen from '@/utils/device'

  export default {
    data () {
      return {
        locale: zhCN,
      }
    },
    created () {
      //获取本地缓存中的语言配置,并切换
      let language = this.$ls.get("language");
      if( language == 'zh-CN'){
        this.locale =  zhCN
      } else if(language == 'en-US'){
        this.locale = enUS
      }
    }
  }
</script>
<style>
  #app {
    height: 100%;
  }
</style>

3.创建js语言文件,存放相应的语言字段
(1).在 src/components/lang/ 中 创建语言js 例如 en-US.js 和 zh-CN.js

在这里插入图片描述

(2).en-US.js 和 zh-CN.js 中配置如下,其他字段自己对应添加:
zh-CN.js
export default {
  lang: '中文',
  field:{
    companyName:'公司名称',
  },
  common:{
    placeholder:{
      input:"请输入{content}"
    }
  },
}
en-US.js
export default {
  lang: 'English',
  field:{
    companyName:'companyName',
  },
  common: {
    placeholder:{
      input:"please input {content}"
    }
}
(3).修改main.js中实例化配置
/*中英文切换*/
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')
}
4.页面样式,添加语言切换按钮

修改 components/setting/SettingDrawer.vue
在这里插入图片描述
在这里插入图片描述

<a-list-item>
    <a-list-item-meta>
          <div slot="title">语言设置</div>
     </a-list-item-meta>      
     <a-select size="small" style="width: 80px;" :defaultValue="$t('lang')" @change="handleLanguageChange">
         <a-select-option value="zh-CN">中文</a-select-option>
          <a-select-option value="en-US">英文</a-select-option>
      </a-select>
</a-list-item>

<h3 class="setting-drawer-index-title">整体风格设置 {{ $t('lang') }}</h3>
5.列表及使用
(1).搜索条件
<a-form-item :label="$t('field.companyName')">
    <a-input :placeholder="$t('common.placeholder.input',{'content':$t('field.companyName')})" v-model="queryParam.name"></a-input>
</a-form-item>
(2).查询与重置按钮
<a-button type="primary" @click="searchQuery" icon="search">{{$t('button.searchQuery')}}</a-button>
    <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{$t('button.searchReset')}}
</a-button>
(3).列表字段
{
      title:this.$t('field.companyName'),
      align:"center",
      dataIndex: 'name'
 },

三.后台数据

1.思路

(1).前端通过form添加数据时,对应的切换语言数据都要添加,并保存至数据库。

(2).前端切换语言后,查询数据时,接口携带对应的语言类型传至后台。

(3).后台要新增对应数据的共用实体类。

(4).后台通过前端传的语言类型,获取数据后再赋值给新增的返回实体类。这样前端也方便展示,只用接收返回的共用实体类数据。

2.controller类
prouctWrapper.select("*," + languageEnum.type() + " as type," + languageEnum.desc() + " as desc");
3.创建语言枚举类,避免代码同样的代码重复
@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;
    }
}
4.工具类
    @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;
    }
PS:上述用法通过学习和实践,都已实现效果,在此作为记录。
PS:更多用法,可参考学习其他大佬的相关资料。
PS:如感觉对其有帮助,希望能获得您的关注和点赞,谢谢。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JeecgBoot是一个基于SpringBoot的快速开发平台,它提供了许多常用的功能例如代码生成、权限管理、数据字典、日志管理等等。而Vue2是一种流行的JavaScript框架,它可以用来构建现代化的Web应用程序。在JeecgBoot中使用Vue2可以帮助我们更快速地开发现代化的Web应用程序。 下面是使用JeecgBootVue2开发Web应用程序的基本步骤: 1. 创建一个JeecgBoot项目,可以使用JeecgBoot的代码生成器来创建一个基础的项目。 2. 在JeecgBoot项目中集成Vue2,可以使用npm包管理器来安装Vue2。在项目的根目录下执行以下命令: ``` npm install vue ``` 3. 创建Vue2组件,可以在JeecgBoot项目的前端资源目录下创建一个新的Vue2组件。例如,在src/main/resources/webapp/vue/components目录下创建一个名为HelloWorld.vue的文件,内容如下: ``` <template> <div> <h1>Hello {{ name }}!</h1> </div> </template> <script> export default { data() { return { name: 'World' } } } </script> ``` 4. 在JeecgBoot项目中使用Vue2组件,可以在JeecgBoot的JSP页面中使用Vue2组件。例如,在src/main/resources/templates目录下创建一个名为index.jsp的文件,内容如下: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JeecgBoot Vue2 Demo</title> <script src="/static/js/vue.min.js"></script> </head> <body> <div id="app"> <hello-world></hello-world> </div> <script src="/static/js/app.js"></script> </body> </html> ``` 注意,在页面中引入Vue2的JavaScript文件,以及Vue2组件的JavaScript文件。 5. 编译Vue2组件,可以使用Webpack来编译Vue2组件。在项目的根目录下执行以下命令: ``` npm install webpack webpack-cli vue-loader vue-template-compiler css-loader style-loader --save-dev ``` 然后在项目的根目录下创建一个名为webpack.config.js的文件,内容如下: ``` const path = require('path'); const VueLoaderPlugin = require('vue-loader/lib/plugin'); module.exports = { mode: 'development', entry: './src/main/resources/webapp/vue/index.js', output: { path: path.resolve(__dirname, 'src/main/resources/static/js'), filename: 'app.js' }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader' }, { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] }, plugins: [ new VueLoaderPlugin() ] }; ``` 然后在项目的src/main/resources/webapp/vue目录下创建一个名为index.js的文件,内容如下: ``` import Vue from 'vue'; import HelloWorld from './components/HelloWorld.vue'; new Vue({ el: '#app', components: { 'hello-world': HelloWorld } }); ``` 6. 编译Vue2组件,可以在项目的根目录下执行以下命令: ``` ./node_modules/.bin/webpack --config webpack.config.js ``` 这将会编译Vue2组件,并将编译结果输出到src/main/resources/static/js目录下。 7. 运行JeecgBoot应用程序,可以使用以下命令来启动JeecgBoot应用程序: ``` mvn spring-boot:run ``` 访问http://localhost:8080即可看到Vue2组件在JeecgBoot应用程序中的效果。 这就是使用JeecgBootVue2开发Web应用程序的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值