[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:10360] msgmerge i18n (Re: [gnome] Re: [japo:00021] Re: textutils)
岡@奈良先端です。
# Replyはそれぞれのメーリングリストだけにお願いします。
gettextのmsgmergeを実験的に国際化してみました。
http://www.aist-nara.ac.jp/~mitsu-o/junkbox/message.c.diff-2
At Sat, 11 Sep 1999 05:53:09 +0900,
Mitsuru Oka <oka@debian.or.jp> wrote:
> At Sat, 11 Sep 1999 00:23:49 +0900 (JST),
> a-higuti@xxxxxxxxxxxxxxxxxxxxxx (Akira Higuchi) wrote:
> >
> > 樋口です。たくさんCc:付いてるけどgnomeだけに投げます。
> > なんにせよ、しらさきさんも指摘した(し、僕も昔言ったような気がする)よう
> > に、現在のロカールではなくてpoファイルのcharsetにあわせてsetlocaleする
> > なり、iconvを使うなりする必要があります。
> >
> > glibc-2.1で動けばいいのであれば、iconv()でpoファイルのcharsetからUCS4に
> > 変換してやると実質的にmbstowcs()と同じことができるので楽勝です。
>
> なるほど、setlocale+mbstowcsでよさそうです。
1. 該当するロケールにsetlocaleしてから、
ワイドキャラクタに変換してから処理する方法にしました。
> > >その他、日本語は単語の途中で改行が入っても許されますが、英語
> > >やヨーロッパの言語はそうではありません。これをどう機械的に判
> > >断するかも悩み所です。
> >
> > 同様のことを別のメーリングリストで質問したことがありますが、あまり
> > うまい方法はなさそうです。唯一使えそうなのは、
> > !(iswspace(wc) || iswalnum(wc) || iswcntrl(wc))
> > ならば表意文字と見做してしまう、という方法ですが、これの正当性に
> > ついては全くわかりません。
>
> ちょっと試してみました。なるほど確かに日本語では機能しています。
> 他に方法が無いのであればこれを用いて、問題が出た時に修正する、
> というアプローチでよさそうです。
2. テキストの分割方法。アルファベットやヨーロッパの文字は
iswalnumで判断できることから、
if (! iswalnum (*bp))
で分割点を判断することにしました(まだ大雑把かもしれません)。
> At Fri, 10 Sep 1999 23:17:52 +0900,
> SHIRASAKI Yasuhiro <yasuhiro@xxxxxxxxxxxxxxxx> wrote:
> >
> > make update-po する際には locale 固定で全 *.po を扱う事になるので、
> > それでは判定できません。EUC-JPを使わない時はパッチの部分をはずすために、
> > ja* が引数にあるかどうか見るとかでどうでしょうか。
こちらは、ソースコードを少々いじる必要がありそうなので、まだ
対応していません。今のところ環境変数LANGを調べていますので、
それぞれの言語圏のLANGに設定してからmsgmergeして下さい。
何かバグが噴出したら個人宛で教えて下さい。
locale判定対応やバグフィックスは、次に時間が取れた時に行いま
すので暫くだんまりです。
# やっていただける方がいらっしゃるようでしたらお願いします。
--
岡 充 (Mitsuru Oka)
奈良先端科学技術大学院大学