Cldr.AcceptLanguage.parse
You're seeing just the function
parse
, go back to Cldr.AcceptLanguage module for more information.
Specs
parse([{float(), String.t()}, ...] | String.t(), Cldr.backend()) :: {:ok, [ {float(), Cldr.LanguageTag.t()} | {:error, {Cldr.InvalidLanguageTag, String.t()}}, ... ]} | {:error, {Cldr.AcceptLanguageError, String.t()}}
Parses an Accept-Language
header value in its string
or tokenized form to return a tuple of the form
{:ok, [{quality, %Cldr.LanguageTag{}}, ...]}
sorted by quality.
Arguments
accept-language
is any string in the format defined by rfc2616backend
is any module that includesuse Cldr
and therefore is aCldr
backend module
Returns
{:ok, [{quality, language_tag}, ...]}
or{:error, {Cldr.AcceptLanguageError, String.t}}
If at least one valid language tag is found but errors are also
detected on one more more tags, an {ok, list}
tuple is returned
wuth an error tuple for each invalid tag added at the end of the list.
Example
iex> Cldr.AcceptLanguage.parse("da,zh-TW;q=0.3", TestBackend.Cldr)
{:ok,
[
{1.0,
%Cldr.LanguageTag{
backend: TestBackend.Cldr,
canonical_locale_name: "da-Latn-DK",
cldr_locale_name: "da",
language_subtags: [],
extensions: %{},
gettext_locale_name: nil,
language: "da",
locale: %{},
private_use: [],
rbnf_locale_name: "da",
requested_locale_name: "da",
script: "Latn",
territory: :DK,
transform: %{},
language_variant: nil
}},
{0.3,
%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.parse("invalid_tag", TestBackend.Cldr)
{:error,
{Cldr.LanguageTag.ParseError,
"Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}}
iex> Cldr.AcceptLanguage.parse("da,zh-TW;q=0.3,invalid_tag", TestBackend.Cldr)
{:ok,
[
{1.0,
%Cldr.LanguageTag{
backend: TestBackend.Cldr,
canonical_locale_name: "da-Latn-DK",
cldr_locale_name: "da",
language_subtags: [],
extensions: %{},
gettext_locale_name: nil,
language: "da",
locale: %{},
private_use: [],
rbnf_locale_name: "da",
requested_locale_name: "da",
script: "Latn",
territory: :DK,
transform: %{},
language_variant: nil
}},
{0.3,
%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
}},
{:error,
{Cldr.LanguageTag.ParseError,
"Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}}
]}