首页 专题 文章 代码 归档
SpringBoot前端国际化
2020.02.18 18:41 2020.02.18 18:41

1. 国际化介绍

国际化,即根据浏览器语言,显示不同 的内容。

i18n:由于首字母"i"和末尾字母"n"间有18个字符,所以简称i18n。

internationalization指为了使应用程序能适应不同的语言和地区间的变化而不作系统性的变化所采取的设计措施。


一般文件名:

基名_语言_地区.properties

  1. 语言由两个小写字母表示,具体代码是由ISO-639标准定义。
  2. 地区由两个大写字母表示,由ISO-3166标准定义的。
  3. 基名,basename,一般是业务代码。例如:ValidationLogin.properties

常用配置:

  1. i18n_zh_CN.properties:中国大陆的,中文语言的资源
  2. i18n_en_US.properties:美国地区,英文语言的资源
  3. i18n.properties:默认资源文件,如果请求相应的资源文件不存在,将使用此资源文件

2. 新建语言文件

Resource文件夹新建*.properties

如下,IDEA中可方便的编写国际化语言文件:

截图-1582019281


Springboot添加配置:

spring:
  messages:
    basename: i18n.login

3. 自定义解释器

package com.misiai.test01.resolver;

import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

public class MyLocaleResolver implements LocaleResolver {
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        String language = request.getParameter("lang");
        Locale locale = Locale.getDefault();
        if (!StringUtils.isEmpty(language)) {
            String[] split = language.split("_");
            /* param0:语言代码   param1:国家代码  */
            locale = new Locale(split[0], split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

装入容器:

package com.misiai.test01.config;

import com.misiai.test01.resolver.MyLocaleResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfig {

    @Bean
    public MyLocaleResolver myLocaleResolver() {
        return new MyLocaleResolver();
    }
}

4. thymeleaf

<body>
<div th:replace="common/head::Text"></div>
<div th:text="#{Username}"></div>
<div th:text="#{Password}"></div>
</body>

注:如果你的messages.properties中文乱码,那么 对工程进行 settings 找到 File Encodings 然后改为utf-8即可 截图-1582020830

本节阅读完毕! (分享
二维码图片 扫描关注我们哟