BeamLabCountries.Languages (beamlab_countries v1.0.6)

View Source

Module for looking up language names from ISO 639-1 codes and regional locales.

This module provides two levels of language data:

  1. Base Languages - ISO 639-1 codes (e.g., "en", "es", "de") with 184 languages
  2. Locales - Regional variants (e.g., "en-US", "es-ES", "pt-BR") combining language and country

Base Language Examples

iex> BeamLabCountries.Languages.get_name("en")
"English"

iex> BeamLabCountries.Languages.get("de")
%BeamLabCountries.Language{code: "de", name: "German", native_name: "Deutsch", family: "Indo-European"}

Locale Examples

locale = BeamLabCountries.Languages.get_locale("en-US")
locale.name
#=> "English (United States)"

BeamLabCountries.Languages.all_locales() |> length()
#=> 85

Country-Language Associations

BeamLabCountries.Languages.country_names_for_language("en")
#=> ["United States of America", "United Kingdom", ...]

Summary

Functions

Returns all languages as Language structs.

Returns all language codes.

Returns all locale codes.

Returns all locales as Locale structs, sorted by name.

Returns the count of supported base languages.

Returns all countries where a language is spoken.

Returns country names where a language is spoken.

Returns flags for countries where a language is spoken.

Returns full language info as a Language struct for a language code.

Returns a Locale struct for the given locale code.

Returns the English name for a language code.

Returns the native name for a language code.

Returns the count of supported locales.

Returns all locales for a given base language code.

Parses a locale code into its base language code and region code.

Checks if a base language code is valid.

Checks if a locale code is valid.

Functions

all()

Returns all languages as Language structs.

Examples

iex> languages = BeamLabCountries.Languages.all()
iex> length(languages)
184
iex> %BeamLabCountries.Language{} = hd(languages)

all_codes()

Returns all language codes.

Examples

iex> "en" in BeamLabCountries.Languages.all_codes()
true

all_locale_codes()

Returns all locale codes.

Examples

iex> "en-US" in BeamLabCountries.Languages.all_locale_codes()
true

all_locales()

Returns all locales as Locale structs, sorted by name.

Examples

iex> locales = BeamLabCountries.Languages.all_locales()
iex> length(locales) > 0
true
iex> %BeamLabCountries.Locale{} = hd(locales)

count()

Returns the count of supported base languages.

Examples

iex> BeamLabCountries.Languages.count()
184

countries_for_language(lang_code)

Returns all countries where a language is spoken.

Uses the languages_spoken field from Country data.

Examples

iex> countries = BeamLabCountries.Languages.countries_for_language("en")
iex> length(countries) > 50
true
iex> "United States of America" in Enum.map(countries, & &1.name)
true

country_names_for_language(lang_code)

Returns country names where a language is spoken.

Examples

iex> names = BeamLabCountries.Languages.country_names_for_language("en")
iex> "United States of America" in names
true
iex> "United Kingdom of Great Britain and Northern Ireland" in names
true

flags_for_language(lang_code)

Returns flags for countries where a language is spoken.

Examples

iex> flags = BeamLabCountries.Languages.flags_for_language("en")
iex> "πŸ‡ΊπŸ‡Έ" in flags
true
iex> "πŸ‡¬πŸ‡§" in flags
true

get(code)

Returns full language info as a Language struct for a language code.

Examples

iex> BeamLabCountries.Languages.get("en")
%BeamLabCountries.Language{code: "en", name: "English", native_name: "English", family: "Indo-European"}

iex> BeamLabCountries.Languages.get("invalid")
nil

get_locale(code)

Returns a Locale struct for the given locale code.

Locale codes can be either:

  • Full locale codes like "en-US", "es-ES", "pt-BR"
  • Base language codes like "ja", "ko", "ar" (for languages without regional variants in the data)

The flag and country_name are derived from the Country data based on the region code.

Examples

iex> locale = BeamLabCountries.Languages.get_locale("en-US")
iex> locale.code
"en-US"
iex> locale.name
"English (United States)"
iex> locale.flag
"πŸ‡ΊπŸ‡Έ"

iex> BeamLabCountries.Languages.get_locale("invalid")
nil

get_name(code)

Returns the English name for a language code.

Examples

iex> BeamLabCountries.Languages.get_name("en")
"English"

iex> BeamLabCountries.Languages.get_name("de")
"German"

iex> BeamLabCountries.Languages.get_name("ja")
"Japanese"

get_native_name(code)

Returns the native name for a language code.

Examples

iex> BeamLabCountries.Languages.get_native_name("en")
"English"

iex> BeamLabCountries.Languages.get_native_name("de")
"Deutsch"

iex> BeamLabCountries.Languages.get_native_name("ja")
"ζ—₯本θͺž (にほんご)"

locale_count()

Returns the count of supported locales.

Examples

iex> BeamLabCountries.Languages.locale_count()
85

locales_for_language(base_code)

Returns all locales for a given base language code.

Examples

iex> locales = BeamLabCountries.Languages.locales_for_language("en")
iex> Enum.map(locales, & &1.code)
["en-AU", "en-CA", "en-GB", "en-US"]

iex> locales = BeamLabCountries.Languages.locales_for_language("es")
iex> length(locales)
4

parse_locale(code)

Parses a locale code into its base language code and region code.

Examples

iex> BeamLabCountries.Languages.parse_locale("en-US")
{"en", "US"}

iex> BeamLabCountries.Languages.parse_locale("pt-BR")
{"pt", "BR"}

iex> BeamLabCountries.Languages.parse_locale("ja")
{"ja", nil}

valid?(code)

Checks if a base language code is valid.

Examples

iex> BeamLabCountries.Languages.valid?("en")
true

iex> BeamLabCountries.Languages.valid?("invalid")
false

valid_locale?(code)

Checks if a locale code is valid.

Examples

iex> BeamLabCountries.Languages.valid_locale?("en-US")
true

iex> BeamLabCountries.Languages.valid_locale?("invalid")
false