0

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
4

2 に答える 2

3

私はそれをうまく設定していたことがわかりました。問題は、pt-BR.yml にバイト オーダー マークがあったことです。どうやらherokuは言語ファイルを読み込めません - heroku not loading language file

私はvimを使ってマーカーを削除しました:

:set nobomb
:w
于 2013-02-12T22:58:52.773 に答える
0

私のために働いた、私は任意のファイルを開いてnobombで保存しました

于 2014-04-15T21:52:24.093 に答える