我正在为 Ruby on Rails 中的特定网页实现视图计数功能。我使用haml列表来达到我的目的。(JavaScript 库获取列表并将其呈现为下拉列表。)
这是代码片段:
%li.action
= link_to t(question.views_count.to_s + ' views')
我的问题是视图中的 V 在输出中大写,即使对于 0 和 1 个视图,视图也是复数形式。有什么办法可以解决这些问题吗?
我正在为 Ruby on Rails 中的特定网页实现视图计数功能。我使用haml列表来达到我的目的。(JavaScript 库获取列表并将其呈现为下拉列表。)
这是代码片段:
%li.action
= link_to t(question.views_count.to_s + ' views')
我的问题是视图中的 V 在输出中大写,即使对于 0 和 1 个视图,视图也是复数形式。有什么办法可以解决这些问题吗?
请参阅此链接以获取复数 http://apidock.com/rails/ActionView/Helpers/TextHelper/pluralize
试试你console
的for example
1.9.3p125 :028 > pluralize(2, 'View')
=> "2 Views"
更新
在您的控制台中尝试并使用大写
"view".capitalize
你做错了,你应该让 I18N 系统(即t
方法)自己处理复数。正确的复数处理非常复杂,不要尝试自己使用字符串操作。您正在使用该t
方法,但它可以为您做更多的事情。
来自I18N 指南:
插值变量有一个特殊的
:count
作用,它既被插值到翻译中,又用于根据 CLDR 定义的复数规则从翻译中选择复数:I18n.backend.store_translations :en, :inbox => { :one => '1 message', :other => '%{count} messages' } I18n.translate :inbox, :count => 2 # => '2 messages'
因此,假设您正确设置了消息数据库,那么您将执行以下操作:
t(:views, :count => question.views_count)
你的英文翻译文件会是这样的:
views:
one: "1 view"
other: "%{count} views"