我想基于count
参数创建一个可以是单数或复数的句子:
# When count is 1
"This profile still contains 1 post"
# When count is 2
"This profile still contains 2 posts"
使用Rails i18n机制,我相信我必须嵌入Ruby代码才能获得“post”这个词的正确复数。我正在尝试像这样构建它,但它不起作用:
# config/locales/en.yml
en:
message: "This profile still contains %{count} <%= Post.model_name.human(count: count).lowercase %>"
# Output of I18n.translate(:message, count: 2)
"This profile still contains 2 <%= Post.model_name.human(count: count).lowercase %>"
我已经尝试<%= %>
,%{ }
,#{ }
和{{ }}
,但都失败了。
甚至可以在i18n文件中嵌入Ruby代码吗?怎么样?
答案 0 :(得分:3)
根据docs,您应该这样做:
en:
message:
one: This profile still contains 1 post
other: This profile still contains %{count} posts
并称之为:
I18n.t('message', count: count)
希望它有所帮助!
答案 1 :(得分:1)
使用pluralize
方法:
配置/区域设置/ en.yml
en:
message: "This profile still contains"
视图
"#{I18n.t('message')} #{Post.count} #{Post.model_name.human.pluralize(Post.count).downcase}."
#=> output : "This profile still contains 1 post." or "This profile still contains XX posts"
它有效,但我建议你将所有视图逻辑放在帮手中。
注意:我使用全局Post.count
作为示例,但您可以将所需的任何计数用作user.posts.count
等...