我在本地计算机(OSX 10.6.6,Rails 3.0.1,WEBrick)
中编写了一个rails应用程序,所有I18n文件都正常工作。当我将应用程序推送到我的网络服务器(Centos5.4,Rails 3.0.1,Phusion Passenger version 3.0.2)
时出现错误“Translation missing: en, username_exist
”< / p>
我的型号代码:
validates_uniqueness_of :username, :on => :create, :message => I18n.t("username_exist")
我的i18n文件(config / locales / en.yml):
en:
username_exist: "username exist"
我认为模型没找到i18n文件?
答案 0 :(得分:2)
在类范围内使用I18n.t
时,就像调用validates_uniqueness_of
时一样,将在加载文件时对其进行评估。这可能不是您想要的,因为这意味着消息将始终显示在默认语言环境中,而不是使用发出每个请求的用户的语言环境。如果在配置I18n之前加载文件,它也可能导致您遇到的问题。
相反,请使用符号:
validates_uniqueness_of :username, ..., :message => :username_exist
请参阅ActiveModel::Errors#generate_message
的文档,了解将翻译放在语言环境文件中的位置。
实际上,如果您遵循ActiveModel命名约定,甚至不需要提供:message
密钥:
en:
activemodel:
errors:
models:
[your model name, e.g. user]:
attributes:
username:
taken: "username exists"
答案 1 :(得分:0)
您是否在application.rb中设置了区域设置?喜欢:
config.i18n.default_locale = :en