Я только что сделал то же самое, за исключением того, что у меня были проблемы с установкой Mongo-I18n, потому что он зависит от очень старой версии MongoDB.
Чтобы обойти это, я скопировал код из здесь в lib/mongo_i18n.rb
.
Вы были на правильном пути с вашим инициализатором, хотя, если вы используете Mongoid - лучший путь вперед - это сделать:
require 'mongo_i18n'
collection = Mongoid.database.collection('i18n')
I18n.backend = I18n::Backend::KeyValue.new(MongoI18n::Store.new(collection))
Что говорит бэкэнду I18n использовать новую коллекцию (называемую i18n), но в той же базе данных, что и остальная часть вашего приложения.
Убедитесь, что вы удалили гем Mongo_I18n из своего файла gemfile и запустили bundle
перед тем, как снова запустить сервер.
Вы можете получить доступ к своему магазину напрямую, используя:
I18n.backend.store
Но чтобы сделать его немного чище, я добавил этот метод в свою библиотеку I18n:
# mongo_i18n.rb
def self.store
collection = Mongoid.database.collection('i18n')
MongoI18n::Store.new
end
Чтобы я мог получить доступ к магазину напрямую с помощью:
MongoI18n.store