Some businesses require internationalized catalogs, which can display product information in different languages, or display different sets of products to customers in different countries.

The CatalogTools component includes a property called alternateRepositories that lets you specify a mapping between symbolic names (called repository keys) and alternative repositories to use as the product catalog. You can then use customer locale as the repository key to determine which version of the catalog to display.

When the customer searches the catalog on an internationalized site, you want to make sure they search the catalog specific to their language or locale. You can do this by setting the search form handler’s repositoryKey property to the name that identifies the repository you want to search. The search form handler uses repositoryKey to retrieve the appropriate catalog from the CatalogTools component. If you don’t set a repositoryKey, the catalog repository is used.

The repositoryKey property is typically set through a hidden input field in the search form, as in this example:

<dsp:input value='<dsp:valueof bean="Profile.locale"/>' type="hidden"
bean="MySearchFormHandler.repositoryKey">

Using repositoryKey in conjunction with the alternateRepositories property of the CatalogTools component lets you ensure that customers see only the appropriate products when searching the catalog.