SSM框架支持国际化,泰语、日语、俄语、亚美尼亚语、韩语乱码的解决方案

最近项目种要支持语言的国际化,之前没搞过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

如图所示:

postman测试国际化

5.测试

因为要支持多种语言,发现泰语、日语、俄语、亚美尼亚语、韩语这几种语言出现乱码现象

我的解决方案是在配置文件里添加了如图一句    <value>text/json;charset=ISO-8859-1</value>       就可以了

语言配置图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容