2017-02-13 5 views
2

Die Dokumente sind skizzenhaft, wie es richtig gemacht wird. Ich habe das versucht:Wie kann ich I18n in Blacklight für Feldbeschriftungen korrekt implementieren?

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 

Und das reicht für eine Menge Dinge; jedoch sind meine Felder wie folgt konfiguriert (im Anschluss an die Blacklight Führer):

class CatalogController < ApplicationController 
    include Blacklight::Catalog 

    configure_blacklight do |config| 
    # ... 
    config.add_facet_field 'date', label: 'Date', single: false 
    # ... 
    end 
end 

Diese Konfiguration geschieht, bevor die Anforderung verarbeitet wird, so dass, wenn ich versuche, I18n.t('Date') für label zu verwenden, wird es nicht zu Änderungen in locale reagieren, und liefert immer die Beschriftungen, die dem Standardgebietsschema entsprechen.

Was ist der „richtige“ Weg, dies zu tun?

EDIT: Die Lösung für die einzelnen Felder gefunden. Suche immer noch nach der "richtigen" Lösung für die Suchfelder (config.add_search_field). Es scheint, dass diese nur ihre label wenn vorhanden anzeigen, und #labelize -d key wenn nicht. Als schnelle Notbehelf, machte ich diese Klasse:

class Localized 
    def initialize(key) 
    @key = key 
    end 

    def to_s 
    I18n.t(key) 
    end 
end 

und konfiguriert, um das Suchfeld mit

... label: Localized.new('blacklight.search.general.all_fields') 
+0

Wenn Sie 'Blacklight :: Catalog' hinzufügen, ändern Sie die Kette des Vorgängers für' CatalogController ', was normalerweise' CatalogController -> Blacklight :: Catalog -> ApplicationController' ist, also wenn 'set_locale' vor Aktions-Callback aufgerufen wird Es wird nach der 'configure_backlight' Methode ausgeführt. Wahrscheinlich bewegt sich die Aktion, bevor "set_locale" zu "CatalogController" geändert wird. – Surya

+0

@Surya: Gerade versucht, immer noch bei 'en.Date' stecken. Ich habe verifiziert (durch die fortgeschrittene Debugging-Technik von 'puts" YO "'), dass 'configure_blacklight' nur einmal (bei der ersten Anfrage) ausgeführt wird, nicht einmal pro Anfrage. – Amadan

+1

Sieht aus wie es [via Hilfsmethoden], um aufgerufen hat (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), Pass ': f' Schlüssel in Bezug auf das Gebietsschema wird ausgewählt. – Surya

Antwort

0

Dank Surya, ich sah, wo sie suchen müssen. Die Hilfsmethoden werden bereits von den Standardvorlagen von Blacklight aufgerufen, solange man die richtigen Schlüssel verwendet. Um das date Feldfeld in Englisch zu lokalisieren, benötigt man also den Schlüssel en.blacklight.search.fields.date.

Verwandte Themen