最近 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})">
我的国际化配置目录如下:
1)、这是默认文件
2)、这是英文文件
3)、这是中文简体文件