在切换要转换的Blacklight标签的区域设置后,需要刷新页面

我正在尝试创建一个基于Blacklight的Rails应用程序的阿拉伯语版本。 这是我面临的问题:

当我切换语言时,除了Blacklight标签外,一切都完美无缺。 只有当我刷新页面时才会翻译标签。

这是我要显示的标签:“ترتيبحسبعام”(翻译:按年份排序)

但这就是我目前得到的:“年ترتيبحسب”

从阿拉伯语切换回英语时会出现同样的问题 – 标签以阿拉伯语显示,直到我刷新页面。

这就是我的Blacklight配置:

class CatalogController  I18n.t('sortby.year') # ... end end 

这是我在应用程序控制器中设置区域设置的方法:

 class ApplicationController < ActionController::Base before_filter :set_locale def set_locale I18n.locale = params[:locale] || I18n.default_locale end # ... end 

我不确定发生了什么,我真的很感谢你的帮助。

我认为在第一页渲染时没有考虑正确的语言环境的问题在于, configure_blacklight是一个类方法 ,它在解释CatalogController类时运行,即在运行locale切换的before_filter之前运行 。 (实际上我不太明白为什么它在页面重新加载后实际工作,因为我希望设置blacklight配置之后总是运行前置filter。)

尽管如此, 最近在Blacklight项目中添加了对I18n-ing搜索和排序字段的支持 – 请参阅Pull Request#1566 。 似乎此更改不是公开发布的一部分,因此您需要使用master分支版本才能实际使用此function。

Blacklight以及这个新function使用Rails I18n API进行本地化标签,因此您不应手动指定标签,而应使用I18n字典YAML文件(有关更多信息和选项,请参阅Rails指南 )。

在您的特定情况下,在以下键下查找排序字段的标签:

 "blacklight.search.fields.sort.#{key}" 

其中key是传递给排序字段定义的第一个参数的值。 因此,对于您的特定字段,您应该在字典中定义类似以下内容:

 en: blacklight: search: fields: sort: pub_date_sort desc, title_sort asc: "Sort by Year" 

(这将是英文版)。 我很惊讶YAML在键定义中没有空格和逗号的问题,但实际上我测试了这样的键在I18n API使用时可以正常工作。