2011-09-26 71 views
0

在我en.yml區域設置文件(配置/區域設置/ en.yml),我有如何用Rails中的自定義值覆蓋區域設置值?

en: 
    settings: 
    updated: 'Your settings have been updated.' 

有時候,我想重寫與其他文本settings.updated但仍然使用EN區域設置。

我試過以下,但settings.updated沒有被改寫:

locale_overrides = {"settings"=>{"updated"=>"override text"}} 
I18n.backend.store_translations(I18n.locale, {"settings"=>{"updated"=>"override text"}}) 

p locale_overrides['settings']['updated'] 
p I18n.t('settings.updated') 

assert I18n.t('settings.updated') == locale_overrides['settings']['updated'] 

及以下打印到控制檯:

"override text" 
"Your settings have been updated." 

任何想法,我做錯了或如何正確覆蓋區域設置?

UPDATE

看起來像發生這種情況是因爲,作爲文檔狀態,

The backend will lazy-load these translations when a translation 
is looked up for the first time. 
+1

爲什麼你想首先覆蓋區域設置值?我認爲引入新的密鑰/值並將其用於您的特定情況會更容易且更易於維護。 – rdvdijk

+0

你會在哪裏介紹新的鍵/值?你會在哪裏存儲它? –

+0

你在談論什麼是「有時」? – Gareth

回答

0

最後我用一個鍵值後端鏈接:

key_value_i18n_backend = I18n::Backend::KeyValue.new(locale_overrides_hash) 
I18n.backend = I18n::Backend::Chain.new(key_value_i18n_backend, I18n.backend) 
相關問題