アプリでモデルを国際化するために、次のアプローチを使用しています。
class GenreLocalization < ActiveRecord::Base
attr_accessible :genre_id, :name, :locale
end
class Genre < ActiveRecord::Base
has_many :genre_localizations, :dependent => :destroy
def name(locale = nil)
locale ||= I18n.locale
genre_localizations.find_by_locale(locale).name
end
end
呼び出すgenre.name
と、現在のロケールのジャンルの名前が返されます。
sunspot solr
次に、ロケールに基づいてこのモデルにインデックスを付けます。id
私のアイデアは、localized_name
との組み合わせをlocale
各行に格納することです。このようにして、次の方法でジャンルを検索できます。
search = Genre.search do
keywords params[:search]
with(:locale, 'en')
end
これまでの私の最善のアプローチは次のとおりです。
searchable do
Language.supported_locales.each do |locale|
integer :id, :stored => true
text :name, :stored => true, :using => :name(locale)
string :locale
end
end
しかし、この行text :name, :stored => true, :using => :name(locale)
は(明らかに)無効であり、ローカライズされた名前にインデックスを付ける方法を見つけようとして立ち往生しています。
これを行う方法はありますか?これは、ローカライズされた検索を取得するための正しいアプローチですらありますか?