Built with Seam

You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.

Active development of Seam International has been halted by Red Hat. This project has been migrated over to Apache DeltaSpike .

Seam International

A unified approach to configuring your application for the right language and locale, propagating them to all parts of the application.

To get started, add the following dependency groups below to your pom.xml:

API JAR Implementation JAR
* Maven artifacts are located in the JBoss Community Repository:

Module team

Name Module role Commit username (Git) Hometown (Time zone)
Ken Finnigan Lead kenfinnigan Boston, MA, USA (UTC-05)
Lincoln Baxter III Contributor lincolnthree Charlotte, NC, USA (UTC-05)
José Freitas Contributor joserodolfofreitas Brazil (UTC-03)
Want your name to appear in this list? Join us in #seam-dev on freenode and let us know you want to get involved.


Internationalization and localization are very important for those of us who develop applications for non-English speakers, but is unfortunately poorly supported in various places in Java. It certainly isn't seamless to configure.

Seam aims to provide a unified approach to configuring your application for the right locale, propagating the locale to all aspects of the application.

Release plan

Version Time frame Focus
3.2.0.Alpha1 ~ Feb 2012
3.1.0.Final 19 Dec 2011 13 Issues in Release
3.0.0.Final 31 Mar 2011 27 Issues in Release

Design notes

Below are the design notes for the Internationalization module.

Objectives of this module for Seam 3:

  • Removal of hard dependencies to JSF, ensuring this module is view framework agnostic
  • Support messages being sent to multiple view frameworks within a single application
  • Improved message handling


Possibly provide a way to produce/inject ResourceBundle instances, or an aggregate ResourceBundle

See Dynamic ResourceBundles in CDI as one possible idea

Help text

Consider providing foundation infrastructure for a help text system (or at least a basic implementation). The idea is to be able to associate formatted help text, perhaps in the form of Facelets fragments, and a URL with keyed elements on the screen. The resources would need to be localized.


org.jboss.seam.faces.status.MessagesAdapter delegates to within the Request scope, and is dependent on RenderContext being installed. It also interpolates EL expressions in the message string. Contains convenience methods for creating a Message. convert() handles the transfer of messages to JSF before rendering the response.

Tagged message areas

: Potentially provide support for tagging messages to be displayed in a specific region of the page.


We have provided User and Application timezones for the JDK TimeZone and JODA DateTimeZone implementations. It's up to your personal preference as to which you utilize.

User and Application TimeZones are set to the default JDK TimeZone or JODA DateTimeZone unless overridden by specifying a String associated with @DefaultTimeZone. User TimeZone is updated by triggering a TimeZone or DateTimeZone event with @Alter and @Client qualifiers on the event. is an Application Scoped Bean that provides a List of supported ForwardingTimeZone instances for either the JDK or JODA TimeZone implementations.

Consolidated time zone list

  • (GMT-12:00) Eniwetok, Kwajalein
  • (GMT-11:00) Midway Island, Samoa
  • (GMT-10:00) Hawaii
  • (GMT-09:00) Alaska
  • (GMT-08:00) PST (Pacific Standard Time) (US & Canada)
  • (GMT-07:00) MST (Mountain Standard Time) (US & Canada)
  • (GMT-06:00) CST (Central Standard Time) (US & Canada), Mexico City
  • (GMT-05:00) EST (Eastern Standard Time) (US & Canada), Bogota, Lima, Quito
  • (GMT-04:00) Atlantic Time (Canada), Caracas, La Paz
  • (GMT-03:30) Newfoundland
  • (GMT-03:00) Brazil, Buenos Aires, Georgetown
  • (GMT-02:00) Mid-Atlantic
  • (GMT-01:00) Azores, Cape Verde Islands
  • (GMT+00:00) GMT (Greenwich Mean Time), London, Lisbon, Casablanca, Monrovia
  • (GMT+01:00) CET (Central Europe Time), Brussels, Copenhagen, Madrid, Paris
  • (GMT+02:00) EET (Eastern Europe Time), Kaliningrad, South Africa
  • (GMT+03:00) Baghdad, Kuwait, Riyadh, Moscow, St Petersburg
  • (GMT+03:30) Tehran
  • (GMT+04:00) Abu Dhabi, Muscat, Baku, Tbilisi
  • (GMT+04:30) Kabul
  • (GMT+05:00) Ekaterinburg, Islamabad, Karachi, Tashkent
  • (GMT+05:30) Bombay, Calcutta, Madras, New Delhi
  • (GMT+06:00) Almaty, Dhaka, Colombo
  • (GMT+07:00) Bangkok, Hanoi, Jakarta
  • (GMT+08:00) Beijing, Perth, Singapore, Hong Kong, Chongqing, Urumqi, Taipei
  • (GMT+09:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk
  • (GMT+09:30) Adelaide, Darwin
  • (GMT+10:00) EAST (East Australian Standard)
  • (GMT+11:00) Magadan, Solomon Islands, New Caledonia
  • (GMT+12:00) Auckland, Wellington, Fiji, Kamchatka, Marshall Island


User and Application Locales are set to the default JDK Locale unless overridden by specifying a String associated with @DefaultLocale. User Locale is updated by triggering a Locale event with @Alter and @Client qualifiers on the event. is an Application Scoped Bean that provides a List of supported Locales through a Producer field which is initialised through overriding supportedLocaleKeys with Seam Config.