Я закодировал оболочку 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
На самом деле вам нужно сделать обе вещи выше.
к настройкам каталога
Вот еще одно решение, его очень легко настроить. Просто выполните следующие действия:
Меню: Каталог -> Настройки откроют диалог настроек. На вкладке «Информация о проекте» вы найдете « Плюральные формы » внизу. Просто скопируйте и вставьте следующую строку в это поле:
nplurals=2; plural=n != 1;
Это прекрасно устранит проблему. Мне даже не пришлось пересказывать источники; правильные линии автоматически появлялись в PoEditer.