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

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



佐野@浜松です。

In <20000720065401V.nabetani@xxxxxxxxxxxxxxxxxxxxxxxxxxx>,
 on "Thu, 20 Jul 2000 06:54:05 +0900",
 with "Re: gettext usage in perl (Re: [debian-devel:12672] Re: nowdebconf Japanized)",
  NABETANI Hidenobu <nabetani@xxxxxxxxxxxxxxxxxxxxxxxxxxx> さん wrote:

御苦労さまでした。ちょっと引用の順番を前後します。

> 作業しました。翻訳状況は 50% 程度ですが、最低限必要な部分は
> 翻訳済です。

> チェックをお願いします。それでは、お試しください

頂いた pppconfig.po.gz を gzip -d で展開して
 msgfmt pppconfig.po して作成した messages を root で
 /usr/share/locale/ja/LC_MESSAGES/pppconfig.mo として
コピーしました。 

 (もちろん鍋谷さんは当然ご承知でしょうけれど、他の人が確認する
  時のために一応手順を書いておいたほうが良いかと思いまして)

> (liblocale-gettext-perl パッケージが必要です)。

これは入ってます。いったん test という名前でプロバイダ設定を
作成、追加したり、その項目を削除したりしてみました。たしかに
日本語が表示されています。なるほど、便利なものですね。

一応 pppconfig には drawbackl/falesafe があるみたいなので、
たぶん liblocale-gettext-perl が存在しない場合には単に
日本語メッセージが無視されて英語のメッセージが表示される
だけ (つまり動作上の不具合などは発生しないはず) と思いますが、
念のために誰か確認してくれると良いですね。

> 残る問題は、 

> o msgid に「$variable」なものが埋め込まれていると日本語に変換されない。

  gettext("\" Authentication Method for $provider\""), 6,
  '"PAP"',  gettext("\"Peer Authentication Protocol\""),
  '"Chat"', gettext("\"Use \"chat\" for login:/password: authentication\""),
  '"CHAP"', gettext("\"Crypto Handshake Auth Protocol\""),
  '" "',    '" "' );
の最初の gettext("\" Authentication Method for $provider\""),
とかですね。

例えば

    /^method/ && do {
      # menu of connection methods
      my $authmethod = uc($$ispauth);
      my $tempbackstring = gettext("\" Authentication Method for \"") . $provider;
      @menuvar = (gettext("\"\
Please select the authentication method for this connection.  PAP is the \
method most often used in Windows 95, so if your ISP supports the NT or \
Win95 dial up client, try PAP.  The method is now set to $authmethod.\""),
$tempbackstring, 6,
'"PAP"',  gettext("\"Peer Authentication Protocol\""),
'"Chat"', gettext("\"Use \"chat\" for login:/password: authentication\""),
'"CHAP"', gettext("\"Crypto Handshake Auth Protocol\""),
'" "',    '" "' );
      last SWITCH;

みたいにして、$variable と gettext message を分離して、
使う時に別の変数で合わせてから持ってくる、という方法は
ありますが、(今やってみたら一応動いた) これだと語順の
変更はできませんね。

> o gettext が Perl に対応してないので、ちょっと面倒・・・

 xgettext を C 以外の言語にも対応させようというのは
 gettext の TODO として挙げてあるみたいですね。

いったん、前処理用のツールとか作ってしまうことができれば
あとはそれを利用すればいいのでしょうけど。

とりあえず、perl スクリプトでも gettext でメッセージの
変更ができるということが確認できたのは収穫でした。 :)

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