Language sources and review policy
This document records the reviewed source basis for the bundled language
registries. The pinned num2words range is a candidate filter for number
spelling; it is not an abbreviation or morphology dependency.
Registry scope
The registry contains the 49 base keys and 14 explicit locale overlays pinned in
tests/data/num2words_language_registry.json. Each new base has a conservative
seed inventory and the reviewed common duration, length, area, volume, mass,
temperature, and speed unit subset. Locale entries inherit their base and add
structured local currency identities in numeric context. Every seed carries a
source ID; scripts/audit_language_data.py verifies that IDs resolve and that
duplicate, alias, custom-boundary, and identity-rule policies are respected.
The development importer is deterministic and offline:
python scripts/import_cldr_language_data.py \
--cldr-root ../cldr-json --cldr-version 48.2.1 \
--languages am ar ... zh --check
python scripts/audit_language_data.py
It reads only the pinned fields used by this package and never runs during import, build, or normal runtime.
The source/review ledger for the newly added bases is intentionally explicit:
Group |
Codes |
Primary language/orthography source |
Unit source |
Review status |
|---|---|---|---|---|
Latin |
|
national orthography/abbreviation guidance; CLDR locale data |
BIPM SI + CLDR |
conservative agent seed; native review pending |
Cyrillic |
|
national orthography and abbreviation guidance |
BIPM SI + CLDR |
conservative agent seed; native review pending |
RTL |
|
national orthography guidance |
BIPM SI + CLDR |
conservative agent seed; native review pending |
Indic |
|
national orthography guidance |
BIPM SI + CLDR |
conservative agent seed; native review pending |
East/Southeast Asian |
|
national orthography guidance |
BIPM SI + CLDR |
conservative agent seed; native review pending |
Specialist |
|
national orthography guidance |
BIPM SI + CLDR |
conservative agent seed; native review pending |
Locale overlays are en_IN, en_NG, es_CO, es_CR, es_GT, es_NI,
es_VE, fr_BE, fr_CH, fr_DZ, pt_BR, zh_CN, zh_HK, and zh_TW.
Czech, English, French, Italian, Portuguese, and Spanish expose reviewed
structured currency identities. Czech recognizes Kč/CZK as
currency-czech-koruna; Portuguese recognizes R$/BRL as
currency-brazilian-real; English, French, Italian, and Spanish reuse the
shared €/EUR, $/USD, and £/GBP identities. These are recognition
metadata only: the API preserves source spans and numeric lexemes but does not
perform currency arithmetic, plural/agreement selection, or number-to-word
realization. French also exposes dotted numeric duration aliases min. and
sec.; a standalone French min. remains the lexical abbreviation for
minimum, while numeric context selects the structured duration-minute
identity. Downstream consumers such as spokenform own semantic grammar and
speech realization.
Unit expansions are canonical lemmas. They intentionally do not realize plural,
case, numeral government, gender, vowel harmony, or apostrophe-attached suffixes.
Turkish unit symbols followed by ' or ’ remain unchanged under the restricted
first-release policy.
Per-language ledger
Codes |
Source ID |
Categories |
Status |
|---|---|---|---|
|
|
guarded reference/title baseline and neutral units |
linguistically-reviewed pending native review |
|
|
preserved mature lexical registry and structured quantities |
legacy-preserved; parity tested |
|
locale overlay modules plus ISO 4217/CLDR |
numeric currency and locale-specific overlay data |
generated-reviewed |
The brief that introduced this registry was reviewed on 2026-08-06. The implementation preserves a source description on each seed category and keeps ambiguous entries guarded or omitted. Native-speaker sign-off remains a human review prerequisite; this agent does not claim that review has occurred.
Known limitations
Russian numeral government and Turkish suffix realization are not performed.
Dotless Dutch day forms, Polish one-letter ambiguities, Russian one-letter forms, and Turkish locale-sensitive casing are not guessed.
The examples for the five added languages are abbreviation-only until their optional speech-number morphology is separately reviewed.