我嘗試了全球化的寶石,但這似乎是一個很大的開銷。大多數時候我只需要翻譯一個屬性。我使用的是PostgreSQL,寧願使用hstore。這樣我就不會得到額外的表格,而且如果不是更好的話,性能至少應該是一樣的好。替代全球化的寶石
是否有任何寶石使用這種方法,或者這是否意味着自定義開發?
我嘗試了全球化的寶石,但這似乎是一個很大的開銷。大多數時候我只需要翻譯一個屬性。我使用的是PostgreSQL,寧願使用hstore。這樣我就不會得到額外的表格,而且如果不是更好的話,性能至少應該是一樣的好。替代全球化的寶石
是否有任何寶石使用這種方法,或者這是否意味着自定義開發?
似乎你正在尋找的hstore_translate gem。我沒有測試過它,但它看起來正是從描述中適合您的需求:
Rails I18n庫,用於使用PostgreSQL的hstore數據類型的ActiveRecord模型/數據轉換。它提供了一個受Globalize3啓發的界面,但不需要維護單獨的翻譯表。
我一直在使用hstore_translate寶石,並喜歡它。
說例如,您有一個項目模型架構title:string
和content: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
我最近創建了寶石awesome_hstore_translate
,它基於Rob Worley的原始hstore_translate
。
hstore_translate
使用alias_method_chain
,這已被Rails 5.0棄用。
我的寶石具有與原來相同的功能,但它更現代一點。它將數據存儲在沒有後綴的列中,因爲我認爲數據庫模型看起來更加乾淨。原始數據仍然可用。例如, Page.first.title_raw
會給你hstore散列。