翻译RailsCast日历的HEADER

时间:2016-02-10 09:47:33

标签: ruby-on-rails ruby

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

I18n.localenull,因此它为我提供了默认翻译。

即使我在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.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

1 个答案:

答案 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声明语言环境,你应该全部设置。