vue 前端 + 若依(ruoyi)后端 实现国际化

这篇具有很好参考价值的文章主要介绍了vue 前端 + 若依(ruoyi)后端 实现国际化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

记录一下,前端使用vue,后端使用若依(ruoyi,基于spring-boot)实现页面,后端返回提示信息国际化

前端

vue:2.6.12

vue-i18n:^8.27.2

安装vue-i18n,注:最新的交于该版本有差异,所以指定使用版本:8.27.2

npm install --save vue-i18n@8.27.2 --force

添加国际化js文件:language.en_US.js

export default {
  message: {
    "language": "language",
  }
}

添加国际化js文件:language.zh_CN.js

export default {
  message: {
    "language": "语言",
  }
};

添加i18n.js

import Vue from 'vue';
import VueI18n from 'vue-i18n';
import enLocale from '@/api/language/language.en_US'
import usLocal from '@/api/language/language.zh_CN'

// element-ui 组件国际化
import ElementLocale from 'element-ui/lib/locale'
import elementEnLocal from "element-ui/lib/locale/lang/en"
import elementZhCNLocal from "element-ui/lib/locale/lang/zh-CN"

ElementLocale.i18n((key, value) => i18n.t(key, value))

Vue.use(VueI18n);
const messages = {
  en_US: {
    ...enLocale,
    ...elementEnLocal
  },
  zh_CN: {
    ...usLocal,
    ...elementZhCNLocal
  }
}
const i18n = new VueI18n({
  locale: localStorage.getItem('lang') || 'zh_CN', // 通过this.$i18n.locale的值实现语言切换
  messages,
});


export default i18n;

main.js加载i18n.js

import i18n from "@/api/i18n"

new Vue({
  el: '#app',
  router,
  i18n,
  store,
  render: h => h(App)
})

添加vue文件,方便使用

<template>
  <div>
    <el-select style="width: 100%" @change="changeLanguage" v-model="lang">
      <el-option v-for="lan in langList"
                 :key="lan.value"
                 :label="lan.label"
                 :value="lan.value">
      </el-option>
    </el-select>
  </div>
</template>
<script>
import {isNotNull} from "@/api/default";
import { changeLanguages } from "@/api/system/api";

export default {
  name: "i18n",
  data(){
    return {
      lang: "cn",
      langList: [
        {
          label: "中文",
          value: "zh_CN"
        },
        {
          label: "English",
          value: "en_US"
        }
      ],
    }
  },
  created() {
    let value = localStorage.getItem("lang");
    if (isNotNull(value)){
      this.lang = value;
    }
  },
  methods: {
    changeLanguage(value){
      this.$i18n.locale = value;
      localStorage.setItem("lang", value);
      changeLanguages(value).then(response => {
        console.info("change-language:" + value);
        window.location.reload();
      });
    },
  }
}
</script>

changeLanguages,用于访问后端接口,修改语言

/**
 * * 获取信息
 * @param address
 * @returns {AxiosPromise}
 */
export function changeLanguages(lang){
  return request({
    url: '/changeLanguages',
    method: 'get',
    headers: {
      isToken: false,
    },
    params: {
      lang: lang
    }
  })
}

使用方式:

#form中使用
<el-form-item class="mb-3" prop="lang" :label="$t('message.language')">
	<i18n-select></i18n-select>
</el-form-item>

#导入
import i18nSelect from "@/components/i18n/i18n"

# 加载
components: { i18nSelect }

#script内使用:
this.$t("message.language")

 若依分离版后端

版本:3.8.4

添加:I18nConfig

package com.ruoyi.framework.config;

import java.util.Locale;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

/**
 * 资源文件配置加载
 *
 * @author ruoyi
 */
@Configuration
public class I18nConfig implements WebMvcConfigurer
{
    @Bean
    public LocaleResolver localeResolver()
    {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        // 默认语言
        slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
        return slr;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor()
    {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        // 参数名
        lci.setParamName("lang");
        return lci;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry)
    {
        registry.addInterceptor(localeChangeInterceptor());
    }
}

添加接口:changeLanguages,只是提供给前端调用,修改语言使用

    @GetMapping("/changeLanguages")
    public AjaxResult changeLanguages(String lang){
        return AjaxResult.success();
    }

添加:messages_en_US.properties

success=Success

添加:messages_zh_CN.properties

success=成功

application.yml配置,i18n/messages,表示在文件夹:resource/i18n下的messages_xx.properties文件,其中xx为Locale的信息,例如:Locale SIMPLIFIED_CHINESE,lang为:zh;country为:CN,所以对应的国际化文件为:messages_zh_CN.properties文件

# Spring配置
spring:
  # 资源信息
  messages:
    # 国际化资源文件路径
    basename: i18n/messages

使用:使用:MessageUtils.message("success"),来获取所需返回的信息即可,示例:文章来源地址https://www.toymoban.com/news/detail-532102.html

    @GetMapping("/test")
    public AjaxResult test(){
        return AjaxResult.success(MessageUtils.message("success"));
    }

到了这里,关于vue 前端 + 若依(ruoyi)后端 实现国际化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue2+element-ui 实现国际化

    在src目录下创建一个lang文件夹,同时创建zh.js(中文),en.js(英文),ja.js(日文),fr.js(法文)四个语言包js文件,并创建一个index.js文件,用来整合语言包 对于一个项目来说,一个语言包需要包含所有页面以及组件;在语言包以页面为单位,创建一个对象;对公共的title或者按钮名

    2024年02月02日
    浏览(54)
  • vue-i18n 实现国际化,支持切换不同语言

    需求:后台管理系统,可以实现语言切换 实现过程:用的i18n来实现的语言切换,网上能看到好多模板,根据自己的需求,修改一下即可使用,大概都是差不多的,因为涉及到后端,所以要跟后端协商一致决定去写,我的设计思路是跟着后端设计更改的,如下: 1.语言是后端接

    2024年02月12日
    浏览(42)
  • vue2+element-ui使用vue-i18n进行国际化的多语言/国际化

    注意:vue2.0要用8版本的,使用9版本的会报错 在src目录下,创建新的文件夹,命名为i18n zh.js en.js index.js main.js 使用方式一 效果图 使用方式二 效果图 使用方式三,在 效果图 ` 注意:这种方式存在更新this.$i18n.locale的值时无法自动切换的问题,需要刷新页面才能切换语言。解

    2024年02月07日
    浏览(73)
  • 什么是前端国际化(internationalization)和本地化(localization)?

    聚沙成塔·每天进步一点点 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而

    2024年02月04日
    浏览(49)
  • 用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码

    这个地方要注意自己的vue版本和i1n8的匹配程度,如果是vue2点几,记得安装i18n的@8版本,不然会自动安装的最新版本,后面会报错哦,查询了下资料,好像最新版本是适配的vue3。 在src下面新建i18n文件夹,然后在里面新建index.js,里面的内容如下 新建i18n文件夹里面新建config文

    2024年02月14日
    浏览(45)
  • 前端网页国际化 translate.js,高效率翻译,傻瓜式教学

    什么?你不信?  那先简单实验一下吧,首先我们随便打开一个网站,然后F12——检查——控制台,复制以下代码,回车即可 选择一个语种,就翻译成功了 在网页底部加上以下代码 就像这样   默认他会给我们加一个id为 translate  的div盒子,我们可以把这个盒子放在我们需要

    2024年02月01日
    浏览(58)
  • SpringBoot+Vue前后端分离项目国际化支持

    i18n.js文件 language.en_US.js文件 language.zh_CN.js文件 messages_en_US.properties文件 messages_zh_CN.properties文件

    2024年02月04日
    浏览(58)
  • Vue 国际化之 vue-i18n 的使用

    目录 一、安装 二、使用 1、准备语言包 2、准备翻译的语言环境 3、实现语言翻译 三、整合 ElementUI 语言包 1、扩展中文 2、扩展英文  3、使用扩展语言翻译 四、问题记录 五、扩展 vue3 中使用 vue-i18n 如果在一个模块系统中使用它,你必须通过  Vue.use()  明确地安装  vue-i18n

    2024年03月14日
    浏览(52)
  • vue项目配置国际化 $t(‘‘)的意思和用法

    vue 项目中 $t(\\\'\\\')直接在html中直接调用这个函数 {{ $t(\\\'login.title\\\') }} $t是引入国际化后,挂到了Vue.prototype上的一个方法,接受一个字符串作为参数 1.main.js中引入vue-i18n 2.浏览器的语言环境不同,相应设置不同的语言配置文件 3.创建不同语言标识对应的文件,以中文环境为例

    2024年02月16日
    浏览(100)
  • 使用uniapp开发国际化---app,vue,nvue

    hello-i18n 示例工程 - DCloud 插件市场  en.json----\\\"自定义key\\\":\\\"英文\\\"  zh-Hans.json----\\\"自定义key\\\":\\\"中文\\\"      注意:json文件中的名称需要中英文对应。 index.js vue页面模板使用---- $t(\\\'\\\') nvue页面模板使用---- t(\\\'\\\') pages.json 使用 ---- %index.title% data中使用--- this.$t(\\\'\\\') 启动项目,就可以成功切

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包