ruby-on-rails - 如何在 Blacklight 中为字段标签正确实现 I18n?

标签 ruby-on-rails ruby rails-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,它不会响应语言环境,并将始终提供与默认语言环境对应的标签。

执行此操作的“正确”方法是什么?

编辑:找到各个字段的解决方案。仍在寻找搜索字段的“适当”解决方案 (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')

最佳答案

多亏了 Surya,我才知道该往哪里看。 Blacklight 的默认模板已经调用了辅助方法,只要使用正确的键即可。因此,要将 date 字段标签本地化为英文,需要名为 en.blacklight.search.fields.date 的键。

关于ruby-on-rails - 如何在 Blacklight 中为字段标签正确实现 I18n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199702/

相关文章:

arrays - 如何从包含二进制数据的字符串中提取模式

ruby-on-rails - 我应该如何以 DRY 和数据库有效的方式存储本地化值 - Ruby on Rails/i18n

ruby-on-rails - Rails 4 多域应用程序,为每个域 i18n 语言环境设置了语言环境

ruby-on-rails - Ruby,Errno::EACCES,权限被拒绝,链轮

ruby-on-rails - Ruby 变量赋值为 false 但为 nil

html - 音频中的内容与报道的内容不符 - 回形针

ruby - 多行字符串格式

ruby-on-rails - 允许从 rails "public/"的子目录中列出 Apache 目录?

ruby-on-rails - Ruby on Rails 每次触发更新序列化属性

ruby-on-rails - Rails i18n - 无法更改错误格式