如何在Blacklight中为字段标签正确实现I18n?

时间:2017-02-13 08:34:25

标签: ruby-on-rails ruby rails-i18n blacklight

关于如何正确地做到这一点,文档是粗略的。我试过这个:

class ApplicationController < ActionController::Base
  # ...
  before_action :set_locale
  def set_locale
    session[:locale] = I18n.locale = params.delete(:locale) || session[:locale] || I18n.default_locale
  end
end

这足以满足很多事情;但是,我的字段配置如下(遵循Blacklight指南):

class CatalogController < ApplicationController
  include Blacklight::Catalog

  configure_blacklight do |config|
    # ...
    config.add_facet_field 'date', label: 'Date', single: false
    # ...
  end
end

此配置在处理请求之前发生,因此如果我尝试将I18n.t('Date')用于label,它将不会响应区域设置的更改,并始终提供与默认区域设置相对应的标签

什么是&#34;正确&#34;这样做的方法?

编辑:找到各个字段的解决方案。仍然在寻找适当的&#34;搜索字段的解决方案(config.add_search_field)。似乎只有label如果有,#labelize - d key如果没有,作为一个快速的止损措施,我做了这个课:

class Localized
  def initialize(key)
    @key = key
  end

  def to_s
    I18n.t(key)
  end
end

并使用

配置搜索字段
... label: Localized.new('blacklight.search.general.all_fields')

1 个答案:

答案 0 :(得分:0)

感谢苏里亚,我看到了哪里可以看。只要使用正确的密钥,Blacklight的默认模板就已经调用了辅助方法。因此,要使用英语本地化date字段标签,需要名为en.blacklight.search.fields.date的密钥。