首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用轮胎和Globalize3进行i18n搜索

使用轮胎和Globalize3进行i18n搜索
EN

Stack Overflow用户
提问于 2012-03-31 06:53:23
回答 1查看 746关注 0票数 2

我有一个使用globalize3 gem (https://github.com/svenfuchs/globalize3)的网站,我目前正在添加轮胎gem来进行网站搜索。

如何根据实际区域设置为表翻译建立索引?现在,被索引的模型只使用默认的语言环境。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-13 19:23:56

你必须为所有的翻译建立索引:

代码语言:javascript
复制
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

如果你对很多属性支持很多语言,这可能会变得很麻烦,你可能不得不求助于元编程:

代码语言:javascript
复制
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

我没有测试上面的代码,它只是给出一个想法,所以在你的项目中使用它之前,请确保你理解它并且它可以工作,否则糟糕的事情会发生在™上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9951348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档