130_员工管理系统:页面国际化

目录

中英文切换

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化

页面国际化实现

IDEA配置文件编码为UTF-8

130_员工管理系统:页面国际化

创建目录i18n,创建国际化配置文件

i18n是国际化单词的缩写,来由:i到n有18个字母,类似的有:k8s,kubernetes,一个开源容器编排系统

130_员工管理系统:页面国际化

创建目录i18n,创建登录页国际化配置文件 login.properties

130_员工管理系统:页面国际化

创建中文/中国配置文件 login_zh_CN.properties,自动生成上级目录Resource Bundle 'login'

130_员工管理系统:页面国际化

创建英文/美国配置文件 login_en_US.properties

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化
130_员工管理系统:页面国际化
130_员工管理系统:页面国际化

打开可视化配置

130_员工管理系统:页面国际化

添加配置

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化

添加配置值

130_员工管理系统:页面国际化

配置后三个配置文件自动填充

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化
130_员工管理系统:页面国际化
130_员工管理系统:页面国际化

添加其他配置

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化
130_员工管理系统:页面国际化
130_员工管理系统:页面国际化

国际化自动配置类

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化

配置国际化配置文件路径在application.properties

根据MessageSourceProperties的变量配置,如:basename

130_员工管理系统:页面国际化

thymeleaf中国际化使用 #{},如:th:text="#{login.tip}"

130_员工管理系统:页面国际化

登录页国际化

原页面

130_员工管理系统:页面国际化

修改标题

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化130_员工管理系统:页面国际化

修改其他

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化

国际化解析器 LocaleResolver

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化
130_员工管理系统:页面国际化
130_员工管理系统:页面国际化

自定义国际化解析器

130_员工管理系统:页面国际化

package com.qing.config;

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

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

/**
 * 自定义国际化解析器
 */
public class MyLocaleResolver implements LocaleResolver {

    /**
     * 解析请求中自定义的语言/国家
     * @param request
     * @return
     */
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        // 默认的语言/国家
        Locale locale = Locale.getDefault();
        // 获取请求中的参数:语言/国家
        String language = request.getParameter("l");
        // 如果请求参数中传了语言_国家,使用传参,否则使用默认的
        if (! StringUtils.isEmpty(language)) {
            // zh_CN,语言_国家
            String[] arr = language.split("_");
            locale = new Locale(arr[0], arr[1]);
        }
        return locale;
    }

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

    }
}

配置类MyConfig中注册自定义国际化解析器,交给Spring容器管理

@Configuration 用于定义配置类
@Bean 注解的方法放入其中,就可以注册Bean

130_员工管理系统:页面国际化

package com.qing.config;

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.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 保留Spring Boot MVC功能,并且扩展其他MVC配置
 */
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

    /**
     * 将请求映射为视图,又因为thymeleaf默认提供的视图解析器,映射到template目录下
     * / 映射为 index 再映射为 /templates/index.html
     * /index.html 映射为 index 映射为 /templates/index.html
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/index.html").setViewName("index");
    }

    /**
     * 注册自定义国际化解析器,交给Spring容器管理
     * @return
     */
    @Bean
    public LocaleResolver localeResolver() {
        return new MyLocaleResolver();
    }
}

中英文切换按钮添加 href

thymeleaf中链接使用 @{},传参使用 (),如:th:href="@{/index.html(l='zh_CN')}"

130_员工管理系统:页面国际化

测试国际化:中英文切换

130_员工管理系统:页面国际化
130_员工管理系统:页面国际化

注意点

需要配置国际化配置文件i18n

需要自定义按钮切换语言/国家,如:zh_CN,en_US

需要自定义国际化解析器 MyLocaleResolver

需要将自定义的国际化解析器注册到Spring容器中

@Bean注解的方法 添加到 @Configuration注解的配置类中

130_员工管理系统:页面国际化

thymeleaf中国际化使用 #{},如:th:text="#{login.tip}"

thymeleaf中链接使用 @{},传参使用 (),如:th:href="@{/index.html(l='zh_CN')}"

上一篇:Java单体应用 - 常用框架 - 08.MyBatis - Spring 整合 Druid


下一篇:Vue中的路由 Router 从0 ~ 0.5 基础通晓到使用 (后端人员需要掌握的基础使用)