ransack 1.7.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +2 -0
- data/.travis.yml +16 -48
- data/CHANGELOG.md +409 -26
- data/CONTRIBUTING.md +48 -20
- data/Gemfile +9 -13
- data/README.md +352 -92
- data/Rakefile +6 -25
- data/lib/polyamorous/activerecord_5.0_ruby_2/join_association.rb +2 -0
- data/lib/polyamorous/activerecord_5.0_ruby_2/join_dependency.rb +2 -0
- data/lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb +32 -0
- data/lib/polyamorous/activerecord_5.1_ruby_2/join_dependency.rb +112 -0
- data/lib/polyamorous/activerecord_5.2.0_ruby_2/join_association.rb +32 -0
- data/lib/polyamorous/activerecord_5.2.0_ruby_2/join_dependency.rb +113 -0
- data/lib/polyamorous/activerecord_5.2.1_ruby_2/join_association.rb +31 -0
- data/lib/polyamorous/activerecord_5.2.1_ruby_2/join_dependency.rb +57 -0
- data/lib/polyamorous/join.rb +70 -0
- data/lib/polyamorous/swapping_reflection_class.rb +11 -0
- data/lib/polyamorous/tree_node.rb +7 -0
- data/lib/polyamorous.rb +25 -0
- data/lib/ransack/adapters/active_record/base.rb +23 -2
- data/lib/ransack/adapters/active_record/context.rb +210 -135
- data/lib/ransack/adapters/active_record/ransack/constants.rb +53 -53
- data/lib/ransack/adapters/active_record/ransack/context.rb +11 -15
- data/lib/ransack/adapters/active_record/ransack/nodes/condition.rb +33 -30
- data/lib/ransack/adapters/active_record/ransack/translate.rb +1 -5
- data/lib/ransack/adapters/active_record/ransack/visitor.rb +23 -0
- data/lib/ransack/adapters/active_record.rb +11 -10
- data/lib/ransack/adapters.rb +45 -23
- data/lib/ransack/configuration.rb +91 -4
- data/lib/ransack/constants.rb +14 -26
- data/lib/ransack/context.rb +29 -18
- data/lib/ransack/helpers/form_builder.rb +27 -12
- data/lib/ransack/helpers/form_helper.rb +75 -70
- data/lib/ransack/locale/ar.yml +70 -0
- data/lib/ransack/locale/az.yml +70 -0
- data/lib/ransack/locale/bg.yml +70 -0
- data/lib/ransack/locale/da.yml +70 -0
- data/lib/ransack/locale/el.yml +70 -0
- data/lib/ransack/locale/id.yml +70 -0
- data/lib/ransack/locale/it.yml +70 -0
- data/lib/ransack/locale/ja.yml +70 -0
- data/lib/ransack/locale/nl.yml +4 -4
- data/lib/ransack/locale/pt-BR.yml +70 -0
- data/lib/ransack/locale/ru.yml +70 -0
- data/lib/ransack/locale/tr.yml +70 -0
- data/lib/ransack/locale/{zh.yml → zh-CN.yml} +13 -13
- data/lib/ransack/locale/zh-TW.yml +70 -0
- data/lib/ransack/nodes/attribute.rb +5 -2
- data/lib/ransack/nodes/bindable.rb +18 -6
- data/lib/ransack/nodes/condition.rb +77 -28
- data/lib/ransack/nodes/grouping.rb +16 -10
- data/lib/ransack/nodes/sort.rb +9 -5
- data/lib/ransack/nodes/value.rb +74 -68
- data/lib/ransack/nodes.rb +1 -1
- data/lib/ransack/predicate.rb +15 -19
- data/lib/ransack/search.rb +14 -7
- data/lib/ransack/translate.rb +3 -3
- data/lib/ransack/version.rb +1 -1
- data/lib/ransack/visitor.rb +1 -12
- data/lib/ransack.rb +7 -7
- data/logo/ransack-h.png +0 -0
- data/logo/ransack-h.svg +34 -0
- data/logo/ransack-v.png +0 -0
- data/logo/ransack-v.svg +34 -0
- data/logo/ransack.png +0 -0
- data/logo/ransack.svg +21 -0
- data/ransack.gemspec +9 -10
- data/spec/console.rb +4 -0
- data/spec/helpers/polyamorous_helper.rb +24 -0
- data/spec/ransack/adapters/active_record/base_spec.rb +365 -74
- data/spec/ransack/adapters/active_record/context_spec.rb +14 -19
- data/spec/ransack/configuration_spec.rb +87 -14
- data/spec/ransack/helpers/form_builder_spec.rb +2 -11
- data/spec/ransack/helpers/form_helper_spec.rb +481 -113
- data/spec/ransack/join_association_spec.rb +28 -0
- data/spec/ransack/join_dependency_spec.rb +86 -0
- data/spec/ransack/join_spec.rb +19 -0
- data/spec/ransack/nodes/condition_spec.rb +24 -0
- data/spec/ransack/nodes/grouping_spec.rb +56 -0
- data/spec/ransack/predicate_spec.rb +27 -5
- data/spec/ransack/search_spec.rb +84 -70
- data/spec/spec_helper.rb +4 -0
- data/spec/support/schema.rb +86 -41
- metadata +60 -81
- data/lib/ransack/adapters/active_record/3.0/compat.rb +0 -179
- data/lib/ransack/adapters/active_record/3.0/context.rb +0 -201
- data/lib/ransack/adapters/active_record/3.1/context.rb +0 -215
- data/lib/ransack/adapters/active_record/3.2/context.rb +0 -44
- data/lib/ransack/adapters/active_record/compat.rb +0 -14
- data/lib/ransack/adapters/mongoid/3.2/.gitkeep +0 -0
- data/lib/ransack/adapters/mongoid/attributes/attribute.rb +0 -37
- data/lib/ransack/adapters/mongoid/attributes/order_predications.rb +0 -17
- data/lib/ransack/adapters/mongoid/attributes/predications.rb +0 -141
- data/lib/ransack/adapters/mongoid/base.rb +0 -130
- data/lib/ransack/adapters/mongoid/context.rb +0 -208
- data/lib/ransack/adapters/mongoid/inquiry_hash.rb +0 -23
- data/lib/ransack/adapters/mongoid/ransack/constants.rb +0 -88
- data/lib/ransack/adapters/mongoid/ransack/context.rb +0 -60
- data/lib/ransack/adapters/mongoid/ransack/nodes/condition.rb +0 -27
- data/lib/ransack/adapters/mongoid/ransack/translate.rb +0 -13
- data/lib/ransack/adapters/mongoid/ransack/visitor.rb +0 -24
- data/lib/ransack/adapters/mongoid/table.rb +0 -35
- data/lib/ransack/adapters/mongoid.rb +0 -13
- data/spec/mongoid/adapters/mongoid/base_spec.rb +0 -276
- data/spec/mongoid/adapters/mongoid/context_spec.rb +0 -56
- data/spec/mongoid/configuration_spec.rb +0 -102
- data/spec/mongoid/dependencies_spec.rb +0 -8
- data/spec/mongoid/helpers/ransack_helper.rb +0 -11
- data/spec/mongoid/nodes/condition_spec.rb +0 -34
- data/spec/mongoid/nodes/grouping_spec.rb +0 -13
- data/spec/mongoid/predicate_spec.rb +0 -155
- data/spec/mongoid/search_spec.rb +0 -446
- data/spec/mongoid/support/mongoid.yml +0 -6
- data/spec/mongoid/support/schema.rb +0 -128
- data/spec/mongoid/translate_spec.rb +0 -14
- data/spec/mongoid_spec_helper.rb +0 -59
- data/spec/ransack/dependencies_spec.rb +0 -12
@@ -38,43 +38,53 @@ module Ransack
|
|
38
38
|
#
|
39
39
|
# <%= sort_link(@q, :name, [:name, 'kind ASC'], 'Player Name') %>
|
40
40
|
#
|
41
|
-
|
41
|
+
# You can also use a block:
|
42
|
+
#
|
43
|
+
# <%= sort_link(@q, :name, [:name, 'kind ASC']) do %>
|
44
|
+
# <strong>Player Name</strong>
|
45
|
+
# <% end %>
|
46
|
+
#
|
47
|
+
def sort_link(search_object, attribute, *args, &block)
|
42
48
|
search, routing_proxy = extract_search_and_routing_proxy(search_object)
|
43
49
|
unless Search === search
|
44
50
|
raise TypeError, 'First argument must be a Ransack::Search!'
|
45
51
|
end
|
46
|
-
|
52
|
+
args[args.first.is_a?(Array) ? 1 : 0, 0] = capture(&block) if block_given?
|
53
|
+
s = SortLink.new(search, attribute, args, params, &block)
|
47
54
|
link_to(s.name, url(routing_proxy, s.url_options), s.html_options(args))
|
48
55
|
end
|
49
56
|
|
57
|
+
# +sort_url+
|
58
|
+
# <%= sort_url(@q, :created_at, default_order: :desc) %>
|
59
|
+
#
|
60
|
+
def sort_url(search_object, attribute, *args)
|
61
|
+
search, routing_proxy = extract_search_and_routing_proxy(search_object)
|
62
|
+
unless Search === search
|
63
|
+
raise TypeError, 'First argument must be a Ransack::Search!'
|
64
|
+
end
|
65
|
+
s = SortLink.new(search, attribute, args, params)
|
66
|
+
url(routing_proxy, s.url_options)
|
67
|
+
end
|
68
|
+
|
50
69
|
private
|
51
70
|
|
52
71
|
def options_for(record)
|
53
|
-
record.map
|
72
|
+
record.map { |r| parse_record(r) }
|
54
73
|
end
|
55
74
|
|
56
75
|
def parse_record(object)
|
57
|
-
if object.is_a?(Ransack::Search)
|
58
|
-
|
59
|
-
else
|
60
|
-
object
|
61
|
-
end
|
76
|
+
return object.klass if object.is_a?(Ransack::Search)
|
77
|
+
object
|
62
78
|
end
|
63
79
|
|
64
80
|
def html_option_for(option, search)
|
65
|
-
if option.present?
|
66
|
-
|
67
|
-
else
|
68
|
-
"#{search.klass.to_s.underscore}_search"
|
69
|
-
end
|
81
|
+
return option.to_s if option.present?
|
82
|
+
"#{search.klass.to_s.underscore}_search"
|
70
83
|
end
|
71
84
|
|
72
85
|
def extract_search_and_routing_proxy(search)
|
73
|
-
if search.is_a?
|
74
|
-
|
75
|
-
else
|
76
|
-
[search, nil]
|
77
|
-
end
|
86
|
+
return [search[1], search[0]] if search.is_a?(Array)
|
87
|
+
[search, nil]
|
78
88
|
end
|
79
89
|
|
80
90
|
def url(routing_proxy, options_for_url)
|
@@ -88,20 +98,33 @@ module Ransack
|
|
88
98
|
class SortLink
|
89
99
|
def initialize(search, attribute, args, params)
|
90
100
|
@search = search
|
91
|
-
@params = params
|
101
|
+
@params = parameters_hash(params)
|
92
102
|
@field = attribute.to_s
|
93
103
|
@sort_fields = extract_sort_fields_and_mutate_args!(args).compact
|
94
104
|
@current_dir = existing_sort_direction
|
95
105
|
@label_text = extract_label_and_mutate_args!(args)
|
96
106
|
@options = extract_options_and_mutate_args!(args)
|
97
|
-
@hide_indicator = @options.delete
|
107
|
+
@hide_indicator = @options.delete(:hide_indicator) ||
|
108
|
+
Ransack.options[:hide_sort_order_indicators]
|
98
109
|
@default_order = @options.delete :default_order
|
99
110
|
end
|
100
111
|
|
112
|
+
def up_arrow
|
113
|
+
Ransack.options[:up_arrow]
|
114
|
+
end
|
115
|
+
|
116
|
+
def down_arrow
|
117
|
+
Ransack.options[:down_arrow]
|
118
|
+
end
|
119
|
+
|
120
|
+
def default_arrow
|
121
|
+
Ransack.options[:default_arrow]
|
122
|
+
end
|
123
|
+
|
101
124
|
def name
|
102
125
|
[ERB::Util.h(@label_text), order_indicator]
|
103
126
|
.compact
|
104
|
-
.join(
|
127
|
+
.join(' '.freeze)
|
105
128
|
.html_safe
|
106
129
|
end
|
107
130
|
|
@@ -114,35 +137,34 @@ module Ransack
|
|
114
137
|
def html_options(args)
|
115
138
|
html_options = extract_options_and_mutate_args!(args)
|
116
139
|
html_options.merge(
|
117
|
-
class: [[
|
118
|
-
.compact.join(
|
140
|
+
class: [['sort_link'.freeze, @current_dir], html_options[:class]]
|
141
|
+
.compact.join(' '.freeze)
|
119
142
|
)
|
120
143
|
end
|
121
144
|
|
122
145
|
private
|
123
146
|
|
124
|
-
def
|
125
|
-
if
|
126
|
-
|
147
|
+
def parameters_hash(params)
|
148
|
+
if ::ActiveRecord::VERSION::MAJOR == 5 && params.respond_to?(:to_unsafe_h)
|
149
|
+
params.to_unsafe_h
|
127
150
|
else
|
128
|
-
|
151
|
+
params
|
129
152
|
end
|
130
153
|
end
|
131
154
|
|
155
|
+
def extract_sort_fields_and_mutate_args!(args)
|
156
|
+
return args.shift if args[0].is_a?(Array)
|
157
|
+
[@field]
|
158
|
+
end
|
159
|
+
|
132
160
|
def extract_label_and_mutate_args!(args)
|
133
|
-
if args.
|
134
|
-
|
135
|
-
else
|
136
|
-
Translate.attribute(@field, context: @search.context)
|
137
|
-
end
|
161
|
+
return args.shift if args[0].is_a?(String)
|
162
|
+
Translate.attribute(@field, context: @search.context)
|
138
163
|
end
|
139
164
|
|
140
165
|
def extract_options_and_mutate_args!(args)
|
141
|
-
if args.
|
142
|
-
|
143
|
-
else
|
144
|
-
{}
|
145
|
-
end
|
166
|
+
return args.shift.with_indifferent_access if args[0].is_a?(Hash)
|
167
|
+
{}
|
146
168
|
end
|
147
169
|
|
148
170
|
def search_and_sort_params
|
@@ -155,11 +177,8 @@ module Ransack
|
|
155
177
|
|
156
178
|
def sort_params
|
157
179
|
sort_array = recursive_sort_params_build(@sort_fields)
|
158
|
-
if sort_array.
|
159
|
-
|
160
|
-
else
|
161
|
-
sort_array
|
162
|
-
end
|
180
|
+
return sort_array[0] if sort_array.length == 1
|
181
|
+
sort_array
|
163
182
|
end
|
164
183
|
|
165
184
|
def recursive_sort_params_build(fields)
|
@@ -179,52 +198,38 @@ module Ransack
|
|
179
198
|
if sort_dir = existing_sort_direction(attr_name)
|
180
199
|
direction_text(sort_dir)
|
181
200
|
else
|
182
|
-
default_sort_order(attr_name) ||
|
201
|
+
default_sort_order(attr_name) || 'asc'.freeze
|
183
202
|
end
|
184
203
|
end
|
185
204
|
|
186
|
-
def existing_sort_direction(
|
187
|
-
|
188
|
-
|
189
|
-
end
|
205
|
+
def existing_sort_direction(f = @field)
|
206
|
+
return unless sort = @search.sorts.detect { |s| s && s.name == f }
|
207
|
+
sort.dir
|
190
208
|
end
|
191
209
|
|
192
210
|
def default_sort_order(attr_name)
|
193
|
-
if Hash === @default_order
|
194
|
-
|
195
|
-
else
|
196
|
-
@default_order
|
197
|
-
end
|
211
|
+
return @default_order[attr_name] if Hash === @default_order
|
212
|
+
@default_order
|
198
213
|
end
|
199
214
|
|
200
215
|
def order_indicator
|
201
|
-
if @hide_indicator
|
202
|
-
|
216
|
+
return if @hide_indicator
|
217
|
+
return default_arrow if no_sort_direction_specified?
|
218
|
+
if @current_dir == 'desc'.freeze
|
219
|
+
up_arrow
|
203
220
|
else
|
204
|
-
|
221
|
+
down_arrow
|
205
222
|
end
|
206
223
|
end
|
207
224
|
|
208
225
|
def no_sort_direction_specified?(dir = @current_dir)
|
209
|
-
|
210
|
-
end
|
211
|
-
|
212
|
-
def direction_arrow
|
213
|
-
if @current_dir == Constants::DESC
|
214
|
-
Constants::DESC_ARROW
|
215
|
-
else
|
216
|
-
Constants::ASC_ARROW
|
217
|
-
end
|
226
|
+
dir != 'asc'.freeze && dir != 'desc'.freeze
|
218
227
|
end
|
219
228
|
|
220
229
|
def direction_text(dir)
|
221
|
-
if dir ==
|
222
|
-
|
223
|
-
else
|
224
|
-
Constants::DESC
|
225
|
-
end
|
230
|
+
return 'asc'.freeze if dir == 'desc'.freeze
|
231
|
+
'desc'.freeze
|
226
232
|
end
|
227
|
-
|
228
233
|
end
|
229
234
|
end
|
230
235
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
ar:
|
2
|
+
ransack:
|
3
|
+
search: "بحث"
|
4
|
+
predicate: "فاعل"
|
5
|
+
and: "و"
|
6
|
+
or: "أو"
|
7
|
+
any: "أيُّ"
|
8
|
+
all: "كل"
|
9
|
+
combinator: "دالة توافقية"
|
10
|
+
attribute: "خاصية"
|
11
|
+
value: "قيمة"
|
12
|
+
condition: "شرط"
|
13
|
+
sort: "ترتيب"
|
14
|
+
asc: "تصاعدي"
|
15
|
+
desc: "تنازلي"
|
16
|
+
predicates:
|
17
|
+
eq: "معادل"
|
18
|
+
eq_any: "معادل على اﻷقل لواحد"
|
19
|
+
eq_all: "معادل للجميع"
|
20
|
+
not_eq: "ليس معادلا لـ"
|
21
|
+
not_eq_any: "ليس معادلا على اﻷقل لواحد"
|
22
|
+
not_eq_all: "ليس معادلا للجميع"
|
23
|
+
matches: "موائم"
|
24
|
+
matches_any: "موائم لواحد على اﻷقل"
|
25
|
+
matches_all: "موائم للجميع"
|
26
|
+
does_not_match: "لا يتواءم"
|
27
|
+
does_not_match_any: "لا يتواءم مع واحد على اﻷقل"
|
28
|
+
does_not_match_all: "لا يتواءم مع الجميع"
|
29
|
+
lt: "أصغر من"
|
30
|
+
lt_any: "أصغر لواحد على اﻷقل"
|
31
|
+
lt_all: "أصغر من الجميع"
|
32
|
+
lteq: "أصغر أو مساو لـ"
|
33
|
+
lteq_any: "أصغر أو مساو لواحد على اﻷقل"
|
34
|
+
lteq_all: "أصغر أو مساو للجميع"
|
35
|
+
gt: "أكبر من"
|
36
|
+
gt_any: "أكبر من واحد على اﻷقل"
|
37
|
+
gt_all: "أكبر من الجميع"
|
38
|
+
gteq: "أكبر أو مساو لـ"
|
39
|
+
gteq_any: "أكبر أو مساو لواحد على اﻷقل"
|
40
|
+
gteq_all: "أكبر أو مساو للجميع"
|
41
|
+
in: "متضمن لـ"
|
42
|
+
in_any: "متضمن لواحد على اﻷقل"
|
43
|
+
in_all: "متضمن للجميع"
|
44
|
+
not_in: "غير متضمن"
|
45
|
+
not_in_any: "غير متضمن لواحد على اﻷقل"
|
46
|
+
not_in_all: "غير متضمن للجميع"
|
47
|
+
cont: "محتو"
|
48
|
+
cont_any: "محتو لواحد على اﻷقل"
|
49
|
+
cont_all: "محتو لجميع"
|
50
|
+
not_cont: "غير محتو"
|
51
|
+
not_cont_any: "غير محتو لواحد على اﻷقل"
|
52
|
+
not_cont_all: "غير محتو للجميع"
|
53
|
+
start: "يبدأ بـ"
|
54
|
+
start_any: "يبدأ بواحد على اﻷقل"
|
55
|
+
start_all: "يبدأ بالجميع"
|
56
|
+
not_start: "لا يبدأ بـ"
|
57
|
+
not_start_any: "لا يبدأ بواحد على اﻷقل"
|
58
|
+
not_start_all: "لا يبدأ بالجميع"
|
59
|
+
end: "ينتهي بـ"
|
60
|
+
end_any: "ينتهي بواحد على اﻷقل"
|
61
|
+
end_all: "ينتهي بالجميع"
|
62
|
+
not_end: "لا ينتهي بـ"
|
63
|
+
not_end_any: "لا ينتهي بواحد على اﻷقل"
|
64
|
+
not_end_all: "لا ينتهي بالجميع"
|
65
|
+
'true': "صحيح"
|
66
|
+
'false': "خطأ"
|
67
|
+
present: "مستقبل"
|
68
|
+
blank: "فراغ"
|
69
|
+
'null': "عدم"
|
70
|
+
not_null: "غير مساو لقيمة عدم"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
tr:
|
2
|
+
ransack:
|
3
|
+
search: "axtar"
|
4
|
+
predicate: "təsdiqlə"
|
5
|
+
and: "və"
|
6
|
+
or: "və ya"
|
7
|
+
any: "hər hansı"
|
8
|
+
all: "hamısı"
|
9
|
+
combinator: "birləşdirici"
|
10
|
+
attribute: "xüsusiyyət"
|
11
|
+
value: "dəyər"
|
12
|
+
condition: "şərt"
|
13
|
+
sort: "sırala"
|
14
|
+
asc: "artan"
|
15
|
+
desc: "azalan"
|
16
|
+
predicates:
|
17
|
+
eq: "bərabər"
|
18
|
+
eq_any: "hər hansı birinə bərabər"
|
19
|
+
eq_all: "hamısına bərabər"
|
20
|
+
not_eq: "bərabər deyil"
|
21
|
+
not_eq_any: "hər hansı birinə bərabər deyil"
|
22
|
+
not_eq_all: "heç birinə bərabər deyil"
|
23
|
+
matches: "uyğunlaşan"
|
24
|
+
matches_any: "hər hansı biri ilə uyğunlaşan"
|
25
|
+
matches_all: "hamısı ilə uyğunlaşan"
|
26
|
+
does_not_match: "uyğunlaşmayan"
|
27
|
+
does_not_match_any: "hər hansı biri ilə uyğunlaşmayan"
|
28
|
+
does_not_match_all: "heç biri ilə uyğunlaşmayan"
|
29
|
+
lt: "daha kiçik"
|
30
|
+
lt_any: "hər hansı birindən kiçik"
|
31
|
+
lt_all: "hamısından kiçik"
|
32
|
+
lteq: "daha kiçik və ya bərabər"
|
33
|
+
lteq_any: "daha kiçik və ya hər hansı birinə bərabər"
|
34
|
+
lteq_all: "daha kiçik və ya hamısına bərabər"
|
35
|
+
gt: "daha böyük "
|
36
|
+
gt_any: "hər hansı birindən daha böyük"
|
37
|
+
gt_all: "hamısından daha böyük"
|
38
|
+
gteq: "daha böyük və ya bərabər"
|
39
|
+
gteq_any: "daha böyük və ya hər hansı birine bərabər"
|
40
|
+
gteq_all: "daha böyük və ya hamısıne bərabər"
|
41
|
+
in: "içində"
|
42
|
+
in_any: "hər hansı birində"
|
43
|
+
in_all: "hamısında"
|
44
|
+
not_in: "içində deyil"
|
45
|
+
not_in_any: "hər hansı birində deyil"
|
46
|
+
not_in_all: "heç birində deyil"
|
47
|
+
cont: "ehtiva edən"
|
48
|
+
cont_any: "hər hansı birini ehtiva edən"
|
49
|
+
cont_all: "hamısını ehtiva edən"
|
50
|
+
not_cont: "ehtiva etməyən"
|
51
|
+
not_cont_any: "hər hansı birini ehtiva etməyən"
|
52
|
+
not_cont_all: "heç birini birini ehtiva etməyən"
|
53
|
+
start: "ilə başlayan"
|
54
|
+
start_any: "hər hansı biri ilə başlayan"
|
55
|
+
start_all: "hamısı ilə başlayan"
|
56
|
+
not_start: "ilə başlamayan"
|
57
|
+
not_start_any: "hər hansı biri ilə başlamayan"
|
58
|
+
not_start_all: "hiçbiri ilə başlamayan"
|
59
|
+
end: "ilə bitən"
|
60
|
+
end_any: "hər hansı biri ilə bitən"
|
61
|
+
end_all: "hamısı ilə bitən"
|
62
|
+
not_end: "ilə bitməyən"
|
63
|
+
not_end_any: "hər hansı biri ilə bitməyən"
|
64
|
+
not_end_all: "heç biri ilə bitməyən"
|
65
|
+
'true': "doğru"
|
66
|
+
'false': "yanlış"
|
67
|
+
present: "mövcüd"
|
68
|
+
blank: "boş"
|
69
|
+
'null': "keçərsiz"
|
70
|
+
not_null: "keçərli"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
bg:
|
2
|
+
ransack:
|
3
|
+
search: "търсене"
|
4
|
+
predicate: "предикат"
|
5
|
+
and: "и"
|
6
|
+
or: "или"
|
7
|
+
any: "всякакво"
|
8
|
+
all: "всички"
|
9
|
+
combinator: "комбинатор"
|
10
|
+
attribute: "атрибут"
|
11
|
+
value: "стойност"
|
12
|
+
condition: "условие"
|
13
|
+
sort: "сортиране"
|
14
|
+
asc: "възходящ"
|
15
|
+
desc: "низходящ"
|
16
|
+
predicates:
|
17
|
+
eq: "се равнява на"
|
18
|
+
eq_any: "се равнява на всяко"
|
19
|
+
eq_all: "се равнява на всички"
|
20
|
+
not_eq: "не е равно на"
|
21
|
+
not_eq_any: "не е равно на никое от"
|
22
|
+
not_eq_all: "не е равно на всички"
|
23
|
+
matches: "съвпада"
|
24
|
+
matches_any: "съвпада с някое"
|
25
|
+
matches_all: "съвпада с всички"
|
26
|
+
does_not_match: "не съвпада"
|
27
|
+
does_not_match_any: "не съвпада с никое"
|
28
|
+
does_not_match_all: "не съвпада с всички"
|
29
|
+
lt: "по-малко от"
|
30
|
+
lt_any: "по-малко от някое"
|
31
|
+
lt_all: "по-малко от всички"
|
32
|
+
lteq: "по-малко или равно на"
|
33
|
+
lteq_any: "по-малко или равно на някое"
|
34
|
+
lteq_all: "по-малко или равно на всички"
|
35
|
+
gt: "по-голямо от"
|
36
|
+
gt_any: "по-голямо от всякое"
|
37
|
+
gt_all: "по-голямо от всички"
|
38
|
+
gteq: "по-голямо или равно на"
|
39
|
+
gteq_any: "по-голямо или равно на всякое"
|
40
|
+
gteq_all: "по-голямо или равно на всички"
|
41
|
+
in: "в"
|
42
|
+
in_any: "във всякое"
|
43
|
+
in_all: "във всички"
|
44
|
+
not_in: "не в"
|
45
|
+
not_in_any: "не в никое"
|
46
|
+
not_in_all: "не във всички"
|
47
|
+
cont: "съдържа"
|
48
|
+
cont_any: "съдържа всякое"
|
49
|
+
cont_all: "съдържа всички"
|
50
|
+
not_cont: "не съдържа"
|
51
|
+
not_cont_any: "не съдържа никое"
|
52
|
+
not_cont_all: "не съдържа всички"
|
53
|
+
start: "започва с"
|
54
|
+
start_any: "започва с всякое"
|
55
|
+
start_all: "започва с всички"
|
56
|
+
not_start: "не започва с"
|
57
|
+
not_start_any: "не започва с никое"
|
58
|
+
not_start_all: "не започва с всички"
|
59
|
+
end: "завършва с"
|
60
|
+
end_any: "завършва с всякое"
|
61
|
+
end_all: "завършва с всички"
|
62
|
+
not_end: "не завършва с"
|
63
|
+
not_end_any: "не завършва с никое"
|
64
|
+
not_end_all: "не завършва с всички"
|
65
|
+
'true': "истина"
|
66
|
+
'false': "неистина"
|
67
|
+
present: "присъства"
|
68
|
+
blank: "е празно"
|
69
|
+
'null': "е нула"
|
70
|
+
not_null: "не е нула"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
da:
|
2
|
+
ransack:
|
3
|
+
search: "søg"
|
4
|
+
predicate: "predicate"
|
5
|
+
and: "og"
|
6
|
+
or: "eller"
|
7
|
+
any: "anhver"
|
8
|
+
all: "alle"
|
9
|
+
combinator: "kombinering"
|
10
|
+
attribute: "attribut"
|
11
|
+
value: "værdi"
|
12
|
+
condition: "betingelse"
|
13
|
+
sort: "sorter"
|
14
|
+
asc: "opstigende"
|
15
|
+
desc: "faldende"
|
16
|
+
predicates:
|
17
|
+
eq: "lig med"
|
18
|
+
eq_any: "lig med enhver"
|
19
|
+
eq_all: "lig med alle"
|
20
|
+
not_eq: "ikke lig med"
|
21
|
+
not_eq_any: "ikke lig med nogen"
|
22
|
+
not_eq_all: "ikke lig med alle"
|
23
|
+
matches: "matcher"
|
24
|
+
matches_any: "matcher enhver"
|
25
|
+
matches_all: "matcher alle"
|
26
|
+
does_not_match: "matcher ikke"
|
27
|
+
does_not_match_any: "matcher ikke nogen"
|
28
|
+
does_not_match_all: "matcher ikke alle"
|
29
|
+
lt: "mindre end"
|
30
|
+
lt_any: "mindre end nogen"
|
31
|
+
lt_all: "mindre end alle"
|
32
|
+
lteq: "mindre end eller lig med"
|
33
|
+
lteq_any: "mindre end eller lig med nogen"
|
34
|
+
lteq_all: "mindre end eller lig med alle"
|
35
|
+
gt: "større end"
|
36
|
+
gt_any: "større end nogen"
|
37
|
+
gt_all: "større end alle"
|
38
|
+
gteq: "større end eller lig med"
|
39
|
+
gteq_any: "større end eller lig med nogen"
|
40
|
+
gteq_all: "større end eller lig med alle"
|
41
|
+
in: "i"
|
42
|
+
in_any: "i nogen"
|
43
|
+
in_all: "i alle"
|
44
|
+
not_in: "ikke i"
|
45
|
+
not_in_any: "ikke i nogen"
|
46
|
+
not_in_all: "ikke i alle"
|
47
|
+
cont: "indeholder"
|
48
|
+
cont_any: "indeholder nogen"
|
49
|
+
cont_all: "indeholder alle"
|
50
|
+
not_cont: "indeholder ikke"
|
51
|
+
not_cont_any: "indeholder ikke nogen"
|
52
|
+
not_cont_all: "indeholder ikke alle"
|
53
|
+
start: "starter med"
|
54
|
+
start_any: "starter med nogen"
|
55
|
+
start_all: "starter med alle"
|
56
|
+
not_start: "starter ikke med"
|
57
|
+
not_start_any: "starter ikke med nogen"
|
58
|
+
not_start_all: "starter ikke med alle"
|
59
|
+
end: "slutter med"
|
60
|
+
end_any: "slutter med nogen"
|
61
|
+
end_all: "slutter med alle"
|
62
|
+
not_end: "slutter ikke med"
|
63
|
+
not_end_any: "slutter ikke med nogen"
|
64
|
+
not_end_all: "slutter ikke med alle"
|
65
|
+
'true': "er sand"
|
66
|
+
'false': "er falsk"
|
67
|
+
present: "er til stede"
|
68
|
+
blank: "er blank"
|
69
|
+
'null': "er nul"
|
70
|
+
not_null: "er ikke nul"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
el:
|
2
|
+
ransack:
|
3
|
+
search: "αναζήτηση"
|
4
|
+
predicate: "κατηγορούμενο"
|
5
|
+
and: "και"
|
6
|
+
or: "ή"
|
7
|
+
any: "οποιοδήποτε"
|
8
|
+
all: "όλα"
|
9
|
+
combinator: "συνδυαστής"
|
10
|
+
attribute: "ιδιότητα"
|
11
|
+
value: "τιμή"
|
12
|
+
condition: "συνθήκη"
|
13
|
+
sort: "ταξινόμηση"
|
14
|
+
asc: "αύξουσα"
|
15
|
+
desc: "φθίνουσα"
|
16
|
+
predicates:
|
17
|
+
eq: "ίσον"
|
18
|
+
eq_any: "ισούται με οποιοδήποτε"
|
19
|
+
eq_all: "ισούται με όλα"
|
20
|
+
not_eq: "άνισο"
|
21
|
+
not_eq_any: "άνισο με οποιοδήποτε"
|
22
|
+
not_eq_all: "άνισο με όλα"
|
23
|
+
matches: "αντιστοιχεί"
|
24
|
+
matches_any: "αντιστοιχεί με οποιοδήποτε"
|
25
|
+
matches_all: "αντιστοιχεί με όλα"
|
26
|
+
does_not_match: "δεν αντιστοιχεί"
|
27
|
+
does_not_match_any: "δεν αντιστοιχεί με οποιοδήποτε"
|
28
|
+
does_not_match_all: "δεν αντιστοιχεί με όλα"
|
29
|
+
lt: "μικρότερο από"
|
30
|
+
lt_any: "μικρότερο από οποιοδήποτε"
|
31
|
+
lt_all: "μικρότερο από όλα"
|
32
|
+
lteq: "μικρότερο ή ίσον"
|
33
|
+
lteq_any: "μικρότερο ή ίσον από οποιοδήποτε"
|
34
|
+
lteq_all: "μικρότερο ή ίσον από όλα"
|
35
|
+
gt: "μεγαλύτερο από"
|
36
|
+
gt_any: "μεγαλύτερο από οποιοδήποτε"
|
37
|
+
gt_all: μεγαλύτερο από όλα"
|
38
|
+
gteq: "μεγαλύτερο ή ίσον από"
|
39
|
+
gteq_any: "μεγαλύτερο ή ίσον από οποιοδήποτε"
|
40
|
+
gteq_all: "μεγαλύτερο ή ίσον από όλα"
|
41
|
+
in: "περιέχεται"
|
42
|
+
in_any: "περιέχεται σε οποιοδήποτε"
|
43
|
+
in_all: "περιέχεται σε όλα"
|
44
|
+
not_in: "δεν περιέχεται"
|
45
|
+
not_in_any: "δεν περιέχεται σε οποιοδήποτε"
|
46
|
+
not_in_all: "δεν περιέχεται σε όλα"
|
47
|
+
cont: "περιέχει"
|
48
|
+
cont_any: "περιέχει οποιοδήποτε"
|
49
|
+
cont_all: "περιέχει όλα"
|
50
|
+
not_cont: "δεν περιέχει"
|
51
|
+
not_cont_any: "δεν περιέχει οποιοδήποτε"
|
52
|
+
not_cont_all: "δεν περιέχει όλα"
|
53
|
+
start: "αρχίζει με"
|
54
|
+
start_any: "αρχίζει με οποιοδήποτε"
|
55
|
+
start_all: "αρχίζει με όλα"
|
56
|
+
not_start: "δεν αρχίζει με"
|
57
|
+
not_start_any: "δεν αρχίζει με οποιοδήποτε"
|
58
|
+
not_start_all: "δεν αρχίζει με όλα"
|
59
|
+
end: "τελειώνει με"
|
60
|
+
end_any: "τελειώνει οποιοδήποτε"
|
61
|
+
end_all: "τελειώνει με όλα"
|
62
|
+
not_end: "δεν τελειώνει με"
|
63
|
+
not_end_any: "δεν τελειώνει οποιοδήποτε"
|
64
|
+
not_end_all: "δεν τελειώνει με όλα"
|
65
|
+
'true': "αληθές"
|
66
|
+
'false': "ψευδές"
|
67
|
+
present: "υπάρχει"
|
68
|
+
blank: "είναι κενό"
|
69
|
+
'null': "άκυρο"
|
70
|
+
not_null: "δεν είναι άκυρο"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
id:
|
2
|
+
ransack:
|
3
|
+
search: "cari"
|
4
|
+
predicate: "predikat"
|
5
|
+
and: "dan"
|
6
|
+
or: "atau"
|
7
|
+
any: "apapun"
|
8
|
+
all: "semua"
|
9
|
+
combinator: "kombinasi"
|
10
|
+
attribute: "atribut"
|
11
|
+
value: "data"
|
12
|
+
condition: "kondisi"
|
13
|
+
sort: "urutan"
|
14
|
+
asc: "ascending"
|
15
|
+
desc: "descending"
|
16
|
+
predicates:
|
17
|
+
eq: "sama dengan"
|
18
|
+
eq_any: "sama beberapa dengan"
|
19
|
+
eq_all: "sama seluruhnya dengan"
|
20
|
+
not_eq: "tidak sama dengan"
|
21
|
+
not_eq_any: "tidak sama beberapa dengan"
|
22
|
+
not_eq_all: "tidak semua seluruhnya dengan"
|
23
|
+
matches: "mirip"
|
24
|
+
matches_any: "mirip beberapa dengan"
|
25
|
+
matches_all: "mirip semua dengan"
|
26
|
+
does_not_match: "tidak mirip dengan"
|
27
|
+
does_not_match_any: "tidak mirip beberapa dengan"
|
28
|
+
does_not_match_all: "tidak mirip semua dengan"
|
29
|
+
lt: "kurang dari"
|
30
|
+
lt_any: "kurang beberapa dengan"
|
31
|
+
lt_all: "kurang seluruhnya dengan"
|
32
|
+
lteq: "kurang lebih"
|
33
|
+
lteq_any: "kurang lebih beberapa dengan"
|
34
|
+
lteq_all: "kurang lebih semua dengan"
|
35
|
+
gt: "lebih besar daripada"
|
36
|
+
gt_any: "lebih besar beberapa dengan"
|
37
|
+
gt_all: "lebih besar semua dengan"
|
38
|
+
gteq: "lebih besar atau sama dengan"
|
39
|
+
gteq_any: "beberapa lebih besar atau sama dengan"
|
40
|
+
gteq_all: "semua lebih besar atau sama dengan"
|
41
|
+
in: "di"
|
42
|
+
in_any: "di beberapa"
|
43
|
+
in_all: "di semua"
|
44
|
+
not_in: "tidak di"
|
45
|
+
not_in_any: "tidak di beberapa"
|
46
|
+
not_in_all: "tidak semua di"
|
47
|
+
cont: "mengandung"
|
48
|
+
cont_any: "mengandung beberapa"
|
49
|
+
cont_all: "mengandung semua"
|
50
|
+
not_cont: "tidak mengandung"
|
51
|
+
not_cont_any: "tidak mengandung beberapa"
|
52
|
+
not_cont_all: "tidak mengandung semua"
|
53
|
+
start: "diawali dengan"
|
54
|
+
start_any: "diawali beberapa dengan"
|
55
|
+
start_all: "diawali semua dengan"
|
56
|
+
not_start: "tidak diawali dengan"
|
57
|
+
not_start_any: "tidak diawali beberapa dengan"
|
58
|
+
not_start_all: "tidak diawali semua dengan"
|
59
|
+
end: "diakhiri dengan"
|
60
|
+
end_any: "diakhiri beberapa dengan"
|
61
|
+
end_all: "diakhiri semua dengan"
|
62
|
+
not_end: "tidak diakhiri dengan"
|
63
|
+
not_end_any: "tidak diakhiri dengan beberapa"
|
64
|
+
not_end_all: "tidak diakhiri dengan semua"
|
65
|
+
'true': "bernilai benar"
|
66
|
+
'false': "bernilai salah"
|
67
|
+
present: "ada"
|
68
|
+
blank: "kosong"
|
69
|
+
'null': "null"
|
70
|
+
not_null: "tidak null"
|