2017-02-13 8 views
2

문서를 제대로 작성하는 방법에 대한 개요가 나와 있습니다. 나는 이것을 시도했다 :필드 레이블에 대해 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') 
+0

'include Blacklight :: Catalog'를 사용하면'CatalogController -> Blacklight :: Catalog -> ApplicationController'가 될'CatalogController'에 대한 조상의 체인을 변경하므로 액션 콜백 전에'set_locale'이 호출 될 때 'configure_backlight' 메소드 다음에 실행됩니다. 액션'set_locale'을'CatalogController'로 옮기기 전에 아마 그것을 고칠 것입니다. – Surya

+0

@ 수 리아 : 방금 시도했지만 여전히 'en.Date'에 머물렀다. 필자는'configure_blacklight' 블록이 요청 당 한 번이 아니라 첫 번째 요청에서 한 번만 실행된다는 것을 확인했습니다 ('puts'의 고급 디버깅 기술로). – Amadan

+1

[헬퍼 메소드를 통해] 호출해야합니다 (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

답변

0

덕분에 검색 필드를 구성 : 빠른 중지 - 갭 조치로,이 클래스를했다. 도우미 메서드는 올바른 키를 사용하는 한 Blacklight의 기본 템플릿에 의해 이미 호출됩니다. 따라서 date 필드 레이블을 영어로 현지화하려면 en.blacklight.search.fields.date이라는 키가 필요합니다.