我正在为Ruby on Rails实现特定网页的视图计数功能。我使用haml列表来实现我的目的。 (JavaScript库获取列表并将其呈现为下拉列表。)
以下是代码段:
%li.action
= link_to t(question.views_count.to_s + ' views')
我的问题是视图中的V在输出中大写,并且即使对于0和1个视图,视图也是多元化的。有什么方法可以解决这些问题吗?
答案 0 :(得分:1)
请参阅此链接以获得复数 http://apidock.com/rails/ActionView/Helpers/TextHelper/pluralize
尝试使用console
,for example
1.9.3p125 :028 > pluralize(2, 'View')
=> "2 Views"
<强>更新强>
在您的控制台中尝试使用 capitalize
"view".capitalize
答案 1 :(得分:1)
你做错了,你应该让I18N系统(即t
方法)单独处理复数化。适当的复数处理非常复杂,不要尝试用字符串操作自己做。您正在使用t
方法,但它可以为您做更多的事情。
来自I18N Guide:
: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"