blacklight 7.7.0 → 7.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.docker/app/Dockerfile +26 -0
- data/.docker/app/entrypoint.sh +6 -0
- data/.env +5 -0
- data/.rubocop_todo.yml +13 -13
- data/.travis.yml +15 -23
- data/Gemfile +4 -1
- data/README.md +4 -0
- data/VERSION +1 -1
- data/app/assets/stylesheets/blacklight/_pagination.scss +4 -0
- data/app/components/blacklight/constraint_layout_component.html.erb +21 -0
- data/app/components/blacklight/constraint_layout_component.rb +16 -0
- data/app/components/blacklight/facet_field_component.html.erb +25 -0
- data/app/components/blacklight/facet_field_component.rb +11 -0
- data/app/components/blacklight/facet_field_list_component.html.erb +18 -0
- data/app/components/blacklight/facet_field_list_component.rb +22 -0
- data/app/components/blacklight/facet_field_no_layout_component.rb +13 -0
- data/app/components/blacklight/facet_item_component.rb +120 -0
- data/app/helpers/blacklight/catalog_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/facets_helper_behavior.rb +84 -48
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +64 -33
- data/app/javascript/blacklight/modal.js +1 -1
- data/app/models/concerns/blacklight/document/extensions.rb +3 -0
- data/app/models/concerns/blacklight/document/semantic_fields.rb +0 -4
- data/app/presenters/blacklight/facet_field_presenter.rb +57 -0
- data/app/presenters/blacklight/facet_item_presenter.rb +81 -0
- data/app/views/catalog/_citation.html.erb +1 -1
- data/app/views/catalog/_constraints.html.erb +1 -1
- data/app/views/catalog/_constraints_element.html.erb +5 -24
- data/app/views/catalog/_email_form.html.erb +1 -1
- data/app/views/catalog/_facet_layout.html.erb +8 -17
- data/app/views/catalog/_facet_limit.html.erb +3 -12
- data/app/views/catalog/_facet_pagination.html.erb +2 -2
- data/app/views/catalog/_facet_pivot.html.erb +4 -4
- data/app/views/catalog/_sms_form.html.erb +1 -1
- data/blacklight.gemspec +1 -0
- data/config/locales/blacklight.ar.yml +29 -25
- data/docker-compose.yml +35 -0
- data/lib/blacklight/engine.rb +2 -6
- data/lib/blacklight/search_state.rb +32 -0
- data/lib/blacklight/solr/response/facets.rb +2 -0
- data/lib/generators/blacklight/assets_generator.rb +10 -0
- data/spec/{views/catalog/_constraints_element.html.erb_spec.rb → components/blacklight/constraint_layout_component_spec.rb} +21 -11
- data/spec/components/blacklight/facet_field_list_component_spec.rb +108 -0
- data/spec/components/blacklight/facet_item_component_spec.rb +50 -0
- data/spec/features/facets_spec.rb +1 -1
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +24 -12
- data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +4 -23
- data/spec/lib/blacklight/search_state_spec.rb +38 -0
- data/spec/models/blacklight/solr/response/facets_spec.rb +30 -1
- data/spec/presenters/blacklight/facet_field_presenter_spec.rb +109 -0
- data/spec/presenters/blacklight/facet_item_presenter_spec.rb +92 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/support/presenter_test_helpers.rb +11 -0
- data/spec/views/catalog/_facet_group.html.erb_spec.rb +1 -0
- data/tasks/blacklight.rake +30 -23
- metadata +43 -5
@@ -4,10 +4,6 @@ module Blacklight::Document
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
module ClassMethods
|
7
|
-
# Returns array of hashes of registered extensions. Each hash
|
8
|
-
# has a :module_obj key and a :condition_proc key. Usually this
|
9
|
-
# method is only used internally in #apply_extensions, but if you
|
10
|
-
|
11
7
|
# Class-level method for accessing/setting semantic mappings
|
12
8
|
# for solr stored fields. Can be set by local app, key is
|
13
9
|
# a symbol for a semantic, value is a solr _stored_ field.
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
class FacetFieldPresenter
|
5
|
+
attr_reader :facet_field, :display_facet, :view_context, :search_state
|
6
|
+
|
7
|
+
delegate :key, to: :facet_field
|
8
|
+
delegate :field_name, to: :display_facet
|
9
|
+
|
10
|
+
def initialize(facet_field, display_facet, view_context, search_state = view_context.search_state)
|
11
|
+
@facet_field = facet_field
|
12
|
+
@display_facet = display_facet
|
13
|
+
@view_context = view_context
|
14
|
+
@search_state = search_state
|
15
|
+
end
|
16
|
+
|
17
|
+
def collapsed?
|
18
|
+
Deprecation.silence(Blacklight::FacetsHelperBehavior) do
|
19
|
+
view_context.should_collapse_facet?(facet_field)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def active?
|
24
|
+
Deprecation.silence(Blacklight::FacetsHelperBehavior) do
|
25
|
+
view_context.facet_field_in_params?(key)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def in_modal?
|
30
|
+
search_state.params[:action] == "facet"
|
31
|
+
end
|
32
|
+
|
33
|
+
def modal_path
|
34
|
+
return unless paginator
|
35
|
+
|
36
|
+
view_context.search_facet_path(id: key) unless paginator&.last_page?
|
37
|
+
end
|
38
|
+
|
39
|
+
def label
|
40
|
+
view_context.facet_field_label(key)
|
41
|
+
end
|
42
|
+
|
43
|
+
# @private
|
44
|
+
# @deprecated
|
45
|
+
def html_id
|
46
|
+
Deprecation.silence(Blacklight::FacetsHelperBehavior) do
|
47
|
+
view_context.facet_field_id(facet_field)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def paginator
|
52
|
+
return unless display_facet
|
53
|
+
|
54
|
+
@paginator ||= view_context.facet_paginator(facet_field, display_facet)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
class FacetItemPresenter
|
5
|
+
attr_reader :facet_item, :facet_config, :view_context, :search_state, :facet_field
|
6
|
+
|
7
|
+
delegate :hits, to: :facet_item
|
8
|
+
|
9
|
+
def initialize(facet_item, facet_config, view_context, facet_field, search_state = view_context.search_state)
|
10
|
+
@facet_item = facet_item
|
11
|
+
@facet_config = facet_config
|
12
|
+
@view_context = view_context
|
13
|
+
@facet_field = facet_field
|
14
|
+
@search_state = search_state
|
15
|
+
end
|
16
|
+
|
17
|
+
##
|
18
|
+
# Check if the query parameters have the given facet field with the
|
19
|
+
# given value.
|
20
|
+
def selected?
|
21
|
+
search_state.has_facet? facet_config, value: facet_value
|
22
|
+
end
|
23
|
+
|
24
|
+
##
|
25
|
+
# Get the displayable version of a facet's value
|
26
|
+
#
|
27
|
+
# @return [String]
|
28
|
+
def label
|
29
|
+
return @view_context.facet_display_value(@facet_field, @facet_item) unless @view_context.method(:facet_display_value).owner == Blacklight::FacetsHelperBehavior
|
30
|
+
|
31
|
+
value = if facet_item.respond_to? :label
|
32
|
+
facet_item.label
|
33
|
+
else
|
34
|
+
facet_value
|
35
|
+
end
|
36
|
+
|
37
|
+
if facet_config.helper_method
|
38
|
+
view_context.public_send(facet_config.helper_method, value)
|
39
|
+
elsif facet_config.query && facet_config.query[value]
|
40
|
+
facet_config.query[value][:label]
|
41
|
+
elsif facet_config.date
|
42
|
+
localization_options = facet_config.date == true ? {} : facet_config.date
|
43
|
+
I18n.l(Time.zone.parse(value), localization_options)
|
44
|
+
else
|
45
|
+
value
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def href(path_options = {})
|
50
|
+
if selected?
|
51
|
+
remove_href
|
52
|
+
else
|
53
|
+
add_href(path_options)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# @private
|
58
|
+
def remove_href(path = search_state)
|
59
|
+
view_context.search_action_path(path.remove_facet_params(facet_config.key, facet_item))
|
60
|
+
end
|
61
|
+
|
62
|
+
# @private
|
63
|
+
def add_href(path_options = {})
|
64
|
+
if facet_config.url_method
|
65
|
+
view_context.public_send(facet_config.url_method, facet_config.key, facet_item)
|
66
|
+
else
|
67
|
+
view_context.search_action_path(search_state.add_facet_params_and_redirect(facet_config.key, facet_item).merge(path_options))
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def facet_value
|
74
|
+
if facet_item.respond_to? :value
|
75
|
+
facet_item.value
|
76
|
+
else
|
77
|
+
facet_item
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -7,27 +7,8 @@
|
|
7
7
|
options ||= {}
|
8
8
|
%>
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
<% unless value.blank? %>
|
16
|
-
<%= content_tag :span, value, class: 'filter-value', title: strip_tags(value) %>
|
17
|
-
<% end %>
|
18
|
-
</span>
|
19
|
-
<% unless options[:remove].blank? %>
|
20
|
-
<% accessible_remove_label = content_tag :span, class: 'sr-only' do
|
21
|
-
if label.blank?
|
22
|
-
t('blacklight.search.filters.remove.value', value: value)
|
23
|
-
else
|
24
|
-
t('blacklight.search.filters.remove.label_value', label: label, value: value)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
%>
|
28
|
-
|
29
|
-
<%= link_to(content_tag(:span, '✖', class: 'remove-icon') + accessible_remove_label,
|
30
|
-
options[:remove], class: 'btn btn-outline-secondary remove'
|
31
|
-
) %>
|
32
|
-
<%- end -%>
|
33
|
-
</span>
|
10
|
+
<%= render(Blacklight::ConstraintLayoutComponent.new(
|
11
|
+
classes: options[:classes],
|
12
|
+
label: label,
|
13
|
+
value: value,
|
14
|
+
remove_path: options[:remove])) %>
|
@@ -1,17 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
<%= facet_field_label(facet_field.key) %>
|
10
|
-
</button>
|
11
|
-
</h3>
|
12
|
-
<div id="<%= facet_field_id(facet_field) %>" aria-labelledby="<%= facet_field_id(facet_field) %>-header" class="panel-collapse facet-content collapse <%= "show" unless should_collapse_facet?(facet_field) %>">
|
13
|
-
<div class="card-body">
|
14
|
-
<%= yield %>
|
15
|
-
</div>
|
16
|
-
</div>
|
17
|
-
</div>
|
1
|
+
<%= render(Blacklight::FacetFieldComponent.new(facet_field: facet_field_presenter(facet_field, nil))) do |component| %>
|
2
|
+
<% component.with(:label) do %>
|
3
|
+
<%= facet_field_label(facet_field.key) %>
|
4
|
+
<% end %>
|
5
|
+
<% component.with(:body) do %>
|
6
|
+
<%= yield %>
|
7
|
+
<% end %>
|
8
|
+
<% end %>
|
@@ -1,12 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
<% unless paginator.last_page? || params[:action] == "facet" %>
|
6
|
-
<li class="more_facets">
|
7
|
-
<%= link_to t("more_#{field_name}_html", scope: 'blacklight.search.facets', default: :more_html, field_name: facet_field_label(facet_field.key)),
|
8
|
-
search_facet_path(id: facet_field.key),
|
9
|
-
data: { blacklight_modal: 'trigger' } %>
|
10
|
-
</li>
|
11
|
-
<% end %>
|
12
|
-
</ul>
|
1
|
+
<%= render(Blacklight::FacetFieldListComponent.new(
|
2
|
+
facet_field: facet_field_presenter(facet_field, display_facet),
|
3
|
+
layout: false)) %>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<div class="prev_next_links btn-group">
|
2
2
|
<%= link_to_previous_page @pagination, raw(t('views.pagination.previous')), params: search_state.to_h, param_name: blacklight_config.facet_paginator_class.request_keys[:page], class: 'btn btn-link', data: { blacklight_modal: "preserve" } do %>
|
3
|
-
<%= content_tag :span, raw(t('views.pagination.previous')), class: 'disabled btn
|
3
|
+
<%= content_tag :span, raw(t('views.pagination.previous')), class: 'disabled btn' %>
|
4
4
|
<% end %>
|
5
5
|
|
6
6
|
<%= link_to_next_page @pagination, raw(t('views.pagination.next')), params: search_state.to_h, param_name: blacklight_config.facet_paginator_class.request_keys[:page], class: 'btn btn-link', data: { blacklight_modal: "preserve" } do %>
|
7
|
-
<%= content_tag :span, raw(t('views.pagination.next')), class: 'disabled btn
|
7
|
+
<%= content_tag :span, raw(t('views.pagination.next')), class: 'disabled btn' %>
|
8
8
|
<% end %>
|
9
9
|
</div>
|
10
10
|
|
@@ -2,10 +2,10 @@
|
|
2
2
|
<% display_facet.items.each do |item| -%>
|
3
3
|
<li>
|
4
4
|
<span class="facet-values">
|
5
|
-
<% if facet_in_params?(field_name, item) %>
|
6
|
-
<%= render_selected_facet_value(field_name, item) %>
|
7
|
-
<% else %>
|
8
|
-
<%= render_facet_value(field_name, item) %>
|
5
|
+
<% if facet_in_params?(field_name, item) %>
|
6
|
+
<%= render_selected_facet_value(field_name, item) %>
|
7
|
+
<% else %>
|
8
|
+
<%= render_facet_value(field_name, item) %>
|
9
9
|
<% end -%>
|
10
10
|
</span>
|
11
11
|
|
data/blacklight.gemspec
CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_dependency "jbuilder", '~> 2.7'
|
31
31
|
s.add_dependency "kaminari", ">= 0.15" # the pagination (page 1,2,3, etc..) of our search results
|
32
32
|
s.add_dependency "deprecation"
|
33
|
+
s.add_dependency "view_component"
|
33
34
|
|
34
35
|
s.add_development_dependency "rsolr", ">= 1.0.6", "< 3" # Library for interacting with rSolr.
|
35
36
|
s.add_development_dependency "rspec-rails", "~> 4.0.0.beta2"
|
@@ -3,8 +3,8 @@ ar:
|
|
3
3
|
pagination:
|
4
4
|
first: 'الأولى «'
|
5
5
|
last: 'الأخيرة »'
|
6
|
-
previous: '«
|
7
|
-
next: '
|
6
|
+
previous: '« السابق'
|
7
|
+
next: 'التالي »'
|
8
8
|
truncate: '…'
|
9
9
|
aria:
|
10
10
|
container_label: 'روابط الصفحات'
|
@@ -52,7 +52,8 @@ ar:
|
|
52
52
|
few: 'أضيفت الصفحات المفضلة بنجاح.'
|
53
53
|
many: 'أضيفت الصفحات المفضلة بنجاح.'
|
54
54
|
other: 'أضيفت الصفحات المفضلة بنجاح.'
|
55
|
-
|
55
|
+
|
56
|
+
failure: 'معذرة! حدثت مشكلة في حفظ الصفحات المفضلة.'
|
56
57
|
remove:
|
57
58
|
button: 'إزالة الصفحة المفضلة'
|
58
59
|
success: 'أزيلت الصفحة المفضلة بنجاح.'
|
@@ -61,7 +62,7 @@ ar:
|
|
61
62
|
clear:
|
62
63
|
action_title: 'مسح الصفحات المفضلة'
|
63
64
|
action_confirm: 'هل ترغب في مسح الصفحات المفضلة؟'
|
64
|
-
success: '
|
65
|
+
success: 'تم مسح صفحاتك المفضلة.'
|
65
66
|
failure: 'معذرة! حدثت مشكلة في مسح صفحاتك المفضلة.'
|
66
67
|
need_login: 'يُرجى تسجيل الدخول لتنظيم صفحاتك المفضلة وعرضها.'
|
67
68
|
list_title: 'صفحاتك المفضلة'
|
@@ -69,14 +70,14 @@ ar:
|
|
69
70
|
|
70
71
|
search_history:
|
71
72
|
clear:
|
72
|
-
action_title: '
|
73
|
+
action_title: 'امسح سجل البحث السابق'
|
73
74
|
action_confirm: 'هل ترغب في مسح سجل البحث السابق؟'
|
74
|
-
success: '
|
75
|
+
success: 'تم مسح سجل بحثك السابق.'
|
75
76
|
failure: 'حدثت مشكلة في مسح سجل بحثك السابق.'
|
76
77
|
title: 'سجل البحث'
|
77
78
|
page_title: 'سجل البحث - %{application_name}'
|
78
|
-
no_history: '
|
79
|
-
recent: '
|
79
|
+
no_history: 'لا يوجد لديك سجل بحث'
|
80
|
+
recent: 'سجل ابحاثك السابقة'
|
80
81
|
forget: 'تراجع'
|
81
82
|
save: 'حفظ'
|
82
83
|
|
@@ -84,7 +85,7 @@ ar:
|
|
84
85
|
title: 'أدوات'
|
85
86
|
citation: 'استشهاد مرجعي'
|
86
87
|
email: 'بريد إلكتروني'
|
87
|
-
sms: '
|
88
|
+
sms: 'إرسله كرسالة نصية قصيرة'
|
88
89
|
clear: 'مسح'
|
89
90
|
|
90
91
|
citation:
|
@@ -94,12 +95,12 @@ ar:
|
|
94
95
|
|
95
96
|
email:
|
96
97
|
form:
|
97
|
-
title: '
|
98
|
+
title: 'إرسله عبرالبريد الإلكتروني'
|
98
99
|
to: 'بريد إلكتروني:'
|
99
100
|
message: 'الرسالة:'
|
100
101
|
submit: 'إرسال'
|
101
102
|
text:
|
102
|
-
default_title: 'لا
|
103
|
+
default_title: 'لا يوجد'
|
103
104
|
title: 'العنوان: %{value}'
|
104
105
|
author: 'المؤلف: %{value}'
|
105
106
|
format: 'الصيغة: %{value}'
|
@@ -111,30 +112,31 @@ ar:
|
|
111
112
|
few: 'سجلات المادة'
|
112
113
|
many: 'سجلات المادة'
|
113
114
|
other: 'سجلات المادة'
|
115
|
+
|
114
116
|
url: 'الرابط: %{url}'
|
115
117
|
message: 'الرسالة: %{message}'
|
116
118
|
|
117
|
-
success:
|
119
|
+
success: "تم إرسال البريد الإلكتروني"
|
120
|
+
|
118
121
|
errors:
|
119
122
|
to:
|
120
123
|
invalid: 'يجب إدخال عنوان بريد إلكتروني صحيح'
|
121
124
|
blank: 'يجب إدخال مُستلم من أجل إرسال هذه الرسالة'
|
122
|
-
|
123
125
|
sms:
|
124
126
|
form:
|
125
|
-
title: '
|
127
|
+
title: 'إرسله كرسالة نصية قصيرة'
|
126
128
|
to: 'رقم الهاتف:'
|
127
129
|
carrier: 'شركة الاتصالات'
|
128
130
|
carrier_prompt: 'يرجى تحديد شركة الاتصالات'
|
129
131
|
submit: 'إرسال'
|
130
132
|
text:
|
131
133
|
title: '%{value}'
|
132
|
-
author: '
|
134
|
+
author: ' بواسطة %{value}'
|
133
135
|
url: 'الرابط: %{url}'
|
134
|
-
success:
|
136
|
+
success: "تم الإرسال كرسالة نصية قصيرة"
|
135
137
|
errors:
|
136
138
|
to:
|
137
|
-
invalid: 'يجب إدخال رقم هاتف صحيح من 10
|
139
|
+
invalid: 'يجب إدخال رقم هاتف صحيح من 10 أرقام'
|
138
140
|
blank: "يجب إدخال رقم هاتف المستلم لإرسال هذه الرسالة"
|
139
141
|
carrier:
|
140
142
|
blank: 'يجب تحديد شركة الاتصالات'
|
@@ -148,11 +150,11 @@ ar:
|
|
148
150
|
title: '%{constraints} - %{application_name} نتائج البحث'
|
149
151
|
constraint: '%{label}: %{value}'
|
150
152
|
many_constraint_values: 'تم تحديد %{values}'
|
151
|
-
header: '
|
153
|
+
header: 'ابحث'
|
152
154
|
search_constraints_header: 'قيود البحث'
|
153
155
|
search_results: 'نتائج البحث'
|
154
156
|
errors:
|
155
|
-
request_error: "معذرة،
|
157
|
+
request_error: "معذرة، لم أفهم ما تبحث عنه."
|
156
158
|
invalid_solr_id: "معذرة! لقد طلبت سجلًا غير موجود."
|
157
159
|
per_page:
|
158
160
|
label: '%{count}<span class="sr-only"> لكل صفحة</span>'
|
@@ -160,18 +162,18 @@ ar:
|
|
160
162
|
button_label_html: '%{count}<span class="d-none d-sm-inline"> لكل صفحة</span>'
|
161
163
|
title: 'عدد النتائج المعروضة في الصفحة'
|
162
164
|
submit: 'تحديث'
|
163
|
-
aria_label: '
|
165
|
+
aria_label: 'تصفح النتائج'
|
164
166
|
sort:
|
165
167
|
label: 'ترتيب حسب %{field}' # TODO: Remove during major release
|
166
168
|
label_html: 'ترتيب <span class="d-none d-sm-inline"> حسب %{field}</span>'
|
167
169
|
submit: 'نتائج الترتيب'
|
168
170
|
form:
|
169
171
|
search_field:
|
170
|
-
label: '
|
172
|
+
label: 'ابحث في'
|
171
173
|
title: 'خيارات البحث المستهدفة'
|
172
174
|
post_label: 'عن'
|
173
175
|
search:
|
174
|
-
label: '
|
176
|
+
label: 'ابحث عن'
|
175
177
|
placeholder: 'بحث...'
|
176
178
|
submit: 'بحث'
|
177
179
|
pagination:
|
@@ -186,6 +188,7 @@ ar:
|
|
186
188
|
few: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> من <strong>%{total_num}</strong>'
|
187
189
|
many: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> من <strong>%{total_num}</strong>'
|
188
190
|
other: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> من <strong>%{total_num}</strong>'
|
191
|
+
|
189
192
|
entry_pagination_info:
|
190
193
|
zero: '<strong>%{current}</strong> من <strong>%{total}</strong>'
|
191
194
|
one: '<strong>%{current}</strong> من <strong>%{total}</strong>'
|
@@ -193,10 +196,11 @@ ar:
|
|
193
196
|
few: '<strong>%{current}</strong> من <strong>%{total}</strong>'
|
194
197
|
many: '<strong>%{current}</strong> من <strong>%{total}</strong>'
|
195
198
|
other: '<strong>%{current}</strong> من <strong>%{total}</strong>'
|
199
|
+
|
196
200
|
documents:
|
197
201
|
aria:
|
198
202
|
search_results: 'نتائج البحث'
|
199
|
-
limit_search: '
|
203
|
+
limit_search: '...ابحث عن العناصر حسب'
|
200
204
|
counter: '%{counter}. '
|
201
205
|
facets:
|
202
206
|
title: 'تحديد نطاق البحث'
|
@@ -233,9 +237,9 @@ ar:
|
|
233
237
|
zero_results:
|
234
238
|
title: "لا توجد نتائج للبحث"
|
235
239
|
modify_search: "حاول تعديل معايير البحث"
|
236
|
-
use_fewer_keywords: "استخدم كلمات
|
240
|
+
use_fewer_keywords: "استخدم كلمات أساسية أقل أولاً، ثم أعد تحديد البحث باستخدام الروابط على اليسار."
|
237
241
|
search_fields: "لقد بحثت باستخدام %{search_fields}"
|
238
|
-
search_everything: "
|
242
|
+
search_everything: "حاول البحث عن كل شيء"
|
239
243
|
view_title: "عرض النتائج ك: "
|
240
244
|
view:
|
241
245
|
list: "قائمة"
|