有关如何正确执行此操作的文档很粗略。我试过这个:
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
,它不会响应语言环境,并将始终提供与默认语言环境对应的标签。
执行此操作的“正确”方法是什么?
编辑:找到各个字段的解决方案。仍在寻找搜索字段的“适当”解决方案 (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')
最佳答案
多亏了 Surya,我才知道该往哪里看。 Blacklight 的默认模板已经调用了辅助方法,只要使用正确的键即可。因此,要将 date
字段标签本地化为英文,需要名为 en.blacklight.search.fields.date
的键。
关于ruby-on-rails - 如何在 Blacklight 中为字段标签正确实现 I18n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199702/