Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Description

WebWork supports internationalization (in short, i18n) in two different places: the UI tags and the action/field error messages.

Resource Bundle Search Order

Resource bundles are searched in the following order:

  • ActionClass.properties
  • BaseClass.properties (all the way to Object.properties)
  • Interface.properties (every interface and sub-interface)
  • package.properties (every of every base class, all the way to java/lang/package.properties)
  • global resource properties (webwork.custom.i18n.resources) defined in webwork.properties

Examples

To display i18n text, you can use a call to getText() in the property tag, or any other tag such as the UI tags (this is especially useful for labels of UI tags):

...

Code Block
xml
xml
<ww:i18n name="some/.package/.bundle">
    <ww:text name="some.key"/>
</ww:i18n>
Warning

Internationalization in SiteMesh decorators is possible, but there are a few quirks about it. Check out the SiteMesh page to learn how to be integrate WebWork and SiteMesh, including integration tips.

Tip
titleInternationalization Interceptor

Coming up in the next release of webwork (2.2) is the I18NInterceptor to switch the Locale of a request on the fly. You can check it out in the Cookbook under Transparent web-app I18N.

...

I18n Interceptor

See I18n Interceptor for more info. It basically pushes a locale into the ActionContext map upon every request. Webwork (components, ActionSupport etc.) honours this and hence every i18n related aspect will used this locale. Its a pretty elegant way of changing locale upon request as well.

Global resouce (webwork.custom.i18n.resources) in webwork.properties

A global resource bundle could be specified through the 'webwork.custom.i18n.resources' property in webwork.properties. The locale can be siwtched by 'webwork.locale' in the webwork.properties as well.

Comparison with Struts

Struts users should be familiar with the application.properties resource bundle, where you can put all the messages in the application that are going to be translated. WebWork, though, splits the resource bundles per action or model class, and you may end up with duplicated messages in those resource bundles. A quick fix for that is to create a file called ActionSupport.properties in com/opensymphony/xwork and put it on your classpath. This will only work well if all your actions subclass ActionSupport.Global resource bundles can also be specified
via setting the webwork.locale in webwork.properties.