[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