Index: [Article Count Order] [Thread]

Date:  Thu, 24 Jun 2004 17:05:49 +0900
From:  Kiichiro NAKA <knaka (at mark) turbolinux.co.jp>
Subject:  [coba-o:00675] Re: moファイルからpoファイルの作成
To:  coba-o (at mark) open.cobaltqube.org
Cc:  knaka (at mark) turbolinux.co.jp
Message-Id:  <20040624080549.GA22234 (at mark) mail.turbolinux.co.jp>
In-Reply-To:  <1088114451.5472.20.camel (at mark) bq-test.localdomain>
References:  <1088114451.5472.20.camel (at mark) bq-test.localdomain>
X-Mail-Count: 00675

Kiichiro@ターボリナックスです。

On Thu, Jun 24, 2004 at 03:00:51PM -0700, Ikeda Takuya wrote:
> こんにちは、はじめまして。
> ふとしたきっかけで、Blue Quartzをさわることになり、
> 四苦八苦している、池田と申します。

どうもこんにちは。私もふとしたきっかけで BlueQuartzをさわることになり、
四苦八苦しています(笑)。

> 実は、ここ数日moファイルからpoファイルの作成をしようと、
> あれこれためしているのですが、なかなか出来ず、
> インターネットで調べてもなかなか情報がみつからず、
> 思い切って、メーリングリストに投稿することにした次第です。

私も試してました。過去の RaQ/Qube 向けアプリだと mo が SJIS だったので、
自動変換できないかなー、と思っていたのと、BlueQuartz だと中文 po が壊
れているので Qube3 からサルベージしようかなー、という二点で、ちょっと
調べてました。

> 調べている途中で、メッセージを大阪弁にしようという内容の
> スライドを見つけ、それを参考にして、
> msgunfmtコマンドで、/usr/share/local/ja/LC_MESSAGESにある
> base-*.moファイルからpoファイルを作成しようとしたのですが、
> 「msgunfmt: 不正な複数バイトのシーケンス」と出力され、
> ほとんど変換できませんでした。(一部英語の部分は変換できた様子です。)

たとえば "msgunfmt /usr/share/locale/ja/LC_MESSAGES/libc.mo" とかやる
と、ヘッダ部に "Content-Type: text/plain; charset=EUC-JP\n" などと書い
てあって、msgunfmt はこれに基づいて文字コード変換を行ないます。でも、
これがないと、"ASCII" 決めうちになります。で、BlueQuartz の po にはこ
のヘッダがないので、ASCII(7 ビット?)で iconv 変換しようとして、"不
正な複数バイトのシーケンス" になります。

> このメーリングリストの過去ログによると、Blue Quartzのメッセージファイルは、
> eucの文字コードで作成されているらしいので、環境変数LANGにja_JP.eucjpなどと
> 設定してみたのですが、そのようなことでは対応できないようです。

キャラクタセット名は、環境変数ではなく mo からとるからですね。

gettext*/src/write-po.c:message_list_print() でキャラクタセット名を抽
出していますので、このへんをホゲって、コマンドラインオプションや環境変
数で上書きできるようにすると便利だろうなと思います。

あと、むりやりな方法としては、以下のようなのもアリでしょうか(クォート
のエスケープとかしてないのでインチキですが)。

msgunfmt /usr/share/locale/en/LC_MESSAGES/base-am.mo | sed -n -e 's/^msgid *"\(.*\)"$/\1/p' | while read msgid; do echo "msgid \"$msgid\""; echo -n "msgstr \""; LC_MESSAGES=ja_JP.eucJP gettext base-am "$msgid"; echo "\""; echo; done

TLAS1 環境では、それでも、"en" ロケールですらいくつか "不正な複数バイ
トのシーケンス" が出るのがナゾです。あとで見ときます。

では。

-- 
  _ _
 -@-@  # May the SOURCE be with You!
  ,_)  Kiichiro NAKA <knaka (at mark) turbolinux.co.jp>
  /<'  http://bazaar.turbolinux.co.jp/~knaka/