我想翻译我的应用程序的视图,因为我正在使用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
感谢。
答案 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 %>