如何在活动管理员中编辑菜单栏? - 改变语言。 Rails

how to edit menu bar in active admin? - change the language. Rails

我正在使用带有 i18n 的 Active Admin。一切正常,但如果我想更改语言,我需要手动更改 - 更改站点地址:-(...如何在带有模型名称的导航栏中添加按钮?它可能是另一个地方,但对它有好处 - 可访问。

您可以通过将以下行添加到 application_controller.rb 来在前置过滤器中设置默认语言环境:

before_filter :set_locale

def set_locale
  I18n.locale = params[:locale] || I18n.default_locale
end

def default_url_options(options={})
  { :locale => I18n.locale }
end

在active_admin.rb中添加用于选择语言的菜单:

config.namespace :admin do |admin|
  admin.build_menu :utility_navigation do |menu|
    menu.add :label => "Languages" do |lang|
      lang.add :label => "English",:url => proc { url_for(:locale => 'en') }, id: 'i18n-en', :priority => 1
      lang.add :label => "Mexican",:url => proc { url_for(:locale => 'es') }, id: 'i18n-es', :priority => 2
    end
    menu.add :label => proc { display_name current_active_admin_user },
              :url => '#',
              :id => 'current_user',
              :if => proc { current_active_admin_user? }
    admin.add_logout_button_to_menu menu
  end
end

您可以在 application.rb 中设置默认语言环境:

config.before_configuration do
  I18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
  I18n.default_locale = :en
  I18n.reload!
end