文档粗略地说明了如何正确执行此操作。我试过这个:
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')