Inflection extension for Yii2. Support for English / Russian languages to inflect words / names / numbers / money / date&time.
GPL-3.0 License
Inflection extension for Yii2. Support for English / Russian languages to inflect words / names / numbers / money / date&time.
en
: Yii::$app->inflection->pluralize(2, 'item')
=> 2 items
ru
: Yii::$app->inflection->pluralize(2, 'элемент')
=> 2 элемента
ru
: Yii::$app->inflection->inflectName('Иванов Петр', wapmorgan\yii2inflection\Inflector::DATIVE)
=> Иванову Петру
ru
: Yii::$app->inflection->inflectGeoName('Санкт-Петербург', wapmorgan\yii2inflection\Inflector::GENITIVE)
=> Санкт-Петербурга
en
: Yii::$app->inflection->cardinalize(2)
=> 'two'ru
: Yii::$app->inflection->cardinalize(2)
=> 'два'en
: Yii::$app->inflection->ordinalize(2)
=> '2nd'ru
: Yii::$app->inflection->ordinalize(2)
=> '2-й'And full form:
en
: Yii::$app->inflection->ordinalize(2, wapmorgan\yii2inflection\Inflector::FULL)
=> 'second'ru
: Yii::$app->inflection->ordinalize(2, wapmorgan\yii2inflection\Inflector::FULL)
=> 'второй'en
: Yii::$app->inflection->monetize(wapmorgan\yii2inflection\Inflector::DOLLAR, 122.04)
=> 'one hundred twenty-two dollars four cents'ru
: Yii::$app->inflection->monetize(wapmorgan\yii2inflection\Inflector::DOLLAR, 122.04)
=> 'сто двадцать два доллара четыре цента'en
: Yii::$app->inflection->textizeTimeRange(new DateInterval('P2Y'))
=> '2 years'ru
: Yii::$app->inflection->textizeTimeRange(new DateInterval('P2Y'))
=> '2 года'WIP means Work-in-progress i.e this feature is not supported now, but planned to be implemented.
Case | Russian |
---|---|
Inflector::NOMINATIVE |
Именительный |
Inflector::ABLATIVE |
Творительный |
Inflector::ACCUSATIVE |
Винительный |
Inflector::AVERSIVE |
|
Inflector::BENEFACTIVE |
|
Inflector::CAUSAL |
|
Inflector::COMITATIVE |
|
Inflector::DATIVE |
Дательный |
Inflector::DISTRIBUTIVE |
|
Inflector::GENITIVE |
Родительный |
Inflector::ORNATIVE |
|
Inflector::POSSESSED |
|
Inflector::POSSESSIVE |
|
Inflector::PREPOSITIONAL |
Предложный |
Inflector::PRIVATIVE |
|
Inflector::SEMBLATIVE |
|
Inflector::SOCIATIVE |
Currency |
---|
Inflector::DOLLAR |
Inflector::EURO |
Inflector::YEN |
Inflector::POUND |
Inflector::FRANC |
Inflector::YUAN |
Inflector::KRONA |
Inflector::PESO |
Inflector::WON |
Inflector::LIRA |
Inflector::RUBLE |
Inflector::RUPEE |
Inflector::REAL |
Inflector::RAND |
Inflector::HRYVNIA |
It uses built-in inflector for English pluralization (yii\helpers\Inflector
) and Morphos for English & Russian on-the-fly inflection (without dictionaries).
composer require wapmorgan/yii2-inflection
wapmorgan\yii2inflection\Inflection
as a service inflection
in config and specify proper target language of your application (web.php or console.php):$config = [
// ...
'language' => 'ru_RU', // for example, Russian
// ...
'components' => [
// ...
'inflection' => [
'class' => 'wapmorgan\yii2inflection\Inflection'
]
],
// ...
];
language
- default language for inflection. By default, it uses language parameter of current application, but you can change this behavior. Currently supported langs is ru
(Russian) and en
(English) or their's modification (ru_RU
, en_US
). If you pass unsupported or unknown language, an Exception will be thrown during service initializion.defaultCurrency
- default currency when converting money to words. If set, you can call monetize(float $value)
without currency: Yii::$app->inflection->monetize(123.45)
=> сто двадцать три рубля сорок пять копеек
$word = 'новость';
echo Yii::$app->inflection->pluralize(rand(2, 139), $word).PHP_EOL;
echo Yii::$app->inflection->pluralize(rand(9, 69), $word).PHP_EOL;