आप इसके लिए एक कस्टम बदलाव जोड़ सकते हैं। डिफ़ॉल्ट रूप से, रेल inflections.rb
config/initializers
जोड़ देंगे। वहाँ आप जोड़ सकते हैं:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular "is", "are"
end
फिर आप pluralize(@total_users, "is")
उपयोग करने के लिए वापस जाने के लिए/है उपयोगकर्ता/उपयोगकर्ताओं के रूप में ही नियमों का उपयोग कर रहे हैं सक्षम हो जाएगा।
EDIT: आपने इस वाक्य को स्पष्ट किया कि वाक्य को बहुवचन कैसे करें। सामान्य रूप से ऐसा करना अधिक कठिन होता है, लेकिन यदि आप इसे करना चाहते हैं, तो आपको dive into NLP करना होगा।
टिप्पणी पता चलता है, आप I18n साथ कुछ कर सकते हैं अगर आप केवल कुछ वाक्यों के साथ क्या करना चाहते हैं, तो आप कुछ इस तरह बना सकते हैं:
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."
स्रोत
2012-01-09 15:01:58
दरअसल से अनुकूलित, मुझे लगता है कि सवाल यह है कि उपयोगकर्ताओं की संख्या को जोड़ के, अर्थात जो कुछ i18n और pluralisation उदा के बीच एक मिश्रण की तरह लग रहे हो सकता है के बारे में अधिक है 'pluralize (@total_users," $ 1 उपयोगकर्ता है ") '... जो स्पष्ट रूप से दुर्भाग्य से विफल हो जाएगा :) – Pierre
[रेल के साथ Agile विकास, चौथा संस्करण] (http://pragprog.com/book/rails4/agile- वेब-डेवलपमेंट-साथ-रेल), पृष्ठ 217, वे त्रुटि संदेशों को बहुल करने के लिए वाईएएमएल फ़ाइल में 'एक' और' अन्य 'का उपयोग करते हैं। इसका उपयोग पृष्ठ त्रुटियों को प्रदर्शित करने के लिए किसी भी अतिरिक्त कोड के बिना किया जाता है, इसलिए इसे सीधे 't() 'के साथ काम करना चाहिए। – l0b0
इस समाधान के साथ मैंने एक समस्या आई है यदि आपके पास एक मॉडल है जो 'हैं' में समाप्त होता है (मेरे मामले में विस्तारित कर) आपके सभी कोड ब्रेक – Doug