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

[debian-devel:15647] Debconf 国際化



久保田です。

以前からの懸案でしたが、Debconf は日本語訳されたテンプレートを
うまく表示できないことがあります。特に、ja_JP.UTF-8 ロケール
では使いものになりません。分析が以下のページにあります。

http://www.debian.or.jp/~kubota/mojibake/debconf

そこで、Perl の標準モジュールである Text::Wrap の代替品を実装
し、それを使うようにパッチを書いてみました。

 o Debconf の内部処理は現ロケールのエンコーディングと
   なっています。これは、libi18n-text-iconv パッケージ
   なしでも動作しなければならないためですが、それに合わせて、
   本モジュールも現ロケールのエンコーディングでの動作と
   なっています。
 o 改行文字が複数連続するときは、その改行をすべて意識します。
   (ふだんは単に単語の境界としてしか認識しない)。また、
   行頭がスペースのときも、その改行を意識するようになって
   います。(これは拡張ではなく、必要な動作です)。
 o マルチバイト文字を認識するようになっています。これは、
   文字数やカラム数をきちんと数えるための前提でありますし、
   同時に、文字の途中で改行しないということも意味します。
 o 文字幅を認識するようになっています。EUC-*, GB-*, Big5*
   エンコーディングについては2バイト文字は2カラム決め打ち、
   UTF-8 については Markus Kuhn の wcwidth() 実装をもとに
   結合文字と全角文字に対応させました。
 o 日本語と中国語については、スペース以外の場所でも改行を
   許すようになっています。これによって、現在行われている
   ように、テンプレートを和訳するときに改行位置にわざと
   スペースを入れていくといったことが不要になると同時に、
   さまざまなカラム幅のターミナルでも正しく動作するように
   なるはずです。ただし、禁則処理はしていません。

とりあえず、Dialog と Readline インターフェースの動作を改善
しました。Editor と Gnome については、まだです。

いちおうのテストはしたつもりですが、Text::Wrap の動作は複雑なので、
なにか不具合があるかもしれません。とりあえずはここでテストを
してもらって、それから debian-i18n@org または BTS で議論しよう
と思っています。

というわけで、動作テストをお願いします。ja_JP.eucJP、ja_JP.UTF-8
ロケールで、Dialog および Readline の各インターフェースを
試してみてください。また、余裕があれば日本語以外でも試して
もらえれば幸いです。

---
久保田智広 Tomohiro KUBOTA <kubota@debian.org>
http://www.debian.or.jp/~kubota/

Attachment: DEBCONF-I18N-6.diff.gz
Description: Binary data