BeamLabCountries.Languages (beamlab_countries v1.0.6)
View SourceModule for looking up language names from ISO 639-1 codes and regional locales.
This module provides two levels of language data:
- Base Languages - ISO 639-1 codes (e.g., "en", "es", "de") with 184 languages
- 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()
#=> 85Country-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
Returns all languages as Language structs.
Examples
iex> languages = BeamLabCountries.Languages.all()
iex> length(languages)
184
iex> %BeamLabCountries.Language{} = hd(languages)
Returns all language codes.
Examples
iex> "en" in BeamLabCountries.Languages.all_codes()
true
Returns all locale codes.
Examples
iex> "en-US" in BeamLabCountries.Languages.all_locale_codes()
true
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)
Returns the count of supported base languages.
Examples
iex> BeamLabCountries.Languages.count()
184
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
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
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
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
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
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"
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")
"ζ₯ζ¬θͺ (γ«γ»γγ)"
Returns the count of supported locales.
Examples
iex> BeamLabCountries.Languages.locale_count()
85
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
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}
Checks if a base language code is valid.
Examples
iex> BeamLabCountries.Languages.valid?("en")
true
iex> BeamLabCountries.Languages.valid?("invalid")
false
Checks if a locale code is valid.
Examples
iex> BeamLabCountries.Languages.valid_locale?("en-US")
true
iex> BeamLabCountries.Languages.valid_locale?("invalid")
false