Unit

Localization

Parse Bangla digits and unit names, then localize only when caller opts in.

Localization

Localization is optional. Unit does not localize output by default.

Default formatting:

formatMeasurement(12.5, "kg")
// "12.5 kg"

Localized digits happen from locale. Localized unit names/symbols need explicit opt-in.

Unit supports Bangla unit names, symbols, aliases, and digits when you need them.

import { formatMeasurement, parseMeasurement, resolveUnit } from "@coreify/unit"

resolveUnit("কেজি") // "kg"
resolveUnit("বর্গফুট") // "sq_ft"

parseMeasurement("১২.৫০ কেজি")
// { value: 12.5, unit: "kg", rawUnit: "কেজি", decimalPlaces: 2 }

formatMeasurement(12.5, "kg", {
  locale: "bn-BD",
  unitDisplay: "label",
  maximumFractionDigits: 1,
})
// "১২.৫ kilogram"

formatMeasurement(12.5, "kg", {
  locale: "bn-BD",
  unitDisplay: "label",
  localizeUnits: true,
  maximumFractionDigits: 1,
})
// "১২.৫ কিলোগ্রাম"

Input behavior

Important split:

  • parsing can accept localized aliases when input contains them
  • formatting keeps canonical units until app opts into localizeUnits

That keeps storage and domain logic predictable.

Decimal limits

Use maxDecimalPlaces when input must obey fixed precision.

parseMeasurement("12.34 kg", { maxDecimalPlaces: 2 }) // ok
parseMeasurement("12.345 kg", { maxDecimalPlaces: 2 }) // throws InvalidMeasurementError

Digit style

formatMeasurement(12.5, "kg", {
  locale: "bn-BD",
  digitStyle: "latin",
})
// "12.5 kg"

formatMeasurement(12.5, "kg", {
  locale: "bn-BD",
  digitStyle: "latin",
  unitDisplay: "label",
  localizeUnits: true,
})
// "12.5 কিলোগ্রাম"

digitStyle controls digits only. localizeUnits controls unit labels and symbols.

For multilingual products:

  1. Accept localized input at form boundary.
  2. Resolve to canonical unit ids internally.
  3. Store normalized values in canonical units.
  4. Format with locale only in final UI or export layer.

On this page