Quali sono i modelli comuni per la gestione della pluralizzazione possibile nelle proprietà dei messaggi?

7

Ovviamente agli utenti piace vedere il testo correttamente pluralizzato e gli schemi di pluralizzazione variano nelle varie lingue scritte che si possono incontrare. Quando si internazionalizza un'app, quali motivi sono utili per gestire i messaggi con possibile pluralizzazione? Che dire dei messaggi con più possibili pluralizzazioni?

Ad esempio: "N recensione (i):"

Uno schema potrebbe essere

reviews.title.singular="{0} review:"
reviews.title.plural="{0} reviews:"

E questo potrebbe non supportare tutte le lingue.

O un caso più complicato: "Trovato M domande con N commenti (s)."

Questo sarebbe difficile da supportare anche in inglese.

    
posta C. Ross 03.11.2013 - 02:04
fonte

3 risposte

6

lo schema che ho visto è quello di creare un modello specifico per esso con descrive gli intervalli di ciascun valore

per esempio in java è

"Found {0,choice,0#no questions|1#a single question|1<{0,number,integer} questions} with "+
"{1,choice,0#no comments|1#a single comment|1<{1,number,integer} comments}."

è un dolore per qualcosa del genere ma completamente traducibile in lingue con regole dispari

    
risposta data 03.11.2013 - 04:19
fonte
2

L'approccio adottato da GNU gettext è di differire la maggior parte della gestione delle varie forme plurali al file contenente le traduzioni stesse. Per recuperare una stringa tradotta che potrebbe comportare la pluralizzazione, si effettua una chiamata come

ngettext("singular English form", "plural English form", quantity)

e la libreria selezionerà la forma plurale giusta in base al valore di quantity e le regole specifiche della lingua per le varie forme plurali.

Per evitare un'esplosione combinatoria, questo schema può gestire solo una singola quantità che potrebbe innescare la pluralizzazione. Se si dispone di più quantità che potrebbero innescare la pluralizzazione, proverei a riformulare il messaggio in modo tale da rimuovere la pluralizzazione multipla o dividerlo in più blocchi che vengono tradotti (e pluralizzati) separatamente.

    
risposta data 03.11.2013 - 13:00
fonte
2

Soluzioni come quelle descritte nelle altre risposte potrebbero funzionare, ma sono IMO piuttosto complicate da implementare quando hai a che fare con un gran numero di frasi diverse, parecchie parole pluralizzate nella stessa frase e così via.
Diventa ancora peggio quando hai lingue con regole plurali più complesse, come descritto qui .

Al lavoro, ci occupiamo anche di cose come questa (in 5 lingue, per ora).
Cosa facciamo: cerchiamo di evitare tutta questa complessità scrivendo i nostri messaggi esattamente come gli esempi nella tua domanda:

Found M question(s) with N comment(s).

... o in questo modo:

Number of questions found: M
Number of comments found: N

Ovviamente questo non è elegante come l'output delle soluzioni più complesse, ma è molto, molto più facile da gestire.

    
risposta data 03.11.2013 - 14:13
fonte

Leggi altre domande sui tag