[Moscow.pm] Мультиязычный сайт на Mojo
Vladimir Lettiev
thecrux на gmail.com
Чт Дек 13 04:04:40 PST 2012
On Thu, Dec 13, 2012 at 12:04:14PM +0300, Иван Бессарабов wrote:
> Locale::Maketext::Extract (то что использует gettext.pl для парсинга) не
> умеет
> доставать pgettext() и ngettext(), xgettext (который на c) умеет pgettext,
> ngettext() и еще кучу всего, но не умеет работать с template toolkit.
Чтобы обучить xgettext доставать нужные имена функций из шаблонов, надо
использовать параметр --keyword.
Например, у вас в шаблонах с расширением .tt используются такие имена функций:
__() - соответствует gettext()
__p() - соответствует pgettext()
__n() - соответствует ngettext()
__np() - соответствует npgettext()
Генерим файл переводов:
$ xgettext -L perl \
--keyword=__:1 --keyword=__p:1c,2 --keyword=__n:1,2 --keyword=__np:1c,2,3 \
*.tt \
-o output.pot
Здесь запись '--keyword=__:1' означает, что имя функции __ и 1-ый
аргумент - ключ.
А запись '--keyword=__np:1c,2,3' означает имя функции __np, 1-ый аргумент -
это контекст, а 2-ой и 3-ий аргументы - ключи.
Более того можно использовать одно и тоже имя для всех функций, только
использовать разное количество параметров, чтобы отличать их действие:
--keyword=__:1,1t --keyword=__:1c,2,2t ...
где 1t, 2t означают количество передаваемых параметров функции __()
--
Vladimir Lettiev aka crux ✉ theCrux на gmail.com
Подробная информация о списке рассылки Moscow-pm