我有一个使用globalize3 gem的网站(https://github.com/svenfuchs/globalize3),我现在正在添加Tire gem以进行网站搜索。
如何根据实际的区域设置索引表格翻译?现在,获取索引的模型仅使用默认语言环境。
答案 0 :(得分:0)
您必须为所有翻译编制索引:
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
我没有测试上面的代码,只是为了给出一个想法,所以请确保你理解它,并且在你的项目中使用它之前它是有效的,否则会有很多事情发生。