Ruby on Rails 5.2 - ActionView::Helpers::TranslationHelper

मॉड्यूल एक्शन व्यू :: हेल्पर्स :: ट्रांसलेशनहेलपर




ruby

मॉड्यूल एक्शन व्यू :: हेल्पर्स :: ट्रांसलेशनहेलपर

शामिल मॉड्यूल:
ActionView::Helpers::TagHelper

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

l (* आर्ग्स)
इसके लिए उपनाम: localize
स्थानीयकरण (* args) दिखाएँ स्रोत
# File actionview/lib/action_view/helpers/translation_helper.rb, line 118
def localize(*args)
  I18n.localize(*args)
end

I18n.localize लिए प्रतिनिधि। कोई अतिरिक्त कार्यक्षमता नहीं है।

अधिक जानकारी के लिए rubydoc.info/github/svenfuchs/i18n/master/I18n/Backend/Base:localize देखें।

के रूप में भी उपनाम: l
t (कुंजी, विकल्प = {})
इसके लिए उपनाम: translate
अनुवाद (कुंजी, विकल्प = {}) स्रोत दिखाएं
# File actionview/lib/action_view/helpers/translation_helper.rb, line 60
def translate(key, options = {})
  options = options.dup
  has_default = options.has_key?(:default)
  remaining_defaults = Array(options.delete(:default)).compact

  if has_default && !remaining_defaults.first.kind_of?(Symbol)
    options[:default] = remaining_defaults
  end

  # If the user has explicitly decided to NOT raise errors, pass that option to I18n.
  # Otherwise, tell I18n to raise an exception, which we rescue further in this method.
  # Note: `raise_error` refers to us re-raising the error in this method. I18n is forced to raise by default.
  if options[:raise] == false
    raise_error = false
    i18n_raise = false
  else
    raise_error = options[:raise] || ActionView::Base.raise_on_missing_translations
    i18n_raise = true
  end

  if html_safe_translation_key?(key)
    html_safe_options = options.dup
    options.except(*I18n::RESERVED_KEYS).each do |name, value|
      unless name == :count && value.is_a?(Numeric)
        html_safe_options[name] = ERB::Util.html_escape(value.to_s)
      end
    end
    translation = I18n.translate(scope_key_by_partial(key), html_safe_options.merge(raise: i18n_raise))

    translation.respond_to?(:html_safe) ? translation.html_safe : translation
  else
    I18n.translate(scope_key_by_partial(key), options.merge(raise: i18n_raise))
  end
rescue I18n::MissingTranslationData => e
  if remaining_defaults.present?
    translate remaining_defaults.shift, options.merge(default: remaining_defaults)
  else
    raise e if raise_error

    keys = I18n.normalize_keys(e.locale, e.key, e.options[:scope])
    title = "translation missing: #{keys.join('.')}".dup

    interpolations = options.except(:default, :scope)
    if interpolations.any?
      title << ", " << interpolations.map { |k, v| "#{k}: #{ERB::Util.html_escape(v)}" }.join(", ")
    end

    return title unless ActionView::Base.debug_missing_translation

    content_tag("span", keys.last.to_s.titleize, class: "translation_missing", title: title)
  end
end

I18n#translate लिए प्रतिनिधि लेकिन तीन अतिरिक्त कार्य भी करता है।

सबसे पहले, यह सुनिश्चित करेगा कि किसी भी MissingTranslation संदेशों को इनलाइन स्पैन के रूप में प्रस्तुत किया जाएगा:

  • translation-missing वर्ग लागू करें

  • title विशेषता के मूल्य के रूप में लापता कुंजी को शामिल करें

  • पाठ के रूप में अंतिम कुंजी खंड का शीर्षक संस्करण है

उदाहरण के लिए, लापता अनुवाद कुंजी "blog.post.title" लिए दिया गया मान होगा:

<span
  class="translation_missing"
  title="translation missing: en.blog.post.title">Title</span>

यह विचारों को उचित तरीके से प्रदर्शित करने की अनुमति देता है जबकि डेवलपर्स अभी भी लापता अनुवाद खोजने का एक तरीका दे रहे हैं।

यदि आप किसी त्रुटि को उठाने के लिए अनुपलब्ध अनुवादों को प्राथमिकता देंगे, तो आप ActionView::Base.raise_on_missing_translations = true या व्यक्तिगत रूप से उत्तीर्ण करके एक विकल्प के रूप में raise: true रूप से स्पैन-रैपिंग व्यवहार से बाहर निकल सकते हैं raise: true translate करने के विकल्प के रूप में raise: true

दूसरा, यदि कुंजी एक अवधि के translate साथ शुरू होती है तो वर्तमान आंशिक द्वारा कुंजी को गुंजाइश देगा। people/index.html.erb टेम्पलेट से translate(".foo") को कॉलिंग translate("people.index.foo") बराबर है। यह एक ही आंशिक के भीतर कई कुंजी का अनुवाद करने के लिए कम दोहरावदार बनाता है और लगातार गुंजाइश कुंजियों के लिए एक सम्मेलन प्रदान करता है।

तीसरा, यदि कुंजी का प्रत्यय "_html" या कुंजी का अंतिम तत्व "html" हो तो अनुवाद को html_safe के रूप में चिह्नित किया जाएगा। कॉलिंग translate("footer_html") या translate("footer.html") एक HTML सुरक्षित स्ट्रिंग लौटाएगा जो अन्य HTML सहायक विधियों द्वारा बच नहीं जाएगा। यह नामकरण सम्मेलन उन अनुवादों की पहचान करने में मदद करता है जिनमें HTML टैग शामिल हैं ताकि आप जान सकें कि किसी टेम्पलेट में अनुवाद को कॉल करने पर किस तरह के आउटपुट की उम्मीद है और अनुवादकों को पता है कि वे किन कुंजियों के लिए HTML मान प्रदान कर सकते हैं।

इसके अलावा उपनाम: t