Nuestros mejores investigadores han agotado sus depósitos de café, buscando día y noche por la respuesta, hasta que Ángel halló el arreglo en GitHub y en este momento la compartimos con nosotros.
Solución:
Aquí está mi práctica función:
function plural( $amount, $singular = '', $plural = 's' )
if ( $amount === 1 )
return $singular;
return $plural;
De forma predeterminada, solo agrega la ‘s’ después de la string. Por ejemplo:
echo $posts . ' post' . plural( $posts );
Esto reflejará ‘0 publicaciones’, ‘1 publicación’, ‘2 publicaciones’, ‘3 publicaciones’, etc. Pero también puede hacer:
echo $replies . ' repl' . plural( $replies, 'y', 'ies' );
Que hará eco de ‘0 respuestas’, ‘1 respuesta’, ‘2 respuestas’, ‘3 respuestas’, etc. O alternativamente:
echo $replies . ' ' . plural( $replies, 'reply', 'replies' );
Y también funciona para otros idiomas. Por ejemplo, en español hago:
echo $comentarios . ' comentario' . plural( $comentarios );
Que hará eco de ‘0 comentarios’, ‘1 comentario’, ‘2 comentarios’, ‘3 comentarios’, etc. O si agregar una ‘s’ no es el camino, entonces:
echo $canciones . ' canci' . plural( $canciones, 'ón', 'ones' );
Que hará eco de ‘0 canciones’, ‘1 canción’, ‘2 canciones’, ‘3 canciones’, etc.
Esto no es fácil: cada idioma tiene sus propias reglas para formar plurales de sustantivos. En inglés suele ser que se pone “-s” al final de una palabra, a menos que termine en “-x”, “-s”, “-z”, “-sh”, “-ch” en los que caso de que agregue “-es”. Pero luego está “ratón” => “ratones”, “oveja” => “oveja”, etc.
Entonces, lo primero que debe hacer es averiguar cuáles son las reglas para formar el plural a partir del sustantivo singular en el idioma con el que desea trabajar. Pero esa no es toda la solución. Otro problema es el reconocimiento de sustantivos. Si te dan un sustantivo y necesitas convertirlo de singular a plural, eso no es demasiado difícil, pero si te dan un texto libre y tienes que encontrar los sustantivos singulares y convertirlos a plural, eso es mucho más difícil. Puede obtener listas de sustantivos, pero, por supuesto, algunas palabras pueden ser sustantivos y verbos (“cazar”, “pescar”, “romper”, etc.), por lo que debe analizar el texto para identificar los sustantivos.
Es un gran problema. Probablemente haya un sistema de IA que haga lo que necesitas, pero no imagino que habrá algo gratuito que lo haga todo.
No hay ninguna función integrada en PHP para este tipo de operación. Sin embargo, existen algunas herramientas que puede utilizar para lograr su objetivo.
Existe una API de diccionario de Google no oficial que contiene información sobre los plurales. Puedes leer más sobre ese método aquí. Deberá analizar un objeto JSON para encontrar los elementos apropiados y este método tiende a ser un poco lento.
El otro método que me viene a la mente es usar un hechizo, o uno de sus parientes. No estoy seguro de cuán precisos son los diccionarios para otros idiomas además del inglés, pero he usado un hechizo para expandir las palabras en sus diversas formas.
Sé que esta no es la respuesta más útil, pero espero que le brinde una dirección general para buscar.
Sección de Reseñas y Valoraciones
Si entiendes que ha sido de utilidad este artículo, sería de mucha ayuda si lo compartes con otros juniors de esta forma contrubuyes a extender nuestro contenido.