最近项目种要支持语言的国际化,之前没搞过SSM框架的国际化,网上有很多资料,以为很简单,结果不知道哪出问题了,就是死活不管用,最后功夫不负有心人,找到了一个可以用的,写此文纪念下踩过的这个大坑
SSM支持国际化的步骤
下图是项目的框架结构图
1.创建国际化资源文件
如图所示,创建多个国际化的资源配置文件,资源配置文件的命名可以参考这里
里面的内容如下所示: param = value
DELETE_SUCCESS=Delete the success
DELETE_FAILED=Delete failed
UPDATE_SUCCESS=Modify the success
UPDATE_FAILED=Modify the failed
2.修改配置文件
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="i18n.message"></property>
<property name="defaultEncoding" value="UTF8"/>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
</mvc:interceptors>
这里的配置文件一定要注意,我就是有个地方写的不对,整了一天才整出来
3.java代码里返回国际化信息的地方可以这样写
不知道MessageUtils的内容是什么?不会写?小姐姐当然不会这么坑啦,下面就给大家奉上代码
@Component
@Slf4j
public class MessageUtils {
private static MessageSourcemessageSource;
public MessageUtils(MessageSource messageSource1) {
messageSource = messageSource1;
}
**
* 获取单个国际化翻译值
*/
public static String get(String msgKey) {
try {
// log.info("获取到的多语言设置为:"+LocaleContextHolder.getLocale().toString());
return messageSource.getMessage(msgKey,null, LocaleContextHolder.getLocale());
}catch (Exception e) {
return msgKey;
}
}
}
4.前台配置
我们项目是给移动端开发接口,控制语言的参数放在http的请求头里面了,传的是Accept-Language
如图所示:
5.测试
因为要支持多种语言,发现泰语、日语、俄语、亚美尼亚语、韩语这几种语言出现乱码现象
我的解决方案是在配置文件里添加了如图一句 <value>text/json;charset=ISO-8859-1</value> 就可以了