[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