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
.
47 48 49 |
# File 'lib/abstract_controller/translation.rb', line 47 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.
15 16 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 |
# File 'lib/abstract_controller/translation.rb', line 15 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 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 if [:raise].nil? [:default] = [] unless [:default] [:default] << MISSING_TRANSLATION end result = ActiveSupport::HtmlSafeTranslation.translate(key, **) if result == MISSING_TRANSLATION +"translation missing: #{key}" else result end end |