- #laravel
- #tips
- #strings
Pluralizar textos en Laravel
Escrito por Jhon Achata el 3 de noviembre de 2023
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
:
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.