Skip to content

Locale Capability Manifest โ€‹

This reference is generated from the locale configurations shipped by the package. It is checked in CI, so the documentation and runtime manifest cannot silently drift apart.

136 locales ยท 136 ordinal ยท 100 fraction style ยท 37 cardinal gender ยท 8 ordinal gender ยท 2 formal numeral locales

Programmatic Usage โ€‹

ts
import { getLocaleCapabilities, getLocaleMetadata, isSupportedLocale, LOCALE_MANIFEST } from 'to-words/manifest';

isSupportedLocale('fr-FR'); // true
getLocaleCapabilities('fr-FR')?.decimals.fraction; // true
getLocaleMetadata('hi-IN')?.numbering.grouping; // [3, 2]
getLocaleMetadata('en-US')?.range.largestNamedMagnitude; // exact decimal string
getLocaleMetadata('en-US')?.range.maximumSupported.cardinal; // verified inclusive ceiling
LOCALE_MANIFEST['zh-CN'].capabilities.formal; // true

to-words/manifest is an opt-in entry point containing compact generated metadata. It does not load the locale conversion tables, so importing it does not change the conversion hot path or per-locale bundles.

Locale authors can validate custom configurations without importing the locale registry:

ts
import { assertLocaleConfig, deriveLocaleCapabilities, deriveLocaleMetadata } from 'to-words/locale-contract';

assertLocaleConfig(customLocale.config, 'my-locale');
const capabilities = deriveLocaleCapabilities(customLocale.config);
const metadata = deriveLocaleMetadata(customLocale.config);

Capability Definitions โ€‹

  • Ordinal: the locale declares an ordinal mapping, suffix, or prefix.
  • Gender: the locale declares explicit cardinal or ordinal gender forms. A dash means the option has no locale-specific form.
  • Formal: the locale has an alternate formal/financial configuration.
  • Fraction digits: supported decimal lengths for decimalStyle: 'fraction'. Other lengths fall back to digit-style decimals.
  • Currency decimals: the default currency precision used for rounding and fractional units.

Cardinal, currency, and digit-style decimal conversion are part of every locale contract.

Numbering and Range Definitions โ€‹

  • Base thousand: every configured large unit is a power of 1,000. This structural family includes locales whose words are commonly described as either short scale or long scale.
  • Indian: the configuration contains lakh (10^5) and crore (10^7) magnitudes; grouping proceeds 3 digits, then 2 digits.
  • East Asian: the configuration contains 10^4 and 10^8 magnitudes; grouping proceeds in 4-digit units.
  • Locale-specific: configured large units do not match one of the structural families above. Inspect largeUnitExponents for the exact named powers of ten.
  • Largest named scale: the largest magnitude with an explicit word in the locale configuration.
  • Maximum verified integer: the inclusive default ceiling for strict conversion. Cardinal, ordinal, and currency ceilings are exposed separately in the runtime manifest.

rangeMode: 'strict' is the v7 default and rejects values above the applicable verified ceiling with NumberOutOfRangeError. Use rangeMode: 'compose' to opt into the legacy recursive behavior, which reuses the largest configured scale without claiming that the resulting wording has been independently certified by native speakers.

All Locales โ€‹

LocaleNumbering systemLargest named scaleMaximum verified integerOrdinalGenderFormalFraction digitsCurrency decimals
af-ZABase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
am-ETBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
ar-AEBase thousand10^1510^18 - 1YesCardinalNoโ€”2
ar-DZBase thousand10^1510^18 - 1YesCardinalNoโ€”2
ar-EGBase thousand10^1510^18 - 1YesCardinalNoโ€”2
ar-IQBase thousand10^1510^18 - 1YesCardinalNoโ€”3
ar-LBBase thousand10^1510^18 - 1YesCardinalNoโ€”2
ar-MABase thousand10^1510^18 - 1YesCardinalNoโ€”2
ar-SABase thousand10^1510^18 - 1YesCardinalNoโ€”2
ar-SDBase thousand10^1510^18 - 1YesCardinalNoโ€”2
ar-YEBase thousand10^1510^18 - 1YesCardinalNoโ€”2
as-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
az-AZBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
be-BYBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
bg-BGBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
bn-BDIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
bn-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
ca-ESBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
cs-CZBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
da-DKBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
de-ATBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
de-CHBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
de-DEBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
el-GRBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-AEBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-AUBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-BDIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-CABase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-GBBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-GHBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-HKBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-IEBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-IQBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 63
en-JMBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-KEBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-LKBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-MABase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-MMBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-MUIndian10^6310^65 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-MYBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-NGBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-NPIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-NZBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-OMBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 63
en-PHBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-PKIndian10^6310^65 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-SABase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-SGBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-TTBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-TZBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-UGBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-USBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-ZABase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
en-ZWBase thousand10^6310^66 - 1Yesโ€”No1, 2, 3, 4, 5, 62
es-ARBase thousand10^1510^18 - 1YesCardinal + ordinalNo1, 2, 3, 4, 5, 62
es-CLBase thousand10^1510^18 - 1YesCardinal + ordinalNo1, 2, 3, 4, 5, 62
es-COBase thousand10^1510^18 - 1YesCardinal + ordinalNo1, 2, 3, 4, 5, 62
es-ESBase thousand10^1510^18 - 1YesCardinal + ordinalNo1, 2, 3, 4, 5, 62
es-MXBase thousand10^1510^18 - 1YesCardinal + ordinalNo1, 2, 3, 4, 5, 62
es-PEBase thousand10^1510^18 - 1YesCardinal + ordinalNo1, 2, 3, 4, 5, 62
es-USBase thousand10^1510^18 - 1YesCardinal + ordinalNo1, 2, 3, 4, 5, 62
es-VEBase thousand10^1510^18 - 1YesCardinal + ordinalNo1, 2, 3, 4, 5, 62
et-EEBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
fa-IRBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fi-FIBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
fil-PHBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
fr-BEBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fr-CABase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fr-CHBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fr-CIBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fr-CMBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fr-DZBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fr-FRBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fr-MABase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fr-MGBase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
fr-SABase thousand10^2710^30 - 1Yesโ€”No1, 2, 3, 4, 5, 62
gu-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
ha-NGBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
hbo-ILBase thousand10^1510^18 - 1YesCardinalNoโ€”2
he-ILBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
hi-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
hr-HRBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
hu-HUBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
id-IDBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
ig-NGBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
is-ISBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
it-ITBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
ja-JPEast Asian10^2010^24 - 1Yesโ€”Noโ€”2
jv-IDBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
ka-GEBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
km-KHLocale-specific10^1210^15 - 1Yesโ€”Noโ€”2
kn-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
ko-KREast Asian10^2010^24 - 1Yesโ€”Noโ€”2
lo-LALocale-specific10^1510^18 - 1Yesโ€”Noโ€”2
lt-LTBase thousand10^1510^18 - 1YesCardinalNoโ€”2
lv-LVBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
ml-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
mr-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
ms-MYBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
ms-SGBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
my-MMLocale-specific10^1210^15 - 1Yesโ€”Noโ€”2
nb-NOBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
ne-NPIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
nl-NLBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
nl-SRBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
or-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
pa-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
pl-PLBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
pt-AOBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
pt-BRBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
pt-MZBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
pt-PTBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
ro-ROBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
ru-RUBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
si-LKLocale-specific10^1210^15 - 1Yesโ€”Noโ€”2
sk-SKBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
sl-SIBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
sq-ALBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
sr-RSBase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
sv-SEBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
sw-KEBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
sw-TZBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
ta-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
te-INIndian10^1710^19 - 1Yesโ€”No1, 2, 3, 4, 5, 62
th-THLocale-specific10^1510^18 - 1Yesโ€”Noโ€”2
tr-TRBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
uk-UABase thousand10^1510^18 - 1YesCardinalNo1, 2, 3, 4, 5, 62
ur-PKIndian10^798765432101234Yesโ€”No1, 2, 3, 4, 5, 62
uz-UZBase thousand10^1210^15 - 1Yesโ€”Noโ€”2
vi-VNBase thousand10^1510^18 - 1Yesโ€”No1, 2, 3, 4, 5, 62
yo-NGBase thousand10^1510^18 - 1Yesโ€”Noโ€”2
yue-HKEast Asian10^2010^24 - 1Yesโ€”Noโ€”2
zh-CNEast Asian10^2010^24 - 1Yesโ€”Yesโ€”2
zh-TWEast Asian10^2010^24 - 1Yesโ€”Yesโ€”2
zu-ZABase thousand10^1210^15 - 1Yesโ€”Noโ€”2

Released under the MIT License.