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