美文网首页
Java笔记--SpringBoot国际化i18n

Java笔记--SpringBoot国际化i18n

作者: 汴城码农 | 来源:发表于2019-12-13 16:01 被阅读0次

    1,创建国际化 messages 文件

    messages.properties 默认
    messages_en_US.properties 美国英文
    messages_zh_CN.properties 简体中文
    目录结构如下图:

    屏幕快照 2019-12-13 下午3.49.47.png

    2,配置路径

    #指定message的basename,多个以逗号分隔,如果不加包名的话,默认从classpath路径开始,默认: messages
    spring.messages.basename=i18n/messages
    #设定加载的资源文件缓存失效时间,-1的话为永不过期,默认为-1
    #spring.messages.cache-seconds= 3600
    spring.messages.cache-duration=-1
    
    屏幕快照 2019-12-13 下午3.52.39.png

    3,简单使用

        @Autowired
        private MessageSource messageSource;
    
        Locale locale = LocaleContextHolder.getLocale();
            String string = messageSource.getMessage("hellow",null,locale);
        System.out.println("===================" + string);
    

    4,可封装工具类,便于调用

    @Component
    public class LocaleMessage {
        @Autowired
        private MessageSource messageSource;
    
        /**
         * @param code:对应文本配置的key.
         * @return 对应地区的语言消息字符串
         */
        public String getMessage(String code){
            return this.getMessage(code,new Object[]{});
        }
    
        public String getMessage(String code,String defaultMessage){
            return this.getMessage(code,null,defaultMessage);
        }
    
        public String getMessage(String code,String defaultMessage,Locale locale){
            return this.getMessage(code,null,defaultMessage,locale);
        }
    
        public String getMessage(String code, Locale locale){
            return this.getMessage(code,null,"",locale);
        }
    
        public String getMessage(String code,Object[] args){
            return this.getMessage(code,args,"");
        }
    
        public String getMessage(String code,Object[] args,Locale locale){
            return this.getMessage(code,args,"",locale);
        }
    
        public String getMessage(String code,Object[] args,String defaultMessage){
            Locale locale = LocaleContextHolder.getLocale();
            return this.getMessage(code,args, defaultMessage,locale);
        }
    
        public String getMessage(String code,Object[]args,String defaultMessage,Locale locale){
            return messageSource.getMessage(code,args, defaultMessage,locale);
        }
    }
    

    5,前端请求头根据语言环境,请求头"Accept-Language""en-US"``"zh-CN即可返回本地化数据

    以iOS为例,如下图:


    屏幕快照 2019-12-13 下午4.00.15.png

    相关文章

      网友评论

          本文标题:Java笔记--SpringBoot国际化i18n

          本文链接:https://www.haomeiwen.com/subject/tfwfnctx.html