複数の言語を並行して翻訳するために私のビューではI18n翻訳を手作業で行う必要がありますが、Deviseは現在のロケールに基づいて内部的にフラッシュメッセージを翻訳し、結果の文字列をflash
に設定します。DeviseController#find_messageをどのように上書きできますか?
は、私は私が
zh = t(key, locale: 'zh-CN')
en = t(key, locale: 'en')
それは問題のコードのように見えるDeviseController#find_message
あるような何かを行うことができるように、それはちょうどflash
に国際化キーやオプションを追加する必要がありますが、私はどのようにを把握することはできません...私はconfig/initializers/devise.rb
で
DeviseController.class_eval do
# Get message for given
def find_message(kind, options = {})
options[:scope] ||= translation_scope
options[:default] = Array(options[:default]).unshift(kind.to_sym)
options[:resource_name] = resource_name
options = devise_i18n_options(options)
# return the i18n key itself to facilitate multiple translations
# I18n.t("#{options[:resource_name]}.#{kind}", options)
{key: "#{options[:resource_name]}.#{kind}", options: options}
end
end
を試してみたが、効果がないようだオーバーライド/モンキーパッチ。
どのようにこの動作を上書きまたは修正できますか?
私はDevits 4.3.0(最新の書き込み時)とRails 5.1.1を使っています。
ありがとうございます。