2010-08-03 10 views
5

Ho codificato un wrapper gettext che rende l'intero processo di l10n un po 'più semplice, ma in qualche modo non riesco a far sì che PoEdit possa identificare e analizzare correttamente le chiamate di versione plurale alla funzione. Questo è quello che originariamente avevo:Come rendere correttamente PoEdit analizzare l'implementazione "ngettext" personalizzata?

_e(array('%d house', '%d houses'), 5); 

Ma che non funziona affatto, PoEdit prende nulla. Ho anche provato:

_e('%d house', '%d houses', 5); 

Questa PoEdit volta cattura il %d house ma non la forma plurale di %d houses, se provo esattamente lo stesso, ma con un ngettext() chiamano funziona perfettamente, sia le forme singolari e plurali sono identificati:

ngettext('%d house', '%d house', 5); 

ho correttamente (?) ha aggiunto la parola chiave _e alle impostazioni del progetto, ma non prelevamento variazioni plurali. Ho anche notato che PoEdit ha solo _, gettext e gettext_noop come la chiave di default da raccogliere, non esiste alcun riferimento alle funzioni ngettext, dngettext o dcngettext ma può ancora raccogliere correttamente le chiamate ngettext ... Questo rende Mi chiedo se PoEdit abbia hardcoded la parola chiave ngettext - sarebbe davvero triste.

In ogni caso, c'è un modo per rendere PoEdit (o qualsiasi altra app simile), analizzare correttamente le funzioni personalizzate?

+0

fare avere almeno Poedit 1.3.0? –

+0

@Alexandre: Poedit 1.4.6 (Windows). –

+0

Ho trovato questo link (http://www.devcomments.com/Zend_Translate-plural-forms-and-poedit-at188420.htm) sembra che non sia possibile. Ci sono alternative? –

risposta

0

Ecco un'altra soluzione, è molto facile da installare. Segui i passaggi seguenti:

Menu: Catalogo -> Impostazioni apre la finestra di dialogo Impostazioni. Nella scheda Informazioni progetto troverai "Moduli plurali" nella parte inferiore. Basta copiare & incollare la seguente riga in questo campo:

nplurals=2; plural=n != 1; 

che risolverà il problema perfettamente. Non ho nemmeno dovuto analizzare nuovamente le fonti; le linee corrette apparivano automaticamente nel PoEditer.

+1

Non credo di aver capito la mia domanda. –

3

In realtà è necessario fare entrambe le cose sopra.

  • Definire la parola chiave come '_E: 1,2' E
  • Aggiungere la forma plurale nplurals = 2; plurale = n! = 1;

alle impostazioni del catalogo

+1

Le forme plurali variano da lingua a lingua e non sono ancora correlate al problema. –

+0

ngettext supporta solo due forme plurali, quindi qual è il tuo punto? – Deckard

+1

In realtà, no. Vedi il primo (e solo) esempio su http://php.net/manual/en/function.ngettext.php: "1 okno", "2 okna" e "5 oken". –