Я хочу I18n.translate()
или I18n.t()
использовать определенную локаль, но не I18n.locale. Я не хочу использовать I18n.t(:my_key, locale: :my_locale)
каждый раз, поэтому было бы здорово, если бы я мог переопределить функцию.Override рельсы переводов помощник
Я пытался поставить его в новом помощнике:
# my_helper.rb
module MyHelper
def translate(key, options = {})
options[:locale] = MY_LOCALE
I18n.translate key, options
end
alias :t :translate
end
Это отлично работает для «жестких» клавиш, как t('word')
, но не находит правильный путь для «динамических ключей», как t('.title')
, который должен используйте путь моего частичного, то есть de.users.form.title
.
Спасибо за помощь!
Я думаю, что вам не нужен метод 'I18n.with_locale' – phoet
Благодарим за комментарий. 'I18n.with_locale (MY_LOCALE) {}' будет таким же, как 'I18n.t (: key, locale: MY_LOCALE)'. Я надеялся на решение со стандартной функцией 'I18n.t()' и централизованное определение языка, который я хочу использовать. – Railsana
Не можете ли вы установить локаль из параметра, из домена или чего-то подобного, как обсуждалось здесь: http://guides.rubyonrails.org/i18n.html#setting-and-passing-the-locale? Таким образом, вы должны установить локаль для каждого запроса, а затем вы можете использовать 'I18n.t', как обычно, но используя набор локалей для запроса вместо стандартного языкового стандарта. – Frost