Activeadmin自定义过滤器标签未注册I18n语言环境

时间:2019-07-17 19:40:02

标签: ruby-on-rails filter internationalization activeadmin

我的activeadmin仪表板选项卡中有一些自定义过滤器,并且已将过滤器标签设置为从3个不同的翻译文件中读取其对应的翻译。当用户切换到其他语言时,这是我的应用程序中唯一无法使用/更改的翻译。当我完全删除翻译并重新加载页面时,该错误告诉我,activeadmin确实在其“缺少翻译”错误中寻找错误的翻译文件。 activeadmin是否对自定义过滤器标签进行某种形式的缓存?有没有一种方法可以强制为这些标签查找语言环境?

我已经确认我的set_localeapplication_controller中可以正常工作。我尝试从activadmin ruby​​文件中冗余地重新检查/强制检查区域设置,但是我没有成功完成此操作。我尝试使用Rails文档中的各种方法来阅读译文:https://guides.rubyonrails.org/i18n.html#looking-up-translations
我还在资源的活动管理文件顶部打印了I18n.locale,并打印了以前的语言代码(在用户切换之前)。我也尝试通过将语言环境作为第二个arg传递给标签转换来强制语言环境。

def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
  end
filter :space,
         label: I18n.t('.activeadmin.labels.space_names'),
         collection: proc { Space.order(:name) }

当网址中包含es且所有其他翻译都以西班牙语呈现时,自定义过滤器语言仍为英语。当我删除翻译时,错误是:TRANSLATION MISSING: EN.ACTIVEADMIN.LABELS.SPACE_NAMES 为什么只有这些翻译会查找EN文件?

1 个答案:

答案 0 :(得分:0)

哦,自定义标签必须作为proc传递:

label: proc{I18n.t('.activeadmin.labels.space_names')}