It would seem that there is some confusion between the functionality:
I18n.translate does not perform "lazy searches" (for example, it scans the search key to the current partial, if it starts with a period), which you expect. This is a feature of ActionView::Helpers::TranslationHelper#translate , as well as some others .
Your method overrides ActionView::Helpers::TranslationHelper#translate , without calling super to get a lazy load. So, if you want to continue to override the method, I think you can:
# my_helper.rb module MyHelper def translate(key, options = {})
Personally, I prefer to use t(:my_key, locale: :my_locale) each time in my views without overriding or, at most, have a separate helper method that goes around calling ActionView::Helpers::TranslationHelper#translate using additional business logic force a specific locale.
source share