×

springboot i18n

springboot整合国际化i18n

我的笔记 我的笔记 发表于2019-01-31 17:22:22 浏览5208 评论1

1人参与发表评论

最近 smart web-im基础框架就要搭建出来了。。

我在整合国际化的时候碰到一点麻烦,前前后后搞了两三天。

先说坑一:

    我在application.yml中配置:

spring:
  #[国际化配置]
  messages:
    basename: i18n/messages,i18n/menus,i18n/pages,i18n/user_messages

发现配置完后不起作用,搞了好久。。后来参考我们公司的框架,发现公司框架重新写了messageSource.。我也果断重写一下,在配置类中

/***
 * 由于在application.yml配置了国际化文件不识别
 * 在这里重新把messageSource注入到spring中
 * @return
 */
@Bean(name = "messageSource")
public MessageSource messageSource() {
    String[] baseNames = null;
    if (StringUtils.isNotBlank(baseName)) {
        baseNames = baseName.split(",");
    }
    Locale.setDefault(Locale.CHINESE);
    ResourceBundleMessageSource source = new ResourceBundleMessageSource();
    source.setBasenames(baseNames);// name of the resource bundle
    source.setUseCodeAsDefaultMessage(true);
    source.setDefaultEncoding("UTF-8");
    return source;
}

成功识别。。i18n国际化在thymeleaf中用法如下:

1、input框提示符

<input type="email" class="form-control" th:placeholder="#{PAGE.LOGIN.USERNAME}">

2、单纯页面使用

[[#{PAGE.LOGIN.REMEMBERME}]]

3、文本内容,按钮标题等

<p class="login-box-msg" th:text="#{PAGE.LOGIN.LOGINADMIN}"></p>

4、在th:include中也可以使用,下面例子就是字符串加国际化传入片段

<head th:include="common/head::head('Smart WEB-IM | '+#{PAGE.LOGIN.LOGINTEXT})">

我的国际化配置目录如下:

image.png

1)、这是默认文件

image.png

2)、这是英文文件

image.png

3)、这是中文简体文件

image.png


我的笔记博客版权我的笔记博客版权