首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >切换要翻译的Blacklight标签的区域设置后,需要刷新页面

切换要翻译的Blacklight标签的区域设置后,需要刷新页面
EN

Stack Overflow用户
提问于 2017-04-10 16:00:17
回答 1查看 391关注 0票数 9

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

当我切换语言时,除了Blacklight标签之外,所有的东西都可以完美地翻译。只有当我刷新页面时,标签才会被转换。

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

但这就是我现在得到的:"Yearترتيبحسب“

当从阿拉伯语切换回英语时,同样的问题也会发生-标签以阿拉伯语显示,直到我刷新页面。

这是我的Blacklight配置:

代码语言:javascript
复制
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

下面是我如何在我的应用程序控制器中设置区域设置:

代码语言:javascript
复制
class ApplicationController < ActionController::Base

 before_filter :set_locale
 def set_locale
   I18n.locale = params[:locale] || I18n.default_locale
 end

 # ...
end

我不知道发生了什么,我真的很感谢你在这方面的帮助。

EN

回答 1

Stack Overflow用户

发布于 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

代码语言:javascript
复制
"blacklight.search.fields.sort.#{key}"

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

代码语言:javascript
复制
en:    
  blacklight:
    search:
      fields:
        sort:
          pub_date_sort desc, title_sort asc: "Sort by Year"

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43317700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档