active_storage_validations 0.8.2 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 813f828596f4fd712cff8e2f7f2b3fea5c668f03616bc3f621b8af742f7adff1
4
- data.tar.gz: 57da59dd3aa086c343d51a191b2a4990100d2f4bd4c846d30ca9e41dafaa3ca9
3
+ metadata.gz: 58ef7bbaa01aafa835921f0ad446b86e5b5c49a73a6f08e42feb97ff9bd3c7fd
4
+ data.tar.gz: e4f18d0de97ffa2adfe59e2d5d841706a8de3e6e575390aafb5b75dbf82a37a2
5
5
  SHA512:
6
- metadata.gz: 712ba73b0a9bfa737f09e003519aa9cbaa19dfdabd177ddcdefbff3f002a55f9758204808e0736136b61411b764eac922762cd6a90cd757f7cff610f6c560879
7
- data.tar.gz: ddb33ce32755b8cac68fb2106fedd4a8a682d8c44edc6d639171a8e323fdd8c681b32d83336fcc807ecbc31a648b0a5304a996d1390f5d1e548c52caf9179b86
6
+ metadata.gz: 5b29620eb2a65e73c9f7c1c9d2bf143ba20aed0e460fdd763d415651b80463821f5dea26d2b28834dae7dc90ad035d6bbaa47bc7e89161365bfb154485a12c8b
7
+ data.tar.gz: ee7ef332175aca338df8d46de13ac0487f1aa4b5a3d7aa220bd14826b0f73f55377a6475c2b2eb9133d06aae456a2d18bdc4fbec07b7caaf9cd9fa3b8f1dcf5b
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # Active Storage Validations
2
2
 
3
- If you are using `active_storage` gem and you want to add simple validations for it, like presence or content_type you need to write a custom valiation method.
3
+ [![MiniTest](https://github.com/igorkasyanchuk/active_storage_validations/workflows/MiniTest/badge.svg)](https://github.com/igorkasyanchuk/active_storage_validations/actions)
4
+ [![RailsJazz](https://github.com/igorkasyanchuk/rails_time_travel/blob/main/docs/my_other.svg?raw=true)](https://www.railsjazz.com)
5
+ [![https://www.patreon.com/igorkasyanchuk](https://github.com/igorkasyanchuk/rails_time_travel/blob/main/docs/patron.svg?raw=true)](https://www.patreon.com/igorkasyanchuk)
4
6
 
5
- This gems doing it for you. Just use `attached: true` or `content_type: 'image/png'` validation.
7
+ If you are using `active_storage` gem and you want to add simple validations for it, like presence or content_type you need to write a custom validation method.
6
8
 
7
- [![Build Status](https://travis-ci.org/igorkasyanchuk/active_storage_validations.svg?branch=master)](https://travis-ci.org/igorkasyanchuk/active_storage_validations)
9
+ This gems doing it for you. Just use `attached: true` or `content_type: 'image/png'` validation.
8
10
 
9
11
  ## What it can do
10
12
 
@@ -99,7 +101,7 @@ class User < ApplicationRecord
99
101
  end
100
102
  ```
101
103
 
102
- - Aspect ration validation:
104
+ - Aspect ratio validation:
103
105
 
104
106
  ```ruby
105
107
  class User < ApplicationRecord
@@ -113,10 +115,11 @@ class User < ApplicationRecord
113
115
  # you can also pass dynamic aspect ratio, like :is_4_3, :is_16_9, etc
114
116
  validates :photos, aspect_ratio: :is_4_3
115
117
  end
118
+ ```
116
119
 
117
120
  ## Internationalization (I18n)
118
121
 
119
- Active Storage Validations use I18n for errors messages. For this add there keys in your translation file:
122
+ Active Storage Validations uses I18n for error messages. For this, add these keys in your translation file:
120
123
 
121
124
  ```yml
122
125
  en:
@@ -136,19 +139,18 @@ en:
136
139
  dimension_height_less_than_or_equal_to: "height must be less than or equal to %{length} pixel."
137
140
  dimension_width_equal_to: "width must be equal to %{length} pixel."
138
141
  dimension_height_equal_to: "height must be equal to %{length} pixel."
139
- aspect_ratio_not_square: "doesn't a square image"
140
- aspect_ratio_not_portrait: "doesn't contain a portrait image"
141
- aspect_ratio_not_landscape: "doesn't contain a landscape image"
142
- aspect_ratio_is_not: "doesn't contain aspect ratio of %{aspect_ratio}"
142
+ aspect_ratio_not_square: "must be a square image"
143
+ aspect_ratio_not_portrait: "must be a portrait image"
144
+ aspect_ratio_not_landscape: "must be a landscape image"
145
+ aspect_ratio_is_not: "must have an aspect ratio of %{aspect_ratio}"
143
146
  aspect_ratio_unknown: "has an unknown aspect ratio"
144
-
145
147
  ```
146
148
 
147
- In some cases Active Storage Validations provides variables to help you customize messages:
149
+ In some cases, Active Storage Validations provides variables to help you customize messages:
148
150
 
149
- The "content_type_invalid" key has two variables that you can use, a variable named "content_type" containing the content type of the send file and a variable named "authorized_type" containing the list of authorized content types.
151
+ The "content_type_invalid" key has two variables that you can use, a variable named "content_type" containing the content type of the send file and a variable named "authorized_types" containing the list of authorized content types.
150
152
 
151
- It's variables are not used by default to leave the choice to the user.
153
+ The variables are not used by default to leave the choice to the user.
152
154
 
153
155
  For example :
154
156
 
@@ -188,33 +190,120 @@ Very simple example of validation with file attached, content type check and cus
188
190
 
189
191
  [![Sample](https://raw.githubusercontent.com/igorkasyanchuk/active_storage_validations/master/docs/preview.png)](https://raw.githubusercontent.com/igorkasyanchuk/active_storage_validations/master/docs/preview.png)
190
192
 
193
+ ## Test matchers
194
+ Provides RSpec-compatible and Minitest-compatible matchers for testing the validators.
195
+
196
+ ### RSpec
197
+
198
+ In `spec_helper.rb`, you'll need to require the matchers:
199
+
200
+ ```ruby
201
+ require 'active_storage_validations/matchers'
202
+ ```
203
+
204
+ And _include_ the module:
205
+
206
+ ```ruby
207
+ RSpec.configure do |config|
208
+ config.include ActiveStorageValidations::Matchers
209
+ end
210
+ ```
211
+
212
+ Example (Note that the options are chainable):
213
+
214
+ ```ruby
215
+ describe User do
216
+ it { is_expected.to validate_attached_of(:avatar) }
217
+
218
+ it { is_expected.to validate_content_type_of(:avatar).allowing('image/png', 'image/gif') }
219
+ it { is_expected.to validate_content_type_of(:avatar).rejecting('text/plain', 'text/xml') }
220
+
221
+ it { is_expected.to validate_dimensions_of(:avatar).width(250) }
222
+ it { is_expected.to validate_dimensions_of(:avatar).height(200) }
223
+ it { is_expected.to validate_dimensions_of(:avatar).width(250).height(200).with_message('Invalid dimensions.') }
224
+ it { is_expected.to validate_dimensions_of(:avatar).width_min(200) }
225
+ it { is_expected.to validate_dimensions_of(:avatar).width_max(500) }
226
+ it { is_expected.to validate_dimensions_of(:avatar).height_min(100) }
227
+ it { is_expected.to validate_dimensions_of(:avatar).height_max(300) }
228
+ it { is_expected.to validate_dimensions_of(:avatar).width_between(200..500) }
229
+ it { is_expected.to validate_dimensions_of(:avatar).height_between(100..300) }
230
+
231
+ it { is_expected.to validate_size_of(:avatar).less_than(50.kilobytes) }
232
+ it { is_expected.to validate_size_of(:avatar).less_than_or_equal_to(50.kilobytes) }
233
+ it { is_expected.to validate_size_of(:avatar).greater_than(1.kilobyte) }
234
+ it { is_expected.to validate_size_of(:avatar).greater_than_or_equal_to(1.kilobyte) }
235
+ it { is_expected.to validate_size_of(:avatar).between(100..500.kilobytes) }
236
+ end
237
+ ```
238
+
239
+ ### Minitest
240
+ To use the following syntax, make sure you have the [shoulda-context](https://github.com/thoughtbot/shoulda-context) gem up and running. To make use of the matchers you need to require the matchers:
241
+
242
+ ```ruby
243
+ require 'active_storage_validations/matchers'
244
+ ```
245
+
246
+ And _extend_ the module:
247
+
248
+ ```ruby
249
+ class ActiveSupport::TestCase
250
+ extend ActiveStorageValidations::Matchers
251
+ end
252
+ ```
253
+
254
+ Example (Note that the options are chainable):
255
+
256
+ ```ruby
257
+ class UserTest < ActiveSupport::TestCase
258
+ should validate_attached_of(:avatar)
259
+
260
+ should validate_content_type_of(:avatar).allowing('image/png', 'image/gif')
261
+ should validate_content_type_of(:avatar).rejecting('text/plain', 'text/xml')
262
+
263
+ should validate_dimensions_of(:avatar).width(250)
264
+ should validate_dimensions_of(:avatar).height(200)
265
+ should validate_dimensions_of(:avatar).width(250).height(200).with_message('Invalid dimensions.')
266
+ should validate_dimensions_of(:avatar).width_min(200)
267
+ should validate_dimensions_of(:avatar).width_max(500)
268
+ should validate_dimensions_of(:avatar).height_min(100)
269
+ should validate_dimensions_of(:avatar).height_max(300)
270
+ should validate_dimensions_of(:avatar).width_between(200..500)
271
+ should validate_dimensions_of(:avatar).height_between(100..300)
272
+
273
+ should validate_size_of(:avatar).less_than(50.kilobytes)
274
+ should validate_size_of(:avatar).less_than_or_equal_to(50.kilobytes)
275
+ should validate_size_of(:avatar).greater_than(1.kilobyte)
276
+ should validate_size_of(:avatar).greater_than_or_equal_to(1.kilobyte)
277
+ should validate_size_of(:avatar).between(100..500.kilobytes)
278
+ end
279
+ ```
280
+
191
281
  ## Todo
192
282
 
193
283
  * verify with remote storages (s3, etc)
194
284
  * verify how it works with direct upload
195
285
  * better error message when content_size is invalid
196
286
  * add more translations
197
- * add aspect ratio validation
198
287
 
199
288
  ## Tests & Contributing
200
289
 
201
290
  To run tests in root folder of gem:
202
291
 
203
292
  * `BUNDLE_GEMFILE=gemfiles/rails_5_2.gemfile bundle exec rake test` to run for Rails 5.2
204
- * `BUNDLE_GEMFILE=gemfiles/rails_6.0.gemfile bundle exec rake test` to run for Rails 6.0
205
-
206
- To play with app `cd test/dummy` and `rails s -b 0.0.0.0` (before `rails db:migrate`).
293
+ * `BUNDLE_GEMFILE=gemfiles/rails_6_0.gemfile bundle exec rake test` to run for Rails 6.0
294
+ * `BUNDLE_GEMFILE=gemfiles/rails_6_1.gemfile bundle exec rake test` to run for Rails 6.1
207
295
 
208
296
  ## Known issues
209
297
 
210
298
  - There is an issue in Rails which it possible to get if you have added a validation and generating for example an image preview of attachments. It can be fixed with this:
211
299
 
212
- ```
300
+ ```erb
213
301
  <% if @user.avatar.attached? && @user.avatar.attachment.blob.present? && @user.avatar.attachment.blob.persisted? %>
214
302
  <%= image_tag @user.avatar %>
215
303
  <% end %>
216
304
  ```
217
- This is Rails issue. And according to commits it will be fixed in Rails 6.
305
+
306
+ This is a Rails issue, and is fixed in Rails 6.
218
307
 
219
308
  ## Contributing
220
309
  You are welcome to contribute.
@@ -235,7 +324,30 @@ You are welcome to contribute.
235
324
  - https://github.com/reed
236
325
  - https://github.com/connorshea
237
326
  - https://github.com/Atul9
327
+ - https://github.com/victorbueno
328
+ - https://github.com/UICJohn
329
+ - https://github.com/giovannibonetti
330
+ - https://github.com/dlepage
331
+ - https://github.com/StefSchenkelaars
332
+ - https://github.com/willnet
333
+ - https://github.com/mohanklein
334
+ - https://github.com/High5Apps
335
+ - https://github.com/mschnitzer
336
+ - https://github.com/sinankeskin
337
+ - https://github.com/alejandrodevs
338
+ - https://github.com/molfar
339
+ - https://github.com/connorshea
340
+ - https://github.com/yshmarov
341
+ - https://github.com/fongfan999
342
+ - https://github.com/cooperka
343
+ - https://github.com/dolarsrg
344
+ - https://github.com/jayshepherd
345
+ - https://github.com/ohbarye
346
+ - https://github.com/...
238
347
 
239
348
  ## License
240
349
 
241
350
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
351
+
352
+ [<img src="https://github.com/igorkasyanchuk/rails_time_travel/blob/main/docs/more_gems.png?raw=true"
353
+ />](https://www.railsjazz.com/)
@@ -2,16 +2,21 @@ de:
2
2
  errors:
3
3
  messages:
4
4
  content_type_invalid: "hat einen ungültigen Dateityp"
5
- file_size_out_of_range: "Dateigröße von %{file_size} ist außerhalb des erlaubten Bereichs"
5
+ file_size_out_of_range: "Dateigröße %{file_size} liegt nicht im erlaubten Bereich"
6
6
  limit_out_of_range: "Anzahl ist außerhalb des gültigen Bereichs"
7
- image_metadata_missing: "ist nicht ein gültigen Bild"
7
+ image_metadata_missing: "ist kein gültiges Bild"
8
8
  dimension_min_inclusion: "muss größer oder gleich %{width} x %{height} Pixel sein"
9
9
  dimension_max_inclusion: "muss kleiner oder gleich %{width} x %{height} Pixel sein"
10
- dimension_width_inclusion: "Breite ist nicht zwischen %{min} und %{max} Pixel enthalten"
11
- dimension_height_inclusion: "Höhe ist nicht zwischen %{min} und %{max} Pixel enthalten"
12
- dimension_width_greater_than_or_equal_to: "Breite muss größer oder gleich %{length} Pixel sein"
13
- dimension_height_greater_than_or_equal_to: "Höhe muss größer oder gleich %{length} Pixel sein"
10
+ dimension_width_inclusion: "Bildbreite muss zwischen %{min} und %{max} Pixel liegen"
11
+ dimension_height_inclusion: "Bildhöhe muss zwischen %{min} und %{max} Pixel liegen"
12
+ dimension_width_greater_than_or_equal_to: "Bildbreite muss größer oder gleich %{length} Pixel sein"
13
+ dimension_height_greater_than_or_equal_to: "Bildhöhe muss größer oder gleich %{length} Pixel sein"
14
14
  dimension_width_less_than_or_equal_to: "Breite muss kleiner oder gleich %{length} Pixel sein"
15
15
  dimension_height_less_than_or_equal_to: "Höhe muss kleiner oder gleich %{length} Pixel sein"
16
- dimension_width_equal_to: "Breite muss genau %{length} Pixel sein"
17
- dimension_height_equal_to: "Höhe muss genau %{length} Pixel sein"
16
+ dimension_width_equal_to: "Bildbreite muss genau %{length} Pixel sein"
17
+ dimension_height_equal_to: "Bildhöhe muss genau %{length} Pixel sein"
18
+ aspect_ratio_not_square: "muss quadratisch sein"
19
+ aspect_ratio_not_portrait: "muss Hochformat sein"
20
+ aspect_ratio_not_landscape: "muss Querformat sein"
21
+ aspect_ratio_is_not: "muss ein Bildseitenverhältnis von %{aspect_ratio} haben"
22
+ aspect_ratio_unknown: "hat ein unbekanntes Bildseitenverhältnis"
@@ -15,8 +15,8 @@ en:
15
15
  dimension_height_less_than_or_equal_to: "height must be less than or equal to %{length} pixel"
16
16
  dimension_width_equal_to: "width must be equal to %{length} pixel"
17
17
  dimension_height_equal_to: "height must be equal to %{length} pixel"
18
- aspect_ratio_not_square: "doesn't a square image"
19
- aspect_ratio_not_portrait: "doesn't contain a portrait image"
20
- aspect_ratio_not_landscape: "doesn't contain a landscape image"
21
- aspect_ratio_is_not: "doesn't contain aspect ratio of %{aspect_ratio}"
18
+ aspect_ratio_not_square: "must be a square image"
19
+ aspect_ratio_not_portrait: "must be a portrait image"
20
+ aspect_ratio_not_landscape: "must be a landscape image"
21
+ aspect_ratio_is_not: "must have an aspect ratio of %{aspect_ratio}"
22
22
  aspect_ratio_unknown: "has an unknown aspect ratio"
@@ -0,0 +1,22 @@
1
+ es:
2
+ errors:
3
+ messages:
4
+ content_type_invalid: "tiene un tipo de contenido inválido"
5
+ file_size_out_of_range: "tamaño %{file_size} no está entre el rango requerido"
6
+ limit_out_of_range: "el número total está fuera de rango"
7
+ image_metadata_missing: "no es una imagen válida"
8
+ dimension_min_inclusion: "debe ser mayor o igual a %{width} x %{height} pixel"
9
+ dimension_max_inclusion: "debe ser menor o igual a %{width} x %{height} pixel"
10
+ dimension_width_inclusion: "el ancho no se incluye entre %{min} y %{max} pixel"
11
+ dimension_height_inclusion: "la altura no se incluye entre %{min} y %{max} pixel"
12
+ dimension_width_greater_than_or_equal_to: "el ancho debe ser mayor o igual a %{length} pixel"
13
+ dimension_height_greater_than_or_equal_to: "la altura debe ser mayor o igual a %{length} pixel"
14
+ dimension_width_less_than_or_equal_to: "el ancho debe ser menor o igual a %{length} pixel"
15
+ dimension_height_less_than_or_equal_to: "la altura debe ser menor o igual a %{length} pixel"
16
+ dimension_width_equal_to: "el ancho debe ser igual a %{length} pixel"
17
+ dimension_height_equal_to: "la altura debe ser igual a %{length} pixel"
18
+ aspect_ratio_not_square: "debe ser una imagen cuadrada"
19
+ aspect_ratio_not_portrait: "debe ser una imagen vertical"
20
+ aspect_ratio_not_landscape: "debe ser una imagen apaisada"
21
+ aspect_ratio_is_not: "debe tener una relación de aspecto de %{aspect_ratio}"
22
+ aspect_ratio_unknown: "tiene una relación de aspecto desconocida"
@@ -0,0 +1,22 @@
1
+ fr:
2
+ errors:
3
+ messages:
4
+ content_type_invalid: "a un type de contenu non valide"
5
+ file_size_out_of_range: "la taille %{file_size} n'est pas comprise dans la plage permise"
6
+ limit_out_of_range: "le nombre total est hors limites"
7
+ image_metadata_missing: "n'est pas une image valide"
8
+ dimension_min_inclusion: "doit être supérieur ou égal à %{width} x %{height} pixels"
9
+ dimension_max_inclusion: "doit être inférieur ou égal à %{width} x %{height} pixels"
10
+ dimension_width_inclusion: "la largeur n'est pas comprise entre %{min} et %{max} pixels"
11
+ dimension_height_inclusion: "la hauteur n'est pas comprise entre %{min} et %{max} pixels"
12
+ dimension_width_greater_than_or_equal_to: "la largeur doit être supérieure ou égale à %{length} pixels"
13
+ dimension_height_greater_than_or_equal_to: "la hauteur doit être supérieure ou égale à %{length} pixels"
14
+ dimension_width_less_than_or_equal_to: "la largeur doit être inférieure ou égale à %{length} pixels"
15
+ dimension_height_less_than_or_equal_to: "la hauteur doit être inférieure ou égale à %{length} pixels"
16
+ dimension_width_equal_to: "la largeur doit être égale à %{length} pixels"
17
+ dimension_height_equal_to: "la hauteur doit être égale à %{length} pixels"
18
+ aspect_ratio_not_square: "doit être une image en format carrée"
19
+ aspect_ratio_not_portrait: "doit être une image en format portrait"
20
+ aspect_ratio_not_landscape: "doit être une image en format paysage"
21
+ aspect_ratio_is_not: "doit avoir un rapport hauteur / largeur de %{aspect_ratio}"
22
+ aspect_ratio_unknown: "a un rapport d'aspect inconnu"
@@ -0,0 +1,22 @@
1
+ it:
2
+ errors:
3
+ messages:
4
+ content_type_invalid: "ha un tipo di contenuto non valido"
5
+ file_size_out_of_range: "la dimensione del file %{file_size} non è compresa nell’intervallo consentito"
6
+ limit_out_of_range: "il valore è al di fuori dell’intervallo consentito"
7
+ image_metadata_missing: "non è un'immagine valida"
8
+ dimension_min_inclusion: "deve essere maggiore o uguale a %{width} x %{height} pixel"
9
+ dimension_max_inclusion: "deve essere minore o uguale a %{width} x %{height} pixel"
10
+ dimension_width_inclusion: "la larghezza deve essere compresa tra %{min} e %{max} pixel"
11
+ dimension_height_inclusion: "l’altezza deve essere compresa tra %{min} e %{max} pixel"
12
+ dimension_width_greater_than_or_equal_to: "la larghezza deve essere maggiore o uguale a %{length} pixel"
13
+ dimension_height_greater_than_or_equal_to: "l’altezza deve essere maggiore o uguale a %{length} pixel"
14
+ dimension_width_less_than_or_equal_to: "la larghezza deve essere minore o uguale a %{length} pixel"
15
+ dimension_height_less_than_or_equal_to: "l’altezza deve essere minore o uguale a %{length} pixel"
16
+ dimension_width_equal_to: "la larghezza deve essere pari a %{length} pixel"
17
+ dimension_height_equal_to: "l’altezza deve essere pari a %{length} pixel"
18
+ aspect_ratio_not_square: "deve essere un’immagine quadrata"
19
+ aspect_ratio_not_portrait: "l’orientamento dell’immagine deve essere verticale"
20
+ aspect_ratio_not_landscape: "l’orientamento dell’immagine deve essere orizzontale"
21
+ aspect_ratio_is_not: "deve avere un rapporto altezza / larghezza di %{aspect_ratio}"
22
+ aspect_ratio_unknown: "ha un rapporto altezza / larghezza sconosciuto"
@@ -0,0 +1,22 @@
1
+ ja:
2
+ errors:
3
+ messages:
4
+ content_type_invalid: "のContent Typeが不正です"
5
+ file_size_out_of_range: "の容量 %{file_size} が許容範囲外です"
6
+ limit_out_of_range: "の数が許容範囲外です"
7
+ image_metadata_missing: "は不正な画像です"
8
+ dimension_min_inclusion: "は %{width} x %{height} ピクセル以上の大きさにしてください"
9
+ dimension_max_inclusion: "は %{width} x %{height} ピクセル以下の大きさにしてください"
10
+ dimension_width_inclusion: "の横幅は %{min} ピクセル以上 %{max} ピクセル以下にしてください"
11
+ dimension_height_inclusion: "の縦幅は %{min} ピクセル以上 %{max} ピクセル以下にしてください"
12
+ dimension_width_greater_than_or_equal_to: "の横幅は %{length} ピクセル以上にしてください"
13
+ dimension_height_greater_than_or_equal_to: "の縦幅は %{length} ピクセル以上にしてください"
14
+ dimension_width_less_than_or_equal_to: "の横幅は %{length} ピクセル以下にしてください"
15
+ dimension_height_less_than_or_equal_to: "の縦幅は %{length} ピクセル以下にしてください"
16
+ dimension_width_equal_to: "の横幅は %{length} ピクセルにしてください"
17
+ dimension_height_equal_to: "の縦幅は %{length} ピクセルにしてください"
18
+ aspect_ratio_not_square: "は正方形にしてください"
19
+ aspect_ratio_not_portrait: "は縦長にしてください"
20
+ aspect_ratio_not_landscape: "は横長にしてください"
21
+ aspect_ratio_is_not: "のアスペクト比は %{aspect_ratio} にしてください"
22
+ aspect_ratio_unknown: "のアスペクト比を取得できませんでした"
@@ -0,0 +1,22 @@
1
+ nl:
2
+ errors:
3
+ messages:
4
+ content_type_invalid: "heeft een ongeldig inhoudstype"
5
+ file_size_out_of_range: "bestandsgrootte %{file_size} valt niet tussen het vereiste bereik"
6
+ limit_out_of_range: "totaal aantal valt buiten het vereiste bereik"
7
+ image_metadata_missing: "is geen geldige afbeelding"
8
+ dimension_min_inclusion: "moet groter of gelijk zijn aan %{width} x %{height} pixels"
9
+ dimension_max_inclusion: "moet kleiner of gelijk zijn aan %{width} x %{height} pixels"
10
+ dimension_width_inclusion: "breedte niet tussen de %{min} en %{max} pixels"
11
+ dimension_height_inclusion: "hoogte niet tussen de %{min} en %{max} pixels"
12
+ dimension_width_greater_than_or_equal_to: "breedte moet groter of gelijk zijn aan %{length} pixels"
13
+ dimension_height_greater_than_or_equal_to: "hoogte moet groter of gelijk zijn aan %{length} pixels"
14
+ dimension_width_less_than_or_equal_to: "breedte moet kleiner of gelijk zijn aan %{length} pixels"
15
+ dimension_height_less_than_or_equal_to: "hoogte moet kleiner of gelijk zijn aan %{length} pixels"
16
+ dimension_width_equal_to: "breedte moet gelijk zijn aan %{length} pixels"
17
+ dimension_height_equal_to: "hoogte moet gelijk zijn aan %{length} pixels"
18
+ aspect_ratio_not_square: "moet een vierkante afbeelding zijn"
19
+ aspect_ratio_not_portrait: "moet een staande afbeelding zijn"
20
+ aspect_ratio_not_landscape: "moet een liggende afbeelding zijn"
21
+ aspect_ratio_is_not: "moet een beeldverhouding hebben van %{aspect_ratio}"
22
+ aspect_ratio_unknown: "heeft een onbekende beeldverhouding"
@@ -0,0 +1,22 @@
1
+ pl:
2
+ errors:
3
+ messages:
4
+ content_type_invalid: "jest nieprawidłowego typu"
5
+ file_size_out_of_range: "rozmiar %{file_size} nie zawiera się w dopuszczalnym zakresie"
6
+ limit_out_of_range: "ilość przekracza dopuszczalny zakres"
7
+ image_metadata_missing: "nie jest prawidłowym obrazem"
8
+ dimension_min_inclusion: "musi być równe lub większe od %{width} x %{height} pixeli"
9
+ dimension_max_inclusion: "musi być równe lub mniejsze od %{width} x %{height} pixeli"
10
+ dimension_width_inclusion: "szerokość musi wynosić od %{min} do %{max} pixeli"
11
+ dimension_height_inclusion: "wysokość musi wynosić od %{min} do %{max} pixeli"
12
+ dimension_width_greater_than_or_equal_to: "szerokość musi mieć co najmniej %{length} pixeli"
13
+ dimension_height_greater_than_or_equal_to: "wysokość musi mieć co najmniej %{length} pixeli"
14
+ dimension_width_less_than_or_equal_to: "szerokość musi mieć co najwyżej %{length} pixeli"
15
+ dimension_height_less_than_or_equal_to: "wysokość musi mieć co najwyżej %{length} pixeli"
16
+ dimension_width_equal_to: "szerokość musi wynosić %{length} pixeli"
17
+ dimension_height_equal_to: "wysokość musi wynosić %{length} pixeli"
18
+ aspect_ratio_not_square: "musi mieć proporcje kwadratu"
19
+ aspect_ratio_not_portrait: "musi mieć proporcje portretu"
20
+ aspect_ratio_not_landscape: "musi mieć proporcje pejzażu"
21
+ aspect_ratio_is_not: "musi mieć proporcje %{aspect_ratio}"
22
+ aspect_ratio_unknown: "ma nieokreślone proporcje"
@@ -0,0 +1,22 @@
1
+ pt-BR:
2
+ errors:
3
+ messages:
4
+ content_type_invalid: "tem um tipo de arquivo inválido"
5
+ file_size_out_of_range: "tamanho %{file_size} está fora da faixa de tamanho válida"
6
+ limit_out_of_range: "número total está fora do limite"
7
+ image_metadata_missing: "não é uma imagem válida"
8
+ dimension_min_inclusion: "deve ser maior ou igual a %{width} x %{height} pixel"
9
+ dimension_max_inclusion: "deve ser menor ou igual a %{width} x %{height} pixel"
10
+ dimension_width_inclusion: "largura não está entre %{min} e %{max} pixel"
11
+ dimension_height_inclusion: "altura não está entre %{min} e %{max} pixel"
12
+ dimension_width_greater_than_or_equal_to: "largura deve ser maior ou igual a %{length} pixel"
13
+ dimension_height_greater_than_or_equal_to: "altura deve ser maior ou igual a %{length} pixel"
14
+ dimension_width_less_than_or_equal_to: "largura deve ser menor ou igual a %{length} pixel"
15
+ dimension_height_less_than_or_equal_to: "altura deve ser menor ou igual a %{length} pixel"
16
+ dimension_width_equal_to: "largura deve ser igual a %{length} pixel"
17
+ dimension_height_equal_to: "altura deve ser igual a %{length} pixel"
18
+ aspect_ratio_not_square: "não é uma imagem quadrada"
19
+ aspect_ratio_not_portrait: "não contém uma imagem no formato retrato"
20
+ aspect_ratio_not_landscape: "não contém uma imagem no formato paisagem"
21
+ aspect_ratio_is_not: "não contém uma proporção de %{aspect_ratio}"
22
+ aspect_ratio_unknown: "não tem uma proporção definida"
@@ -0,0 +1,22 @@
1
+ ru:
2
+ errors:
3
+ messages:
4
+ content_type_invalid: "имеет недопустимый тип содержимого"
5
+ file_size_out_of_range: "размер %{file_size} больше требуемого"
6
+ limit_out_of_range: "количество файлов больше требуемого"
7
+ image_metadata_missing: "не является допустимым изображением"
8
+ dimension_min_inclusion: "должен быть больше или равно %{width} x %{height} пикселям"
9
+ dimension_max_inclusion: "должно быть меньше или равно %{width} x %{height} пикселям"
10
+ dimension_width_inclusion: "ширина не включена между %{min} и %{max} пикселям"
11
+ dimension_height_inclusion: "высота не включена между %{min} и %{max} пикселям"
12
+ dimension_width_greater_than_or_equal_to: "ширина должна быть больше или равна %{length} пикселям"
13
+ dimension_height_greater_than_or_equal_to: "высота должна быть больше или равна %{length} пикселям"
14
+ dimension_width_less_than_or_equal_to: "ширина должна быть меньше или равна %{length} пикселям"
15
+ dimension_height_less_than_or_equal_to: "высота должна быть меньше или равна %{length} пикселям"
16
+ dimension_width_equal_to: "ширина должна быть равна %{length} пикселям"
17
+ dimension_height_equal_to: "высота должна быть равна %{length} пикселям"
18
+ aspect_ratio_not_square: "должно быть квадратное изображение"
19
+ aspect_ratio_not_portrait: "должно быть портретное изображение"
20
+ aspect_ratio_not_landscape: "должно быть пейзажное изображение"
21
+ aspect_ratio_is_not: "должен иметь соотношение сторон %{aspect_ratio}"
22
+ aspect_ratio_unknown: "имеет неизвестное соотношение сторон"