문서를 제대로 작성하는 방법에 대한 개요가 나와 있습니다. 나는 이것을 시도했다 :필드 레이블에 대해 Blacklight에서 I18n을 올바르게 구현하는 방법은 무엇입니까?
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
그리고 이것은 많은 것들에 충분하다; 그러나, 내 필드 (블랙 라이트 가이드 다음)과 같이 구성됩니다
내가label
에 대한
I18n.t('Date')
를 사용하려고하면, 그것은 로케일의 변화에 응답하지 않도록 요청이 처리되기 전에이 구성 문제가 발생
class CatalogController < ApplicationController
include Blacklight::Catalog
configure_blacklight do |config|
# ...
config.add_facet_field 'date', label: 'Date', single: false
# ...
end
end
, 기본 로케일에 해당하는 레이블을 항상 제공합니다.
"올바른"방법은 무엇입니까?
편집 : 개별 필드에 대한 해결책을 찾았습니다. 검색 필드 (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')
'include Blacklight :: Catalog'를 사용하면'CatalogController -> Blacklight :: Catalog -> ApplicationController'가 될'CatalogController'에 대한 조상의 체인을 변경하므로 액션 콜백 전에'set_locale'이 호출 될 때 'configure_backlight' 메소드 다음에 실행됩니다. 액션'set_locale'을'CatalogController'로 옮기기 전에 아마 그것을 고칠 것입니다. – Surya
@ 수 리아 : 방금 시도했지만 여전히 'en.Date'에 머물렀다. 필자는'configure_blacklight' 블록이 요청 당 한 번이 아니라 첫 번째 요청에서 한 번만 실행된다는 것을 확인했습니다 ('puts'의 고급 디버깅 기술로). – 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