ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-02-09 17:03:27  阅读:202  来源: 互联网

标签:解析器 index 国际化 配置文件 自定义 管理系统 130 login 页面


目录

中英文切换

image.png
image.png

页面国际化实现

IDEA配置文件编码为UTF-8

image.png

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

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

image.png

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

image.png

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

image.png

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

image.png
image.png
image.png
image.png

打开可视化配置

image.png

添加配置

image.png
image.png

添加配置值

image.png

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

image.png
image.png
image.png
image.png

添加其他配置

image.png
image.png
image.png
image.png

国际化自动配置类

image.png
image.png

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

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

image.png

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

image.png

登录页国际化

原页面

image.png

修改标题

image.png
image.png image.png

修改其他

image.png
image.png

国际化解析器 LocaleResolver

image.png
image.png
image.png
image.png

自定义国际化解析器

image.png

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

image.png

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')}"

image.png

测试国际化:中英文切换

image.png
image.png

注意点

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

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

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

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

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

image.png

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

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

标签:解析器,index,国际化,配置文件,自定义,管理系统,130,login,页面
来源: https://www.cnblogs.com/wl3pb/p/15875755.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有