2009-09-17 12 views
9

Esto es sobre las mejores prácticas en general, no específicas para un solo idioma, base de datos o lo que sea¿mejor práctica (es) para palabras en singular o palabras en plural?

Todos tenemos que lidiar con salida generada donde puede ser como "uno" o productos "dos productos". No lee muy bien ... Algunos simplemente resuelven esto usando "un producto (s)" o "número de productos: (1)" y otros pueden tener otras soluciones.

Las cosas podrían ser aún más compleja en diferentes lenguas habladas! ¡En francés, cuando tienes cero productos, usarías la forma singular, no la forma plural! (Producto cero) Otros idiomas (chino, japonés) incluso pueden carecer de estas diferencias gramaticales o tener más de dos palabras diferentes para indicar algo sobre la cantidad de productos. (Un plural y un plural mayor, por ejemplo.)

Pero para mantener esto simple, centrémonos en los idiomas que tienen tanto palabras en singular como en plural.

Al configurar un nuevo proyecto, que también tiene que generar informes, ¿cómo se manejan las palabras en singular y en plural? ¿Agregas dos campos de nombre en tu base de datos para el singular y el plural? ¿Agregas reglas adicionales en el código para transformar palabras de singular a plural? ¿Usas otros trucos?

Al trabajar en un proyecto que necesita rastrear formas singulares y plurales, ¿cómo se maneja esto?

+0

iirc El árabe tiene formas especiales para singular, doble y luego solo (¿más?) Plural. : S –

+0

Hay bastante diferentes formas de plural en los diferentes idiomas. Ver: http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html – SimonSimCity

Respuesta

9

te recomiendo echar un vistazo a gettext en general y, en particular, ngettext. Tal vez incluso si no vas a traducir tu aplicación. Solo dirígete al this part of the documentation. Tiene implementación para más o menos todos los idiomas e incluso si su idioma de elección carece de este soporte, nada le impide tomar prestadas las ideas.

+0

Pero, ¿qué hay de los nombres de los productos almacenados en una base de datos? –

+1

Lo mismo: almacenando pares singulares/plurales. Y, en el caso de la traducción (¿cuál no es tu caso o es así?) Solo tendrás que asegurarte de que estén en .po si usas gettext o usa un algoritmo similar y lo guardas en otro lado (por supuesto que no hace sentido poner miles de productos en el archivo .po). –

+0

Acabo de pensar en otro problema con los nombres de productos almacenados en la base de datos: es bastante fácil de manejar la forma plural/singular, pero cuando se trata de la traducción habría un problema con los casos. Y tratar de seguir nominativo puede resultar casi tan incómodo como 'Número de productos: N'. –

0
Number of products: 1 
Number of products: 4 
Number of products: FILE_NOT_FOUND 

Tratar de usar un lenguaje natural para la presentación de datos cuantitativos es simplemente demasiado de una molestia.

+0

Sí, lo sé. :-) Solo déjame de humor y piensa en esto como un requisito importante en el motor de informes del producto en el que estás trabajando. –

+3

¿Y desde que ser demasiado molesto ha detenido a la humanidad? –

+0

Awww ... Ahora no puedo dejar de preguntarme acerca de la forma plural de "humanidad" ... ¿quizás "humanidad"? ;-) –

-4

Con las aplicaciones en inglés, generalmente es más fácil y eficiente almacenar el singular y crear el plural usando un grupo de sentencias if.

if(count > 1){ 
    suffix = 's'; 
} 
+6

-1 autobuses, alumnos, etc. – MusiGenesis

1

Normalmente yo envío mi texto a través de algún tipo de formateador, que vuelve a formatear los valores que desea mostrar a un texto legible por humanos. Esto también podría modificar su texto de "producto". Java tiene la clase MessageFormat para esto, que admite tales modificaciones. Vea los ejemplos en [1].

[1] http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html

1

Lea y aplicar this; informa cuando hayas terminado (en unos años). Personalmente, estoy satisfecho con el (los) enfoque (s);) (aunque es evidente que esto no funciona para todos los idiomas).

+0

Bueno, ese enlace muestra claramente la complejidad de las palabras en singular/plural. ¡También muestra que la cantidad de formularios varía de uno a seis formularios diferentes! Me gusta este sitio ya! :-) –

+2

Alex, esto - http://translate.sourceforge.net/wiki/l10n/pluralforms - parece un recurso más completo en formas plurales para diferentes idiomas. –

2

En Perl, esto se resuelve exhaustivamente por Lingua::EN::Inflect. Utiliza un diccionario grande y maneja cuidadosamente todas las excepciones a las reglas. ¡También hace cosas como 'a' o 'an', y maneja comparaciones también!

Ver the paper para los detalles morbosos.

+1

Un problema con esta referencia es que no es independiente del lenguaje, no importa a qué se refiera como * idioma * aquí ;-) El otro problema es que el problema va más allá de la forma plural del sustantivo, allí * está * esto llamó a la oración completa (y allí * están * estas cosas llamadas oraciones completas). –

+0

Pero lo voté como una referencia interesante, de todos modos;) –

+0

@hacker: Tiene toda la razón: este módulo es específico de inglés. Pero maneja ese lenguaje muy bien. –

0

Solo una actualización, CLDR ahora tiene reglas de plural para idiomas y ICU tiene una implementación.

Cuestiones relacionadas