I18n はローカルでは期待どおりに動作しますが、heroku では動作しません。ブラウザが pt-BR に設定されていても、常に英語が表示されます。before フィルターでロケールを設定します。
class ApplicationController < ActionController::Base
before_filter :set_locale
private
def set_locale
I18n.set_preferred_locale(env.http_accept_language)
end
end
module I18n
class << self
def set_preferred_locale(http_accept_language)
locale = http_accept_language.preferred_language_from(I18n.available_locales)
if locale.present?
I18n.locale = locale
I18n.default_locale = locale #added based on some stackflow answer about heroku and I18n
end
end
end
end
I18n.locale がビューで正しい値 (pt-BR) を持っていることをロガーで確認しましたが、翻訳はまだ英語で行われています。
「pt-BR」に直接設定するだけのテストとしても試しましたが、それでも同じ結果が得られます。
class ApplicationController < ActionController::Base
before_filter :set_locale
private
def set_locale
I18n.locale = 'pt-BR'
end
end