I18N ненормальный, когда мое приложение рельсы в производственной среде - PullRequest
0 голосов
/ 22 марта 2011

Я пишу приложение rails на локальном компьютере (OSX 10.6.6,Rails 3.0.1,WEBrick), все файлы I18n работают нормально. Когда я помещаю приложение на свой веб-сервер (Centos5.4,Rails 3.0.1,Phusion Passenger version 3.0.2) Я получаю сообщение об ошибке "Translation missing: en, username_exist"

Код моей модели:

validates_uniqueness_of :username, :on => :create, :message => I18n.t("username_exist")

Мой файл i18n (config / locales / en.yml):

en:
   username_exist: "username exist"

Я думаю, что модель не найден файл i18n?

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Когда вы используете I18n.t в области видимости класса, как вы делаете при вызове validates_uniqueness_of, оно будет оценено при загрузке файла.Это, вероятно, не то, что вы хотите, потому что это означает, что сообщение всегда будет отображаться в локали по умолчанию, а не с использованием локали пользователя, выполняющего каждый запрос.Это также может быть причиной проблемы, которую вы видите, если файл загружен до того, как настроен I18n.

Вместо этого используйте символ:

validates_uniqueness_of :username, ..., :message => :username_exist

И см. Документацию для ActiveModel::Errors#generate_message, чтобы увидеть, где разместить перевод в файле локали.

На самом деле вам даже не нужно предоставлять ключ :message, если вы следуете соглашению об именах ActiveModel:

en:
  activemodel:
    errors:
      models:
        [your model name, e.g. user]:
          attributes:
            username:
              taken: "username exists"
0 голосов
/ 22 марта 2011

Вы устанавливаете локаль в вашем application.rb?Нравится:

config.i18n.default_locale = :en  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...