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

[debian-users:14719] Re: japanese gimp



From: Tahara Yuusuke <m5021212@xxxxxxxxxxxx>
Subject: [debian-users:14693] Re: japanese gimp 
Date: Tue, 20 Apr 1999 11:46:14 +0900
Message-ID: <199904200246.LAA02529@xxxxxxxxxxxxxxxxxxxx>

山下だいすけです。

> Takuro> 未翻訳の部分もいくつかありますね。
> 
> 未翻訳の部分は,たとえば Tips のダイアログで,"Previous Tip" が日
> 本語化されてないですね.そこで,ja/LC_MESSAGES/gimp.mo から 
> gimp.po を取り出して "Previous Tip" を日本語に変更しようと思ったら,
> msgid のエントリがない.単純に付け加えるだけで良いのでしょうか?
> emacs の po モードになっていて,エントリを挿入できないように見えま
> す.
> 
> それにしても,ただ単純に英語の文(単語)を置き換えているだけだったら,
> 異義語の場合は困りますよね?

単に *.po ファイルにエントリを追加しても、翻訳は行なわれません。
なぜかというと...

# GUI な場合 gettext がどの様に利用されているか、
# まだ見たことがないのですが、おそらく sprintf の様な関数を
# 利用するときに gettext を使っていると思います。

    sprintf(buf, "Previous Tip");

こういう処理で gettext でメッセージカタログを使う場合、この部分で、

    sprintf(buf, gettext("Previous Tip"));

という様な記述をします。この時点で文字列が gettext() によって
各国語に変換されて buf にコピーされます。で、buf が表示される。
# 普通は、#define _(STRING) gettext(STRING) というようなマクロを
# つかって sprintf(buf, _("Previous Tip")); みたいにしますが。

こう云うソースを作成したあと xgettext というコマンドを使って、
翻訳対象文字列のテンプレートである *.pot ファイルを作成する事になります。
このコマンドは、上のような文字列を抽出してくれます。
これに訳をつけて、各国語の *.po ファイルを作成します。

msgid 項目にエントリが無いということは、上のような gettext 関数
が呼び出されていない(忘れている?)ということなので、
普通は、エントリを無理やり追加しても、日本語は出ません。

msgid に追加するなら、grep -r "Previous Tip" して、この文字列を
_( ) で囲んで、リビルドしましょう。


さらに、もっと色々なプログラムのメッセージを日本語化しようということなら
japo-ctl@xxxxxxxxxxx まで。

では。

    *-=-=-=-*  Daisuke Yamashita  *-=-=-=-*
              yamad@xxxxxxxxxxxxx
     http://village.infoweb.ne.jp/%7Edais/
    *=-=-=-=*                     *=-=-=-=*