2010-06-06 60 views
1

在Rails應用程序中,我有兩個模型:FoodDrink
食物和飲料都有一個name,它必須存儲在兩種語言。
如何更好地實現這些表格的翻譯?Rails:表列的翻譯

我意識到的第一個解決方案是用name_enname_ru替換name列。
另一種解決方案是使用YAML哈希編碼,如{ :en => 'eng', :ru => 'rus' }並將yaml作爲名稱存儲。

假設內容不是靜態的,你會推薦什麼?
也許有好文章?

回答

1

第一個選項(name_enname_ru)是最容易實現的。

您可以包含一個名稱方法,根據所選語言環境返回正確的值。你甚至可以創建一個模塊,如果你要使用這個在很多車型/字段:

class Food < ActiveRecord::Base 
... 
    def name 
    self.send("name_#{I18n.locale}") 
    end 
end 

如果將來您必須包括一個額外的語言,你將不得不增加遷移,當然。但是這不應該太麻煩。

第二個(使用YAML編碼)看起來有點麻煩 - 你不需要做額外的遷移,但是你沒有其他的功能。例如,搜索變得更加困難 - 您不能再使用SQL來查看描述,因爲它們在YAML上編碼而不是純文本。

所以我建議有兩個領域。