2007年2月25日 星期日

Rails錯誤訊息中文化

中文化基本部份

參照:Rails框架技术讲座:让界面验证提示中文化

注意:本篇區塊內的文字都是一行而已。在開發的根目錄下裝plugin(plugin只會裝到local project裡,不會裝到整個server上):

ruby script/plugin install http://svn.rails2u.com/public/plugins/trunk/active_heart/

修改vendor/plugins/active_heart/lib/active_record_messages_ja.rb內的訊息,這個檔案是UTF-8編碼,看不懂日文的話,可以參照日翻中網站,不過我試了還是看不懂,乾脆看English key猜意思 Orz。

或著做高明點,修改vendor/plugins/active_heart/init.rb,改成:

require_dependency ‘active_record_messages_zh’if defined? ActiveRecord::Base

複制一份active_record_messages_zh.rb,改active_record_messages_zh.rb而不是active_record_messages_ja.rb。

改完訊息後重跑web server才會生效(我是用apache2 + FastCGI)。

去掉欄位名稱的顯示

預設是顯示DB field name,如果用中文名稱當DB field沒這問題,但我習慣用英文的field name,只好把預設的訊息拿掉,參照上面的檔案,把這段code:

def full_messages ... if attr == "base" full_messages << msg else full_messages << @base.class.human_attribute_name(attr) + msg end

去掉@base.class.human_attribute_name(attr) 改成:

def full_messages ... full_messages << msg

這叫自找麻煩,而且顯示錯誤訊息時得一個個自訂 :message ,例如:

validates_presence_of :name, :message => “姓名未填”

但沒用過中文當field name,不知道會有什麼問題。

沒有留言:

張貼留言