Provides language name localization functions built on the Unicode CLDR repository.
Language display names are loaded on demand from the locale data provider. Each locale provides localized names for hundreds of language codes in one or more forms.
Name alternatives
CLDR records several names per language, selected with the :prefer
option (:style is accepted as an older spelling):
:standard— the full display name (default).:short— a shorter form when available (e.g., "Azeri" instead of "Azerbaijani"). Falls back to:standardwhen unavailable.:long— a longer form when available (e.g., "Mandarin Chinese" instead of "Chinese"). Falls back to:standardwhen unavailable.:menu— a menu-friendly form with the language family first, so related languages sort together (e.g., "Chinese, Mandarin" instead of "Mandarin Chinese"). Where CLDR gives the family and the qualifier separately rather than as one string, they are composed:"ku"is "Kurdish (Kurmanji)". Falls back to:standardwhen unavailable.:variant— an alternative variant name (e.g., "Pushto" instead of "Pashto"). Falls back to:standardwhen unavailable.
Summary
Functions
Returns the localized display name for a language code.
Same as display_name/2 but raises on error.
Returns a map of language codes to their localized names in a locale.
Returns a sorted list of language codes that have localized names in a locale.
Functions
@spec display_name(String.t() | Localize.LanguageTag.t(), Keyword.t()) :: {:ok, String.t()} | {:error, Exception.t()}
Returns the localized display name for a language code.
Arguments
languageis a language code string (e.g.,"de","en-GB") or aLocalize.LanguageTag.t/0.optionsis a keyword list of options.
Options
:localeis a locale identifier. The default isLocalize.get_locale().:preferis one of:standard,:short,:long,:menu, or:variant. The default is:standard. If the requested name is not available for a language, falls back to:standard.:styleis accepted as an older spelling of this option.:fallbackis a boolean. Whentrueand the language is not found in the specified locale, falls back to the default locale. The default isfalse.
Returns
{:ok, name}wherenameis the localized language name.{:error, exception}if the language code is not found in the locale.
Examples
iex> Localize.Language.display_name("de")
{:ok, "German"}
iex> Localize.Language.display_name("en-GB", prefer: :short)
{:ok, "UK English"}
iex> Localize.Language.display_name("en", locale: :de)
{:ok, "Englisch"}
iex> Localize.Language.display_name("pt-BR")
{:ok, "Brazilian Portuguese"}
iex> Localize.Language.display_name("ar-SA")
{:ok, "Arabic"}
iex> Localize.Language.display_name("ja")
{:ok, "Japanese"}A bare language keeps its own name; an explicit region resolves to the region-specific name where CLDR defines one (per TR35 the display lookup canonicalizes but does not add likely subtags):
iex> Localize.Language.display_name("en")
{:ok, "English"}
iex> Localize.Language.display_name("en-US")
{:ok, "American English"}
@spec display_name!(String.t() | Localize.LanguageTag.t(), Keyword.t()) :: String.t()
Same as display_name/2 but raises on error.
Arguments
languageis a language code string (e.g.,"de","en-GB") or aLocalize.LanguageTag.t/0.optionsis a keyword list of options.
Options
- See
display_name/2for the supported options.
Returns
The localized language name as a string.
Raises an exception if the language code is not found in the locale.
Examples
iex> Localize.Language.display_name!("de")
"German"
iex> Localize.Language.display_name!("en-GB", prefer: :short)
"UK English"
@spec language_names_for(Keyword.t()) :: {:ok, %{required(String.t()) => map()}} | {:error, Exception.t()}
Returns a map of language codes to their localized names in a locale.
Arguments
optionsis a keyword list of options.
Options
:localeis a locale identifier. The default isLocalize.get_locale().
Returns
{:ok, languages_map}wherelanguages_mapis a map of%{language_code => %{standard: name, ...}}.{:error, exception}if the locale data cannot be loaded.
Examples
iex> {:ok, languages} = Localize.Language.language_names_for()
iex> languages["de"]
%{standard: "German"}
iex> {:ok, languages} = Localize.Language.language_names_for(locale: :de)
iex> languages["en"]
%{standard: "Englisch"}
@spec languages_for(Keyword.t()) :: {:ok, [String.t()]} | {:error, Exception.t()}
Returns a sorted list of language codes that have localized names in a locale.
Arguments
optionsis a keyword list of options.
Options
:localeis a locale identifier. The default isLocalize.get_locale().
Returns
{:ok, codes}wherecodesis a sorted list of language code strings.{:error, exception}if the locale data cannot be loaded.
Examples
iex> {:ok, codes} = Localize.Language.languages_for()
iex> "en" in codes
true
iex> {:ok, codes} = Localize.Language.languages_for(locale: :de)
iex> "en" in codes
true