Ruby on rails Ruby中名词的复数化和去首化
我正在RubyonRails中为特定网页实现一个视图计数功能。我使用haml列表来实现我的目标。(JavaScript库获取列表并将其呈现为下拉列表。) 以下是代码片段:Ruby on rails Ruby中名词的复数化和去首化,ruby-on-rails,ruby,capitalization,pluralize,Ruby On Rails,Ruby,Capitalization,Pluralize,我正在RubyonRails中为特定网页实现一个视图计数功能。我使用haml列表来实现我的目标。(JavaScript库获取列表并将其呈现为下拉列表。) 以下是代码片段: %li.action = link_to t(question.views_count.to_s + ' views') 这里我的问题是,视图中的V在输出中是大写的,并且视图是复数的,即使对于0和1个视图也是如此。有什么办法可以解决这些问题吗?请参阅此链接以了解多元化 在您的控制台中尝试,例如 1.9.3p125 :0
%li.action
= link_to t(question.views_count.to_s + ' views')
这里我的问题是,视图中的V在输出中是大写的,并且视图是复数的,即使对于0和1个视图也是如此。有什么办法可以解决这些问题吗?请参阅此链接以了解多元化 在您的
控制台中尝试,例如
1.9.3p125 :028 > pluralize(2, 'View')
=> "2 Views"
更新
在控制台中尝试并使用
"view".capitalize
你做错了,你应该让I18N系统(即t
方法)自己处理多元化。正确的复数处理是非常复杂的,不要试图用字符串处理自己。您正在使用t
方法,但它可以为您做更多的事情
从:
: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"
您的英文翻译文件将包含以下内容:
t(:views, :count => question.views_count)
views:
one: "1 view"
other: "%{count} views"
谢谢有人能告诉我为什么我在字符串中使用了一个小的v,却得到了大写的v吗?我想这就是我想要的。谢谢你的回答。