i18n国际化配置

  1. 在resources文件下新建i18n文件,并新建国际化资源文件: Resource Bundle。

  2. 点击新增Resource Bundle文件,在Resource bundle base name处填写国际化文件的名称,例如“login”。并点击中间偏右的“+”号,新增国际化语言,此处新增两个语言“zh_CN”,“en_US”。

  3. 分别在两个文件中添加你想要的配置。

  4. 添加配置文件:

    spring:
      messages:
        basename: login
    
  5. 假如想点击链接让我们自己的国际化资源生效,就需要让我们自己的Locale生效。

    package com.test.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 {
        @Override
        public Locale resolveLocale(HttpServletRequest request) {
            //获取请求中的语言参数
            String language = request.getParameter("l");
            Locale locale = Locale.getDefault();//如果没有就是用默认的
     
            //如果请求的链接携带了国际化的参数
            if(!StringUtils.isEmpty(language)){
                //zh_CN
                String[] split = language.split("_");
                // 语言,国家
                locale = new Locale(split[0], split[1]);
            }
            return locale;
        }
     
        @Override
        public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
     
        }
    }
    
  6. 让区域化信息能够生效,需要再配置一下这个组件,在自己的MvcConofig下添加bean。

    package com.test.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.WebMvcConfigurer;
     
    @Configuration
    public class MyMvcConfig implements WebMvcConfigurer {
       
        //自定义的国际化组件就生效了
        @Bean
        public LocaleResolver localeResolver(){
            return new MyLocaleResolver();
        }
     
    }
    
posted @ 2024-05-16 14:30  Hanyta  阅读(46)  评论(0编辑  收藏  举报