Я закодировал оболочку 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.