J-Pilot の日本語化で _()マクロにはまる。 [その他]
J-Pilot を使っていて前々から気になっていた点の一つに、
長い日付形式が正しく日本語化されていない点がある。
今日の日付が 「2005 3月 7」ってそんな表記は無いだろう。
そこでソースを見ながら調べてみていった。
最近のアプリを日本語化(正確には国際化)するには、gettextを使うらしい。
で、基本はソース中の文字列を _("mojiretu")のように _() マクロか N_()マクロ
で囲んでやり、必要な翻訳をpo ファイルに入れてやれば良いんだそうだ。
しかし、そんな感じで直していったものの、何故か日本語訳を
入れてやると起動時に SEGV るようになってしまった。
で、あれこれやってみた結果、こんな表記はダメだとわかった。
sprintf(str, _("this is a %s"), _(text1));
どうも gettext している文字列が入れ子になっているのはダメらしい。
て事でこの場合はこんな感じに書き直せば OK だった。
sprintf(str, _("this is a ")); strcat(str, _(text1));
これが分かるまで約1週間掛かった。
疲れた。。。
とりあえず patch 投げたら取り込んでもらえたみたいで一安心。
でも向こうの人からもやっぱり「なんでこんな風に書くの?」みたいに
聞かれてしまった。
やっぱり英語圏の人にはわかんないだろうな。
2005-03-07 22:51
nice!(0)
コメント(0)
トラックバック(0)
コメント 0