15

目前,我有以下4個文件在我配置/區域設置我的根應用程序的組織在Rails應用程序

-en.yml 
-de.yml 
-simple_form.en.yml 
-simple_form.de.yml 

在我application.rb中駐留在規格/虛擬文件夾用於測試應用程序的寶石我有下面的代碼行,這似乎是檢索翻譯預期:

# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. 
config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] 
config.i18n.default_locale = :de 

I N ow希望將結構引入到我的locales文件夾的文件結構中,但是當我添加其他文件夾並更改application.rb中的加載路徑時,我收到了翻譯未找到的錯誤。這裏是我的嘗試:

嘗試在包括結構配置/區域設置我的根應用程序的

-views 
    -en.yml 
    -de.yml 
-models 
    -en.yml 
    -de.yml 
-forms 
    -simple_form.en.yml 
    -simple_form.de.yml 

而在application.rb中我的負載路徑更改爲:

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')] 

根據以下導軌指南: http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-domain-name

+0

請告訴我們你所得到的特定錯誤。你有可以分享的堆棧跟蹤嗎? –

+0

在視圖中,我收到字符串:翻譯缺少:en.new_tenant.header,我沒有看到任何錯誤消息 – Jay

+0

問題可能是,爲了測試目的,application.rb文件駐留在spec文件夾中,並且我的config文件夾沒有被加載在根級別,我只看到翻譯作爲配置/語言環境自動添加,但沒有任何子文件夾? – Jay

回答

10

要測試主機應用程序,您需要將i18n.load_path更改爲主應用程序的config文件夾,而不是用於測試目的的虛擬規範。代碼如下:

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')] 
config.i18n.default_locale = :en 
+6

對於我來說字符串是:'config.i18n.load_path + = Dir [Rails.root.join('config','locales','**', '*。{rb,yml}')。to_s] ' – franzlorenzon

+0

更好地使用'Rails.root'比硬編碼的根路徑 – Dorian

7

我有一個類似的問題,我解決它通過加入這一行到我的application.rb中配置:

# load the subfolders in the locales 
config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.{rb,yml}"] 
1

以下選項都爲我工作

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

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

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**' '*.{rb,yml}').to_s] 

重新啓動網絡服務器當然...