selectPreferredLanguage

Signature

def selectPreferredLanguage(first: Language, more: Language*): Directive1[Language]

Description

Inspects the request’s Accept-Language header and determines, which of a given set of language alternatives is preferred by the client according to content negotiation rules defined by http://tools.ietf.org/html/rfc7231#section-5.3.5.

If there are several best language alternatives that the client has equal preference for (even if this preference is zero!) the order of the arguments is used as a tie breaker (first one wins).

Example

val request = Get() ~> `Accept-Language`(
  Language("en-US"),
  Language("en") withQValue 0.7f,
  LanguageRange.`*` withQValue 0.1f,
  Language("de") withQValue 0.5f)

request ~> {
  selectPreferredLanguage("en", "en-US") { lang =>
    complete(lang.toString)
  }
} ~> check { responseAs[String] shouldEqual "en-US" }

request ~> {
  selectPreferredLanguage("de-DE", "hu") { lang =>
    complete(lang.toString)
  }
} ~> check { responseAs[String] shouldEqual "de-DE" }
The source code for this page can be found here.