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')
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
@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
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