Как заставить PoEdit правильно разобрать пользовательскую реализацию «ngettext»?

Я закодировал оболочку gettext, что делает весь процесс l10n немного более простым, но почему-то я не могу заставить PoEdit правильно идентифицировать и анализировать множественные вызовы версии для функции. Это то, что я изначально имел:

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

Но это не работает вообще, PoEdit ничего не выбирает. Я также пробовал:

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

На этот раз PoEdit ловит %d house но не множественную форму %d houses , однако, если я попытаюсь точно так же, но с вызовом ngettext() он отлично работает, как единичные, так и множественные формы идентифицируются:

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

Я правильно (?) _e ключевое слово _e к настройкам проекта, но не принимает множественные варианты. Я также заметил, что в PoEdit есть только _ , gettext и gettext_noop качестве gettext_noop по умолчанию, нет никакой ссылки на функции ngettext , dngettext или dcngettext но он все равно может правильно подобрать вызовы ngettext … Это делает мне интересно, если PoEdit жестко закодировал ключевое слово ngettext – это было бы очень грустно.

Во всяком случае, есть ли способ сделать PoEdit (или любое другое подобное приложение), правильно разобрать пользовательские функции?

Я нашел решение, ключевое слово должно быть определено следующим выражением:

 _e:1,2 

Источник: http://osdir.com/ml/editors.poedit.user/2008-05/msg00012.html

На самом деле вам нужно сделать обе вещи выше.

  • Определите ключевое слово, подобное '_e: 1,2' AND
  • Добавить множественную форму nplurals = 2; множественное число = n! = 1;

к настройкам каталога

Вот еще одно решение, его очень легко настроить. Просто выполните следующие действия:

Меню: Каталог -> Настройки откроют диалог настроек. На вкладке «Информация о проекте» вы найдете « Плюральные формы » внизу. Просто скопируйте и вставьте следующую строку в это поле:

 nplurals=2; plural=n != 1; 

Это прекрасно устранит проблему. Мне даже не пришлось пересказывать источники; правильные линии автоматически появлялись в PoEditer.