- Держать по несколько версий одного и того же скрипта, отличающихся лишь выводимыми строками - неправильно. Значит, надо разобраться с интернационализацией.
- Пытаюсь понять, как использовать gettext в перлосриптах. Пока не совсем понятно. Толковую доку на русском не нагуглил, пытаюсь понять на аглицком.
- Глядя в мануал и творчески применяя напильник, сотворил скрипт (тут приведена далеко не первая итерация):
#!/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'ом.
- Исходя из имеющейся ситуации самым правильным, наверное, будет научить xgettext находить в исходнике те строки, перед которыми стоит __
- Пошёл читать мануал дальше...
upd/19:30: xgettext можно научить понимать разные ключевые слова: запущенный с ключами -k__ -kget, он всё находит. Завтра попробую применить на практике.