Документы являются отрывочными о том, как это сделать должным образом. Я пробовал это:Как правильно реализовать 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
, он не будет реагировать на изменения в местности, и всегда будет обслуживать метки, соответствующие языку по умолчанию.
Что такое «правильный» способ сделать это?
EDIT: Нашли решение для отдельных полей. Все еще ищет «правильное» решение для полей поиска (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')
Когда вы включаете Blacklight :: Catalog', вы изменяете цепочку предков для 'CatalogController', которая обычно будет' CatalogController -> Blacklight :: Catalog -> ApplicationController', поэтому, когда вызывается 'set_locale' перед вызовом функции action , он запускается после метода 'configure_backlight'. Вероятно, перемещение до действия 'set_locale' в' CatalogController' исправит его. – Surya
@Surya: Просто попробовал, все еще застрял в 'en.Date'. Я проверил (по передовой методике отладки 'puts" YO "'), что блок 'configure_blacklight' выполняется только один раз (по первому запросу), а не один раз за запрос. – Amadan
Похоже, он должен вызываться [через вспомогательные методы] (https://github.com/projectblacklight/blacklight/blob/1cfced619f9582a0655d7151a5ec1c01dc99db97/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb#L85-L103): ['render_search_to_s_filters'] (https://github.com/projectblacklight/blacklight/blob/291d0c08bb58c10bba9f2b35c9030945fabf0d53/app/helpers/blacklight/search_history_constraints_helper_behavior.rb#L30), передайте ключ ': f' в отношении выбранной локали. – Surya