我有一个使用 globalize3 gem 的站点(https://github.com/svenfuchs/globalize3),我目前正在添加轮胎 gem 来进行站点搜索。
如何根据实际语言环境索引表翻译?现在,被索引的模型只使用默认语言环境。
我有一个使用 globalize3 gem 的站点(https://github.com/svenfuchs/globalize3),我目前正在添加轮胎 gem 来进行站点搜索。
如何根据实际语言环境索引表翻译?现在,被索引的模型只使用默认语言环境。
您必须索引所有翻译:
class Centre < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
mapping do
indexes :title_en, :as => lambda { |post| I18n.locale = :en; post.title }
indexes :title_es, :as => lambda { |post| I18n.locale = :es; post.title }
indexes :title_jp, :as => lambda { |post| I18n.locale = :jp; post.title }
end
end
如果您为很多属性支持多种语言,这可能会变得很麻烦,您可能不得不求助于元编程:
class Centre < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
mapping do
%w[en it jp].each do |locale|
%w[title text].each do |attribute|
class_eval<<-RUBY
indexes :#{attribute}_#{locale}, :as => lambda { |post| I18n.locale = :#{locale}; post.#{attribute} }
RUBY
end
end
end
end
我没有测试上面的代码,只是为了给出一个想法,所以在你的项目中使用它之前,请确保你理解它并且它可以工作,否则会发生坏事™。