[Moscow.pm] Мультиязычный сайт на Mojo
Свистунов Сергей
sergei-svistunov на yandex.ru
Чт Дек 13 04:25:56 PST 2012
xgettext не умеет работать с шаблонами TT:
$ cat test.tt2
[% gettext('test') %]
'Hello [% gettext('world') %]'
$ xgettext -Lperl test.tt2 -o-
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT
HOLDER
# This file is distributed under the same license as the PACKAGE
package.
# FIRST AUTHOR <EMAIL на ADDRESS>,
YEAR.
#
#,
fuzzy
msgid
""
msgstr
""
"Project-Id-Version: PACKAGE
VERSION\n"
"Report-Msgid-Bugs-To:
\n"
"POT-Creation-Date: 2012-12-13
16:23+0400\n"
"PO-Revision-Date: YEAR-MO-DA
HO:MI+ZONE\n"
"Last-Translator: FULL NAME
<EMAIL на ADDRESS>\n"
"Language-Team: LANGUAGE
<LL на li.org>\n"
"Language:
\n"
"MIME-Version:
1.0\n"
"Content-Type: text/plain;
charset=CHARSET\n"
"Content-Transfer-Encoding:
8bit\n"
#:
test.tt2:1
msgid
"test"
msgstr ""
13.12.2012 16:04, Vladimir Lettiev пишет:
> 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 означают количество передаваемых параметров функции __()
>
Подробная информация о списке рассылки Moscow-pm