View Source MyApp.Cldr.Locale (Cldr v2.40.1)
Backend module that provides functions to define new locales and display human-readable locale names for presentation purposes.
Summary
Functions
Returns the list of fallback locale names, starting with the provided locale name.
Returns the list of fallback locales, starting with the provided locale name.
Returns the "best fit" locale for a given territory.
Returns a "best fit" locale for a host name.
Returns the script direction for a locale.
Returns the last segment of a host that might be a territory.
Returns the territory from a language tag or locale name.
Returns the time zone from a language tag or locale name.
Functions
@spec fallback_locale_names(Cldr.LanguageTag.t() | Cldr.Locale.locale_reference()) :: {:ok, [Cldr.Locale.locale_name(), ...]} | {:error, {module(), String.t()}}
Returns the list of fallback locale names, starting with the provided locale name.
Fallbacks are a list of locate names which can be used to resolve translation or other localization data if such localised data does not exist for this specific locale..
Arguments
- locale_nameis any locale name returned by- MyApp.Cldr.known_locale_names/0
Returns
- {:ok, list_of_locale_names}or
- {:error, {exception, reason}}
Examples
iex> MyApp.Cldr.Locale.fallback_locale_names(:"fr-CA")
{:ok, [:"fr-CA", :fr, :und]}
# Fallbacks are typically formed by progressively
# stripping variant, territory and script from the
# given locale name. But not always - there are
# certain fallbacks that take a different path.
iex> MyApp.Cldr.Locale.fallback_locale_names(:nb)
{:ok, [:nb, :no, :und]}@spec fallback_locales(Cldr.LanguageTag.t() | Cldr.Locale.locale_reference()) :: {:ok, [Cldr.LanguageTag.t(), ...]} | {:error, {module(), String.t()}}
Returns the list of fallback locales, starting with the provided locale name.
Fallbacks are a list of locate names which can be used to resolve translation or other localization data if such localised data does not exist for this specific locale.
Arguments
- locale_nameis any locale name returned by- MyApp.Cldr.known_locale_names/0
Returns
- {:ok, list_of_locales}or
- {:error, {exception, reason}}
Examples
MyApp.Cldr.Locale.fallback_locales(:"fr-CA")
=> {:ok,
     [#Cldr.LanguageTag<fr-CA [validated]>, #Cldr.LanguageTag<fr [validated]>,
      #Cldr.LanguageTag<und [validated]>]}
# Fallbacks are typically formed by progressively
# stripping variant, territory and script from the
# given locale name. But not always - there are
# certain fallbacks that take a different path.
MyApp.Cldr.Locale.fallback_locales(:nb))
=> {:ok,
     [#Cldr.LanguageTag<nb [validated]>, #Cldr.LanguageTag<no [validated]>,
      #Cldr.LanguageTag<und [validated]>]}@spec locale_for_territory(Cldr.Locale.territory_code()) :: {:ok, Cldr.LanguageTag.t()} | {:error, {module(), String.t()}}
Returns the "best fit" locale for a given territory.
Using the population percentage data from CLDR, the language most commonly spoken in the given territory is used to form a locale name which is then validated against the given backend.
First a territory-specific locale is validated and if that fails, the base language only is validate.
For example, if the territory is AU then then the
language most spoken is "en". First, the locale "en-AU"
is validated and if that fails, "en" is validated.
Arguments
- territoryis any ISO 3166 Alpha-2 territory code that can be validated by- Cldr.validate_territory/1
Returns
- {:ok, language_tag}or
- {:error, {exception, reason}}
Examples
iex> MyApp.Cldr.Locale.locale_for_territory(:AU) Elixir.MyApp.Cldr.validate_locale(:"en-AU")
iex> MyApp.Cldr.Locale.locale_for_territory(:US) Elixir.MyApp.Cldr.validate_locale(:"en-US")
iex> MyApp.Cldr.Locale.locale_for_territory(:ZZ) {:error, {Cldr.UnknownTerritoryError, "The territory :ZZ is unknown"}}
@spec locale_from_host(String.t(), Keyword.t()) :: {:ok, Cldr.LanguageTag.t()} | {:error, {module(), String.t()}}
Returns a "best fit" locale for a host name.
Arguments
- hostis any valid host name
- optionsis a keyword list of options. The default is- [].
Options
- :tldsis a list of territory codes as upper-cased atoms that are to be considered as top-level domains. See- Cldr.Locale.locale_from_host/2for the default list.
Returns
- {:ok, langauge_tag}or
- {:error, {exception, reason}}
Notes
Certain top-level domains have become associated with content underlated to the territory for who the domain is registered. Therefore Google (and perhaps others) do not associate these TLDs as belonging to the territory but rather are considered generic top-level domain names.
Examples
iex> MyApp.Cldr.Locale.locale_from_host "a.b.com.au"
Elixir.MyApp.Cldr.validate_locale(:"en-AU")
iex> MyApp.Cldr.Locale.locale_from_host("a.b.com.tv")
{:error,
 {Cldr.UnknownLocaleError, "No locale was identified for territory \"tv\""}}
iex> MyApp.Cldr.Locale.locale_from_host("a.b.com")
{:error,
 {Cldr.UnknownLocaleError, "No locale was identified for territory \"com\""}}Returns the script direction for a locale.
Arguments
- language_tagis any language tag returned by- Cldr.Locale.new/2or any- locale_namereturned by- Cldr.known_locale_names/1.
Returns
- The script direction which is either :ltr(for left-to-right scripts) or:rtl(for right-to-left scripts).
Examples
iex> MyApp.Cldr.Locale.script_direction_from_locale "en-US"
:ltr
iex> MyApp.Cldr.Locale.script_direction_from_locale :ar
:rtl@spec territory_from_host(String.t()) :: {:ok, Cldr.Locale.territory_code()} | {:error, {module(), String.t()}}
Returns the last segment of a host that might be a territory.
Arguments
- hostis any valid host name
Returns
- {:ok, territory}or
- {:error, {exception, reason}}
Examples
iex> Cldr.Locale.territory_from_host("a.b.com.au")
{:ok, :AU}
iex> Cldr.Locale.territory_from_host("a.b.com")
{:error,
 {Cldr.UnknownLocaleError, "No locale was identified for territory \"com\""}}@spec territory_from_locale(Cldr.LanguageTag.t() | Cldr.Locale.locale_name()) :: Cldr.Locale.territory_code() | {:error, {module(), String.t()}}
Returns the territory from a language tag or locale name.
Arguments
- localeis any language tag returned by- MyApp.Cldr.Locale.new/1or a locale name in the list returned by- MyApp.Cldr.known_locale_names/0
Returns
- A territory code as an atom
Examples
iex> MyApp.Cldr.Locale.territory_from_locale "en-US"
:US
iex> MyApp.Cldr.Locale.territory_from_locale "en-US-u-rg-GBzzzz"
:GB@spec timezone_from_locale(Cldr.LanguageTag.t() | Cldr.Locale.locale_name()) :: String.t() | {:error, {module(), String.t()}}
Returns the time zone from a language tag or locale name.
Arguments
- localeis any language tag returned by- MyApp.Cldr.Locale.new/1or a locale name in the list returned by- MyApp.Cldr.known_locale_names/0
Returns
- A time zone ID as a string or 
- :errorif no time zone can be determined
Examples
iex> MyApp.Cldr.Locale.timezone_from_locale "en-US-u-tz-ausyd"
"Australia/Sydney"