淺談Ruby on Rails的國際化
視圖、模型與控制器里不應(yīng)使用語言相關(guān)設(shè)置與字串。這些文字應(yīng)搬到在 config/locales 下的語言文件里。
當(dāng) ActiveRecord 模型的標(biāo)簽需要被翻譯時(shí),使用activerecord 作用域:
en: activerecord: models: user: Member attributes: user: name: "Full name"
然后 User.model_name.human 會(huì)返回 "Member" ,而 User.human_attribute_name("name") 會(huì)返回 "Full name"。這些屬性的翻譯會(huì)被視圖作為標(biāo)簽使用。
把在視圖使用的文字與 ActiveRecord 的屬性翻譯分開。 把給模型使用的語言文件放在名為 models 的文件夾,給視圖使用的文字放在名為 views 的文件夾。
當(dāng)使用額外目錄的語言文件組織完成時(shí),為了要載入這些目錄,要在 application.rb 文件里描述這些目錄。
# config/application.rb config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
把共享的本土化選項(xiàng),像是日期或貨幣格式,放在 locales 的根目錄下。
使用精簡形式的 I18n 方法: I18n.t 來取代 I18n.translate 以及使用 I18n.l 取代 I18n.localize。
使用 "懶惰" 查詢視圖中使用的文字。假設(shè)我們有以下結(jié)構(gòu):
en: users: show: title: "User details page"
users.show.title 的數(shù)值能這樣被 app/views/users/show.html.haml 查詢:
= t '.title'
在控制器與模型使用點(diǎn)分隔的鍵,來取代指定 :scope 選項(xiàng)。點(diǎn)分隔的調(diào)用更容易閱讀及追蹤層級(jí)。
# 這樣子調(diào)用 I18n.t 'activerecord.errors.messages.record_invalid' # 而不是這樣 I18n.t :record_invalid, :scope => [:activerecord, :errors, :messages]
相關(guān)文章
ruby寫掃描當(dāng)前網(wǎng)頁所有url的腳本
用ruby寫的掃描當(dāng)前網(wǎng)頁所有url的腳本,對(duì)于學(xué)習(xí)ruby的朋友是個(gè)不錯(cuò)的實(shí)例2008-06-06ruby 小腳本搞定CVS服務(wù)器更換后checkout下來的工程遷移
CVS換了新的服務(wù)器,原來的工程需要更改Server配置,這個(gè)東東手工做起來 可是個(gè)體力活,寫了一個(gè)腳本分發(fā)下來。2008-12-12Rails中使用MySQL分區(qū)表一個(gè)提升性能的方法
這篇文章主要介紹了Rails中使用MySQL分區(qū)表一個(gè)提升性能的方法,本文總結(jié)出了一個(gè)簡單的方法實(shí)現(xiàn)避免掃描全部的分區(qū)表,從而提升性能,需要的朋友可以參考下2015-03-03