You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Options::region now changes German readings: DeAt (Austria) spells
and recognises January as "Jänner"/"Jän." instead of "Januar"/"Jan."
(Duden, Österreichisches Wörterbuch), consistently across the Date
reading and the abbreviation expansion; DeCh (Switzerland) has no "ß"
(Bundeskanzlei "Weisungen zur Rechtschreibung") — every generated
spoken form uses "ss" instead ("dreißig" → "dreissig"). Previously
these regions were accepted but read identically to DeDe.
Fixed
README: the --lexicon example produced English, not the documented
German output, after the 0.1.2 default---lang change; now passes --lang de explicitly.
Install verbalize-cli 0.1.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/relu/verbalize/releases/download/v0.1.5/verbalize-cli-installer.sh | sh
Units: German dem is the article, not d + em (deci-em); 2007 dem
was "zweitausendsieben Deziem". German in is a preposition, not the
inch symbol; 5 in der Woche was "fünf Zoll der Woche". Both are denied
after a bare number. Found by the corpus audit over the ECDC medical
sample. de.
Units: cubic centimetre reads as itself, not as an SI-prefix split of a
shorter symbol — cc (en), ccm (de), cc/ccm (ro) were
"centicenturies"/"Zentizentimeter"/"centicentimetri". Found by the new
corpus audit (verbalize audit) over ~500k sentences.
Units: Romanian din is a preposition, not d + in (deci-inch); 1 din 10 was "unu deciinch zece". English my is not m + y
(milli-year). Both are now bare-token denials. en/ro.
Units: the "a written-out unit name wins over an SI-prefix split" rule is
now fed by every name a language declares — CLDR long forms, long_name,
and the extra table's names — instead of only CLDR long patterns, and a
test fails on any name that would still be split. The extra table's names
also carry their gender now: 1 Kiloeinheit is "eine Kiloeinheit", not
"eins Kiloeinheit". de/en/ro.
Install verbalize-cli 0.1.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/relu/verbalize/releases/download/v0.1.4/verbalize-cli-installer.sh | sh
Units: a written-out unit name after a number is no longer read as an
SI prefix glued to a shorter symbol. German 29 Grad was
"neunundzwanzig Gigaradiant" (G + rad), now "neunundzwanzig Grad". de/en/ro.
Install verbalize-cli 0.1.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/relu/verbalize/releases/download/v0.1.3/verbalize-cli-installer.sh | sh
Range: a unit right after a range (5-10 Min., 1-2 kg) is now
claimed as part of the range instead of Measure claiming only the
second number and stranding the first as a bare cardinal with the
dash left unread (5-10 Min. was "fünf-zehn Minuten", now "fünf bis
zehn Minuten"). de/en/ro.
Changed
CLI: the default --lang is now en (was de).
Install verbalize-cli 0.1.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/relu/verbalize/releases/download/v0.1.2/verbalize-cli-installer.sh | sh
Money: an ISO 4217 currency code before the amount (EUR 22 000,
invoice/statement style) is now recognized; previously only a bare
symbol (€) worked as a prefix, so the code was left as stray text
and the amount read as a plain cardinal. de/en/ro.
Install verbalize-cli 0.1.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/relu/verbalize/releases/download/v0.1.1/verbalize-cli-installer.sh | sh
Normalizer (normalize, annotate) with Options (region,
abbreviation expansion, caller lexicon) and the spell module
(cardinal, ordinal, year, digits) — design §5.
CLDR/ICU rule-based number formatting (RBNF) interpreter, verified
against ICU4C over every public spellout ruleset of the vendored locales
(tools/icu-diff, 0 mismatches in 546,208 tuples).
German (de): every semiotic class of design §7.2 and §7.6 with the
§7.3 case/gender agreement — cardinal, year, ordinal, decimal, money,
percent, degrees, measure, time, time range, date, range, score,
telephone, long digit runs, abbreviations, Unicode and slash fractions,
clinical Roman numerals, scientific notation, powers, chemical formulae,
math expressions, ratios/titers/blood pressure, dose schemes,
repetition, angles/coordinates, paragraph signs; docs/rules/de.md.
Dotted number class (Token::Dotted): section and version numbers
(2.3, 3.10, 1.2.7) read group by group with "Punkt"/"point"/
"punct" between the groups (3.10 → "drei Punkt zehn"). Grouped
cardinals (1.000), decimals (2.3 in English) and dates are
unaffected.
Token::class() returns the semiotic class name, used for the CLI's annotate column and JSON field.
Digital units: KB, Mbit, Gbit, kbit, Tbit, bit/Bit, byte/Byte aliases in all three languages and the bps spellings
(100 Mbps → "einhundert Megabit pro Sekunde"); GB, MB, TB, kB
already came from CLDR.
Time zones: a zone name after a time stays as written (14:30 CET, 2:30 PM EST; fixtures), and a UTC/GMT offset reads as an expression
(12:00 UTC+2 → "zwölf Uhr UTC plus zwei"; MathItem::Word).
Digit groups (Token::DigitGroups): a 16-digit card number
(4111 1111 1111 1111, all languages) and a US SSN (123-45-6789, en)
read digit by digit with a pause between groups.
Scale words with money and counts (Token::Scale, Money::scale, Token::Scaled): 2,5 Mrd. € → "zwei Komma fünf Milliarden Euro", $2.5 billion → "two point five billion dollars", 3 mil. lei → "trei
milioane de lei", 1,2 Mio. Einwohner → "eins Komma zwei Millionen
Einwohner".
Electronic class (Token::Electronic, design §7.2, highest priority):
emails, scheme:// URLs, www. and bare domains with a known TLD, IPv4
addresses and @handles read symbol by symbol with per-language names
(@ at, . Punkt/dot/punct, / Schrägstrich/slash/bară, …), letters
as written, digits one by one; electronic.tsv fixtures per language.
Slash fractions with denominators 13–99 (1/13 → "ein Dreizehntel", 31/32 → "thirty-one thirty-seconds", 3/20 → "trei douăzecimi"); en 1/4th with the ordinal suffix.
English: YYYY/M/D dates, H:MM:SS as counted hours, minutes and
seconds, $.01 amounts, email addresses with a path. German: a scale
word before a unit (2 Millionen km/h → "zwei Millionen Kilometer pro
Stunde"), also lower-case. Found by the second-opinion oracle run.
ISO year-month (2003-03) reads as a Date ("März zweitausenddrei",
"March two thousand three", "martie două mii trei"); Token::Date::day
is Option<u8>.
English (en) with en-US/en-GB date order (§7.4); docs/rules/en.md.
Romanian (ro) with gender agreement and the "de" construction (§7.5); docs/rules/ro.md.
Vendored CLDR 48.2.1 tables generated by cargo xtask gen (Unicode
License v3, see NOTICE); cargo xtask check-data guards staleness.
verbalize CLI: normalize, annotate (--json), survey; prebuilt
binaries for Linux, macOS and Windows with shell/PowerShell installers
on every GitHub release (cargo-dist).
Golden fixtures per class and language (verbalize/tests/fixtures/),
idempotence and no-digits-in-output property tests, a criterion bench,
and tools/oracles/ (text-processing-rs, num2words, PyICU, NeMo) as
second-opinion review aids.
Install verbalize-cli 0.1.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/relu/verbalize/releases/download/v0.1.0/verbalize-cli-installer.sh | sh