Sumit Jain
Sumit Jain

Reputation: 1528

struts 2 internationalization not working

I am developing struts 2 and spring web application which suppoerts two languages: english and hindi. I have configured internationalization but it is not working i.e. when I change the encoding from browser, the text does not change. I have tried to even change the locale programitically but it still does not work

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

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

global-messages.properties

hello=hello
Registration=Registration

global-messages_hi.properties

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

here is the snapshot of the project

struts.xml and the two messages files are in the root of the classpath

Upvotes: 1

Views: 2882

Answers (1)

Steven Benitez
Steven Benitez

Reputation: 11055

Unfortunately, you named your keys the same as your values in English, so you can't really tell if the English bundle is being loaded properly either. My first guess is that Struts does not know that global-messages*.properties are language bundles.

Try adding this to your struts.xml:

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

Edit

If you are sure that the English bundle is loading, then you'll want to debug the application to confirm that the Hindi locale is being set properly by Struts2. A breakpoint in your action should allow you to easily check the value of getLocale().

Upvotes: 1

Related Questions