14.5. Using Tiles for I18N
Problem
You want to customize a Tiles definition based upon the user's language and country.
Solution
Create a separate version of your Tiles definition file for the specific locale; appending the locale code to the file name. If you saved your Tiles definition file as tiles-def.xml, you would save the locale-specific definitions file for Spanish as tiles-def_es.xml.
Discussion
Developers commonly localize JSP pages in a Struts application using
a localized message resources file and the
bean:message tag. If you need to display a
different page and you are using Tiles, you can set aside a Tiles
definition for a specific locale by placing it in a locale-specific
Tiles definition file. At runtime, Tiles searches for a matching
definition by considering the definition name and the current locale.
You indicate the locale that applies to the definition by appending
the locale's language and country code to the file
name, as you would for localizing a message resources properties
file. For example, if your Tiles definitions are specified in
tiles-def.xml, definitions specific to the
Spanish language will be placed in
tiles-def_es.xml. If you needed definitions
specific for French-Canadians, you would store them in
tiles-def_fr_CA.xml.
Example 14-9 shows the Tiles definition file,
tiles-def_es.xml, that overrides the
.pageOne definition from Example 14-5.
Example 14-9. Overriding a definition for a specific locale
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE ...