Ruby on Rails 5.2 - ActiveModel::Translation

मॉड्यूल ActiveModel :: अनुवाद




ruby

मॉड्यूल ActiveModel :: अनुवाद

शामिल मॉड्यूल:
ActiveModel::Naming

सक्रिय मॉडल अनुवाद

अपनी वस्तु और रेल अंतर्राष्ट्रीयकरण (i18n) ढांचे के बीच एकीकरण प्रदान करता है।

एक न्यूनतम कार्यान्वयन हो सकता है:

class TranslatedPerson
  extend ActiveModel::Translation
end

TranslatedPerson.human_attribute_name('my_attribute')
# => "My attribute"

यह अभिभावकों की कक्षाओं में अनुवाद खोजने के लिए एक वर्ग आधारित i18n_scope और lookup_ancestors को परिभाषित करने में सक्षम होने सहित रेल अंतर्राष्ट्रीयकरण एपीआई में हुक करने के लिए आवश्यक वर्ग विधियां प्रदान करता है।

सार्वजनिक प्रवृत्ति के तरीके

human_attribute_name (विशेषता, विकल्प = {}) स्रोत दिखाएं
# File activemodel/lib/active_model/translation.rb, line 44
def human_attribute_name(attribute, options = {})
  options   = { count: 1 }.merge!(options)
  parts     = attribute.to_s.split(".")
  attribute = parts.pop
  namespace = parts.join("/") unless parts.empty?
  attributes_scope = "#{i18n_scope}.attributes"

  if namespace
    defaults = lookup_ancestors.map do |klass|
      :"#{attributes_scope}.#{klass.model_name.i18n_key}/#{namespace}.#{attribute}"
    end
    defaults << :"#{attributes_scope}.#{namespace}.#{attribute}"
  else
    defaults = lookup_ancestors.map do |klass|
      :"#{attributes_scope}.#{klass.model_name.i18n_key}.#{attribute}"
    end
  end

  defaults << :"attributes.#{attribute}"
  defaults << options.delete(:default) if options[:default]
  defaults << attribute.humanize

  options[:default] = defaults
  I18n.translate(defaults.shift, options)
end

ट्रान्सफ़ॉर्म नामों को "पहले नाम" के बजाय "पहले नाम" जैसे अधिक मानवीय प्रारूप में परिवर्तित करता है।

Person.human_attribute_name("first_name") # => "First name"

अतिरिक्त अनुवाद options साथ options निर्दिष्ट options

# File activemodel/lib/active_model/translation.rb, line 26
def i18n_scope
  :activemodel
end

वर्ग के लिए i18n_scope लौटाता है। यदि आप कस्टम लुकअप चाहते हैं, तो ओवरराइट करें।

लुकअप_सेंस्टर () स्रोत दिखाएं
# File activemodel/lib/active_model/translation.rb, line 34
def lookup_ancestors
  ancestors.select { |x| x.respond_to?(:model_name) }
end

किसी स्ट्रिंग को स्थानीय करते समय, यह इस विधि द्वारा लौटाए गए लुकअप से गुजरता है, जिसका उपयोग ActiveModel::Name#human , ActiveModel::Errors#full_messages और #human_attribute_name