NAME

Time::Keeper::Natural::Numbers - number words from CLDR's spellout rules

VERSION

Version 0.01

SYNOPSIS

my $nw = Time::Keeper::Natural::Numbers->for('fr');
$nw->read('vingt-et-un');          # 21
$nw->read('vingt et un');          # 21
$nw->ordinal('troisième');         # 3
Time::Keeper::Natural::Numbers->locales;

DESCRIPTION

The words for the whole numbers 0 to 99, and the ordinals 1 to 31, of the locales whose CLDR data has spellout rules: about ninety. They are made once, when the distribution is built, by running CLDR's rules forward (tools/numbercompile), so every form a locale's rules can write is here, its genders and cases among them ("одна", "одного", "одной" are all 1), and nothing that the rules do not write. English adds one hand-written row, "a" and "an" for 1, so "in a week" reads. A locale with no spellout rules reads digits only, in any script, as it always did.

A word is read in lower case, with any run of spaces as one, and with its hyphens or with spaces in their place, so "twenty-one" and "twenty one" are both 21, and French "vingt-et-un" and "vingt et un" both 21. No other spelling is read: "vingt-et-un" in the 1990 spelling is what CLDR writes, and a spelling it does not write is not in the table.

METHODS

for

The number words of a locale, from the nearest locale in its chain that has rules (fr-CA reads fr's), or undef.

read

The whole number a text is, 0 to 99, or undef.

ordinal

The number an ordinal word is, 1 to 31, or undef.

cardinals

The words and their numbers, as a list of pairs.

ordinals

The ordinal words and their numbers.

code

The locale whose rules were read.

locales

The locales that have number words.

chain

The codes tried for a locale, its own first.

dir

Where the words are, one file a locale: beside the module once installed, or the distribution's share/numbers when run from its tree. A locale with no file in its chain has no number words, and finding that out reads nothing.

SEE ALSO

Time::Keeper::Natural, Time::Keeper::Natural::Lexicon.

AUTHOR

LNATION <email@lnation.org>

LICENSE AND COPYRIGHT

This software is Copyright (c) 2026 by LNATION.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)