2

文档粗略地说明了如何正确执行此操作。我试过这个:

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')for label,它将不会响应语言环境的更改,并且将始终提供与默认语言环境相对应的标签。

这样做的“正确”方法是什么?

编辑:找到各个领域的解决方案。仍在为搜索字段 ( 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')
4

1 回答 1

1

多亏了 Surya,我看到了在哪里看。只要使用正确的键,Blacklight 的默认模板就已经调用了辅助方法。因此,要将date字段标签本地化为英文,需要名为 的键en.blacklight.search.fields.date

于 2017-02-14T00:39:21.293 回答