Overview
The i18n custom tag library contains tags that help manage the complexity of creating internationalized web applications. These tags provide similar (though not identical) functionality to the internationalization available in the struts framework, but do not require adopting the entire struts framework.
"i18n" is a common abbreviation for internationalization, because there are 18 letters between the first "i" and the last "n".
For more information on internationalization with Java, the java.sun.com site contains a good tutorial written by Dale Green.
Requirements
This custom tag library requires no software other than a servlet container that supports the JavaServer Pages Specification, version 1.1 or higher.
Configuration
Follow these steps to configure your web application with this tag library:
- Copy the tag library descriptor file to the /WEB-INF subdirectory of your web application.
- Copy the tag library JAR file to the /WEB-INF/lib subdirectory of your web application.
- Add a <taglib> element to your web application deployment descriptor in /WEB-INF/web.xml like this:
<taglib> <taglib-uri>http://jakarta.apache.org/taglibs/i18n-1.0</taglib-uri> <taglib-location>/WEB-INF/i18n.tld</taglib-location> </taglib>
To use the tags from this library in your JSP pages, add the following directive at the top of each page:
<%@ taglib uri="http://jakarta.apache.org/taglibs/i18n-1.0" prefix="i18n" %>
where "i18n" is the tag name prefix you wish to use for tags from this library. You can change this value to any prefix you like.
Tag Summary
i18n Tagsbundle | Define a resource bundle for use by other i18n tags. |
message | Displays internationalized text from a resource bundle. |
messageArg | Specifies arguments to be used by the message tag's MessageFormat. |
ifdef | Allows jsp to be evaluated (or not) on a per locale basis. |
ifndef | Allows jsp to be evaluated (or not) on a per locale basis. |
locale | Defines a locale context. |
formatString | Formats a string. |
formatNumber | Formats a number. |
formatCurrency | Formats currency. |
formatPercent | Formats a percentage. |
formatDateTime | Formats a date/time. |
formatDate | Formats a date. |
formatTime | Formats a time. |
Tag Reference
bundle | Availability: 1.0 | ||||
Establishes the ResourceBundle to use for other i18n tags on the page. Also determines the most appropriate Locale to use based on browser settings if a locale is not provided. | |||||
Tag Body | JSP | ||||
Restrictions | This tag must be placed early in the page (before any HTML) in order for the output stream's content type to be set from the selected locale. If a locale (or localeRef) is not provided, the "best" locale will be determined from the browser settings and available locales for the requested bundle. | ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
baseName | Yes | Yes | 1.0 | ||
Used along with the provided (or auto-sensed) locale to locate the desired ResourceBundle. | |||||
changeResponseLocale | No | No | 1.0 | ||
Specifies whether or not the response locale should be changed to match the locale used by this tag. | |||||
scope | No | No | 1.0 | ||
Specifies the scope (application, session, request, page) that this bundle will be made available to message and other tags. | |||||
locale | No | Yes | 1.0 | ||
Allows the page developer to provide a direct object reference to the user's preferred locale. | |||||
localeAttribute | No | Yes | 1.0 | ||
DEPRECATED - use localeRef Allows the page developer to provide the name of an attribute whose value is the user's preferred locale. This attribute may exist in the page, request, session, or application scope. | |||||
localeRef | No | Yes | 1.0 | ||
Allows the page developer to provide the name of an attribute whose value is the user's preferred locale. This attribute may exist in the page, request, session, or application scope. | |||||
debug | No | Yes | 1.0 | ||
The debug flag. Logs debugging information of the bundle to the ServletContext. | |||||
Variables | Name | Scope | Availability | ||
id attribute value | Start of tag to end of page | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the ResourceBundle defined by this tag. This is useful for allowing multiple bundle declarations per page or for creating localization debug pages by listing all key/value pairs in a bundle. | |||||
Properties | None | ||||
Examples | Define a bundle using browser preference to determine locale. | ||||
| |||||
Define a bundle using browser preference to determine locale, and declaring the scripting variable "bundle". | |||||
| |||||
Define a bundle using a scriptlet variable to specify the locale. | |||||
| |||||
Define a bundle using a page, request, session, or application attribute to specify the locale. | |||||
|
message | Availability: 1.0 | ||||
Format a message (using java.text.MessageFormat) from the value resulting from looking up the provided key within the default or specified resource bundle. Arguments to MessageFormat can be supplied as an object array or as subtags within the message tag body. | |||||
Tag Body | JSP | ||||
Restrictions | Message tags require that a default bundle be provided (by placing a bundle tag prior to the message tag) or that a bundle or bundleRef attribute be supplied to the tag. | ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
key | Yes | Yes | 1.0 | ||
The key to use when retrieving the display message format from the ResourceBundle. | |||||
args | No | Yes | 1.0 | ||
Provides an array of args for use with java.text.MessageFormat when formatting the display text. This is an alternative to using arg subtags. | |||||
bundle | No | Yes | 1.0 | ||
An object reference to the ResourceBundle in which the key can be found. | |||||
bundleRef | No | Yes | 1.0 | ||
The name of an attribute that contains a resource bundle. This attribute is usually defined/populated by BundleTag's id attribute. | |||||
debug | No | Yes | 1.0 | ||
Set to "true" to log debugging messages. | |||||
Variables | Name | Scope | Availability | ||
id attribute value | Nested within tag | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the String created by this tag. If id is specified the String will not be printed by this tag, just stored into the id. | |||||
Properties | None | ||||
Examples | Display a plain message using the default (first defined) bundle. | ||||
| |||||
Display a plain message using a specified bundle. | |||||
| |||||
Display a message with arguments. In the example below, the English value for the key "datetxt" is "Welcome, today is {0,date,short}." | |||||
|
messageArg | Availability: 1.0 | ||||
The messageArg tag is a simpler (and usually more readable) alternative to using the Message tag's args attribute for specifying arguments to MessageFormat. Note that if you use arguments for your message tags, java.util.MessageFormat puts some restrictions on the characters you are allowed to use. The one that is most likely to affect you is the requirement that single apostrophies should be escaped by another apostrophe (so, you replace ' with '' in your resource bundle properties file). | |||||
Tag Body | empty | ||||
Restrictions | Must reside inside the body of a message tag. | ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
value | Yes | Yes | 1.0 | ||
This attribute is to replace a positional variable in the message text. See the javadoc api for java.text.MessageText | |||||
Variables | None | ||||
Examples | Provide a date and number to be formatted in the message in the right location and according to the user's locale. | ||||
|
ifdef | Availability: 1.0 | ||||
This tag processes the JSP contained in its body if the given key is defined in the given (or default if not specified) bundle. | |||||
Tag Body | JSP | ||||
Restrictions | ifdef tags require that a default bundle be provided (by placing a bundle tag prior to the message tag) or that a bundle or bundleRef attribute be supplied to the tag. | ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
key | Yes | Yes | 1.0 | ||
The name of the key whose value (or lack thereof) will determine whether the body of this tag is processed. | |||||
bundle | No | Yes | 1.0 | ||
An object reference to the ResourceBundle in which the key can be found. | |||||
bundleRef | No | Yes | 1.0 | ||
The name of an attribute that contains a resource bundle. This attribute is usually defined/populated by BundleTag's id attribute. | |||||
Variables | None | ||||
Examples | Display a special disclaimer if there is one to display. | ||||
|
ifndef | Availability: 1.0 | ||||
This tag processes the JSP contained in its body if the given key is NOT defined in the given (or default if not specified) bundle. | |||||
Tag Body | JSP | ||||
Restrictions | ifndef tags require that a default bundle be provided (by placing a bundle tag prior to the message tag) or that a bundle or bundleRef attribute be supplied to the tag. | ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
key | Yes | Yes | 1.0 | ||
The name of the key whose value (or lack thereof) will determine whether the body of this tag is processed. | |||||
bundle | No | Yes | 1.0 | ||
An object reference to the ResourceBundle in which the key can be found. | |||||
bundleRef | No | Yes | 1.0 | ||
The name of an attribute that contains a resource bundle. This attribute is usually defined/populated by BundleTag's id attribute. | |||||
Variables | None | ||||
Examples | Display a special disclaimer if there is one to display. | ||||
|
locale | Availability: 1.0 | ||||
Defines a locale context. This is either sepecified using the locale property, the combination of 'language', 'country' and the optional 'variant' property or the current HTTP request is used. If no other locale can be found then the default JVM locale is used. Other sub-tags will use this locale if no other locale is specified. | |||||
Tag Body | JSP | ||||
Restrictions |
| ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
locale | No | Yes | 1.0 | ||
| |||||
localeRef | No | Yes | 1.0 | ||
Allows the page developer to provide the name of an attribute whose value is the user's preferred locale. This attribute may exist in the page, request, session, or application scope. | |||||
language | No | Yes | 1.0 | ||
| |||||
country | No | Yes | 1.0 | ||
| |||||
variant | No | Yes | 1.0 | ||
| |||||
Variables | Name | Scope | Availability | ||
id attribute value | Start of tag to end of page | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the Locale defined by this tag. | |||||
Properties | None | ||||
Examples | No example provided (yet). | ||||
|
formatString | Availability: 1.0 | ||||
Outputs a String value or displays the defaultText property if the String is null. The defaultText defaults to "". | |||||
Tag Body | JSP | ||||
Restrictions |
| ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
value | Yes | Yes | 1.0 | ||
| |||||
defaultText | No | Yes | 1.0 | ||
| |||||
Variables | Name | Scope | Availability | ||
id attribute value | Start of tag to end of page | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the Locale defined by this tag. | |||||
Properties | None | ||||
Examples | No example provided (yet). | ||||
|
formatNumber | Availability: 1.0 | ||||
Formats a number using a locale. A pattern can be specified such as '##,###.##'. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. | |||||
Tag Body | JSP | ||||
Restrictions |
| ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
value | Yes | Yes | 1.0 | ||
| |||||
pattern | No | Yes | 1.0 | ||
| |||||
locale | No | Yes | 1.0 | ||
| |||||
defaultText | No | Yes | 1.0 | ||
| |||||
Variables | Name | Scope | Availability | ||
id attribute value | Start of tag to end of page | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the Locale defined by this tag. | |||||
Properties | None | ||||
Examples | No example provided (yet). | ||||
|
formatCurrency | Availability: 1.0 | ||||
Formats a number as a currency using a locale. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. | |||||
Tag Body | JSP | ||||
Restrictions |
| ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
value | Yes | Yes | 1.0 | ||
| |||||
locale | No | Yes | 1.0 | ||
| |||||
defaultText | No | Yes | 1.0 | ||
| |||||
Variables | Name | Scope | Availability | ||
id attribute value | Start of tag to end of page | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the Locale defined by this tag. | |||||
Properties | None | ||||
Examples | No example provided (yet). | ||||
|
formatPercent | Availability: 1.0 | ||||
Formats a number as a percentage using a locale. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. | |||||
Tag Body | JSP | ||||
Restrictions |
| ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
value | Yes | Yes | 1.0 | ||
| |||||
locale | No | Yes | 1.0 | ||
| |||||
defaultText | No | Yes | 1.0 | ||
| |||||
Variables | Name | Scope | Availability | ||
id attribute value | Start of tag to end of page | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the Locale defined by this tag. | |||||
Properties | None | ||||
Examples | No example provided (yet). | ||||
|
formatDateTime | Availability: 1.0 | ||||
Formats a Date value as a date-time using a locale. A dateStyle and a timeStyle (short/medium/long/full) can be specified. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. | |||||
Tag Body | JSP | ||||
Restrictions |
| ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
value | No | Yes | 1.0 | ||
| |||||
locale | No | Yes | 1.0 | ||
| |||||
dateStyle | No | Yes | 1.0 | ||
| |||||
timeStyle | No | Yes | 1.0 | ||
| |||||
defaultText | No | Yes | 1.0 | ||
| |||||
Variables | Name | Scope | Availability | ||
id attribute value | Start of tag to end of page | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the Locale defined by this tag. | |||||
Properties | None | ||||
Examples | No example provided (yet). | ||||
|
formatDate | Availability: 1.0 | ||||
Formats a Date value as a date using a locale. A style (short/medium/long/full) can be specified or a pattern such as 'YYYY MMM ddd'. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. | |||||
Tag Body | JSP | ||||
Restrictions |
| ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
value | No | Yes | 1.0 | ||
| |||||
locale | No | Yes | 1.0 | ||
| |||||
pattern | No | Yes | 1.0 | ||
| |||||
style | No | Yes | 1.0 | ||
| |||||
defaultText | No | Yes | 1.0 | ||
| |||||
Variables | Name | Scope | Availability | ||
id attribute value | Start of tag to end of page | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the Locale defined by this tag. | |||||
Properties | None | ||||
Examples | No example provided (yet). | ||||
|
formatTime | Availability: 1.0 | ||||
Formats a Date value as a time using a locale. A style (short/medium/long/full) can be specified. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. | |||||
Tag Body | JSP | ||||
Restrictions |
| ||||
Attributes | Name | Required | Runtime Expression Evaluation | Availability | |
id | No | Yes | 1.0 | ||
Script variable id for use with standard jsp:getProperty tag and as an attribute to other tags in this tag library. | |||||
value | No | Yes | 1.0 | ||
| |||||
locale | No | Yes | 1.0 | ||
| |||||
style | No | Yes | 1.0 | ||
| |||||
defaultText | No | Yes | 1.0 | ||
| |||||
Variables | Name | Scope | Availability | ||
id attribute value | Start of tag to end of page | 1.0 | |||
The scripting variable declared allows other tags or scriptlets to access the Locale defined by this tag. | |||||
Properties | None | ||||
Examples | No example provided (yet). | ||||
|
Examples
See the example application i18n-examples.war for examples of the usage of the tags from this custom tag library.