English morphology shortcuts:
morphos\English\NounPluralization::pluralize($word, $count)
morphos\English\CardinalNumeralGenerator::generate($number)
morphos\English\OrdinalNumeralGenerator::generate($number)
morphos\English\TimeSpeller::spellInterval(DateInterval $interval)
English class hierarchy:
morphos\
English\
CardinalNumeralGenerator
OrdinalNumeralGenerator
NounPluralization
TimeSpeller
Pluralization a word in English is possible with NounPluralization
class:
use function morphos\English\pluralize;
use morphos\English\NounPluralization;
echo '10 '.NounPluralization::pluralize('foot') => '10 feet'
// or if you don't know count of objects
// or you can use shortcut
$n = 1;
echo pluralize($n, 'foot') => '1 foot'
All number creation classes are similar and have one common methods:
string generate($number)
- Generates a cardinal numeral for a number.
Creation of cardinal numerals in english language (CardinalNumeralGenerator
).
use morphos\English\CardinalNumeralGenerator;
// Get text representation of a number:
$number = 4351;
CardinalNumeralGenerator::generate($number) => 'four thousand, three hundred fifty-one'
Creation of ordinal numerals in english language (OrdinalNumeralGenerator
).
use morphos\English\OrdinalNumeralGenerator;
// Get text representation of a number or short form:
$number = 4351;
OrdinalNumeralGenerator::generate($number) => 'four thousand, three hundred fifty-first'
// short form of ordinal numeral
OrdinalNumeralGenerator::generate($number, true) => '4351st'
You can generate text representation of time interval with TimeSpeller
class:
use morphos\English\TimeSpeller;
// generate text representation of 5 years and 2 months
$interval = new DateInterval('P5Y2M');
TimeSpeller::spellInterval($interval) => '5 years 2 months'
TimeSpeller::spellInterval($interval, TimeSpeller::SEPARATE) => '5 years and 2 months'