我有一些i18n助手设置如下:
en:
helpers:
submit:
post:
create: "Save and Continue"
update: "Update"
现在在_form.html.erb
<%= f.submit %>
这很有效。
现在,我向:status
模型添加了Post
属性,并希望根据:update
值为@post.status
操作提供不同的消息。类似的东西:
en:
helpers:
submit:
post:
create: "Save and Continue"
update: "Update"
publish: "Save Draft"
这在i18n下很容易实现吗?或者我应该只写一个帮手?
答案 0 :(得分:2)
en:
foo: "bar"
这些是翻译键 - 不是帮助者。 Rails中的助手是包含辅助方法的模块。
这在i18n下很容易实现吗?或者我应该只写一个帮手?
是和否。
导轨形成助手只需根据动作翻译按钮。这对于99%的时间使用它是足够好的。
您可以使用Rails i18n模块定义翻译。并创建一个帮助方法来覆盖您的案例:
module PostHelper
def post_submit_button(form_builder)
post = form_builder.object
if object.persisted?
concat( form_builder.submit(
I18n.t("helpers.submit.post.update.#{post.status}")
)
else
concat( form_builder.submit )
end
end
end
答案 1 :(得分:1)
在I18n下绝对可行。你基本上会做类似
的事情message = I18n.t("helpers.submit.post.update.#{post.status}")
假设post是你的帖子模型的一个实例。