0

クロックメソッドからモデルメソッド "model_method"が呼び出されると、I18n.localeは常にデフォルトのロケールに等しくなります。クロックワークと共にI18n

現在のロケールをモデルメソッドに渡すにはどうすればよいですか?

clockwork.rbのパート:book.rb

every(10.minutes, 'test') do 
    Book.delay(:queue => 'some_queue').model_method 
end 

パート:

def self.model_method 
    ... 
    message = I18n.t('some_text') 
    # always equals to ":en" 
end 

答えて

1

あなたはlocaleオプション渡すことができます。

message = I18n.t('some_text', locale: 'en') 

Read the documentation.

+0

をしかし、私は、Dどのユーザーが現在のロケールであるかわからない – Zelenka

+1

ユーザーロケールはブラウザでのみ使用できます。 Railsの外にあるデーモン/スクリプトでは取得できません。ユーザーロケールをユーザーモデルに保存し、スクリプト/デーモンでフェッチします。 –

+0

あなたの最後の文章はあなたの答えに詳しく記述できますか?ユーザーロケールをモデルにどのくらい保存するのですか? – Zelenka