Routex.Extension.SimpleLocale.Parser (Routex v1.2.0-rc.0)

View Source

Handles parsing of locale strings and accept-language headers. Uses efficient binary pattern matching and follows RFC 5646 BCP 47 language tag format.

Summary

Functions

Parses an accept-language header into a list of locale entries.

Parses a single locale string into a locale entry.

Functions

extract_locale_parts(value)

@spec extract_locale_parts(String.t()) :: {String.t() | nil, String.t() | nil}

extract_part(value, atom)

@spec extract_part(String.t(), :language | :region) :: String.t() | nil

parse_accept_language(header)

@spec parse_accept_language(String.t() | list()) :: [
  Routex.Extension.SimpleLocale.Types.locale_entry()
]

Parses an accept-language header into a list of locale entries.

Examples

iex> parse_accept_language("en-US,fr-FR;q=0.8")
[
  %{language: "en", region: "US", territory: "US", locale: "en-US", quality: 1.0},
  %{language: "fr", region: "FR", territory: "FR", locale: "fr-FR", quality: 0.8}
]

parse_locale(locale)

Parses a single locale string into a locale entry.

Examples

iex> parse_locale("en-US")
%{language: "en", region: "US", territory: "US", locale: "en-US", quality: 1.0}

iex> parse_locale("fra")
%{language: "fra", region: nil, territory: nil, locale: "fra", quality: 1.0}

iex> parse_locale("")
nil