Rails I18n не работает должным образом на Heroku

I18n работает как положено локально, но не на героку. Он всегда показывает английский язык, даже если браузер настроен на pt-BR. Мы устанавливаем локаль в фильтре перед:

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

person DrewB    schedule 12.02.2013    source источник
comment
Я успешно использую i18n на Heroku, но я не устанавливаю локаль на основе настроек пользовательского браузера, как я чувствую, что вы можете этого захотеть. Можете ли вы отредактировать свой вопрос, чтобы поделиться кодом, который вы используете для установки локали?   -  person Paul Fioravanti    schedule 12.02.2013
comment
Вы установили I18n.available_locales = [:en, :"pt-BR"] в инициализаторе или где-то еще?   -  person Paul Fioravanti    schedule 13.02.2013


Ответы (2)


Оказывается, я его нормально настроил. Проблема заключалась в том, что в моем pt-BR.yml была метка порядка байтов. По-видимому, heroku не может загружать с ними языковые файлы - heroku не загружает языковой файл.

Я использовал vim для удаления маркера с помощью:

:set nobomb
:w
person DrewB    schedule 12.02.2013
comment
Хороший. Если уместно, не могли бы вы отредактировать свой вопрос или ответ с выводом ошибки или heroku logs, чтобы их можно было отнести к проблемам со спецификацией? - person Paul Fioravanti; 13.02.2013
comment
Боюсь, что не было сообщения об ошибке. Вот почему это было так трудно снять. Я понял, что файл не загружается методом проб и ошибок. - person DrewB; 13.02.2013
comment
Метод проб и ошибок - это тяжелый труд :-) Если сейчас все хорошо, не могли бы вы отметить это как принятый ответ для всеобщего блага. - person Paul Fioravanti; 13.02.2013
comment
Пробовал раньше. Похоже, мне нужно подождать до завтра, прежде чем он позволит мне. - person DrewB; 13.02.2013
comment
Кто-нибудь знает, как решить эту проблему с помощью django и скомпилированных файлов gettext .mo? Пробовал vim :set nobomb, не помогает. В журналах heroku нет записей, и мои испанские переводы работают нормально. Однозначно что-то с кодировкой файла и хероку. - person jlev; 16.02.2013

У меня сработало, я открыл любой файл и сохранил его с помощью nobomb

person Paulo Henrique Sacramento    schedule 15.04.2014