2016-04-23 31 views
3

我嘗試了全球化的寶石,但這似乎是一個很大的開銷。大多數時候我只需要翻譯一個屬性。我使用的是PostgreSQL,寧願使用hstore。這樣我就不會得到額外的表格,而且如果不是更好的話,性能至少應該是一樣的好。替代全球化的寶石

是否有任何寶石使用這種方法,或者這是否意味着自定義開發?

回答

1

似乎你正在尋找的hstore_translate gem。我沒有測試過它,但它看起來正是從描述中適合您的需求:

Rails I18n庫,用於使用PostgreSQL的hstore數據類型的ActiveRecord模型/數據轉換。它提供了一個受Globalize3啓發的界面,但不需要維護單獨的翻譯表。

0

我一直在使用hstore_translate寶石,並喜歡它。

說例如,您有一個項目模型架構title:stringcontent:text。如果你想content翻譯,所有需要做的是創建一個遷移:

class AddTranslationToProjects < ActiveRecord::Migration 
    def change 
    add_column :projects, :title_translations, 'hstore' 
    end 
end 

和project.rb內:

class Project < ActiveRecord::Base 
    translates :title 
end 

完蛋了!在形式上或在任何地方沒有別的事情要做。適用於整數和布爾值。唯一額外的步驟是激活hstore,如果使用postgres:CREATE EXTENSION hstore

0

我最近創建了寶石awesome_hstore_translate,它基於Rob Worley的原始hstore_translate

hstore_translate使用alias_method_chain,這已被Rails 5.0棄用。

我的寶石具有與原來相同的功能,但它更現代一點。它將數據存儲在沒有後綴的列中,因爲我認爲數據庫模型看起來更加乾淨。原始數據仍然可用。例如, Page.first.title_raw會給你hstore散列。