Spring 5.3.9 - 升级 - 本地化问题 - 更改语言不起作用

问题描述 投票:0回答:1

我们有一个使用旧的 Spring MVC 框架运行的网站,并已升级到 5.3.9。该网站允许用户单击页面上的英语或西班牙语。升级后一直是英文,不显示西班牙文。

<beans:bean id="publicUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

    <beans:property name="interceptors">
        <beans:list>                
            <beans:ref bean="localeChangeInterceptor" />
        </beans:list>
    </beans:property>
    <beans:property name="urlMap">
        <beans:map>
            <beans:entry key="/public/login">
                <beans:ref bean="wsLoginController"/>
            </beans:entry>              
        </beans:map>
    </beans:property>
</beans:bean>


<beans:bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
     <beans:property name="defaultLocale" value="en" /> 
</beans:bean>

 <beans:bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <beans:property name="paramName" value="locale" />
</beans:bean>   

<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <beans:property name="defaultEncoding" value="UTF-8"/>
    <beans:property name="basenames">
        <beans:list>
            <beans:value>registryMessages</beans:value>             
        </beans:list>      
    </beans:property>
</beans:bean>

以上配置不起作用,因此我在控制器中添加了以下代码。

网址:search.html?locale=es_MX

String language = request.getParameter("locale");       
    if(language == null) {
        language= "en";
    }       
    Locale lc = new Locale(language);       
    RequestContextUtils.getLocaleResolver(request).setLocale(request, response,  lc);

当我运行 localhost(WebSphere 应用程序服务器) 时,这是有效的。然而,当部署到 DEV WebSphere 服务器时,问题仍然存在。尝试过卸载、删除缓存、重新部署等,但仍然没有成功。感谢修复上述代码的任何帮助。是否有办法在不添加控制器代码的情况下进行上述配置?或者在控制器中添加小代码后,它可以在我的本地主机上运行,但为什么它不能在 DEV 服务器上运行?谢谢!

spring-mvc localization
1个回答
0
投票

URL 参数为 locale=es_MX。我的属性文件为registryMessages_es_MX.properties。当将参数值设置为

Locale lc = new Locale(language);
时,它将其转换为小写。当在本地主机(Windows)上运行时,它能够找到具有大写扩展名的属性,但当部署到 DEV(Unix 服务器)时,它正在寻找“_es_mx.proeprties”并且无法加载。我已将所有属性更改为小写扩展名“es_mx”,适用于 Windows 和 Unix 平台。

© www.soinside.com 2019 - 2024. All rights reserved.