實現自定義驗證中文消息就是使用國際化來支持中文,這個可使用rails的i18n接口來完成。 git
步驟一:取消application.rb 以下注釋,並將默認語言設置改爲簡體中文zh-CN(這個任意命名便可,由於這裏如何命名那麼轉換語言的時候就去找一樣命名的yml文件,好比這裏命名爲zh-CN那麼咱們建立yml文件也必須是zh-CN.yml文件)。 github
修改前: 面試
修改後: 服務器
步驟二:重啓rails服務器 app
由於config目錄下的文件都是配置文件,凡是配置的修改都須要重啓rails服務器來使得修改生效。 函數
步驟三:在以下目錄添加保存自定義的中文消息的yml文件,以下: spa
注意----該文件縮進必須是兩個空格,咱們不要使用Tab鍵盤 翻譯
步驟四:找一個頁面試試,以下: 3d
原來的代碼和效果: blog
將視圖代碼該處使用語言轉換爲簡體中文的代碼及效果:
以下使用國際化的接口t函數(該函數意思就是translate),而後翻譯爲navnbar.about也就是以前yml文件中的"關於"
注:這裏咱們是手動實現國際化,固然有個gem叫rails-i18n裏面保存了不少經常使用的國際化語言,也可使用這個。
步驟五:提交空表單以下:
在將默認語言設置改爲簡體中文zh-CN以後,自定義驗證消息就會默認使用簡體中文了(這是驗證機制默認的選擇),因此咱們沒必要像上面那樣將about連接手動設置爲國際化,它就會自動去使用簡體zh-CN.yml文件,以下還沒定義相關的中文因此以下:
那麼自定義的中文驗證消息如何寫?很簡單:
translation missing: zh-CN.activerecord.errors.models.user.attributes.name.blank
如上能夠看出對應的轉換在zh-CN.yml文件中(最開始是zh-CN),而後層次的縮進依次是:activerecord及errors及models及user一直下去:最後的yml文件以下:
這時咱們再來提交一次表單,看驗證消息提示結果爲以下:
再來看一下其餘頁面,發現以下不少地方使用自定義的轉換沒有定義因此顯示以下:
解決辦法是向上面一些去定義對應的語言轉換數據,可是咱們有一種更快的辦法,來到github的以下項目的頁面:
而後在在頁面空白處按下鍵盤上的小寫t就會進入搜索:
而後點擊進入該文件查看關於時間的內容(由於這個項目包含許多經常使用語言轉換,因此咱們能夠直接來這裏找完複製,免得一個個本身寫,並且咱們不須要安裝這個gem,就來github複製yml文件裏想要的內容便可)
複製到項目的yml文件後以下: