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

[debian-devel:13371] Re: xearth の国際化



くぼたです。

不具合を見付けました。

私の国際化パッチは、setlocale(LC_ALL, ""); を呼びますが、
そうすると、さまざまなところで影響が出ます。

すぐに気がつくのが、日付です。たとえば、
  LANG=ja_JP.eucJP xearth -label
とすると、地名が日本語になる以外に、日付を日本語で出そうと努力
している雰囲気が出ています。また、
  LANG=ko_KR.eucKR xearth -label
というふうに実行すると、ハングルで「月」にあたる「ウォル」の字が
出ます。

ところが、setlocale の影響はそれだけではありません。LC_NUMERIC という
カテゴリーがあって、これは一般的な数値の表現に影響します。
これが、リソースファイル中に現れる数値を読む際に悪さをするのです。
日本では、小数点は「.」ですが、ヨーロッパのさまざまな地域で「,」が
小数点として用いられます。リソースファイル中の数を読むのに sscanf() を
使っていますが、これが LC_NUMERIC に依存するので、たとえば
  LANG=hu_HU xearth
とすると、
> xearth: mag must be a float, not 1.0.
> xearth: starfreq must be a float, not 0.002.
> xearth: gamma must be a float, not 1.0.
> xearth 1.1: fatal - viewing magnification must be positive
というふうなエラーが出て止まってしまいます。


明日は出張で朝が早いので、このへんで。

---
久保田智広 Tomohiro KUBOTA <kubota@debian.org>
http://surfchem0.riken.go.jp/~kubota/
リニューアル中: "Introduction to I18N"
http://www.debian.org/doc/manuals/intro-i18n/