在切换要转换的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使用时可以正常工作。