活动管理员搜索状态区域设置不起作用

时间:2017-09-21 08:02:06

标签: ruby-on-rails internationalization activeadmin

search status not translated (image)

英语区域设置(activeadmin.en.yml)

 en: 
   active_admin:
    search_status:
      headline: "Search status:"

日语区域设置(activeadmin.ja.yml)

ja:
  active_admin:
    search_status:
      headline: "検索条件:"

我已经在我的yml文件中有这些翻译,但我不知道为什么它不起作用。我还发现ActiveAdmin使用了这段代码I18n.t("active_admin.search_status.headline")我已经在ActiveAdmin Github页面和StackOverflow上搜索了问题,但我找不到任何我现在遇到的问题。

2 个答案:

答案 0 :(得分:1)

实际上,您的yml文件应如下所示:

activeadmin.en.yml:

en:
  active_admin:
    search_status:
      headline: "Search status:"

activeadmin.ja.yml:

ja:
  active_admin:
    search_status:
      headline: "検索条件:"

答案 1 :(得分:1)

查看代码Activeadmin似乎有一个错误。

以下行似乎只执行一次,并且不会随当前语言环境而改变

ActiveAdmin::SidebarSection.new I18n.t("active_admin.search_status.headline"), only: :index, if: -> { params[:q] || params[:scope] } do

activeadmin中的另一行代码是这样的,只要更改了语言环境,它就能正常工作

ActiveAdmin::SidebarSection.new :filters, only: :index, if: ->{ active_admin_config.filters.any? } do

所以似乎最好传递一个符号。 这是一个补丁(将其添加到初始化程序中),您可以添加它以使其正常工作:

module ActiveAdmin
  module Filters
    module ResourceExtension
      def search_status_section
        ActiveAdmin::SidebarSection.new :headline, only: :index, if: -> { params[:q] || params[:scope] } do
          active = ActiveAdmin::Filters::Active.new(resource_class, params)

          span do
            h4 I18n.t("active_admin.search_status.current_scope"), style: 'display: inline'
            b active.scope, style: "display: inline"

            div style: "margin-top: 10px" do
              h4 I18n.t("active_admin.search_status.current_filters"), style: 'margin-bottom: 10px'
              ul do
                if active.filters.blank?
                  li I18n.t("active_admin.search_status.no_current_filters")
                else
                  active.filters.each do |filter|
                    li do
                      span filter.body
                      b filter.value
                    end
                  end
                end
              end
            end
          end
        end
      end
    end
  end
end

另外,在您的语言环境文件中添加headline键:

 sidebars:
   filters: "検索条件"
   search_status: "検索状態"
   headline: "TODO Search status:"