后端利用 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对这中类型的配置文件有着一些不同的处理?有知道原因的大佬还希望能留言对此问题进行讨论.