我正在尝试升级我的应用程序的I18n后端,以使用数据库而不是yml文件进行国际化。我正在按照此处找到的I18n-active_record gem找到的步骤进行操作:https://github.com/svenfuchs/i18n-active_record。
不幸的是,aws-s3 gem似乎在某种程度上是冲突的,因为我创建locale.rb初始化程序后甚至无法启动我的服务器或控制台。以下是我正在遵循的步骤摘要:
gem "i18n-active_record", "~> 0.0.2"
create new file config/initializers/locale.rb
inside locale.rb
I18n.backend = I18n::Backend::Database.new
restart localhost server to load initializer
错误消息
/Users/user_name/.rvm/gems/ree-1.8.7-2010.02@app/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in`const_missing':未初始化的常量I18n :: Backend :: Database(NameError) ......(还有几行)
任何帮助或见解都将不胜感激!
答案 0 :(得分:2)
很棒的问题和很好的讨论。答案包含在上述评论的组合中,但对于那些升级到Rails 3应用程序的人来说,这是我必须采取的步骤的摘要。
将此添加到您的Gemfile:
gem 'i18n-active_record', :require => 'i18n/active_record'
将此添加到新的配置文件config / initializers / locale.rb
require 'i18n/backend/active_record'
I18n.backend = I18n::Backend::ActiveRecord.new
取出之前初始化记录存储的application.rb中的任何代码。这样可以清除丢失的内容错误。关于此后端模块的Github存储库的完整说明已从核心I18n中删除:https://github.com/svenfuchs/i18n-active_record
答案 1 :(得分:0)
尽管github中的自述文件是这样说的,但我认为数据库常量实际上并不是由gem定义的。尝试
I18n.backend = I18n::Backend::ActiveRecord.new