Spring MVC Арабский язык - PullRequest
0 голосов
/ 11 июня 2010

Я занимаюсь разработкой приложения Spring mvc, которое должно поддерживать английский и арабский языки. Я настроил приложение, как упомянуто в справочных документах весной, и переключение локали работает отлично. Однако арабские сообщения в пакете ресурсов показаны как ненужные символы. Кодировка установлена ​​как UTF-8, и она работает правильно. Также я попытался запустить инструмент native2ascii для преобразования файла messages_ar.properties в unicode.

Ничего не работает. Любая помощь будет высоко ценится.

web.xml (частично)

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<web-app version="2.4"...>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Handles all requests into the application -->
<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring/mvc-config.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

mvc-config.xml (частично)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<context:component-scan base-package="net.omnsoq.classified.controller" use-default-filters="false">
    <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation" />
</context:component-scan>

<!-- Configures support for @Controllers -->
<mvc:annotation-driven />

<!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

<bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" id="messageSource"
    p:basenames="WEB-INF/i18n/messages,WEB-INF/i18n/application" p:fallbackToSystemLocale="false" />

<!-- store preferred language configuration in a cookie -->
<bean class="org.springframework.web.servlet.i18n.CookieLocaleResolver" id="localeResolver" p:cookieName="locale" />


<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" p:paramName="lang" />
</mvc:interceptors>

JSP код

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
...
<%@page contentType="text/html;charset=UTF-8" %>
...
<spring:message code="nav.label.myaccount" />

Ответы [ 2 ]

5 голосов
/ 11 июня 2010

Я нашел решение. Так что я просто хочу поделиться этим, чтобы это могло быть полезным для кого-то еще.

Я установил свойства fileEncodings и defaultEncoding в UTF-8 для источника сообщений.

<bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" id="messageSource"
    p:basenames="WEB-INF/i18n/messages,WEB-INF/i18n/application" p:fallbackToSystemLocale="false" p:fileEncodings="UTF-8"
    p:defaultEncoding="UTF-8" />
0 голосов
/ 11 июня 2010

Вы проверяли содержимое файла ресурсов? Он не должен содержать символов UTF-8, только ASCII.

Для этого используйте:

messages .properties" />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...