Перловый gettext

Jul 02, 2009 19:14

  1. Держать по несколько версий одного и того же скрипта, отличающихся лишь выводимыми строками - неправильно. Значит, надо разобраться с интернационализацией.
  2. Пытаюсь понять, как использовать gettext в перлосриптах. Пока не совсем понятно. Толковую доку на русском не нагуглил, пытаюсь понять на аглицком.
  3. Глядя в мануал и творчески применяя напильник, сотворил скрипт (тут приведена далеко не первая итерация):
    #!/usr/bin/perl -w use strict; use Locale::gettext; use POSIX; setlocale( LC_MESSAGES, '' ); # OO interface my $d = Locale::gettext->domain_raw( 'man_1' ); $d->dir( 'i18n' ); # __ is alias for $d->get sub __ ($) { $d->get( shift ) } print __ 'Hello world!', "\n"; print gettext( 'Who they are?!' ), "\n"; print $d->get( 'Goodbye world!' ), "\n";
    добыл список строк командой xgettext, добавил к нему перевод (можно вручную, можно задействовать kbabel), скомпилировал при помощи msgfmt, сложил полученный перевод в ./i18n/ru_RU.UTF-8/LC_MESSAGES, подвожу итоги:
    • gettext обнаруживается xgettext'ом, но не работает (в мануале: Perl programs should use the object interface.)
    • $d->get работает, но отвратительно выглядит (что обходится вводом псевдонима - функции __) и не обнаруживается xgettext'ом
    • __ работает, выглядит хорошо, но тоже не обнаруживается xgettext'ом.
  4. Исходя из имеющейся ситуации самым правильным, наверное, будет научить xgettext находить в исходнике те строки, перед которыми стоит __
  5. Пошёл читать мануал дальше...
upd/19:30: xgettext можно научить понимать разные ключевые слова: запущенный с ключами -k__ -kget, он всё находит. Завтра попробую применить на практике.

gettext, man, программизм, perl, напильник, перевод

Previous post Next post
Up