zoukankan      html  css  js  c++  java
  • SpringBoot 之 国际化

    增加国际化i18n语言配置:

    # src/main/resources/i18n/login.properties
    
    login.btn=登录
    
    # src/main/resources/i18n/login_zh_CN.properties
    
    login.btn=登录
    
    # src/main/resources/i18n/login_en_US.properties
    
    login.btn=sign in
    

    在模板中使用国际化语言输出及增加切换语言的链接:

    # src/main/resources/templates/index.html
    
    <h1 ... th:text="#{login.tip}"></h1>
    <input type="checkbox" value="remember-me"> [[#{login.remember}]]
    <button type="submit"> [[#{login.btn}]] </button>
    
    <a th:href="@{/index.html(l='zh_CN')}">中文</a>
    <a th:href="@{/index.html(l='en_US')}">English</a>
    
    # src/main/resources/application.properties
    
    # 国际化文件的目录位置
    spring.messages.basename=i18n
    

    实现本地化解析器:

    # src/main/java/com/wu/config/MyLocaleResolver.java
    
    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 {
        private static final String PATH_PARAMETER = "l";
        private static final String PATH_PARAMETER_SPLIT = "_";
    
        @Override
        public Locale resolveLocale(HttpServletRequest request) {
            String lang = request.getParameter(PATH_PARAMETER);
            Locale locale = request.getLocale();
            if (!StringUtils.isEmpty(lang)) {
                String[] split = lang.split(PATH_PARAMETER_SPLIT);
                locale = new Locale(split[0], split[1]);
            }
            return locale;
        }
    
        @Override
        public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
    
        }
    }
    

    将语言解析器加入到容器中:

    # src/main/java/com/wu/config/MyMvcConfig.java
    
    @Configuration // 标注这个类是一个配置类
    public class MyMvcConfig implements WebMvcConfigurer {
        // 配置视图跳转
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/").setViewName("index");
            registry.addViewController("/index.html").setViewName("index");
        }
    
        // 将本地化解析器配置到容器中
        @Bean
        public LocaleResolver localeResolver() {
            return new MyLocaleResolver();
        }
    
        // 将视图解析器配置到容器中
        @Bean
        public ViewResolver myViewResolver() {
            return new MyViewResolver();
        }
    
        // 自定义一个视图解析器
        public static class MyViewResolver implements ViewResolver {
            @Override
            public View resolveViewName(String viewName, Locale locale) throws Exception {
                return null;
            }
        }
    }
    
  • 相关阅读:
    Ajax请求过程中显示“进度”的简单实现
    Asp.net 图片文件防盗链介绍
    ASP.NET MVC验证
    MVC文件上传
    MVC文件上传-使用jQuery.FileUpload和Backload组件实现文件上传
    使用jQuery.FileUpload插件和服Backload组件自定义上传文件夹
    使用jQuery.FileUpload和Backload自定义控制器上传多个文件
    使用jQuery.FileUpload插件和Backload组件裁剪上传图片
    CSS3 多列
    CSS3 2D转换 动画
  • 原文地址:https://www.cnblogs.com/danhuang/p/12825816.html
Copyright © 2011-2022 走看看