Si prega di utilizzare la funzione ngettext
per cose come questa. È che ti consente di gestire correttamente i plurali in inglese e altre lingue , una volta per tutte. Si utilizza in questo modo:
printf(ngettext("%d Comment", "%d Comments", $numComments), $numComments);
La funzione ngettext
restituirà la prima stringa di formato ("%d Comment"
) se v'è un solo commento e la seconda stringa di formato ("%d Comments"
) se ci sono più. La funzione printf
sarà quindi inserire il numero nella stringa.
Questo potrebbe sembrare un sacco di lavoro, ma è molto potente: funziona con i linguaggi che hanno più di una forma plurale - hanno in realtà esistono (!). Il manuale PHP fornisce un esempio per la parola "finestra" che diventa "1 okno", "2 okna" e "5 oken" in qualche lingua esotica che non riconosco ...
Se siete conseguente sull'utilizzo ngettext
, quindi i vostri futuri utenti da paesi lontani sarà molto grato a voi :-)
Edit: Come suggerito nei commenti, v'è una singola funzione al fare quanto sopra:
function pluralize($num, $singleWord, $pluralWord) {
return printf(ngettext($singleWord, $pluralWord, $num), $num);
}
per impostazione predefinita, xgettext
riconoscono wont questa nuova funzione, ma si può aggiungerlo con la bandiera --keyword
. Dato un file test.php
con
echo ngettext("foo", "foos", 1);
echo pluralize(2, "bar", "bars");
è possibile estrarre le corde con
xgettext --keyword=pluralize:2,3 test.php
Il messages.po
file risultante ha voci come queste:
#: test.php:7
msgid "foo"
msgid_plural "foos"
msgstr[0] ""
msgstr[1] ""
#: test.php:8
msgid "bar"
msgid_plural "bars"
msgstr[0] ""
msgstr[1] ""
Il traduttore si riempirà in ogni forma plurale e con una linea "Plural-Forms" correttamente formata nell'intestazione del catalogo messaggi, con correttamente, sarà per supportare tutte le lingue.
+1 Per il tuo nome utente, perché mi ha detto di farlo. È intelligente e sarei interessato a sapere quanti voti hai ottenuto solo per quello. :) – Dusty
Sono mezzo tentato di downvotare solo per contrastare gli effetti delle persone che invitano lo –