user762579
user762579

Reputation:

Rails 4 I18n - missing translation after adding new locale file

Currently I have some locales subdirectories , which are correctly set in the configuration

        config/application.rb
        config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.{rb,yml}"]

I have already 2 locales files , and I can get easily the translations :

        config/locales/admin/dashboard.en.yml
        en:
          dashboard:
            title: Dashboard

        config/locales/admin/dashboard.fr.yml
        fr:
          dashboard:
            title: Tableau de bord

        irb(main):014:0> I18n.locale = :en
        => :en
        irb(main):015:0> I18n.t("dashboard.title")
        => "Dashboard"
        irb(main):016:0> I18n.locale = :fr
        => :fr
        irb(main):017:0> I18n.t("dashboard.title")
        => "Tableau de bord"

Now I added 2 other locales files ( quite similar to previous ones...) into the SAME subdirectory 'locales/admin'

        # =============

        config/locales/admin/sheet.en.yml
        en:
          sheet:
            title: Sheet

        config/locales/admin/sheet.fr.yml
        fr:
          sheet:
            title: Table

I RESTARTED the server ... and tried wo success to get the new added translations

        irb(main):010:0> I18n.locale = :en
        => :en
        irb(main):011:0> I18n.t("sheet.title")
        => "translation missing: en.sheet.title"
        irb(main):012:0> I18n.locale = :fr
        => :fr
        irb(main):013:0> I18n.t("sheet.title")
        => "translation missing: fr.sheet.title"

translations missing in BOTH languages? so I guess something is wrong in the subdirectories definition in the application.rb config file, as I checked the Rails.application.config.i18n.load_path ,a dn the newly added files ARE NOT in the path ..

"..../config/locales/admin/dashboard.en.yml",   
"..../config/locales/admin/dashboard.fr.yml",

but not

"..../config/locales/admin/sheet.en.yml", 
"..../config/locales/admin/sheet.fr.yml", 

thanks for suggestions

Upvotes: 2

Views: 2140

Answers (2)

Elvn
Elvn

Reputation: 3057

Change application.rb => Restart the Rails server

I would like to add that any time you make any change to application.rb you must restart the server for the change to take effect, not just the i18n component.

Upvotes: 0

user762579
user762579

Reputation:

It seems this issue has been already detected and it's related to the 'spring' process..

#  https://github.com/rails/spring/issues/408
#   rafaelfranca May 28
I think you got this error because you added the locale file after you
started the spring process for your environment, so when you add the 
file it is not loaded inside the spring process. When you change the 
application.rb the spring process is reloaded and your locale is now 
working.

I changed one line ( added one blank line ...) in the application.rb than I restarted the server , and the new translations are found

rafael stated the rails console should restart the spring

Any rails command starts springs. rails console, rails generate, 
rails server. You can stop the spring process with spring stop.

so, after ADDING a new locale file, better stopping spring before restarting the server

spring stop
rails server ( or rails console )

Upvotes: 5

Related Questions