2010-08-03 5 views
5

J'ai codé un wrapper gettext qui simplifie un peu le processus de l10n, mais je n'arrive pas à obtenir PoEdit pour identifier correctement et analyser plusieurs appels de version vers la fonction. C'est ce que j'avais à l'origine:Comment faire pour que PoEdit analyse correctement l'implémentation "ngettext" personnalisée?

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

Mais cela ne marche pas du tout, PoEdit ne sélectionne rien du tout. J'ai aussi essayé:

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

Ce PoEdit temps attrape le %d house mais pas la forme plurielle %d houses, si je tente exactement la même chose mais avec un ngettext() appellent cela fonctionne parfaitement, aussi bien les formes singulières et plurielles sont identifiées:

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

avoir correctement (?) a ajouté le mot-clé _e aux paramètres du projet, mais il ne capte pas les variations au pluriel. J'ai aussi remarqué que PoEdit n'a que les gettext et les gettext_noop comme gettext comme touches par défaut à ramasser, il n'y a aucune référence aux fonctions ngettext, dngettext ou mais il peut toujours prendre correctement les appels ngettext ... Cela rend Je me demande si PoEdit a codé en dur le mot-clé ngettext - ce serait vraiment triste.

De toute façon, est-il possible de faire PoEdit (ou toute autre application similaire), correctement analyser les fonctions personnalisées?

+0

Avez-vous au moins Poedit 1.3.0? –

+0

@Alexandre: Poedit 1.4.6 (Windows). –

+0

J'ai trouvé ce lien (http://www.devcomments.com/Zend_Translate-plural-forms-and-poedit-at188420.htm) il semble que ce ne soit pas possible. Y a-t-il des alternatives? –

Répondre

0

Voici une autre solution, il est très facile à installer. Suivez simplement les étapes ci-dessous:

Menu: Catalogue -> Paramètres ouvre la boîte de dialogue Paramètres. Dans l'onglet Infos du projet, vous trouverez "Formes Plurielles" en bas. Il suffit de copier coller & la ligne suivante dans ce domaine:

nplurals=2; plural=n != 1; 

Cela résoudra parfaitement le problème. Je n'ai même pas eu à réanalyser les sources; les lignes correctes apparaissent automatiquement dans le PoEditer.

+1

Je ne pense pas que vous ayez compris ma question. –

3

En fait, vous devez faire les deux choses ci-dessus.

  • Définir le mot-clé comme '_E: 1,2' ET
  • Ajouter la forme plurielle nplurals = 2; pluriel = n! = 1;

aux paramètres du catalogue

+1

Les formes plurielles varient d'une langue à l'autre et ne sont toujours pas liées au problème. –

+0

ngettext supporte seulement deux formes plurielles de toute façon, alors quel est votre point? – Deckard

+1

En fait, non. Voir le premier (et seul) exemple sur http://php.net/manual/en/function.ngettext.php: "1 okno", "2 okna" et "5 oken". –

Questions connexes