SSブログ

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 投げたら取り込んでもらえたみたいで一安心。
でも向こうの人からもやっぱり「なんでこんな風に書くの?」みたいに
聞かれてしまった。

やっぱり英語圏の人にはわかんないだろうな。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。