2009-02-22
■[Ruby on Rails]DateHelperJa 0.2 リリース
概要
日付を表示する datetime_select, date_select を日本語化するプラグインである DateHelperJa。2007年4月に Rails 1.2.x 向けとして、最初にリリースした。その後、一部の人々の間で細々と使われ続けたらしい。ありがたいことである。Rails 2.1 対応版を id:milk1000cc さん、Rails 2.2 を発展途上技術者こと石原さんに作っていただいた。石原さんの提案で、これらのパッチを統合して、DateHelperJa の Rails 2.1/2.2 対応版を Github にて公開することにした。(Rails 2.0 に対応しているかは不明)
今回のセカンド・リリースの目玉は、和暦への対応である。なんと、「平成21年」とか表示できてしまうのだ。もちろん、内部的には日付型で正しく扱われ、西暦で表示するときと何の変わりもない。システムによっては、和暦への対応が必要になることもあるだろう。そのときはぜひ使ってみてほしい。
使い方
使い方を簡単に説明しておこう。
まずはプラグインのインストール。Rails アプリのベースディレクトリで、
% ./script/plugin install git://github.com/elm200/date_helper_ja.git
とする。これだけで、datetime_select, date_select が日本語表示される。
(図1/datetime_select の日本語表示)
datetime_select("model", "attr")
# =>"2009年 2月 22日 03時 49分"
オリジナルの振る舞いに戻したいときは、:use_jp_xxx (xxx = year, month, day, hour, minute, second) というオプションを false に設定する。
datetime_select("model", "attr", :use_jp_hour => false, :use_jp_minute => false)
# => "2007年 2月 22日 - 03:49"
さて目玉の和暦対応である。
これは、:use_era_name というオプションを true にすることで和暦を表示する。
(図2/datetime_select の和暦表示)
datetime_select("model", "attr", :use_era_name => true)
# => "平成21年 2月 22日 10時41分"
さらに :era_format というオプションで和暦の表示スタイルを指定できる。:ja_long(デフォルト値), :ja_short, :alphabet が指定可能。
datetime_select("model", "attr", :use_era_name => true, :era_format => :ja_long)
# => "平成21年 2月 22日 10時41分"
datetime_select("model", "attr", :use_era_name => true, :era_format => :ja_short)
# => "平21年 2月 22日 10時41分"
datetime_select("model", "attr", :use_era_name => true, :era_format => :alphabet)
# => "H21年 2月 22日 10時41分"
distance_of_time_in_words の日本語化
Rails には2つの時点の間隔を概数で報告してくれる distance_of_time_in_words というメソッドがある。Rails 2.1 でこの DateHelperJa プラグインを使うと、これが日本語化される。
(Rails 2.2 では、i18n の機構を使って日本語化してほしい。参照⇒Rails 2.2の I18nによる日本語化を最も簡単に行う方法)
% script/console
Loading development environment.
>> include ActionView::Helpers::DateHelper
=> Object
>> distance_of_time_in_words(Time.now, Time.now + 29.seconds)
=> "1分以内"
>> distance_of_time_in_words(Time.now, Time.now + 45.seconds)
=> "1分"
>> distance_of_time_in_words(Time.now, Time.now + 30.minutes)
=> "30分"
>> distance_of_time_in_words(Time.now, Time.now + 2.days + 5.hours)
=> "2日"
>> distance_of_time_in_words(Time.now, Time.now + 3.months + 15.days)
=> "3ヶ月"
>> distance_of_time_in_words(Time.now, Time.now + 3.years + 6.months)
=> "3年以上"
こんな感じである。
最後に・・
いろいろミスやらバグやらあると思うので、お気軽にフィードバッグをください。
メールは、eijisakai@gmail.com。
献辞
石原さん、Rails 2.2 対応パッチをありがとうございました。和暦対応は、基本的に石原さんがすべてやってくれました。
id:milk1000cc さん、Rails 2.1 対応パッチありがとうございました。
松田さん、distance_of_time_in_words の日本語リソースについて、質問に丁重に回答していただいてありがとうございました。
- 49 http://reader.livedoor.com/reader/
- 26 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=xyQ&q=dom+javascript+要素&btnG=検索&lr=lang_ja
- 20 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GZHZ_jaJP252JP252&q=ベトナム証跡 戦闘機 空軍
- 18 http://d.hatena.ne.jp/rubynews/20090223/1235408138
- 17 http://okyuu.com/ja/news/5331
- 10 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=bW9&pwst=1&ei=0AWhSZ3tDdXJkAX8u5zdCw&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=rails+find+:conditions&spell=1
- 10 http://www.google.com/reader/view/
- 9 http://www.google.co.jp/search?hl=ja&q=偽装請負&meta=lr=&aq=0&oq=偽装
- 8 http://search.yahoo.co.jp/search?p=水村美苗+日本語が亡びるとき&rs=0&search_x=1&tid=top_ga1&ei=UTF-8&fr=top_ga1&yuragi=off
- 7 http://blog.champierre.com/


