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 InvalidMeasurementErrorDigit 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.
Recommended product pattern
For multilingual products:
- Accept localized input at form boundary.
- Resolve to canonical unit ids internally.
- Store normalized values in canonical units.
- Format with locale only in final UI or export layer.