3

だから私は次のチュートリアルの組み合わせに従っています....

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

http://www.mkyong.com/spring-mvc/spring-mvc-internationalization-example/

アイデア!

特定の言語をクリックし、それに応じてウェブページを更新することで、ウェブページで複数の言語を表示できるようにします

計画!

spring の LocaleChangeInterceptor、LocaleResolver、HandlerMapping、MessageSource、およびいくつかの messages_xx.properties ファイルを使用して、指定された「lang」パラメーターに応じてさまざまな言語からメッセージを動的に呼び出しています。たとえば、"lang"=en の場合、messages_en.properties ファイルに移動して、label.message のメッセージを取得します。

問題のセットアップ!

applicationContext.xml ファイルと web.xml ファイルにすべての春の「もの」を設定しました (私はこのようなことについては素人です)。また、.jsp ファイルの 1 つに を追加しました。

問題!

(TomCat サーバーを使用して) アプリケーションを実行すると、messages_en.properties ファイル (この場合は「hello」) にメッセージが正常に表示されますが、言語を変更しようとすると、同じメッセージが表示されます。

参照コード

applicationContext.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ctx="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd ">


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

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

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

<bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="classpath:messages" /> 
    <property name="defaultEncoding" value="UTF-8"/> 
</bean> 

例: messages_en.properties

 label.message = Hello

メッセージを表示する/言語を変更するためのjspスニペット

<%@ include file="/include.jsp"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
..............
<a href="?lang=en">English</a>|<a href="?lang=ar">Arabic</a>
<h3>
<spring:message code="label.message" text="default text" />
</h3>
..............

ノート

  • ${pageContext.response.locale}コードに行を挿入すると、Web ページの出力は"en_US"でした。パラメータを変更した後でも(.....lang=arたとえば、URLのどこに表示されるか)

  • messages_en.propertiesファイルを見つけて、そのファイルからメッセージを取得し、それを Web ページに出力しますが、そのファイルにアクセスするだけで、対応するメッセージを表示するだけです。

  • 私たちはSpring v3.0.3を使用しています(編集:ライブラリファイルに基づいていますが、xmlファイルには2.5と表示されているのでわかりません)、別のバージョンまたはライブラリを使用する必要がありますか?

それは何だと思いますか?

  • 経験はほとんどありませんが、ロケール変数が実際には変更されていないように感じます。どうすれば効果的に変更できますか?

みんなありがとう!すべての助けに本当に感謝しています!

編集

  • それ以来、「localeChangeInterceptor」を で囲んでいますが<mvc:interceptors>、運が悪い

  • さらにファイルやコードが必要な場合は、お問い合わせください。

4

2 に答える 2

0

これを試して..

    <bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver" p:basename="messages" />

    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>

    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
于 2014-03-17T07:04:09.083 に答える