From: matz@... (Yukihiro Matsumoto) Date: 2000-05-16T13:07:15+09:00 Subject: [ruby-list:22608] Re: M17N/I18N for Ruby まつもと ゆきひろです In message "[ruby-list:22606] Re: M17N/I18N for Ruby" on 00/05/16, Takaaki Higuchi writes: |ところで、Li18nuxで国際化の枠組で検討する中で、Javaとかperlとか挙げていて、 |「rubyは?」と聞かれて「あれは日本で開発してるからだいじょうぶでしょう」と |いいかげんな答えをしてしまったのは私ですが、高橋さんがまとめられた内容を |読むとまずかったかな? うーん、I18Nという観点からはかなりマズいでしょうね。 Rubyは日本語L10N(+α)は行ってますが、I18Nは行っていません。 ましてやM17Nなど。関心と興味はあるんですけどね。 |実際のruby国際化推進作業の手助けになるかどうかは別として、Li18nux 2000は |世界中の国際化関係者が読むドキュメントだから、その中からrubyのBiDi対応や |る人とかがみつかるかもしれないと言う希望をこめて (^^;) そうですねえ。お願いします。 ======================== RubyのI18Nに関して私のぼんやりと考えているところは以下の通り です。なんだか選択肢ばかりでなにも決まってませんね。 * 国際化すべき点は以下の通りであろう + プログラムのエンコーディング + データのエンコーディング + 入力のエンコーディング(コード変換) + 出力のエンコーディング(コード変換、メッセージカタログ) * 実はRubyではエンコーディングだけを扱いたい でも無理だろうな。 * EUC/SJIS/UTF-8対応は今まで通りに動いて欲しい 効率もできるだけ下がらずに * それ以外のエンコーディングについてどうすべきか Ruby or 拡張ライブラリで定義できるようにする? * 方針は大きく分けるとふたつ、どちらを選ぶか + 内部コードへの変換 + バイナリデータ+エンコーディング情報 前者の方が楽? 世の中の主流? 変換のコストは馬鹿にできないような気が * プログラムのエンコーディングを知る方法はどうしよう + コンパイル時の指定+-Kオプションによる指定(現状) 複数ファイルのプログラムでのエンコーディング混在に対応 できない + 自動検出 正しい検出はちょっと無理っぽい。それでもよいのか + pragma プログラム中で明示的にエンコーディングを指定する「なにか」 * ファイルのエンコーディングを知る方法はどうしよう + 明示的な変換とエンコーディングの指定(現状) + 自動検出(+内部コードへの変換?) バイナリデータを扱うときはどうするのか * localeとcharset 正規表現の\s, \d, [:lower:]など String#downcaseなど その他、collateなど + ASCIIの範囲内だけ取り扱う(現状?) 実用上問題ない + localeを使う a) インタプリタがsetlocaleを呼ぶ カレントロケールをどうやって得るのか 環境変数? b) 拡張ライブラリでsetlocaleを呼ぶ + localeオブジェクトを用意する Cのlocaleでどうやって実装するんだ C++のlocaleならできるか。うーむ。 * メッセージカタログ(gettext) + 拡張ライブラリで対応(gettext用メソッドの追加) + 拡張ライブラリで対応(printfなどを置き換える) + 本体への組み込み(文字列リテラルをメッセージ置換とか)