Java笔记--SpringBoot国际化i18n

2019-12-13  本文已影响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
上一篇 下一篇

猜你喜欢

热点阅读