[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/
*=-=-=-=* *=-=-=-=*