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

[debian-devel:00388] Re: How to use gettext (Re: dpkg_1.4.0.5-jp uploaded)



やなぎはらです。

yosshy>  吉山@神戸大です。
yosshy> 
yosshy> + 仕事上 SVR4 関係の gettext は良く分かるんですが、GNU のは、
yosshy> + ちょっと変わっていますね。
yosshy> + 
yosshy> + ちょっと、textutils パッケージのソースを覗いてみたら、つぎのような事が
yosshy> + わかりました。
yosshy> 	(中略)
yosshy> + gettext に関する詳しい説明、GNU utilities での使用例などは
yosshy> + gettext パッケージについています。ドキュメントはパッケージの
yosshy> + インストール後、info で参照できます。
yosshy> + ほとんどダイジェストのような説明ですが、参考になるでしょうか?
yosshy> 
yosshy>  もう、感謝感激です!。
yosshy>  親切に説明して頂きまして、本当にありがとうございます。_(_)_ 早速
yosshy> プリントアウトして家に持って帰ります。

いや〜、参考になったようで、よかったです。
ただ、私が会社で使っている Bo 環境の gettext_0.10.26-0 パッケージの
libintl.a はシンボルがないと怒られてしまいました。

仕方がないので、お手軽にtextutilsパッケージのソースをmakeして出来上がっ
たライブラリを使用しました。まぁ、gettext のパッケージには、ライブラリ
を作成するためのソースが/usr/share/gettext/intlに一式入っているので、
これをdpkgのソースに取り込んでしまえばOKだと思います。

その時は、configure.in をちょっといじる必要があるかも知れません。

intl 配下のソースは、configure で Makefile を作成する事を前提にしてい
るからです。

yosshy>  概念的には、私が今やっている日本語化の延長でいけそうです。近い内に
yosshy> gettext 化した dpkg を用意できると思います。(^-^ 

よろしくお願い致します。
メッセージだけの日本語化なら結構できると思います。

yosshy> # 何せ、sharutilsのソースを見たのですが、どうやっていいものかほとんど
yosshy> # 参考にならなかったもので…)

info を見ると、 GNU Utility では、
textdomain() とかに渡す引数(PACKAGE, LOCALEDIR)は、
コンパイルオプション -DPACKAGE=\"...\" -DLOCALEDIR=\"...\" という形で
定義し、gettext() は、_() で 記述するようにして、

#if ENABLE_NLS
# define _(Text) gettext (Text)
#else
# define bindtextdomain(Domain, Directory) /* empty */
# define textdomain(Domain) /* empty */
# define _(Text) Text
#endif

というようにすると書いてありました。

yosshy>  それはそうと、一箇所質問です。テキスト記述ファイルの "" で囲んだ部分
yosshy> は特に場所を指定する必要はないのでしょうか?説明を見る限りでは、オリジ
yosshy> ナルが msgid で指定されているだけで、勝手にツールがパターンマッチング
yosshy> して適当にやってくれるように見えましたが…

msgfmt がメッセージファイルの先頭にINDEX部分を作成してくれます。
gettext()がINDEX部分を用いてパターンマッチングし、実際表示べき文字列の
位置をとりだすようになっているようです。

もし、該当するメッセージがなければ gettext() で書かれた文字列がそのま
ま表示されるはずです。

SVR4 では、gettext の引数にメッセージ番号を指定します。
メッセージファイルは、1行(改行まで)1メッセージという感じで記述し、
gettext の引数のメッセージ番号と行数が対応するようになります。
SVR4 でも、mkmsgs というコマンドで、テキスト形式のメッセージファ
イルをINDEX付きのバイナリファイルに変換します。

まぁ、雰囲気は似ていますが、GNUの実装の方がいいですね。
SVR4 では、メッセージファイルの行がずれるととっても悲惨な事になります
から。

yosshy> # きちんとドキュメントを読めば良いのでしょうね、きっと。

#ええ、たぶん... (^^;

yosshy>   ... という訳で、期待して待っていて下さい。(^-^

はい!

yosshy>  ちなみに、libc-5.4.17 が出ましたね。売りが Locale という事ですが、
yosshy> 型の定義はマトモになっていても、実は只単にキャストしているだけという、
yosshy> 未完成な実装になっています。さしあたって、 mbtowc(), wctomb(),
yosshy> mbstowcs(), wcstombs() などの関数で、日本の JIS, EUC, SJIS 等をすぐに
yosshy> 使いたい方はおられますか?(今なら比較的楽に実装できます)どれぐらい
yosshy> 需要があるか知りたいのですが…

Bo (Debian-1.3)では、libc は 5.4.17 になっています。
Rex(1.2.x) では、5.4.13 ですよね。

libc のバージョンが違ってしまっているので、パッケージ作成が
面倒な事になっています。(あ、まえから言ってましたよね。)

#会社 Bo (超最新の追っかけ)
#自宅 Bo (超最新の追っかけ)
#現在、純粋な Rex 環境の構築を 自宅で行う *予定* です。


---------------
話が、ちょっと変わってしまうのですが、
Debian-1.3 では、binary-i386 配下がちょっと変わってしまいした。
あらたに、interpreters, libs, otherosfs, utils, web サブディレクトリが
加わり、既に登録済のパッケージも大きく置き場所が変わってしまいした。

で、ftp.linux.or.jp の jp-devel 配下ですが、
今提出されている unstable ディレクトリを Debian-1.2-jp とかに
変更し、unstable というのはなくしてしまいましょう。

まだ、本家にcontribしたパッケージはありませんが、
もし、contrib するとすると、対象は Bo になりますから、
本家にcontribしたものが出て来れば、unstable ないし、bo-jp と
いうディレクトリを構築すると言う事でどうでしょうか?

+---------------------------------------------------------+
 Yoshiaki Yanagihara		E-mail: yochi@xxxxxxxxxxx           
					yosiaki@debian.org
 Debian JP Project
 [Japanese] http://www.linux.or.jp/~yochi/debian-jp.html
 [English ] http://www.linux.or.jp/~yochi/debian-jp-e.html