Package org.springframework.web.servlet.i18n

# Class AcceptHeaderLocaleResolver

java.lang.Object
org.springframework.web.servlet.i18n.AbstractLocaleResolver
org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver

All Implemented Interfaces:
  `LocaleResolver`

public class AcceptHeaderLocaleResolver extends AbstractLocaleResolver
`LocaleResolver` implementation that looks for a match between locales in the `Accept-Language` header and a list of configured supported locales.

See `setSupportedLocales(List)` for further details on how supported and requested locales are matched.

Note: This implementation does not support `setLocale(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse, java.util.Locale)` since the `Accept-Language` header can only be changed by changing the client's locale settings.

Since:
  27.02.2003
Author:
  Juergen Hoeller, Rossen Stoyanchev
See Also:
  - `ServletRequest.getLocale()`

## Constructor Summary

Constructors
Constructor
Description
`AcceptHeaderLocaleResolver()`

## Method Summary

Modifier and Type
Method
Description
`List<Locale>`
`getSupportedLocales()`
Get the configured list of supported locales.
`Locale`
`resolveLocale(HttpServletRequest request)`
Resolve the current locale via the given request.
`void`
`setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)`
Set the current locale to the given one.
`void`
`setSupportedLocales(List<Locale> locales)`
Configure the list of supported locales to compare and match against `requested locales`.

### Methods inherited from class org.springframework.web.servlet.i18n.AbstractLocaleResolver

`getDefaultLocale, setDefaultLocale`

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

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

## Constructor Details

### AcceptHeaderLocaleResolver

public AcceptHeaderLocaleResolver()

## Method Details

### setSupportedLocales

public void setSupportedLocales(List<Locale> locales)
Configure the list of supported locales to compare and match against `requested locales`.

In order for a supported locale to be considered a match, it must match on both country and language. If you want to support a language-only match as a fallback, you must configure the language explicitly as a supported locale.

For example, if the supported locales are `["de-DE","en-US"]`, then a request for `"en-GB"` will not match, and neither will a request for `"en"`. If you want to support additional locales for a given language such as `"en"`, then you must add it to the list of supported locales.

If there is no match, then the `defaultLocale` is used, if configured, or otherwise falling back on `ServletRequest.getLocale()`.

Parameters:
  `locales` - the supported locales
Since:
  4.3

### getSupportedLocales

public List<Locale> getSupportedLocales()
Get the configured list of supported locales.

Since:
  4.3

### resolveLocale

public Locale resolveLocale(HttpServletRequest request)
Description copied from interface: `LocaleResolver`
Resolve the current locale via the given request.

Can return a default locale as fallback in any case.

Parameters:
  `request` - the request to resolve the locale for
Returns:
  the current locale (never `null`)

### setLocale

public void setLocale(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable Locale locale)
Description copied from interface: `LocaleResolver`
Set the current locale to the given one.

Parameters:
  `request` - the request to be used for locale modification
  `response` - the response to be used for locale modification
  `locale` - the new locale, or `null` to clear the locale