2016-02-27 36 views
1

我有一個我想翻譯的「資源」表單。我在xx.yml定義的翻譯:Rails - I18n:我如何找出翻譯路徑?

xx: 
    activerecord: 
    models: 
     user: 
     email: "xx" 

而且還試圖「一」和「其他」的標籤,「電子郵件」。但我仍然有問題,要麼遭遇:

I18n::InvalidPluralizationData (translation data {:email=>"xxx"} can not be used with :count => 1): 
    i18n (0.7.0) lib/i18n/backend/pluralization.rb:35:in `pluralize' 
    i18n (0.7.0) lib/i18n/backend/base.rb:40:in `translate' 
    i18n (0.7.0) lib/i18n.rb:158:in `block in translate' 
    i18n (0.7.0) lib/i18n.rb:154:in `catch' 
    i18n (0.7.0) lib/i18n.rb:154:in `translate' 
    activemodel (4.2.5) lib/active_model/naming.rb:188:in `human' 
    activemodel (4.2.5) lib/active_model/errors.rb:437:in `generate_message' 
    activemodel (4.2.5) lib/active_model/errors.rb:449:in `normalize_message' 
    activemodel (4.2.5) lib/active_model/errors.rb:300:in `add' 
    ... 

```

或翻譯不打。

回答

1

我相信你想在用戶模型上翻譯email屬性。在這種情況下,你需要:

xx: 
    activerecord: 
    attributes: 
     user: 
     email: "xx" 

models鍵被用來翻譯的型號名稱,而不是它的屬性。

+1

好的,這對我有用。但如何調試? – knh170

+0

不幸的是,沒有簡單的方法來調試活動記錄i18n集成。最簡單的方法是導航到源代碼並檢查它正在查找哪個翻譯。不是那麼簡單的主要原因是它在內部創建了一個用於翻譯的大量默認值。在你的情況下,它會更加激烈,因爲它在代碼的完全不同的部分(因爲在生成類的名稱而不是屬性的名稱時會引發錯誤)。 – BroiSatse

+2

您可以嘗試調試它的一種方法是使用修補程序I18n後端查找方法打印翻譯鍵,然後調用以前的實現。 – BroiSatse