[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gettext usage in perl (Re: [debian-devel:12672] Re: now debconf Japanized)



佐野@浜松です。

# doc@JP にも Cc:

In <20000712091209L.nabetani@xxxxxxxxxxxxxxxxxxxxxxxxxxx>,
  on "Wed, 12 Jul 2000 09:12:11 +0900',
   with "[debian-devel:12672] Re: now debconf Japanized",
 NABETANI Hidenobu <nabetani@xxxxxxxxxxxxxxxxxxxxxxxxxxx> さん wrote:

> 鍋谷です。
> 
> # メールが長くてすぐ気づきませんでした(^^;

すみません & ありがとうございます _o_

> > しか書いてないみたい。 perl script から gettext を使って *.po の
> > メッセージを切り替えて使う方法ってどうやるんでしょう ?
> 
> liblocale-gettext-perl パッケージが使えます。

やっと見ました。

  (qouted from /usr/lib/perl5/5.005/i386-linux/Locale/gettext.pm)

  =head1 SYNOPSIS

    use Locale::gettext;
    use POSIX;     # Needed for setlocale()

    setlocale(LC_MESSAGES, "");
    textdomain("my_program");

    print gettext("Welcome to my program"), "\n";
            # (printed in the local language)


なるほど、これを使えば perl のスクリプトの中から gettext を
使って現在の locale に対応したメッセージを出力できるという
わけですね。勉強になります。 _o_

 woody 版の debconf には既にこれが使われているんでしょうか ?
 (> 知っている人)

> Debian の管理スクリプトに Perl が結構多いので、時間があれば
> なんとか対応できないかと思っています。

さすがに /bin と /sbin の下には無いようですが、 /usr/sbin の
下には 30 個くらいありました。その中でも

 /usr/sbin/eximconfig:                   perl script text
 /usr/sbin/liloconfig:                   perl script text
 /usr/sbin/pppconfig:                    perl script text

このあたりの管理スクリプトは対話形式で使われることが多いだろうから、
各国語のメッセージが用意されているほうが嬉しいかもしれませんね。

と、思ったら既に pppconfig は gettextize されてる、、、、

最初のところに

# This hack exists so that the program can run in the absence of gettext
# or POSIX.

BEGIN {
  eval "use Locale::gettext";
  $no_gettext = $@;
  eval "use POSIX";
  if ($no_gettext || $@) {
    eval 'sub gettext($) { return $_[0]; }';
  }
  else {
    setlocale(LC_MESSAGES, "");
    textdomain("pppconfig");
  }
}

なんて書いてあって、メッセージを出力する部分は

sub usage() {
  die(gettext("Usage: pppconfig [--version] | [--help] | [[--dialog]\
 [--noname] | [providername]]\
\'--version\' prints the version. \'--help\' prints a help message.\
\'--dialog\' uses dialog instead of whiptail.  \'--noname\' forces
the provider name to be \'provider\'.  \'providername\' forces the
provider name to be \'providername\'.\n"));
}

sub help() {
  print "pppconfig $version
\n" ;
  print (gettext("pppconfig is an interactive, menu driven utility to help automate setting \
up a dial up ppp connection.  It currently supports PAP, CHAP, and chat \
authentication.  It uses the standard pppd configuration files.  It does \
not make a connection to your isp, it just configures your system so that \
you can do so with a utility such as pon.  It can detect your modem, and 
it can configure ppp for dynamic dns, multiple ISP's and demand dialing. \
\
Before running pppconfig you should know what sort of authentication your \
isp requires, the username and password that they want you to use, and the \
phone number.  If they require you to use chat authentication, you will \
also need to know the login and password prompts and any other prompts and \
responses required for login.  If you can\'t get this information from your \
isp you could try dialing in with minicom and working through the procedure \
until you get the garbage that indicates that ppp has started on the other \
end. \
\
Since pppconfig makes changes in system configuration files, you must be \
logged in as root or use sudo to run it. \
 \n"));
  usage();
}

とか (もちろん他の部分もたくさん) になっていて、メッセージファイルが
あれば使えるようになっているみたいです。たいしたもんだ、、、

誰か日本語のメッセージカタログ作って本当に表示できるかどうか
試してもらえませんか ? もしすぐに日本語 OK になるようだったら
ついでに BTS に送ってもらえれば woody からは pppconfig でも
日本語表示になりますね。(potato-jp なら追加 OK か ?)

-- 
     # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
    <kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)