2017-03-06 23 views
0

我使用rails 5.0.2和spree 3.2.0.rc3。我有这个钥匙在我的翻译文件:为什么我的翻译键被忽略

ru: 
    spree: 
    shipment_states: 
     canceled: 'отменен' 
     canceled_test: 'test' 

而且在发展中,我赶上与消息的I18n :: MissingTranslationData例外:“翻译丢失:ru.spree.shipment_states.canceled”。我可以从异常页面上的控制台中看到的,我的翻译actualy加载(“canceled_test”键被添加),但“取消”键被忽略了某些原因:

>> (I18n.t '.')[:spree][:shipment_states] 
=> {:backorder=>"задерживается", :canceled=>nil, :partial=>"частично", :pending=>"ожидает", :ready=>"готов", :shipped=>"отправлен", :canceled_test=>"test"} 

为什么?我怎样才能调试呢?

回答

0

检查application.rb中的线的存在:

config.i18n.default_locale = :ru 

然后尝试所有状态添加到“shipment_states”。在我的情况下获得以下代码:

ru: 
    spree: 
    shipment_states: 
     backorder: 'Задерживается' 
     canceled: 'Отменен' 
     partial: 'Доставлен частично' 
     pending: 'Ожидает подтверждения' 
     ready: 'Готов к отправке' 
     shipped: 'Отправлен' 
+0

我设置默认语言环境在一个单独的初始化程序,作为评论在application.rb推荐。我确信我的翻译文件已经加载(我已经添加了一个新的键'cancelled_test',它只存在于:ru语言环境中,我可以在(I18n.t'。')[:spree]的输出中看到它。 [:shipment_states]。似乎有些东西用nil覆盖'取消'键值:\ –

+0

我不知道为什么发生这个错误,而且你不是唯一一个有类似问题的人(http://stackoverflow.com/问题/ 41540081/spree-translation-missing-shipment-details),但通过从官方存储库的File中复制一段代码,我获得了帮助:https://github.com/spree/spree/blob/ master/core/config/locales/en.yml并进行更改当我仅更改“已取消”部分时,出现与您相同的错误 – D7na

+0

好的,我会检查它 –