0

以下のチュートリアルに従って、Web アプリのローカリゼーションを設定しました。

http://viralpatel.net/blogs/spring-3-mvc-internationalization-i18n-localization-tutorial-example/

私は3つのプロパティファイルを持っています:messages_en_properties、messages_es.properties、およびmessages_zh_CN.properties

各ファイルには次の行があります。

logging.name=(対応する言語に翻訳されたユーザー名)

私の .jsp ファイルでは、次の行を使用してユーザー名を表示するようにテーブル データを設定しました。

<td><spring:message code = "login.name" text = "Default Text"/></td>

これは機能しますが、英語のプロパティ ファイルからしか読み取れません。.jsp ファイルで手動でロケールを zh_CN および es に設定しようとしましたが、それでも英語のファイル値を受け取ります。持っていないファイルの国にロケールを設定しようとしても、デフォルトのテキストではなく、英語のファイルのテキストが表示されます。ブラウザーがページを翻訳するかどうかを尋ねるので、ロケールが実際に変更されていることは間違いありません。

localeChangeInterceptor を設定するコードの一部を次に示します。

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

<beans:bean id="handlerMapping"
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <beans:property name="interceptors">
        <beans:ref bean="localeChangeInterceptor" />
    </beans:property>
</beans:bean>

また、次のように変更してみました...

<mvc:interceptors>
    <beans:bean id="localeChangeInterceptor"
        class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">

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

<beans:bean id="handlerMapping"
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
</beans:bean>

どんな助けでも大歓迎です。

4

1 に答える 1

1
Surround 
> <bean id="localeChangeInterceptor"
>     class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
>     <property name="paramName" value="lang" /> </bean>
with <mvc:interceptors>

なので

<mvc:interceptors>
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" >
            <property name="paramName" value="lang" />
        </bean>
</mvc:interceptors>
于 2013-07-03T03:20:34.520 に答える