• #laravel
  • #tips
  • #strings

Pluralizar textos en Laravel

Trabajar con strings en laravel no tiene por que ser complicado, en esta ocasión veremos como pluralizar textos a nuestra conveniencia.

Escenario

Tomemos como ejemplo un carrito de compras, en este caso, necesitaremos mostrar un resumen de cuantos productos tenemos en el carrito, por ejemplo.

Tienes 1 producto

Y si tenemos más de un producto, debemos cambiar el texto por:

Tienes 3 productos

Una posible solución seria el siguiente:

$carrito = Carrito::with('detalles')->find(3);
echo "Tienes $productos producto" . ($carrito->detalles->count() > 1 ? 's' : '');
// Output: Tienes 3 productos

En la solución anterior usamos un ternario pero la solución no se ve nada elegante.

Método plural de laravel

Vamos una solución más elegante de como pluralizar textos, con el helper plural de laravel.

$carrito = Carrito::with('detalles')->find(3);
echo "Tienes $productos " . Str::of('producto')->plural($carrito->detalles->count());
// Output: Tienes 3 productos

Pluralización en español

El helper plural por defecto soporta el idioma ingles, y en algunas palabras nos devolverá una pluralización incorrecta, por ejemplo:

echo Str::of('árbol')->plural(2);
// Output: árbols

En el ejemplo anterior obtenemos como plural de la palabra árbol, árbols lo cual es incorrecto, pues lo correcto seria árboles, para solucionar esto debemos realizar una configuración adicional en el archivo AppServiceProvider.php:

AppServiceProvider.php
use Illuminate\Support\Pluralizer;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Pluralizer::useLanguage('spanish');
}

Puedes encontrar mas información sobre el método plural en la documentación.

Te puede interesar: Remover todos los espacios extra de un string en Laravel