在Rails 4中翻译控制器action_name

时间:2014-11-25 11:41:41

标签: ruby-on-rails internationalization renderpartial rails-i18n

我想翻译我的应用程序的视图,因为我正在使用partial来为每个视图呈现标题,如下所示:

<%=t "#{controller.controller_name.capitalize} #{controller.action_name}" %>

......我不得不翻译它们。如何在自定义翻译文件中翻译controller.action_name

我试图访问这样的动作名称:

  parkings:
    index: "Parkings index"
    new: "New %{model}"

它有许多不同的变体,但每一个都失败了。你能帮帮我吗?

这是我控制器的一个片段:

  def new
    @parking = Parking.new
  end

  def create
    @parking = Parking.new(parking_params)

    if @parking.save
      redirect_to @parking, notice: t(:parking_created)
    else
      render action: 'new'
    end
  end

感谢。

2 个答案:

答案 0 :(得分:3)

您应该在语言环境文件中包含翻译。添加下划线或连字符以分隔键中的单词

例如:

# config/locales/en.yml
en:
  parkings_index: Parkings index
  parkings_new: Parkings new page

查看文件

<%=t "#{controller_name}_#{action_name}" %>

答案 1 :(得分:1)

首先,当你说#{controller.controller_name}时,它意味着你的视图中有一个名为controller的对象,这是不正确的。即使您设法访问控制器及其操作的名称,我认为这不值得花费精力和时间。

相反,您可以按照以下方式构建翻译文件:

views:
  model_name (parkings): "Parkings"
    action_1_name (index): "Parkings Index"
    action_2_name (new): "New Parking"
    ...

并在您的视图中说(例如) <%= link_to (t "views.model_name.action_name"), :action %>