hum*_*nim 9 ruby-on-rails blacklight rails-i18n
我正在尝试创建一个基于Blacklight的Rails应用程序的阿拉伯语版本.这是我面临的问题:
当我切换语言时,除了Blacklight标签外,一切都完美无缺.只有当我刷新页面时才会翻译标签.
这是我要显示的标签:"ترتيبحسبعام"(翻译:按年份排序)
但这就是我目前得到的:"年ترتيبحسب"
从阿拉伯语切换回英语时会出现同样的问题 - 标签以阿拉伯语显示,直到我刷新页面.
这就是我的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
Run Code Online (Sandbox Code Playgroud)
以下是我在Application控制器中设置区域设置的方法:
class ApplicationController < ActionController::Base
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
# ...
end
Run Code Online (Sandbox Code Playgroud)
我不确定发生了什么,我非常感谢你的帮助.
我认为在第一页渲染时没有考虑正确的区域设置的问题在于,它configure_blacklight是在类被解释时运行的类方法CatalogController,即在运行 for 区域设置切换之前before_filter。(实际上我不太明白为什么它在页面重新加载后实际上起作用,因为我希望 before 过滤器始终在设置黑光配置后运行。)
尽管如此, Blacklight 项目最近添加了对国际化搜索和排序字段的支持- 请参阅Pull Request #1566。看来此更改尚未公开发布,因此您需要使用master分支版本才能实际使用此功能。
一般来说,Blacklight 以及这个新功能都使用 Rails I18n API来处理本地化标签,因此您应该使用 I18n 字典 YAML 文件,而不是手动指定标签(有关更多信息和选项,请参阅Rails 指南)。
在您的特定情况下,将在以下键下查找排序字段的标签:
"blacklight.search.fields.sort.#{key}"
Run Code Online (Sandbox Code Playgroud)
其中key是传递给排序字段定义的第一个参数的值。因此,对于您的特定领域,您应该在词典中定义如下内容:
en:
blacklight:
search:
fields:
sort:
pub_date_sort desc, title_sort asc: "Sort by Year"
Run Code Online (Sandbox Code Playgroud)
(这适用于英文版本)。我很惊讶 YAML 在键定义中没有空格和逗号问题,但实际上我测试过,这样的键在 I18n API 使用时工作正常。
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |