2011-01-30 8 views
1

英語とヒンディー語の2つの言語をサポートするstruts 2とspring Webアプリケーションを開発しています。 国際化を設定しましたが、動作しません。つまり、ブラウザからエンコードを変更すると、テキストは変更されません。 私もprogramiticallyロケールを変更しようとしたが、それはまだstruts 2国際化が動作しない

<%@ taglib prefix="s" uri="/struts-tags" %> 
<h4><s:text name="Registration"/></h4> 

RegisterAction.java

public class RegisterAction extends ActionSupport { 

public String execute(){ 
    return "SUCCESS"; 
} 

public Locale getLocale(){ 
    return new Locale("hi"); 
} 
    } 

struts.xml

<action name="register" class="com.medics.action.RegisterAction"> 
    <result name="SUCCESS">/Register.jsp</result> 
</action> 

Register.jspを動作しません。 global-messages.properties

ここ
hello=hello 
Registration=Registration 

global-messages_hi.properties

Registration=\\u2354\\u2379\\u327\\u2367\\u2344\\u2381 

プロジェクトのスナップショットです

struts.xmlと二つのメッセージファイルは、クラスパス残念ながら

答えて

1

のルートにありますあなたのキーにあなたの英語の値と同じ名前をつけたので、英語のバンドルが正しくロードされているかどうかは分かりません。私の最初の推測は、Strutsはグローバルメッセージ* .propertiesが言語バンドルであることを知らないということです。

あなたのstruts.xmlにこれを追加してみてください:

<constant name="struts.custom.i18n.resources" value="global-messages"/> 

編集

あなたは英語バンドルがロードされていることを確認している場合、あなたはそれを確認するために、アプリケーションをデバッグしたいと思いますヒンディー語のロケールはStruts2によって適切に設定されています。アクション内のブレークポイントを使用すると、getLocale()の値を簡単に確認できます。

+0

struts.propertiesファイルにグローバルメッセージresoulseバンドルがすでに定義されています。バンドルの値を変更するとウェブページに反映されるため、英語のバンドルが正しく読み込まれています。 –

+0

私は自分の答えを更新しました。 –