Как сделать, чтобы PoEdit правильно анализировал пользовательскую реализацию ngettext? - PullRequest
5 голосов
/ 03 августа 2010

Я кодировал оболочку 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 в настройки проекта, но оно не учитывает множественные варианты.Я также заметил, что PoEdit имеет только _, gettext и gettext_noop в качестве клавиш по умолчанию для выбора, нет никаких ссылок на функции ngettext, dngettext или dcngettext, но он можетвсе еще правильно принимает вызовы ngettext ... Это заставляет меня задуматься, если PoEdit жестко закодировал ключевое слово ngettext - это было бы очень печально.

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

Ответы [ 3 ]

9 голосов
/ 03 августа 2010

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

_e:1,2

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

3 голосов
/ 20 июня 2011

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

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

до параметров каталога

0 голосов
/ 03 апреля 2011

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

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

nplurals=2; plural=n != 1;

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

...