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:
  • 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