2009-09-17 14 views
9

Questo è sulle migliori pratiche in generale, non specifici per un linguaggio unico database o qualsiasi altra cosamigliori pratiche per parola singolare o parole plurali?

Noi tutti hanno a che fare con l'uscita generata dove si può essere segnalando "uno dei prodotti" o "due prodotti". Non legge molto bene ... Alcuni lo risolvono semplicemente usando "un prodotto (i)" o "numero di prodotti: (1)" e altri potrebbero avere altre soluzioni.

Le cose potrebbero essere anche più complesse in diverse lingue parlate! In francese, quando hai zero prodotti, useresti la forma singolare, non la forma plurale! (Zero prodotto) Altre lingue (cinese, giapponese) potrebbero anche non comprendere queste differenze grammaticali o avere più di due parole diverse per indicare qualcosa sul numero di prodotti. (Un plurale e un plurale più grande, per esempio.)

Ma per mantenere questo semplice, concentriamoci sulle lingue che hanno sia parole singolari che plurali.

Quando si imposta un nuovo progetto, che deve anche generare report, come si gestiscono le parole singolari e al plurale? Aggiungete due campi nome nel vostro database per la forma singolare e plurale? Aggiungete ulteriori regole nel codice per trasformare le parole dal singolare al plurale? Usi altri trucchi?

Quando si lavora su un progetto che deve tracciare forme singolari e plurali, come si gestisce questo?

+0

iirc Arabic ha forme speciali per singolare, doppio, e quindi solo (più?) Plurale! : S –

+0

Ci sono forme al plurale abbastanza diverse nelle diverse lingue. Vedi: http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html – SimonSimCity

risposta

9

mi consiglia di dare un'occhiata a gettext in generale e, in particolare, ngettext. Forse anche se non hai intenzione di tradurre la tua domanda. Basta andare al numero this part of the documentation. Ha implementazione per più o meno tutte le lingue e anche se la tua lingua di scelta non ha questo supporto, nulla ti impedisce di prendere in prestito le idee.

+0

Ma che dire dei nomi dei prodotti memorizzati in un database? –

+1

La stessa cosa: memorizzare coppie singolari/plurali. E, in caso di traduzione (che non è il tuo caso o è?) Dovrai solo assicurarti che vengano messi in .po se usi gettext o usi un algoritmo simile e lo memorizzi altrove (ovviamente non fa senso di mettere migliaia di prodotti in file .po). –

+0

Abbiamo appena pensato ad un altro problema con i nomi dei prodotti archiviati nel database: è abbastanza facile gestire una forma plurale/singolare, ma quando si tratta di traduzione ci sarebbe un problema con i casi. E il tentativo di attenersi ai nominativi potrebbe rivelarsi quasi imbarazzante come "Numero di prodotti: N". –

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

Cercando di utilizzare il linguaggio naturale per la segnalazione di dati quantitativi è solo troppo di una seccatura.

+0

Sì, lo so. :-) Mi umorizzi e consideri questo come un requisito importante nel motore di reporting del prodotto su cui stai lavorando. –

+3

E da quando l'eccessiva seccatura ha fermato l'umanità? –

+0

Awww ... Ora non riesco a smettere di chiedermi la forma plurale di "umanità" ... "umanità", forse? ;-) –

-4

Con le applicazioni in inglese è solitamente più semplice ed efficiente memorizzare il singolare e creare il plurale utilizzando un gruppo di istruzioni if.

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

-1 bus, ex allievi, ecc. – MusiGenesis

1

Normalmente avrei inviare il mio testo attraverso un qualche tipo di formattatore, che riformatta i valori che si desidera visualizzare un testo leggibile. Questo potrebbe anche modificare il testo del "prodotto". Java ha la classe MessageFormat per questo, che supporta tali modifiche. Vedi gli esempi su [1].

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

1

Leggere e implementare this; riferire quando hai finito (in alcuni anni). Personalmente, sono soddisfatto dell'approccio (i);) (anche se è ovvio che ciò non funziona per tutte le lingue).

+0

Bene, quel collegamento mostra chiaramente la complessità delle parole singolari/plurali. Mostra anche che il numero di moduli varia addirittura da uno a un massimo di 6 diverse forme! Mi piace già questo sito! :-) –

+2

Alex, questo - http://translate.sourceforge.net/wiki/l10n/pluralforms - sembra una risorsa più completa su forme plurali per diverse lingue. –

2

In Perl, questo è completamente risolto da Lingua::EN::Inflect. Usa un dizionario di grandi dimensioni e gestisce con cura tutte le eccezioni alle regole. Fa anche cose come 'a' o 'an', e gestisce anche i confronti!

Vedere the paper per i dettagli sanguinosi.

+1

Un problema con questo riferimento è che non è indipendente dalla lingua, non importa a cosa ti riferisci come * lingua * qui ;-) L'altro problema è che il problema va oltre la forma plurale del sostantivo, ci * è * questa cosa ha chiamato l'intera frase (e ci * sono * queste cose chiamate frasi intere). –

+0

Ma lo investo come riferimento interessante, comunque;) –

+0

@hacker: hai perfettamente ragione - questo modulo è specifico per l'inglese. Ma gestisce quel linguaggio molto bene. –

0

Solo un aggiornamento, CLDR ora ha più regole per le lingue e ICU ha un'implementazione.