Add the package to your project :
composer require mesavolt/inflector
// Use it with any number or countable value:
Inflector::plural('cheval', 2); // Returns 'chevaux'
Inflector::plural('cheval', 1); // Returns 'chevaux'
Inflector::plural('cheval', [$horse1, $horse2]); // Returns 'chevaux'
// Specify the plural form if you want:
Inflector::plural('cheval', 2, 'chevals'); // Returns 'chevals'
Inflector::plural('un petit cheval', 2, 'des petits chevaux'); // Returns 'des petits chevaux'
If you use the default
auto-configuring feature of Symfony introduced in Symfony 3.3,
you only need to register the MesaVolt\Twig\InflectorExtension
as a service in your services.yml
file.
Symfony will tag it properly to register it in the twig environment used by your app.
If you don't use the auto-configuring feature or if it's not available in your version, you need to apply the tags manually when you register the extension as a service.
# Symfony 3: app/config/services.yml
# Symfony 4: config/services.yaml
services:
# Use this if you use the default auto-configuring feature of Symfony >=3.3 DI container
MesaVolt\Twig\InflectorExtension: ~
# Use this if you **don't** use the auto-configuring feature of Symfony >=3.3 DI container
app.inflector_extension:
class: MesaVolt\Twig\InflectorExtension
tags: { name: twig.extension }
Then, you can use the plural
filter provided by the extension in your templates :
{# templates/my-template.html.twig #}
<p>Il y a {{ users|length }} {{ 'utilisateur'|plural(users) }} dans la base de données.</p>
composer dump-autoload # make sure vendor/autoload.php exists
./vendor/bin/phpunit