自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

December 04, 2008 [長年日記]

[Ruby] Ruby-Locale-0.9.0 / Ruby-Locale for Ruby on Rails-0.1.0

久しぶりに新しいライブラリをリリースしました(新しくない?)。

いや、一からインプリしなおしたから新しいっすよ。

と言うのは置いておいて。

Ruby-Locale-0.9.0

Ruby-Localeはローカライゼーションのための汎用的な機能を持つライブラリです。Rubyが動作するあらゆる環境、あらゆるプログラム(GUI, WWW, Library)で動作し、また、現在メジャーなロケールIDの標準形式をサポートすることで、他のL10n/I18nライブラリのハブとなることを目的としています。

  • ロケールID(言語タグ)の管理
    スレッドセーフ。スレッドごとのロケールID管理
  • 複数の言語タグと相互変換のサポート
    IETF(RFC4646,3066)/CLDR/POSIX/Win32/Javaのタグをサポートしています。
  • 適切なロケールIDの自動取得
    POSIX(Unix/Linux/*BSD), Win32, JRuby, CGI.
  • リソース
    ISO 639-3の言語情報, ISO 3166の地域情報
  • Ruby 1.8.7, Ruby 1.9.1, JRuby 1.1.4をサポート
    Win32とLinux上でテストしています。
  • Ruby-Locale for Ruby on Rails-0.1.0

    Ruby-Locale for Ruby on Rails-0.1.0はRuby-Localeを使ってRuby on Rails 2.2のRails i18nを強力にサポートするものです。

  • クライアントロケールの自動取得
    候補となる複数のロケールの取得
  • Localized Routes
  • Localized Action/Fragment cache
  • Localized view template files
  • サンプルのサイトはこちら。説明・インストール方法等はこちらからどうぞ。

    遅ればせながらRails i18nに参加。ってかせっかく投稿したのに反映されないのはなぜ!?(汗)

    本日のツッコミ(全2件) [ツッコミを入れる]

    さく [あちら製MLって投稿者には配送されないシステムが結構ありますからソレじゃないですかね。]

    むとう [なんか、朝起きてみたら反映されてました。時間差があるんですかねー。]


    December 07, 2008 [長年日記]

    [Rails] Rails2.2のtメソッド(Simple backend)

    Rails2.2のtメソッドで、<%= t :hello_world %>とし、しかるべきところにja.ymlを置くと、"こんにちわ世界"みたいに表示できるのはわかった。でも、locale_railsを使って(使わなくてもいいけど)サポートされていない(ymlファイルで翻訳されていない)ロケール(例:zh-CN)でアクセスすると"zh-CN, hello_world"と、頭にロケール名がついてしまう。

    もし、ローカライズに失敗した際のデフォルトで表示したい文字列があった場合は、<%= t :hello_world, :default => "Hello World"%>とすると"Hello World"が表示される。

    ・・・って:defaultなしでは他の言語(en等)にフォールバックされないのかな・・・。

    これ、Simple backend使って真面目に国際化しようとするとすべてのtメソッドに:defaultをつけないといろんなところでロケール名+シンボル名が表示されることになるんだけど・・・。何か回避策あるの?

    #他のbackend使えってことか!?


    December 09, 2008 [長年日記]

    [Rails] Rails2.2のtメソッド(Simple backend) (2)

    先日のRails2.2のtメソッド(Simple backend)なんだけど・・・・何言っちゃってんだオレ。ということで訂正。

    ってかアホ過ぎる。

    Ruby-Localeが提供するI18n.supported_localesを使うとフォールバックが可能だった。ホント何のために実装したんだって感じでアホだ、オレ。

    具体的には、locale_railsの

    I18n.supported_locales = ["ja", "en"]

    という記述をconfig/initializers/locale.rb辺りに記述すれば、

    <%= t :hello_world %>

    とするだけで、サポートされていないロケールの場合、"en"にフォールバックできる。なので、Simpleバックエンドでも一応は大丈夫。

    前回のやつは通常のRails i18nで、今日の説明はそれに対するRuby-Localeのメリットと考えてもらえるとよいと思う(とってつけたような・・・(苦笑))。

    言い訳になるけど、言語によって翻訳されていない文字列が部分的に存在すると、その部分については前回のように"zh-CN, hello_world"と、頭にロケール名がついてしまう。つまりサポートする言語はすべてのメッセージが翻訳されていなければならない・・・って今度は合ってるかな?(汗)



    December 27, 2008 [長年日記]

    [Ruby] クラス名重要

    今、Ruby-GetText-Packageのリファクタリング中。

    お恥ずかしながら、自分で作ったクラス名が実際に提供している機能からするとしっくりこなくなってきてるところがあったりして

    「オレは一体このクラスに何をさせたかったんだっけ?」

    という状況。

    そこで、クラス名をもう一度考え直すところから始めてるんだけど、適切な名前が見つかった時は、「あぁ、こういうことをさせたかったのか。」と自分自身でそのクラスに持たせるべき機能が明確になる。そんな時は急に先が開けるような気がして楽しい。

    #実装前にクラス図書いて整理する?いや、そりゃそうなんですが・・・(汗)

    どうでもいいけどRuby-GetText-Packageって2001年末に最初のリリースしてるのね。もう、7年になるのかぁ。