Cldr.Unit.Preference.preferred_units

You're seeing just the function preferred_units, go back to Cldr.Unit.Preference module for more information.
Link to this function

preferred_units(unit, backend, options \\ [])

View Source

Returns a list of the preferred units for a given unit, locale, territory and use case.

The units used to represent length, volume and so on depend on a given territory, measurement system and usage.

For example, in the US, people height is most commonly referred to in inches, or informally as feet and inches. In most of the rest of the world it is centimeters.

Arguments

  • unit is any unit returned by Cldr.Unit.new/2.

  • backend is any Cldr backend module. That is, any module that includes use Cldr. The default is Cldr.default_backend!/0

  • options is a keyword list of options or a t:Cldr.Unit.Conversion.Options struct. The default is [].

Options

  • :usage is the unit usage. for example ;person for a unit of type :length. The available usage for a given unit category can be seen with Cldr.Config.preferred_units/0. The default is nil.

  • :scope is either :small or nil. In some usage, the units used are different when the unit size is small. It is up to the developer to determine when scope: :small is appropriate.

  • :alt is either :informal or nil. Like :scope, the units in use depend on whether they are being used in a formal or informal context.

  • :locale is any locale returned by Cldr.validate_locale/2

Returns

  • {:ok, unit_list} or

  • {:error, {exception, reason}}

Examples

iex> meter = Cldr.Unit.new!(:meter, 1)
iex> Cldr.Unit.Preference.preferred_units meter, MyApp.Cldr, locale: "en-US", usage: :person
{:ok, [:inch], []}
iex> Cldr.Unit.Preference.preferred_units meter, MyApp.Cldr, locale: "en-AU", usage: :person
{:ok, [:centimeter], []}
iex> Cldr.Unit.Preference.preferred_units meter, MyApp.Cldr, locale: "en-US", usage: :road
{:ok, [:foot], [round_nearest: 1]}
iex> Cldr.Unit.Preference.preferred_units meter, MyApp.Cldr, locale: "en-AU", usage: :road
{:ok, [:meter], [round_nearest: 1]}

Notes

One common pattern is to convert a given unit into the unit appropriate for a given local and usage. This can be accomplished with a combination of Cldr.Unit.Preference.preferred_units/3 and Cldr.Unit.decompose/2. For example:

iex> meter = Cldr.Unit.new!(:meter, 1)
iex> preferred_units = Cldr.Unit.Preference.preferred_units(meter,
...>   MyApp.Cldr, locale: "en-US", usage: :person)
iex> with {:ok, preferred_units, _} <- preferred_units do
...>   Cldr.Unit.decompose(meter, preferred_units)
...> end
[Cldr.Unit.new!(:inch, Ratio.new(216172782113783808, 5490788665690109))]
Link to this function

preferred_units(category, usage, region, value)

View Source