The language picker allows the customer to switch between English and Spanish when ATG Store US or ATG Home is the current site, and English and German when ATG Store Germany is the current site. In order for this functionality to be available, the Store.Estore.International
module must be running in your production instance.
Note: When the International
module is absent, ATG Store US and ATG Home are only available in English and ATG Store Germany is not available at all.
The language picker is implemented by the store.war/navigation/gadgets/languages.jsp
gadget. To begin, languages.jsp
tests whether or not the /atg/modules/InternationalStore
component exists. This component is part of the Store.Estore.International
module and only exists when that module is running. The presence of the InternationalStore
component indicates that the International
module is running and, therefore, this application has language support and a language picker should be rendered.
Next, languages.jsp
invokes the /atg/store/droplet/DisplayLanguagesDroplet
, passing in as parameters the languages
and defaultCountry
properties of the current site. The DisplayLanguagesDroplet
is of class atg.projects.store.droplet.DisplayLanguagesDroplet
and it has two tasks: it determines which language is currently selected and it creates a set of objects, one for each language the current site supports. In general, these objects contain a modified URL that consists of the current URL plus a locale parameter. For example, if the URL for the current page is:
http://localhost:8180/crs/storeus/index.jsp
The modified URL might be:
http://localhost:8180/crs/storeus/index.jsp?locale=es_US
There are some exceptions to this rule for parameters that are not appropriate to carry over to the modified URL. For example, the numResults
parameter is omitted in any newly formed URLs because a search in a new language will return different results.
Finally, languages.jsp
uses the objects returned by DisplayLanguagesDroplet
to render the language picker. The currently selected language is rendered as a label only. Any other languages are rendered as links using the URLs in the objects the DisplayLanguageDroplet
returned.
Note: See the Internationalization chapter for more information on the International module.