对单个单词进行复数很简单:
Pluralizing a single word is simple:
pluralize(@total_users, "user")但是,如果我要打印有个/一个 N个用户",该怎么办?
But what if I want to print "There is/are N user/users":
有0个用户 有1位用户 有2位用户
There are 0 users There is 1 user There are 2 users
,即如何使句子 复数?
, i.e., how to pluralize a sentence?
推荐答案您可以为其添加自定义变形.默认情况下,Rails会将inflections.rb添加到config/initializers.您可以在其中添加:
You can add a custom inflection for it. By default, Rails will add an inflections.rb to config/initializers. There you can add:
ActiveSupport::Inflector.inflections do |inflect| inflect.irregular "is", "are" end然后,您将能够使用pluralize(@total_users, "is")返回与用户相同的规则.
You will then be able to use pluralize(@total_users, "is") to return is/are using the same rules as user/users.
编辑:您澄清了有关如何使句子复数的问题.一般而言,这要困难得多,但是如果要这样做,则必须深入NLP .
EDIT: You clarified the question on how to pluralize a sentence. This is much more difficult to do generically, but if you want to do it, you'll have to dive into NLP.
正如评论所建议的,如果您只想用几句话来做,就可以使用I18n进行操作,您可以构建如下内容:
As the comment suggests, you could do something with I18n if you just want to do it with a few sentences, you could build something like this:
def pluralize_sentence(count, i18n_id, plural_i18n_id = nil) if count == 1 I18n.t(i18n_id, :count => count) else I18n.t(plural_i18n_id || (i18n_id + "_plural"), :count => count) end end pluralize_sentence(@total_users, "user_count")在config/locales/en.yml中:
en: user_count: "There is %{count} user." user_count_plural: "There are %{count} users."更多推荐
如何使“存在/存在N个对象"复数?
发布评论