SpringBoot实现国际化
1.SpringBoot框架实现国际化
国际化,一般用i18n表示,他是源于英文单词 internationalization的首末字符i和n,中间一共18个字母,为了简写所以命名为i18n这个简称。一般应用在首页,登录页等地方,用于页面切换中文、英文或者其他语言,本文主要以登录页为例。
1.1 实现国际化的操作步骤主要有如下
1.1.1 首先需要保证IDE中的编码格式为utf-8,否则可能会出现中文乱码情况。下面以IDEA为例:
1.1.2 创建i18n文件夹,并在下面创建需要国际化的配置文件。例如:login.properties文件
1.1.3 添加需要切换的国际化配置文件,例如添加:中文配置文件 login_zh_CN.properties,英文配置文件 login_en_US.properties,此时IDEA会自动合并为一个国际化文件夹Resource Bundle ‘login’
1.1.4 此时添加别的语言的配置文件,可以继续像上面手动添加配置,也可以通过右键Resource Bundle ‘login’文件夹New==》Add进行配置
1.1.5 在Resource Bundle中进行键值对配置,可以配置默认情况、中文情况、英文情况对应的输出情况。
1.1.6 在配置文件application.yml中配置需要扫描的国际化配置文件真实路径,例如:spring.messages.basename=i18n.login
1.1.7 在需要国际化转换的页面进行配置,比如在登录页以thymeleaf为例:th:text="#{login.tip}",将国际化文件中的自己定义的键对应的添加到页面表单中。
1.1.8 自定义配置国际化切换
1.1.8.1 首先需要创建一个类并且实现implements LocaleResolver接口
1.1.8.2 接着重写public Locale resolveLocale(HttpServletRequest httpServletRequest) {...}方法,通过获取请求中自定义的一个参数的值,进行判断,如果没有获取到则使用默认的配置,如果获取到值则进行判断,并返回结果。
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
String language = httpServletRequest.getParameter("传过来的参数");//获取请求中参数是传过来的参数的值
Locale locale = Locale.getDefault();//获取默认的在没有设置时使用
if(!StringUtils.isEmpty(language)){
String[] split = language.split("_");
locale = new Locale(split[0],split[1]);
}
return locale;
//最后需要在自定义的配置类中注入bean
}
1.1.8.3 最后将配置好的切换控件通过到SpirngMvc扩展配置类注入到spring的bean中,就可以完成国际化的配置。
此时便完成了国际化配置,并且可以通过自定义的国际化切换组件,在页面进行个性化的切换操作。
- 点赞
- 收藏
- 关注作者
评论(0)