Module: ActionView::Helpers::TranslationHelper
- Included in:
- ActionView::Helpers
- Defined in:
- lib/action_view/helpers/translation_helper.rb
Instance Method Summary collapse
-
#localize(*args) ⇒ Object
(also: #l)
Delegates to I18n.localize with no additional functionality.
-
#translate(key, options = {}) ⇒ Object
(also: #t)
Delegates to I18n#translate but also performs three additional functions.
Instance Method Details
#localize(*args) ⇒ Object Also known as: l
Delegates to I18n.localize with no additional functionality.
40 41 42 |
# File 'lib/action_view/helpers/translation_helper.rb', line 40 def localize(*args) I18n.localize(*args) end |
#translate(key, options = {}) ⇒ Object Also known as: t
Delegates to I18n#translate but also performs three additional functions. First, it’ll catch MissingTranslationData exceptions and turn them into inline spans that contains the missing key, such that you can see in a view what is missing where.
Second, it’ll scope the key by the current partial if the key starts with a period. So if you call translate(".foo")
from the people/index.html.erb
template, you’ll actually be calling I18n.translate("people.index.foo")
. This makes it less repetitive to translate many keys within the same partials and gives you a simple framework for scoping them consistently. If you don’t prepend the key with a period, nothing is converted.
Third, it’ll mark the translation as safe HTML if the key has the suffix “_html” or the last element of the key is the word “html”. For example, calling translate(“footer_html”) or translate(“footer.html”) will return a safe HTML string that won’t be escaped by other HTML helper methods. This naming convention helps to identify translations that include HTML tags so that you know what kind of output to expect when you call translate in a template.
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/action_view/helpers/translation_helper.rb', line 26 def translate(key, = {}) translation = I18n.translate(scope_key_by_partial(key), .merge!(:raise => true)) if html_safe_translation_key?(key) && translation.respond_to?(:html_safe) translation.html_safe else translation end rescue I18n::MissingTranslationData => e keys = I18n.normalize_keys(e.locale, e.key, e.[:scope]) content_tag('span', keys.join(', '), :class => 'translation_missing') end |