Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2026-05-07
Initial release.
Added
BeamlabLanguages.Languagestruct with six fields:code,name,native_name,direction,has_gender,genders.- Public API on
BeamlabLanguages(10 functions, all with@specand doctests):get/1— fetch aLanguagestruct by code, ornillist/0— every known language, sorted by codelist_codes/0— every known 2-letter base code, sortedhas_gender?/1— predicate,falsefor unknown /nilgenders/1— gender list,[]for unknown / non-gendered languagesdirection/1—:ltror:rtl,:ltrfor unknownname/1— canonical English name, ornilnative_name/1— endonym, ornilnormalize/1— collapse BCP 47 / sloppy casing to a 2-letter baseknown?/1— sugar overget/1
- BCP 47 normalization runs internally on every code-taking function —
"en-US","FR"," fr "all just work. Underscore separator ("en_US") is also accepted, and"nb"/"nn"(Bokmål / Nynorsk, as emitted by POSIX locales and browsers) collapse to"no". - 54 curated languages in
priv/data/languages.json, covering the top-spoken languages plus all CEFR / JLPT / HSK targets. - Compile-time data loading — no runtime file I/O, no GenServer, no ETS, zero runtime dependencies.