Skip to content

Releases: elixir-cldr/cldr_units

Cldr Units version 3.5.0-rc.1

21 Mar 02:30
Compare
Choose a tag to compare
Pre-release

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:

  1. Improves performance by 20% over the old implementation.
  2. 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 and de) 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 of Cldr.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 in Cldr.Unit.to_string/3 and then again in Cldr.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

19 Mar 03:54
Compare
Choose a tag to compare
Pre-release

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 in Cldr.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 and Cldr.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 and liter per 100 kilometer. These are both compound units of length and volume but are inverse representations from each other.

Cldr Units version 3.4.0

09 Feb 22:26
Compare
Choose a tag to compare

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 of Cldr.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

08 Feb 22:40
Compare
Choose a tag to compare
Pre-release

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 in dev.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 of Cldr.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

03 Nov 05:54
Compare
Choose a tag to compare

Bug Fixes

  • Fix Cldr.Unit.localize/2 when no options are provided

Cldr Units version 3.3.0

01 Nov 00:29
Compare
Choose a tag to compare

Enhancements

Cldr Units version 3.3.0-rc.0

27 Oct 01:29
Compare
Choose a tag to compare
Pre-release

Enhancements

Cldr Units version 3.2.1

26 Sep 07:03
Compare
Choose a tag to compare

Bug Fixes

  • Use Cldr.default_backend!/0 when available (as in later ex_cldr releases) since Cldr.default_backend/0 is deprecated.

Cldr Units version 3.2.0

05 Sep 13:20
Compare
Choose a tag to compare

Enhancements

  • Support string form of unit usage when passed as option :usage to Cldr.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 to Cldr.Unit.new/3 rather than the incorrect :use.

  • Fix spec for Cldr.Units.compatible?/2. Thanks to @LostKobrakai.

Cldr Units version 3.1.2

29 Aug 02:28
Compare
Choose a tag to compare

Bug Fixes

  • Fixes dialyzer warning on Cldr.Unit.to_string/3 and Cldr.Unit.to_string!/3. Thanks to @maennchen for the report. Closes #15.

  • Support Decimal numbers in Cldr.Unit.to_string/3 and Cldr.Unit.to_string!/3.