HEADER = %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday].map{ |key| I18n.t(key, scope: "table") }
但I18n.locale
为null
,因此它为我提供了默认翻译。
即使我在I18n.locale = "ru"
中设置了module CalendarHelper
,就像那样:
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.locale
为null
,我得到默认翻译。
但如果我在课程中设置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 :(得分: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(:“date.day_names”)替换HEADER.map。map这将直接从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声明语言环境,你应该全部设置。