I use carrierwave 0.9.0
with Rails 4 and I\'m trying to make a custom error message. After doing some search, I found this answer:
en:
errors:
There seem be some loading issue with Rails 4.0 with regards to i18n files
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activesupport-4.0.0/lib/active_support/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activemodel-4.0.0/lib/active_model/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activerecord-4.0.0/lib/active_record/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/actionpack-4.0.0/lib/action_view/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/carrierwave-0.9.0/lib/carrierwave/locale/en.yml
/Users/joshianiket22/carrierwave_tester/config/locales/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activesupport-3.2.11/lib/active_support/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activemodel-3.2.11/lib/active_model/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activerecord-3.2.11/lib/active_record/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/actionpack-3.2.11/lib/action_view/locale/en.yml
/Users/joshianiket22/workspace/zenjavi/carrierwave_tester/config/locales/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/carrierwave-0.9.0/lib/carrierwave/validations/../locale/en.yml
One can clear see the difference between the two the carrierwave en.yml is loaded after a the application specific en.yml and there is your issue
I suggest there is no easy way unless you the change the load_paths in rails application and some how manage to change the order of load_paths of as expected
I have given a pull request over here. Completely at awe of Carrierwave guys to decide on it
I was refraining in giving you this solution earlier but still if you want it that bad here what you can do
define a file in lib directory(let say auto_load_i18n.rb) and assign the lib path to autoload (in application.rb)
config.autoload_paths += %w(#{config.root}/lib)
Inside auto_load_i18n.rb
write this
I18n.load_path.delete(Rails.root.join("config/locales/en.yml").to_s)
I18n.load_path << Rails.root.join("config/locales/en.yml").to_s
And require the lib file at the top of your application_controller.rb
require 'auto_load_i18n'
class ApplicationController < ActionController::Base
and I guess everything would work then
You can now understand as to why I was refraining in giving this as a possible solution :)
Hope this help