Module: AbstractController::Translation
- Defined in:
- lib/abstract_controller/translation.rb
Instance Method Summary collapse
-
#localize(object, **options) ⇒ Object
(also: #l)
Delegates to
I18n.localize
. -
#translate(key, **options) ⇒ Object
(also: #t)
Delegates to
I18n.translate
.
Instance Method Details
#localize(object, **options) ⇒ Object Also known as: l
Delegates to I18n.localize
.
51 52 53 |
# File 'lib/abstract_controller/translation.rb', line 51 def localize(object, **) I18n.localize(object, **) end |
#translate(key, **options) ⇒ Object Also known as: t
Delegates to I18n.translate
.
When the given key starts with a period, it will be scoped by the current controller and action. So if you call translate(".foo")
from PeopleController#index
, it will convert the call to I18n.translate("people.index.foo")
. This makes it less repetitive to translate many keys within the same controller / action and gives you a simple framework for scoping them consistently.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/abstract_controller/translation.rb', line 17 def translate(key, **) if key&.start_with?(".") path = controller_path.tr("/", ".") defaults = [:"#{path}#{key}"] defaults << [:default] if [:default] [:default] = defaults.flatten key = "#{path}.#{action_name}#{key}" end i18n_raise = .fetch(:raise, self.raise_on_missing_translations) if [:default] [:default] = [[:default]] unless [:default].is_a?(Array) [:default] = [:default].map do |value| value.is_a?(String) ? ERB::Util.html_escape(value) : value end end unless i18n_raise [:default] = [] unless [:default] [:default] << MISSING_TRANSLATION end result = ActiveSupport::HtmlSafeTranslation.translate(key, **, raise: i18n_raise) if result == MISSING_TRANSLATION +"translation missing: #{key}" else result end end |