https://github.com/wapmorgan/morphos-twig
Morphos adapter for Twig
https://github.com/wapmorgan/morphos-twig
morphology twig twig-extension
Last synced: about 1 month ago
JSON representation
Morphos adapter for Twig
- Host: GitHub
- URL: https://github.com/wapmorgan/morphos-twig
- Owner: wapmorgan
- Created: 2017-02-02T22:39:12.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2019-07-09T04:08:48.000Z (almost 6 years ago)
- Last Synced: 2025-03-18T18:42:13.897Z (about 2 months ago)
- Topics: morphology, twig, twig-extension
- Language: PHP
- Homepage:
- Size: 14.6 KB
- Stars: 9
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MorphosTwig
[](https://packagist.org/packages/wapmorgan/morphos-twig)
[](https://packagist.org/packages/wapmorgan/morphos-twig)Adds {{ plural }}, {{ name }}, {{ numeral }}, {{ ordinal }} and {{ money }} filters to Twig templating engine for Russian pluralization and declenation.
```twig
{{ 'новость'|plural(252) }} от {{ 'Иванов Иван Иванович'|name('родительный') }}
{{ 'сообщение'|numeral(565, 'n') }} и {{ 123.50|money('₽') }} за Ваше отсутствие
Это Ваше {{ 351|ordinal('n') }} посещение нашего сайта за сегодня!
```Will be compiled in
```html
252 новости от Иванова Ивана Ивановича
пятьсот шестьдесят пять сообщений и 123 рубля 50 копеек за Ваше отсутствие
Это Ваше триста пятьдесят первое посещение нашего сайта за сегодня!
```Most popular filters:
- `{{ $word|plural($count) }}` - Get plural form of word. Just pass count of objects and noun.
```twig
{{ 'новость'|plural(251) }}
```- `{{ $value|money($currency) }}` - Get money formatted as text string. Just pass value and currency (₽ or $ or € or ₴ or £).
```twig
{{ 123.50|money('р') }}
```- `{{ $number|numeral }}` - Get cardinal of a number. Just pass number.
```twig
{{ 565|numeral }}
```- `{{ $number|ordinal }}` - Get ordinal of a number. Just pass number.
```twig
{{ 132|ordinal }}
```- `{{ $name|name($case) }}` - Get any case of fullname with gender detection.
```twig
{{ 'Иванов Иван Иванович'|name('родительный') }}
```Additional filters:
- `{{ $name|name($gender, $case) }}` - Get any case of fullname. Just pass name, gender (`m` or `f` or null) and case (именительный, родительный, дательный, винительный, творительный, предложный).
```twig
{{ 'Филимонов Игорь|name('m', 'дательный') }}
```- `{{ $number|numeral($gender) }}` - Get numeral of a number. Just pass number and gender (`m` or `f` or `n`) to use correct form of gender-dependent words (один/одно/одна, два/две).
```twig
{{ 565|numeral('n') }}
```- `{{ $word|numeral($number) }}` - Get numeral with a pluralized word. Just pass number and noun.
```twig
{{ 'дом'|numeral(221) }}
```- `{{ $word|numeral($number, $gender) }}` - Get numeral with a pluralized word. Just pass number, noun and gender (`m` or `f` or `n`) to use correct form of gender-dependent words (один/одно/одна, два/две).
```twig
{{ 'сообщение'|numeral(565, 'n') }}
```- `{{ $number|ordinal($gender) }}` - Get ordinal of a number. Just pass number and gender (`m` or `f` or `n`) to use correct form of gender-dependent words (первый/первое/первая, второй/второе/вторая, etc).
```twig
{{ 'сообщение'|ordinal('n') }}
```## Installation
### Get the Package
```
composer require wapmorgan/morphos-twig
```### Register the Service
Open up your `services.php` in your `app/config` folder, and add the following lines:```php
$container
->register('morphos.twig_extension', morphos\MorphosTwigExtension::class)
->setPublic(false)
->addTag('twig.extension');
```or if you using Twig separately from Symfony
```php
$twig = new Twig_Environment($loader);
$twig->addExtension(new morphos\MorphosTwigExtension());
```