2016-02-10 39 views
-1
HEADER = %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday].map{ |key| I18n.t(key, scope: "table") } 

的頭,而是I18n.localenull所以它帶給我的默認翻譯。翻譯RailsCast日曆

即使我在module CalendarHelper這樣的設置I18n.locale = "ru"

module CalendarHelper 
    def calendar(date = Date.today, &block) 
    Calendar.new(self, date, block).table 
    end 
    I18n.locale = "ru" 
    class Calendar < Struct.new(:view, :date, :callback) 
HEADER = %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday].map{  |key| I18n.t(key, scope: "table") } 
START_DAY = :sunday 
....... 

I18n.localenull,我得到默認的轉換。

但是,如果我在該類中設置I18n.locale = "ru"它工作正常。

class Calendar < Struct.new(:view, :date, :callback) 
I18n.locale = "ru" 
HEADER = %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday].map{ |key| I18n.t(key, scope: "table") } 
START_DAY = :sunday 
....... 
......... 

我如何可以通過視圖中的params[:local]class Calendar或有另一種解決方案來翻譯HEADER

+0

RailsCast日曆代碼:Railscasts PRO#213日曆(修訂版)。 我試圖翻譯HEADER: – Iziksh

+0

區域設置僅在請求 - 響應期間有效,而不是在設置模型時有效。想一想:區域設置取決於請求您網站的用戶。當你定義模型時,還沒有用戶。 – Meier

回答

0

以下是我翻譯標題的方法。首先,註釋掉HEADER聲明...

class Calendar < Struct.new(:view, :date, :callback) 
    #comment out or remove the line below 
    #HEADER = %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday] 
    START_DAY = :sunday 

然後在頭定義,I18n.t更換HEADER.map(「date.day_names」)。地圖這直接拉動的日期名稱config/locales/* .yml文件。

def header 
     content_tag :tr do 
     I18n.t(:"date.day_names").map { |day| content_tag :th, day }.join.html_safe 
     end 
    end 

現在只需在您的控制器的PARAMS聲明的語言環境,你應該準備就緒。