byjg / wordnumber
Convert numeric values into their word representations in multiple languages.
6.0.0
2025-11-22 04:48 UTC
Requires
- php: >=8.3 <8.6
Requires (Dev)
- phpunit/phpunit: ^10.5|^11.5
- vimeo/psalm: ^5.9|^6.13
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
| sidebar_key | wordnumber | ||
|---|---|---|---|
| sidebar_category | text-content | ||
| tags |
|
WordNumber
Write numbers and money amounts in words, with each language's grammar: English, Portuguese and Italian.
Why
Cheques, contracts, invoices and receipts often need the amount in words. Each language has its own rules ("twenty-one", "vinte e um", "ventuno"; "mil e um", not "um mil e um"), and the currency changes between singular and plural.
(new EnglishWordNumber())->write(12.34); // twelve dollars and thirty-four cents (new PortugueseWordNumber())->write(12.34); // doze reais e trinta e quatro centavos
A new language is a new class.
Features
- Convert integers and floats to word numbers
- Support for multiple languages:
- English
- Portuguese
- Italian (Thanks to willypuzzle)
- Currency formatting with singular/plural forms
- Grammar-aware output for each language (e.g. "twenty-one", "mil e um", "ventuno")
- Extensible architecture for adding new languages
Installation
composer require byjg/wordnumber
Quick Start
English
use ByJG\WordNumber\EnglishWordNumber; $wordNumber = new EnglishWordNumber(); echo $wordNumber->write(12.34); // Output: twelve dollars and thirty-four cents
Portuguese
use ByJG\WordNumber\PortugueseWordNumber; $wordNumber = new PortugueseWordNumber(); echo $wordNumber->write(12.34); // Output: doze reais e trinta e quatro centavos
Italian
use ByJG\WordNumber\ItalianWordNumber; $wordNumber = new ItalianWordNumber(); echo $wordNumber->write(12.34); // Output: dodici euro e trentaquattro centesimi
Documentation
Running Tests
vendor/bin/phpunit