Cldr.AcceptLanguage.best_match
You're seeing just the function
best_match
, go back to Cldr.AcceptLanguage module for more information.
Specs
best_match(String.t(), Cldr.backend()) :: {:ok, Cldr.LanguageTag.t()} | {:error, {Cldr.AcceptLanguageError, String.t()}}
Parse an Accept-Language
string and return the best match for
a configured Cldr
locale.
accept_langauge
is a string representing an accept language header
Returns:
{:ok, language_tag}
or{:error, reason}
Examples
iex> Cldr.AcceptLanguage.best_match("da;q=0.1,zh-TW;q=0.3", TestBackend.Cldr)
{:ok,
%Cldr.LanguageTag{
backend: TestBackend.Cldr,
canonical_locale_name: "zh-Hant-TW",
cldr_locale_name: "zh-Hant",
language_subtags: [],
extensions: %{},
gettext_locale_name: nil,
language: "zh",
locale: %{},
private_use: [],
rbnf_locale_name: "zh-Hant",
requested_locale_name: "zh-TW",
script: "Hant",
territory: :TW,
transform: %{},
language_variant: nil
}}
iex(4)> Cldr.AcceptLanguage.best_match("da;q=0.1,zh-TW;q=0.3", TestBackend.Cldr)
{:ok,
%Cldr.LanguageTag{
backend: TestBackend.Cldr,
canonical_locale_name: "zh-Hant-TW",
cldr_locale_name: "zh-Hant",
language_subtags: [],
extensions: %{},
gettext_locale_name: nil,
language: "zh",
locale: %{},
private_use: [],
rbnf_locale_name: "zh-Hant",
requested_locale_name: "zh-TW",
script: "Hant",
territory: :TW,
transform: %{},
language_variant: nil
}}
iex> Cldr.AcceptLanguage.best_match("xx,yy;q=0.3", TestBackend.Cldr)
{:error,
{Cldr.NoMatchingLocale,
"No configured locale could be matched to \"xx,yy;q=0.3\""}}
iex> Cldr.AcceptLanguage.best_match("invalid_tag", TestBackend.Cldr)
{:error, {Cldr.LanguageTag.ParseError,
"Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}}