后端i18n国际化多语言处理

后端利用 i18n 处理多语言

添加配置文件

resource中创建i18n配置文件的文件夹:
在这里插入图片描述
新建Resource Bundle文件:
在这里插入图片描述

会出现这个窗口:
在这里插入图片描述

base name填messages就可以了

然后需要点击右边加号添加语言种类
在这里插入图片描述
在这里插入图片描述

en_US代表英语,zh_CN代表简体中文,zh_TW代表繁体中文

以下是大部分国家对应的语言Locale和国家代码对照表(国际化支持):https://www.jianshu.com/p/38a594008c55

添加翻译结果

文件创建完之后,可以给其添加配置
在这里插入图片描述

等号前面的是key,后面的是value


在这里插入图片描述

Unicode编码转换地址: https://tool.chinaz.com/tools/unicode.aspx
在这里插入图片描述

java代码

首先需要添加配置

spring下添加配置 “i18n/messages” 代表的是前面创建的文件夹路径

#多语言设置
spring:
  messages:
    basename: i18n/messages

其次就是代码

import com.oneplus.constant.ReturnKey;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Component;

import java.util.Locale;

@Slf4j
@Component
public class LocaleUtils {
    private static MessageSource messageSource;

    public LocaleUtils(MessageSource messageSource) {
        LocaleUtils.messageSource = messageSource;
    }

    public static String getMessage(String key,String locale) {
        try {
            String[] split = locale.split("_");
            // key填配置文件中等号前面的user.welcome
            String message = messageSource.getMessage(key, null, new Locale(split[0],split[1]));
            // message得到的结果就是配置文件中等号右边的value值
            return message;
        } catch (Exception e) {
            e.printStackTrace();
            return key;
        }
    }
}

然后再需要处理多语言的地方调用此方法

String message = LocaleUtils.getMessage("user.welcome","en_US");
String message = LocaleUtils.getMessage("user.welcome","zh_CN");
String message = LocaleUtils.getMessage("user.welcome","zh_TW");

这样就已经处理成功了

记录一个我在开发时候遇到的小bug:

刚开始我在初始化Locale的时候是这么写得 new Locale(“en_US”)

在idea中启动项目, 多语言处理是成功的,但当我把项目放上服务器上启动,这个多语言处理却一直不成功.

找了好久才发现这个地方需要把en_US这个下划线拆开两个参数,第一个是language,第二个是country,这样去初始化Locale,服务器上就也生效了.

语言处理是成功的,但当我把项目放上服务器上启动,这个多语言处理却一直不成功.

找了好久才发现这个地方需要把en_US这个下划线拆开两个参数,第一个是language,第二个是country,这样去初始化Locale,服务器上就也生效了.

也不知道为什么这个地方idea启动就可以,获取idea对这中类型的配置文件有着一些不同的处理?有知道原因的大佬还希望能留言对此问题进行讨论.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用\[1\]:在使用vue-i18n时,如果需要在js文件中使用多语言,可以通过以下几种方式实现。首先,在js文件中引入vue-i18n的实例,可以通过Vue实例的prototype属性来访问vue-i18n的实例。例如,可以在main.js中创建vue-i18n实例,并将其挂载到Vue实例的prototype上,这样在其他的js文件中就可以通过this.$i18n来访问vue-i18n的实例了。其次,可以使用vue-i18n提供的$t方法来获取多语言的翻译文本。在js文件中,可以通过this.$t(key)来获取对应key的翻译文本。其中,key是在vue-i18n语言包中定义的键值对的键。最后,如果需要在js文件中动态切换语言,可以使用vue-i18n提供的setLocale方法来实现。通过this.$i18n.setLocale(locale)来切换到对应的语言环境。其中,locale是语言环境的标识符,比如'en'代表英语,'zh'代表中文等。引用\[2\]:在不同环境针对不同的用户可能需要不同的语言环境包,常规需要接口调用的数据,可以通过请求中的language属性向后端发送请求获取对应语言的信息。而对于前端页面上的静态内容,就可以通过i18n去配置不同环境的语言包。 #### 引用[.reference_title] - *1* [Vue 项目 js 文件中使用 vue-i18n](https://blog.csdn.net/byc233518/article/details/126104336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Vue.js国际化——i18n的使用](https://blog.csdn.net/Corn___/article/details/126283615)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值