https://github.com/gunnarpdx/language_list
An Elixir implementation of the language_list ruby gem
https://github.com/gunnarpdx/language_list
elisir-spoken-languages elixir elixir-language-list elixir-languages language-list
Last synced: 18 days ago
JSON representation
An Elixir implementation of the language_list ruby gem
- Host: GitHub
- URL: https://github.com/gunnarpdx/language_list
- Owner: GunnarPDX
- License: mit
- Created: 2021-04-09T02:45:36.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-19T05:55:01.000Z (almost 5 years ago)
- Last Synced: 2024-03-15T06:24:57.099Z (over 2 years ago)
- Topics: elisir-spoken-languages, elixir, elixir-language-list, elixir-languages, language-list
- Language: Elixir
- Homepage:
- Size: 28.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LanguageList
An Elixir implementation of the language_list ruby gem.
This package provides simple access to iso language names and codes.
## Installation
This package can be installed
by adding `language_list` to your list of dependencies in `mix.exs`:
Hex: [https://hex.pm/packages/language_list](https://hex.pm/packages/language_list)
```elixir
def deps do
[
{:language_list, "~> 2.0.0"}
]
end
```
Documentation can be found at [https://hexdocs.pm/language_list](https://hexdocs.pm/language_list).
## Usage:
Standard requests will return a list of maps or strings.
Search requests return the data in a 2-tuple with the standard `:ok` or `:error` status.
Calls made to functions with `!` return only the result or nil.
#### `all_data`
Returns all language data.
```elixir
iex> LanguageList.all_data
[
%{common: false, iso_639_1: "az", iso_639_3: "aze", name: "Azerbaijani"},
%{common: false, iso_639_1: "ba", iso_639_3: "bak", name: "Bashkir"},
...
]
```
#### `all_common_data`
Returns all common data.
```elixir
iex> LanguageList.all_common_data
[
%{common: true, iso_639_1: "af", iso_639_3: "afr", name: "Afrikaans"},
%{common: true, iso_639_1: "ar", iso_639_3: "ara", name: "Arabic"},
...
]
```
#### `languages`
Returns list of all language names.
```elixir
iex> LanguageList.languages
["Afar", "Abkhazian", "Afrikaans", "Akan", "Amharic", "Arabic", ...]
```
#### `common_languages`
Returns list of all common languages.
```elixir
iex> LanguageList.common_languages
["Afrikaans", "Arabic", "Bengali", "Tibetan", "Bulgarian", ...]
```
#### `find(query, key)`
Allows for query of language data by attribute.
Permitted keys: `:name` , `:iso_639_3` , `:iso_639_1`
`LanguageList.find!(query, key)` can be called to return w/out tuple.
```elixir
iex> LanguageList.find("Icelandic", :name)
{:ok, %{common: true, iso_639_1: "is", iso_639_3: "isl", name: "Icelandic"}}
iex> LanguageList.find!("Icelandic", :name)
%{common: true, iso_639_1: "is", iso_639_3: "isl", name: "Icelandic"}
iex> LanguageList.find("pt", :iso_639_1)
{:ok, %{common: true, iso_639_1: "pt", iso_639_3: "por", name: "Portuguese"}}
iex> LanguageList.find("por", :iso_639_3)
{:ok, %{common: true, iso_639_1: "pt", iso_639_3: "por", name: "Portuguese"}}
iex> LanguageList.find("non-existent-language", :name)
{:error, "No matches found"}
iex> LanguageList.find!("non-existent-language", :name)
nil
```
## TODO:
[] add native language names to json file.