Releases: elixir-cldr/cldr_units
Cldr Units version 3.5.0-rc.1
Overview
In this release the Cldr.Unit.to_string/{1, 2, 3}
function has been rewritten and the concrete impementation is now in Cldr.Unit.Format
. The primary reasons for rewriting are:
- Improves performance by 20% over the old implementation.
- Supports grammatical case and grammatical gender. These allow for better sentence formation in a localised fashion. Only are few locales have the required data for now (for example,
fr
andde
) however more locales will have data in upcoming CLDR releases.
Note that full testing of grammatical case and grammatical gender variations is not yet complete.
Soft Deprecation
-
The function
Cldr.Unit.to_iolist/{1, 2, 3}
is soft deprecated. It is still available and no deprecation warning is emitted. It will however be removed from the public API in a future release. This function is primarily used to support implementation ofCldr.Unit.to_string/3
-
As of this release, argument checking in
Cldr.Unit.to_iolist/3
is less rigorous in order to avoid the relatively expensive argument normalization process happening twice (once inCldr.Unit.to_string/3
and then again inCldr.Unit.to_iolist/3
).
Bug Fixes
- The new string formatter correctly assembles units with an SI prefix (ie
millimeter
) in languages such as German where the noun is capitalized.
Cldr Units version 3.5.0-rc.0
Bug Fixes
-
Fixes calculating the base unit when the unit is a complex compound unit.
-
Remove double parsing when calling
Cldr.Unit.new/2
and the unit is not inCldr.Unit.known_units/0
-
Ensure
Cldr.Unit.unit_category/1
returns an error tuple if the category is unknown
Enhancements
-
Updated to require ex_cldr version 2.20 which includes CLDR 39 data.
-
Add
Cldr.Unit.known_grammatical_cases/0
-
Add
Cldr.Unit.known_grammatical_genders/0
-
Add
Cldr.Unit.known_measurement_system_names/0
-
Add
Cldr.Unit.invert/1
to invert a "per" unit. This allows for increased compatibility for conversions. For example, "liters per 100 kilometers" is a measure of consumption, as is "miles per gallon". However these two units are not convertible without inverting one of them first since one is "volume per length" and the other is "length per volume". -
Add
Cldr.Unit.conversion_for/2
to return a conversion list used when converting one unit to another. -
Add
Cldr.Unit.grammatical_gender/2
to return the grammatical gender for a given unit and locale -
Add
Cldr.Unit.conversion_for/2
to return a conversion list used when converting one unit to another. -
Add support for grammatical cases for
Cldr.Unit.to_string/2
andCldr.Unit.to_iolist/2
. Not all locales support more than the nominative case. The nominative case is the default. Any configured "Additional Units" in a backend module will need to be modified to put the localisations a map with the key:nominative
. See the readme for more information on migrating additional units. On example is:
defmodule MyApp.Cldr do
use Cldr.Unit.Additional
use Cldr,
locales: ["en", "fr", "de", "bs", "af", "af-NA", "se-SE"],
default_locale: "en",
providers: [Cldr.Number, Cldr.Unit, Cldr.List]
unit_localization(:person, "en", :long,
nominative: %{
one: "{0} person",
other: "{0} people"
},
display_name: "people"
)
end
- Support conversions where one of the base units is the inverted conversion of the other. This allows conversion between, for example,
mile per gallon
andliter per 100 kilometer
. These are both compound units oflength
andvolume
but are inverse representations from each other.
Cldr Units version 3.4.0
Bug Fixes
-
Fix readme example for
MyApp.Cldr.Unit.convert/2
. Thanks to @DamienFF. Closes #16. -
Add missing
<backend>.convert!/2
Enhancements
-
Supports the definition of custom units in
config.exs
. -
Add
Cldr.Unit.display_name/2
-
Add
Cldr.Unit.known_units_by_category/0
-
Add
Cldr.Unit.known_units_for_category/1
-
Add
Cldr.Unit.measurement_system_units/0
-
Add
Cldr.Unit.measurement_system_from_locale/{2, 3}
-
Add
Cldr.Unit.measurement_system_for_territory/1
-
Add
Cldr.Unit.measurement_systems_for_unit/1
-
Improve
Cldr.Unit.IncompatibleUnit
exception error message -
Deprecate
Cldr.Unit.measurement_systems/0
in favour ofCldr.Unit.measurement_systems_by_territory/0
-
Requires
ex_cldr
version~> 2.19
which includes the localised display name of units
Cldr Units version 3.4.0-rc.0
Bug Fixes
-
Fix readme example for
MyApp.Cldr.Unit.convert/2
. Thanks to @DamienFF. Closes #16. -
Add missing
<backend>.convert!/2
Enhancements
-
Supports the definition of custom units in
config.exs
. Units can be defined and operated on however they cannot yet be localised (that functionality will be in place before release). See the examples indev.exs
. -
Add
Cldr.Unit.display_name/2
-
Add
Cldr.Unit.known_units_by_category/0
-
Add
Cldr.Unit.known_units_for_category/1
-
Add
Cldr.Unit.measurement_system_units/0
-
Add
Cldr.Unit.measurement_system_from_locale/{2, 3}
-
Add
Cldr.Unit.measurement_system_for_territory/1
-
Add
Cldr.Unit.measurement_systems_for_unit/1
-
Improve
Cldr.Unit.IncompatibleUnit
exception error message -
Deprecate
Cldr.Unit.measurement_systems/0
in favour ofCldr.Unit.measurement_systems_by_territory/0
-
Requires
ex_cldr
version~> 2.19
which includes the localised display name of units
Cldr Units version 3.3.1
Bug Fixes
- Fix
Cldr.Unit.localize/2
when no options are provided
Cldr Units version 3.3.0
Enhancements
- Update to CLDR38
Cldr Units version 3.3.0-rc.0
Enhancements
- Update to CLDR38
Cldr Units version 3.2.1
Bug Fixes
- Use
Cldr.default_backend!/0
when available (as in later ex_cldr releases) sinceCldr.default_backend/0
is deprecated.
Cldr Units version 3.2.0
Enhancements
- Support string form of unit usage when passed as option
:usage
toCldr.Unit.new/3
. This is required to support improved serialization in ex_cldr_units_sql
Bug Fixes
-
Correct the documentation to reflect the option
:usage
toCldr.Unit.new/3
rather than the incorrect:use
. -
Fix spec for
Cldr.Units.compatible?/2
. Thanks to @LostKobrakai.
Cldr Units version 3.1.2
Bug Fixes
-
Fixes dialyzer warning on
Cldr.Unit.to_string/3
andCldr.Unit.to_string!/3
. Thanks to @maennchen for the report. Closes #15. -
Support
Decimal
numbers inCldr.Unit.to_string/3
andCldr.Unit.to_string!/3
.