Я пытаюсь разобраться в i18n с Катализатором. Насколько я понял, существует два способа сделать перевод с помощью Perl: Maketext и Gettext . Однако у меня есть требование поддерживать формат gettext .po , поэтому в основном я использую gettext.
Теперь я нашел Catalyst :: Plugin :: I18n и, следовательно, Locale :: Maketext :: Lexicon, который делает то, что я хочу, большую часть времени. Однако он не генерирует правильные формы плюрализации, то есть правильно записывает msgid_plural
и msgstr[x]
в файл .pot . Вероятно, это происходит потому, что Maketext зависит от обозначения в скобках [quant,_1...]
и, следовательно, должно иметь такую же запись в переводе.
Еще одним решением может быть использование некоторого прямого порта gettext, такого как Locale :: Messages, однако это будет означать переписывание C :: P :: I18n.
Есть ли у кого-нибудь правильное решение этой проблемы, кроме переписывания нескольких модулей? Все, что сочетает в себе правильный gettext со всеми его функциями и Catalyst, подойдет.