我正在尝试创建一个基于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)
我不确定发生了什么,我非常感谢你的帮助.
(虽然这讨论了Blacklight引擎,但我相信这个问题实际上纯粹是关于Rails.)
从继续我的追求scope围绕mount无效?(tl; dr:使引擎路由服从与:locale应用程序路由相同的范围),在挖掘Rails源之后.
目前,我有这个设置:
# config/routes.rb
Rails.application.routes.draw do
Blacklight::Engine.routes.default_scope = { path: "(:locale)", locale: /en|ja/ }
mount Blacklight::Engine => '/'
scope "(:locale)", locale: /en|ja/ do
# ...
end
end
Run Code Online (Sandbox Code Playgroud)
这使得路线正常工作.但是,我有这个视图代码来生成当前页面的备用语言链接(由link_to当前页面加上/与param [duplicate]合并):
<div id="languages_nav_popup" class="navbar-inverse">
<% locales.each do |locale| %>
<% next if locale == I18n.locale %>
<%= link_to params.permit!.merge(locale: locale) do %>
<img src="<%= url_for "/img/flag/#{locale}.png" %>"/>
<% end %>
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)
这link_to在当前页面是一个引擎路由失败.这是由于这段代码actionpack:
# lib/action_dispatch/journey/formatter.rb …Run Code Online (Sandbox Code Playgroud) 我正在尝试将高级搜索工具添加到Blacklight安装中,但我知道对于rails来说是微不足道的.
我被困在一个(迄今为止很棒的)教程中,该教程指出:
Turn this feature on by adding to your CatalogController definition:
self.search_params_logic << :add_advanced_parse_q_to_solr
Run Code Online (Sandbox Code Playgroud)
我可以找到我的CatalogController,但我不知道在哪里放置"<<:add_advanced_parse_q_to_solr"thingie.
它是顶级类定义的一部分吗?现在它说:
class CataligController < ApplicationController
Run Code Online (Sandbox Code Playgroud)
我应该用"<<:add_advanced_parse_q_to_solr"交换"<ApplicationController",还是应该追加它?
":"是什么意思,"<<"是什么意思?
如果有人对可以教我这些(我猜)基本语法的教程有任何好的参考,请在这里发布 - 我很想知道我在做什么而不是只是复制/粘贴我的方式!