Package com.opensymphony.module.sitemesh.mapper

# Class LanguageDecoratorMapper

java.lang.Object
com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper
com.opensymphony.module.sitemesh.mapper.LanguageDecoratorMapper

All Implemented Interfaces:
  `DecoratorMapper`

public class LanguageDecoratorMapper extends AbstractDecoratorMapper
The LanguageDecoratorMapper can determine the preferred language set in the browser requesting a page, and map to a suitable Decorator (using the "Accept-Language" HTTP header).

This can be useful for supplying different versions of the same content for different languages.

When LanguageDecoratorMapper is in the chain, it will request the appropriate Decorator from its parent. It will then add an extention to the filename of the Decorator, and if that file exists it shall be used as the Decorator instead. For example, if the Decorator path is `/blah.jsp` and the detected preferred language is `en`, the path `/blah-en.jsp` shall be used.

The language mappings are configured by passing properties with `match.` as a prefix. For example: 'match.en'=engl , 'match.nl'=dutch .

Author:
  Mathias Bogaert
See Also:
  - `DecoratorMapper`

## Field Summary

Fields
Modifier and Type
Field
Description
`private Map`
`map`

### Fields inherited from class com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper

`config, parent`

## Constructor Summary

Constructors
Constructor
Description
`LanguageDecoratorMapper()`

## Method Summary

Modifier and Type
Method
Description
`Decorator`
`getDecorator(javax.servlet.http.HttpServletRequest request, Page page)`
Delegate to parent.
`private String`
`getExt(String acceptLanguage)`
Get extention for the language.
`void`
`init(Config config, Properties properties, DecoratorMapper parent)`
Set parent.
`private void`
`initMap(Properties props)`
Initialize language mappings.
`private static String`
`modifyPath(String path, String ext)`
Change /abc/def.jsp into /abc/def-XYZ.jsp

### Methods inherited from class com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper

`getNamedDecorator`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### map

private Map map

## Constructor Details

### LanguageDecoratorMapper

public LanguageDecoratorMapper()

## Method Details

### init

public void init(Config config, Properties properties, DecoratorMapper parent) throws InstantiationException
Description copied from class: `AbstractDecoratorMapper`
Set parent.

Specified by:
  `init` in interface `DecoratorMapper`
Overrides:
  `init` in class `AbstractDecoratorMapper`
Parameters:
  `config` - Config supplied by Servlet or Filter.
  `properties` - Any initialization properties (specific to implementation).
Throws:
  `InstantiationException` - should be thrown if the implementation cannot be initialized properly.

### getDecorator

public Decorator getDecorator(javax.servlet.http.HttpServletRequest request, Page page)
Description copied from class: `AbstractDecoratorMapper`
Delegate to parent.

Specified by:
  `getDecorator` in interface `DecoratorMapper`
Overrides:
  `getDecorator` in class `AbstractDecoratorMapper`

### getExt

private String getExt(String acceptLanguage)
Get extention for the language.

### modifyPath

private static String modifyPath(String path, String ext)
Change /abc/def.jsp into /abc/def-XYZ.jsp

### initMap

private void initMap(Properties props)
Initialize language mappings.