blacklight 7.7.0 → 7.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.docker/app/Dockerfile +26 -0
  3. data/.docker/app/entrypoint.sh +6 -0
  4. data/.env +5 -0
  5. data/.rubocop_todo.yml +13 -13
  6. data/.travis.yml +15 -23
  7. data/Gemfile +4 -1
  8. data/README.md +4 -0
  9. data/VERSION +1 -1
  10. data/app/assets/stylesheets/blacklight/_pagination.scss +4 -0
  11. data/app/components/blacklight/constraint_layout_component.html.erb +21 -0
  12. data/app/components/blacklight/constraint_layout_component.rb +16 -0
  13. data/app/components/blacklight/facet_field_component.html.erb +25 -0
  14. data/app/components/blacklight/facet_field_component.rb +11 -0
  15. data/app/components/blacklight/facet_field_list_component.html.erb +18 -0
  16. data/app/components/blacklight/facet_field_list_component.rb +22 -0
  17. data/app/components/blacklight/facet_field_no_layout_component.rb +13 -0
  18. data/app/components/blacklight/facet_item_component.rb +120 -0
  19. data/app/helpers/blacklight/catalog_helper_behavior.rb +2 -2
  20. data/app/helpers/blacklight/facets_helper_behavior.rb +84 -48
  21. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +64 -33
  22. data/app/javascript/blacklight/modal.js +1 -1
  23. data/app/models/concerns/blacklight/document/extensions.rb +3 -0
  24. data/app/models/concerns/blacklight/document/semantic_fields.rb +0 -4
  25. data/app/presenters/blacklight/facet_field_presenter.rb +57 -0
  26. data/app/presenters/blacklight/facet_item_presenter.rb +81 -0
  27. data/app/views/catalog/_citation.html.erb +1 -1
  28. data/app/views/catalog/_constraints.html.erb +1 -1
  29. data/app/views/catalog/_constraints_element.html.erb +5 -24
  30. data/app/views/catalog/_email_form.html.erb +1 -1
  31. data/app/views/catalog/_facet_layout.html.erb +8 -17
  32. data/app/views/catalog/_facet_limit.html.erb +3 -12
  33. data/app/views/catalog/_facet_pagination.html.erb +2 -2
  34. data/app/views/catalog/_facet_pivot.html.erb +4 -4
  35. data/app/views/catalog/_sms_form.html.erb +1 -1
  36. data/blacklight.gemspec +1 -0
  37. data/config/locales/blacklight.ar.yml +29 -25
  38. data/docker-compose.yml +35 -0
  39. data/lib/blacklight/engine.rb +2 -6
  40. data/lib/blacklight/search_state.rb +32 -0
  41. data/lib/blacklight/solr/response/facets.rb +2 -0
  42. data/lib/generators/blacklight/assets_generator.rb +10 -0
  43. data/spec/{views/catalog/_constraints_element.html.erb_spec.rb → components/blacklight/constraint_layout_component_spec.rb} +21 -11
  44. data/spec/components/blacklight/facet_field_list_component_spec.rb +108 -0
  45. data/spec/components/blacklight/facet_item_component_spec.rb +50 -0
  46. data/spec/features/facets_spec.rb +1 -1
  47. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +24 -12
  48. data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +4 -23
  49. data/spec/lib/blacklight/search_state_spec.rb +38 -0
  50. data/spec/models/blacklight/solr/response/facets_spec.rb +30 -1
  51. data/spec/presenters/blacklight/facet_field_presenter_spec.rb +109 -0
  52. data/spec/presenters/blacklight/facet_item_presenter_spec.rb +92 -0
  53. data/spec/spec_helper.rb +2 -0
  54. data/spec/support/presenter_test_helpers.rb +11 -0
  55. data/spec/views/catalog/_facet_group.html.erb_spec.rb +1 -0
  56. data/tasks/blacklight.rake +30 -23
  57. 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
@@ -5,7 +5,7 @@
5
5
  </button>
6
6
  </div>
7
7
  <div class="modal-body">
8
- <% @documents.each do |document| %>
8
+ <% @documents&.each do |document| %>
9
9
  <h1 class="modal-title"><%= document_heading(document) %></h1>
10
10
 
11
11
  <% if document.respond_to?(:export_as_mla_citation_txt) %>
@@ -4,6 +4,6 @@
4
4
 
5
5
  <%= render 'start_over' %>
6
6
  <span class="constraints-label sr-only"><%= t('blacklight.search.filters.title') %></span>
7
- <%= render_constraints(params) %>
7
+ <%= render_constraints(controller.params != params ? params : search_state) %>
8
8
  </div>
9
9
  <% end %>
@@ -7,27 +7,8 @@
7
7
  options ||= {}
8
8
  %>
9
9
 
10
- <span class="btn-group applied-filter constraint <%= options[:classes].join(" ") if options[:classes] %>">
11
- <span class="constraint-value btn btn-outline-secondary btn-disabled">
12
- <% unless label.blank? %>
13
- <span class="filter-name"><%= label %></span>
14
- <% end %>
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])) %>
@@ -24,7 +24,7 @@
24
24
  </div>
25
25
  </div>
26
26
 
27
- <% @documents.each do |doc| %>
27
+ <% @documents&.each do |doc| %>
28
28
  <%=hidden_field_tag "id[]", doc.id %>
29
29
  <% end %>
30
30
  <%- if params[:sort] -%>
@@ -1,17 +1,8 @@
1
- <div class="card facet-limit blacklight-<%= facet_field.key.parameterize %> <%= 'facet-limit-active' if facet_field_in_params?(facet_field.key) %>">
2
- <h3 class="card-header p-0 facet-field-heading" id="<%= facet_field_id(facet_field) %>-header">
3
- <button
4
- class="btn btn-block p-2 text-left collapse-toggle <%= "collapsed" if should_collapse_facet?(facet_field) %>"
5
- data-toggle="collapse"
6
- data-target="#<%= facet_field_id(facet_field) %>"
7
- aria-expanded="<%= should_collapse_facet?(facet_field) ? 'false' : 'true' %>"
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
- <ul class="facet-values list-unstyled">
2
- <% paginator = facet_paginator(facet_field, display_facet) %>
3
- <%= render_facet_limit_list paginator, facet_field.key %>
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 btn-disabled' %>
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 btn-disabled' %>
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
 
@@ -22,7 +22,7 @@
22
22
  </div>
23
23
 
24
24
  </div>
25
- <% @documents.each do |doc| %>
25
+ <% @documents&.each do |doc| %>
26
26
  <%=hidden_field_tag "id[]", doc.id %>
27
27
  <% end %>
28
28
  </div>
@@ -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: 'الأولى &laquo;'
5
5
  last: 'الأخيرة &raquo;'
6
- previous: '&laquo; السابقة'
7
- next: 'التالية &raquo;'
6
+ previous: '&laquo; السابق'
7
+ next: 'التالي &raquo;'
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
- failure: 'معذرة! حدثت مشكلة في حفظ الصفحات المفضلة.'
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: ' حسب %{value}'
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: "قائمة"