All notable changes to this project will be documented in this file.
This project follows Keep a Changelog and adheres to Semantic Versioning.
[0.3.0] - 2026-07-18
Added
Intl.NumberFormat.format/2supportsnotation: :scientificandnotation: :engineering.Intl.NumberFormat.format/2supports:currency_display(:symbol,:narrow_symbol,:code,:name) and:currency_sign(:standard,:accounting).Intl.NumberFormat.format/2supports:use_grouping(:always,:auto,:min2,true,false), mapped to Localize:minimum_grouping_digits.Intl.NumberFormat.format/2supports:minimum_significant_digits,:maximum_significant_digits,:numbering_system, and:rounding_increment.Intl.NumberFormat.format/2supports:sign_display(:auto,:always,:except_zero,:negative,:never) mirroring the JSsignDisplayoption.:numbering_systemaccepts any valid CLDR numbering system for any locale, including algorithmic systems, and-u-nu-locale extensions are honoured.Intl.NumberFormat.format_range/3supports the:currencyand:percentstyles in addition to:decimal.
Changed
Localize 1.0.0-rc.0 or later is required. Compact notation now applies the ECMA-402 default precision of at most two significant digits ("1.2K" for 1234), matching JS.
Negative currency amounts render the sign before the symbol ("-$1.00", previously "$-1.00"), matching JS
Intl.NumberFormat.Intl.DurationFormattranslates its:styleoption to the Localize:formatoption, following the Localize 0.43 rename.
Fixed
Intl.NumberFormat.format/2returns{:error, %ArgumentError{}}for invalid:style,:notation, or:compact_displayvalues instead of raisingCaseClauseError.
[0.2.0] - 2025-05-12
Bug Fixes
- Relax the dependency requirement for
localizeto be "~> 0.31 or ~> 1.0".
[0.1.0] - 2025-04-16
Highlights
Initial release of Intl, an Elixir interface modelled on the JavaScript Intl API.
This library provides a familiar API for developers who know JS Intl, adapted to idiomatic Elixir conventions. It delegates to the Localize library for all locale-aware formatting and data access.
Supported modules:
Intl.NumberFormat— locale-aware number, currency, percent, and unit formatting.Intl.DateTimeFormat— locale-aware date and time formatting with range support.Intl.ListFormat— list joining with conjunctions, disjunctions, or unit separators.Intl.DisplayNames— localized names for regions, languages, currencies, scripts, calendars, and date-time fields.Intl.RelativeTimeFormat— relative time strings ("3 days ago", "in 2 hours").Intl.PluralRules— CLDR plural category selection (cardinal and ordinal).Intl.Collator— locale-aware string comparison and sorting via the Unicode Collation Algorithm.Intl.DurationFormat— locale-aware duration formatting.Intl.Segmenter— text segmentation into graphemes (built-in), words, and sentences (via optionalunicode_stringdependency).
See the README for usage examples and the compatibility matrix for a detailed comparison with the JS Intl API.