【发布时间】:2012-08-15 01:53:30
【问题描述】:
我正在使用 Ruby on Rails 3.2.2 和 Paperclip 插件。由于我想翻译回形针错误消息,我使用以下代码:
class Article < ActiveRecord::Base
validates_attachment_size :picture,
:less_than => 4.megabytes,
:message => I18n.t('trl_too_big_file_size', :scope => 'activerecord.errors.messages')
end
我的.yml 文件是:
# <APP_PATH>/config/locales/en.yml (english language)
activerecord:
errors:
messages:
trl_too_big_file_size: is too big
# <APP_PATH>/config/locales/it.yml (italian language)
activerecord:
errors:
messages:
trl_too_big_file_size: è troppo grande
我的ApplicationController 是:
class ApplicationController < ActionController::Base
before_filter :set_locale
def set_locale
# I am using code from http://guides.rubyonrails.org/i18n.html#setting-and-passing-the-locale.
I18n.locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
end
# BTW: My `I18n.default_locale` is `:en` (english).
end
但是,当我提交与回形针附件相关的表单时,我的应用程序会生成一个未翻译文本 - 也就是说,它会生成(并输出)一个 没有正确翻译字符串,因为它总是引用默认的区域设置语言错误字符串en.activerecord.errors.messages.trl_too_big_file_size,即使I18n.locale 是:it。我做了一些研究(例如,1、2),但我仍然无法弄清楚如何正确翻译模型文件中与 Paperclip gem 相关的错误消息(参见上面的代码)。这似乎是 Parperclip gem 的一个错误(也因为似乎我不是唯一一个遇到这个问题的人)......
我该如何解决这个问题?
P.S.:我认为这个问题与ApplicationController-Paperclip gem的一些“文件加载顺序过程”有关......但我不知道如何解决这个问题。
【问题讨论】:
-
你解决了吗?我尝试在答案中使用这两种解决方案,但第一个根本不起作用(显然 ActiveRecord I18n 在 Paperclip 中仍然不被真正支持)并且 lambda 翻译了消息(即“必须最多为 %{max] 千字节” ),但模型和属性名称没有翻译,尽管我在 YAML 文件中有它们。
标签: ruby-on-rails ruby ruby-on-rails-3 internationalization paperclip