我正在尝试创建一个基于Blacklight的Rails应用程序的阿拉伯语版本。这是我面临的问题:
当我切换语言时,除了Blacklight标签之外,所有的东西都可以完美地翻译。只有当我刷新页面时,标签才会被转换。
这是我想要显示的标签:“ترتيبحسبعام”(翻译:按年份排序)
但这就是我现在得到的:"Yearترتيبحسب“
当从阿拉伯语切换回英语时,同样的问题也会发生-标签以阿拉伯语显示,直到我刷新页面。
这是我的Blacklight配置:
class CatalogController < ApplicationController
include Blacklight::Catalog
configure_blacklight do |config|
# ...
config.add_sort_field 'pub_date_sort desc, title_sort asc', :label => 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我不知道发生了什么,我真的很感谢你在这方面的帮助。
发布于 2017-04-15 05:57:30
我认为在第一次呈现页面时没有考虑到正确的区域设置的问题在于,configure_blacklight是一个类方法,它在解释CatalogController类时运行,即在用于区域切换的 page 运行之前运行。(实际上,我不太理解为什么它在页面重新加载后实际工作,因为我希望在设置blacklight配置之后,会始终运行之前的筛选器。)
不过,最近在Blacklight项目中添加了对I18n-ing搜索和排序字段的支持-请参阅Pull Request #1566。这一更改似乎还不是公开发布的一部分,因此您需要使用master分支版本才能真正使用此功能。
一般而言,Blacklight以及这个新功能都为本地化标签提供了uses Rails I18n API,因此您应该使用I18n字典YAML文件(有关更多信息和选项,请参阅Rails Guides ),而不是手动指定标签。
在您的特定情况下,排序字段的标签是以下键下的looked up:
"blacklight.search.fields.sort.#{key}"其中,key是传递给排序字段定义的第一个参数的值。因此,对于您的特定字段,您应该在字典中定义如下内容:
en:
blacklight:
search:
fields:
sort:
pub_date_sort desc, title_sort asc: "Sort by Year"(这将是英文版本)。我很惊讶YAML在键定义中没有空格和逗号的问题,但实际上我测试了这样的键在被I18n应用编程接口使用时工作正常。
https://stackoverflow.com/questions/43317700
复制相似问题