decidim-core 0.25.0 → 0.26.0.rc2

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 (165) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/activity_cell.rb +2 -1
  3. data/app/cells/decidim/author/flag_user.erb +1 -1
  4. data/app/cells/decidim/author/profile_inline.erb +1 -1
  5. data/app/cells/decidim/author/withdraw.erb +2 -2
  6. data/app/cells/decidim/author_cell.rb +32 -0
  7. data/app/cells/decidim/card_m_cell.rb +1 -1
  8. data/app/cells/decidim/content_blocks/cta_cell.rb +1 -1
  9. data/app/cells/decidim/content_blocks/hero_cell.rb +1 -1
  10. data/app/cells/decidim/content_blocks/highlighted_content_banner/show.erb +1 -1
  11. data/app/cells/decidim/content_blocks/how_to_participate/show.erb +1 -1
  12. data/app/cells/decidim/content_blocks/last_activity_cell.rb +1 -1
  13. data/app/cells/decidim/content_blocks/stats_cell.rb +12 -0
  14. data/app/cells/decidim/endorsers_list_cell.rb +3 -1
  15. data/app/cells/decidim/flag_modal/flag_user.erb +2 -2
  16. data/app/cells/decidim/flag_modal/show.erb +2 -2
  17. data/app/cells/decidim/flag_modal_cell.rb +10 -0
  18. data/app/cells/decidim/following/show.erb +17 -8
  19. data/app/cells/decidim/following_cell.rb +6 -2
  20. data/app/cells/decidim/notification/show.erb +31 -0
  21. data/app/cells/decidim/notification_cell.rb +20 -0
  22. data/app/cells/decidim/notifications/show.erb +1 -24
  23. data/app/cells/decidim/notifications_cell.rb +0 -1
  24. data/app/cells/decidim/user_conversation/conversation_header.erb +1 -1
  25. data/app/cells/decidim/user_conversation/show.erb +4 -2
  26. data/app/cells/decidim/user_conversations/conversation_item.erb +1 -1
  27. data/app/commands/decidim/create_editor_image.rb +41 -0
  28. data/app/controllers/concerns/decidim/disable_redirection_to_external_host.rb +15 -0
  29. data/app/controllers/concerns/decidim/safe_redirect.rb +14 -3
  30. data/app/controllers/decidim/application_controller.rb +1 -0
  31. data/app/controllers/decidim/cookie_policy_controller.rb +2 -0
  32. data/app/controllers/decidim/editor_images_controller.rb +47 -0
  33. data/app/controllers/decidim/user_activities_controller.rb +2 -1
  34. data/app/forms/decidim/editor_image_form.rb +16 -0
  35. data/app/helpers/decidim/amendments_helper.rb +1 -1
  36. data/app/helpers/decidim/application_helper.rb +2 -2
  37. data/app/helpers/decidim/messaging/conversation_helper.rb +32 -3
  38. data/app/helpers/decidim/resource_versions_helper.rb +1 -1
  39. data/app/helpers/decidim/sanitize_helper.rb +65 -0
  40. data/app/models/decidim/editor_image.rb +14 -0
  41. data/app/models/decidim/messaging/conversation.rb +9 -0
  42. data/app/models/decidim/participatory_space_private_user.rb +16 -0
  43. data/app/models/decidim/user.rb +3 -9
  44. data/app/models/decidim/user_base_entity.rb +24 -13
  45. data/app/models/decidim/user_group.rb +40 -0
  46. data/app/packs/entrypoints/decidim_core.js +1 -0
  47. data/app/packs/src/decidim/dialog_mode.js +143 -0
  48. data/app/packs/src/decidim/dialog_mode.test.js +168 -0
  49. data/app/packs/src/decidim/editor.js +56 -14
  50. data/app/packs/src/decidim/form_attachments.js +5 -0
  51. data/app/packs/src/decidim/geocoding/attach_input.js +11 -2
  52. data/app/packs/src/decidim/index.js +4 -0
  53. data/app/packs/src/decidim/input_emoji.js +10 -1
  54. data/app/packs/src/decidim/vendor/image-resize.min.js +3 -0
  55. data/app/packs/src/decidim/vendor/image-upload.min.js +8 -0
  56. data/app/packs/stylesheets/decidim/extras/_extras.scss +0 -1
  57. data/app/packs/stylesheets/decidim/extras/_quill.scss +7 -0
  58. data/app/packs/stylesheets/decidim/modules/_buttons.scss +11 -4
  59. data/app/packs/stylesheets/decidim/modules/_cards.scss +4 -0
  60. data/app/packs/stylesheets/decidim/modules/_layout.scss +1 -1
  61. data/app/packs/stylesheets/decidim/modules/_timeline.scss +1 -1
  62. data/app/presenters/decidim/nil_presenter.rb +2 -2
  63. data/app/presenters/decidim/notification_presenter.rb +25 -0
  64. data/app/presenters/decidim/official_author_presenter.rb +1 -1
  65. data/app/presenters/decidim/validation_errors_presenter.rb +27 -0
  66. data/app/queries/decidim/similar_emendations.rb +1 -1
  67. data/app/resolvers/decidim/core/metric_resolver.rb +1 -1
  68. data/app/services/decidim/activity_search.rb +2 -2
  69. data/app/services/decidim/email_notification_generator.rb +4 -1
  70. data/app/services/decidim/html_truncation.rb +130 -0
  71. data/app/services/decidim/open_data_exporter.rb +29 -5
  72. data/app/services/decidim/resource_search.rb +1 -1
  73. data/app/uploaders/decidim/editor_image_uploader.rb +6 -0
  74. data/app/validators/password_validator.rb +123 -0
  75. data/app/views/decidim/account/_password_fields.html.erb +1 -1
  76. data/app/views/decidim/devise/passwords/edit.html.erb +1 -1
  77. data/app/views/decidim/devise/registrations/new.html.erb +1 -1
  78. data/app/views/decidim/devise/shared/_omniauth_buttons_mini.html.erb +6 -4
  79. data/app/views/decidim/messaging/conversations/_conversation.html.erb +9 -3
  80. data/app/views/decidim/messaging/conversations/_messages.html.erb +8 -2
  81. data/app/views/decidim/messaging/conversations/_show.html.erb +10 -12
  82. data/app/views/decidim/messaging/conversations/show.html.erb +4 -2
  83. data/app/views/decidim/newsletters/show.html.erb +1 -1
  84. data/app/views/decidim/notification_mailer/event_received.html.erb +17 -0
  85. data/app/views/decidim/pages/_tabbed.html.erb +1 -1
  86. data/app/views/decidim/searches/_filters_small_view.html.erb +3 -3
  87. data/app/views/decidim/shared/_login_modal.html.erb +5 -5
  88. data/app/views/decidim/shared/_orders.html.erb +1 -1
  89. data/app/views/decidim/shared/_results_per_page.html.erb +1 -1
  90. data/app/views/decidim/shared/participatory_space_filters/_filters_small_view.html.erb +3 -3
  91. data/app/views/layouts/decidim/_application.html.erb +1 -12
  92. data/app/views/layouts/decidim/_head.html.erb +4 -0
  93. data/app/views/layouts/decidim/_language_chooser.html.erb +1 -1
  94. data/app/views/layouts/decidim/_meta_tags_config.html.erb +11 -0
  95. data/app/views/layouts/decidim/_wrapper.html.erb +1 -1
  96. data/config/brakeman.ignore +149 -0
  97. data/config/initializers/devise.rb +1 -1
  98. data/config/initializers/rack_attack.rb +23 -21
  99. data/config/locales/ar.yml +8 -0
  100. data/config/locales/ca.yml +43 -0
  101. data/config/locales/cs.yml +61 -0
  102. data/config/locales/en.yml +47 -0
  103. data/config/locales/es-MX.yml +42 -0
  104. data/config/locales/es-PY.yml +42 -0
  105. data/config/locales/es.yml +42 -0
  106. data/config/locales/eu.yml +27 -12
  107. data/config/locales/fi-plain.yml +42 -0
  108. data/config/locales/fi.yml +42 -0
  109. data/config/locales/fr-CA.yml +43 -0
  110. data/config/locales/fr.yml +75 -28
  111. data/config/locales/gl.yml +6 -0
  112. data/config/locales/it.yml +11 -0
  113. data/config/locales/ja.yml +85 -49
  114. data/config/locales/lb-LU.yml +1354 -0
  115. data/config/locales/lb.yml +1 -1
  116. data/config/locales/nl.yml +51 -0
  117. data/config/locales/pl.yml +5 -5
  118. data/config/locales/pt-BR.yml +1 -1
  119. data/config/locales/ro-RO.yml +275 -252
  120. data/config/locales/sv.yml +45 -2
  121. data/config/locales/val-ES.yml +1 -0
  122. data/config/routes.rb +2 -0
  123. data/db/migrate/20210730112319_create_decidim_editor_images.rb +12 -0
  124. data/db/migrate/20211126183540_add_timestamps_to_content_blocks.rb +14 -0
  125. data/db/seeds.rb +16 -14
  126. data/lib/decidim/api/functions/user_entity_finder.rb +2 -1
  127. data/lib/decidim/api/functions/user_entity_list.rb +3 -1
  128. data/lib/decidim/api/input_sorts/component_input_sort.rb +1 -1
  129. data/lib/decidim/common_passwords.rb +56 -0
  130. data/lib/decidim/content_parsers/inline_images_parser.rb +68 -0
  131. data/lib/decidim/content_parsers.rb +1 -0
  132. data/lib/decidim/content_renderers/link_renderer.rb +85 -1
  133. data/lib/decidim/content_renderers/user_group_renderer.rb +1 -1
  134. data/lib/decidim/content_renderers/user_renderer.rb +1 -1
  135. data/lib/decidim/core/engine.rb +7 -12
  136. data/lib/decidim/core/test/factories.rb +7 -1
  137. data/lib/decidim/core/test/shared_examples/translated_event_examples.rb +131 -0
  138. data/lib/decidim/core/test.rb +1 -0
  139. data/lib/decidim/core/version.rb +1 -1
  140. data/lib/decidim/core.rb +33 -5
  141. data/lib/decidim/db/common-passwords.txt +128420 -0
  142. data/lib/decidim/etherpad/pad.rb +48 -0
  143. data/lib/decidim/etherpad.rb +7 -0
  144. data/lib/decidim/events/base_event.rb +18 -0
  145. data/lib/decidim/events/machine_translated_event.rb +36 -0
  146. data/lib/decidim/events/user_group_event.rb +1 -3
  147. data/lib/decidim/events.rb +1 -0
  148. data/lib/decidim/exporters/csv.rb +7 -7
  149. data/lib/decidim/faker/localized.rb +15 -6
  150. data/lib/decidim/form_builder.rb +14 -4
  151. data/lib/decidim/has_attachments.rb +11 -4
  152. data/lib/decidim/has_component.rb +4 -0
  153. data/lib/decidim/importers/import_manifest.rb +103 -3
  154. data/lib/decidim/organization_settings.rb +1 -1
  155. data/lib/decidim/paddable.rb +1 -9
  156. data/lib/decidim/participable.rb +5 -0
  157. data/lib/decidim/resourceable.rb +2 -9
  158. data/lib/decidim/searchable.rb +2 -2
  159. data/lib/decidim/settings_manifest.rb +2 -0
  160. data/lib/decidim/translatable_attributes.rb +6 -6
  161. data/lib/decidim/view_model.rb +10 -0
  162. data/lib/tasks/decidim_active_storage_migration_tasks.rake +68 -0
  163. data/lib/tasks/decidim_webpacker_tasks.rake +4 -10
  164. metadata +70 -78
  165. data/app/packs/stylesheets/decidim/extras/_social_icons_mini.scss +0 -11
@@ -0,0 +1,149 @@
1
+ {
2
+ "ignored_warnings": [
3
+ {
4
+ "warning_type": "Cross-Site Scripting",
5
+ "warning_code": 2,
6
+ "fingerprint": "211ff4b5e0d738e40e3c7f6d27b6905f23b1ed4e20347c179af3df40f6e5694d",
7
+ "check_name": "CrossSiteScripting",
8
+ "message": "Unescaped model attribute",
9
+ "file": "app/views/decidim/messaging/conversations/_conversation.html.erb",
10
+ "line": 20,
11
+ "link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting",
12
+ "code": "username_list((Unresolved Model).new.interlocutors(current_user), :shorten => true)",
13
+ "render_path": [
14
+ {
15
+ "type": "template",
16
+ "name": "decidim/messaging/conversations/index",
17
+ "line": 25,
18
+ "file": "app/views/decidim/messaging/conversations/index.html.erb",
19
+ "rendered": {
20
+ "name": "decidim/messaging/conversations/_conversation",
21
+ "file": "app/views/decidim/messaging/conversations/_conversation.html.erb"
22
+ }
23
+ }
24
+ ],
25
+ "location": {
26
+ "type": "template",
27
+ "template": "decidim/messaging/conversations/_conversation"
28
+ },
29
+ "user_input": "(Unresolved Model).new.interlocutors(current_user)",
30
+ "confidence": "Weak",
31
+ "note": ""
32
+ },
33
+ {
34
+ "warning_type": "Cross-Site Scripting",
35
+ "warning_code": 4,
36
+ "fingerprint": "2c7f1da812b5d4b350d2260b604e9061ef082ecae90073ae09fe2eb46c1b9a08",
37
+ "check_name": "LinkToHref",
38
+ "message": "Unsafe parameter value in `link_to` href",
39
+ "file": "app/views/decidim/links/_modal.html.erb",
40
+ "line": 16,
41
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
42
+ "code": "link_to(t(\"decidim.links.warning.proceed\"), params[:external_url], :target => \"_blank\", :data => ({ :close => \"\" }), :class => \"button primary button--nomargin\")",
43
+ "render_path": [
44
+ {
45
+ "type": "controller",
46
+ "class": "Decidim::LinksController",
47
+ "method": "new",
48
+ "line": 16,
49
+ "file": "app/controllers/decidim/links_controller.rb",
50
+ "rendered": {
51
+ "name": "decidim/links/new",
52
+ "file": "app/views/decidim/links/new.js.erb"
53
+ }
54
+ },
55
+ {
56
+ "type": "template",
57
+ "name": "decidim/links/new",
58
+ "line": 3,
59
+ "file": "app/views/decidim/links/new.js.erb",
60
+ "rendered": {
61
+ "name": "decidim/links/_modal",
62
+ "file": "app/views/decidim/links/_modal.html.erb"
63
+ }
64
+ }
65
+ ],
66
+ "location": {
67
+ "type": "template",
68
+ "template": "decidim/links/_modal"
69
+ },
70
+ "user_input": "params[:external_url]",
71
+ "confidence": "High",
72
+ "note": ""
73
+ },
74
+ {
75
+ "warning_type": "Cross-Site Scripting",
76
+ "warning_code": 2,
77
+ "fingerprint": "2d9910c9250df37f9cf9ddd225d4541ab9c411c61e74562b9a4b7b188e44cc47",
78
+ "check_name": "CrossSiteScripting",
79
+ "message": "Unescaped parameter value",
80
+ "file": "app/views/decidim/searches/index.js.erb",
81
+ "line": 5,
82
+ "link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting",
83
+ "code": "j(cell(\"decidim/search_results\", @sections, :params => (params)).show).strip",
84
+ "render_path": [
85
+ {
86
+ "type": "controller",
87
+ "class": "Decidim::SearchesController",
88
+ "method": "index",
89
+ "line": 15,
90
+ "file": "app/controllers/decidim/searches_controller.rb",
91
+ "rendered": {
92
+ "name": "decidim/searches/index",
93
+ "file": "app/views/decidim/searches/index.js.erb"
94
+ }
95
+ }
96
+ ],
97
+ "location": {
98
+ "type": "template",
99
+ "template": "decidim/searches/index"
100
+ },
101
+ "user_input": "params",
102
+ "confidence": "Weak",
103
+ "note": ""
104
+ },
105
+ {
106
+ "warning_type": "Cross-Site Scripting",
107
+ "warning_code": 2,
108
+ "fingerprint": "b46eb40178db883a8a9065d3affe7fb7868369084048fd88321f887d8618eea5",
109
+ "check_name": "CrossSiteScripting",
110
+ "message": "Unescaped parameter value",
111
+ "file": "app/views/decidim/messaging/conversations/_show.html.erb",
112
+ "line": 29,
113
+ "link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting",
114
+ "code": "t(\".title\", :usernames => username_list(form(ConversationForm).from_params(params, :sender => current_user).recipient.to_a))",
115
+ "render_path": [
116
+ {
117
+ "type": "controller",
118
+ "class": "Decidim::Messaging::ConversationsController",
119
+ "method": "new",
120
+ "line": 35,
121
+ "file": "app/controllers/decidim/messaging/conversations_controller.rb",
122
+ "rendered": {
123
+ "name": "decidim/messaging/conversations/new",
124
+ "file": "app/views/decidim/messaging/conversations/new.html.erb"
125
+ }
126
+ },
127
+ {
128
+ "type": "template",
129
+ "name": "decidim/messaging/conversations/new",
130
+ "line": 1,
131
+ "file": "app/views/decidim/messaging/conversations/new.html.erb",
132
+ "rendered": {
133
+ "name": "decidim/messaging/conversations/_show",
134
+ "file": "app/views/decidim/messaging/conversations/_show.html.erb"
135
+ }
136
+ }
137
+ ],
138
+ "location": {
139
+ "type": "template",
140
+ "template": "decidim/messaging/conversations/_show"
141
+ },
142
+ "user_input": "params",
143
+ "confidence": "Weak",
144
+ "note": ""
145
+ }
146
+ ],
147
+ "updated": "2021-12-22 09:55:40 +0000",
148
+ "brakeman_version": "5.1.2"
149
+ }
@@ -88,7 +88,7 @@ Devise.setup do |config|
88
88
  # It will change confirmation, password recovery and other workflows
89
89
  # to behave the same regardless if the e-mail provided was right or wrong.
90
90
  # Does not affect registerable.
91
- # config.paranoid = true
91
+ config.paranoid = true
92
92
 
93
93
  # By default Devise will store the user in session. You can skip storage for
94
94
  # particular strategies by setting this option.
@@ -7,31 +7,33 @@ if Rails.env.production? || Rails.env.test?
7
7
  config.middleware.use Rack::Attack
8
8
  end
9
9
 
10
- Rack::Attack.blocklist("block all access to system") do |request|
11
- # Requests are blocked if the return value is truthy
12
- if request.path.start_with?("/system")
13
- Decidim.system_accesslist_ips.any? && Decidim.system_accesslist_ips.map { |ip_address| IPAddr.new(ip_address).include?(IPAddr.new(request.ip)) }.any?
10
+ ActiveSupport::Reloader.to_prepare do
11
+ Rack::Attack.blocklist("block all access to system") do |request|
12
+ # Requests are blocked if the return value is truthy
13
+ if request.path.start_with?("/system")
14
+ Decidim.system_accesslist_ips.any? && Decidim.system_accesslist_ips.map { |ip_address| IPAddr.new(ip_address).include?(IPAddr.new(request.ip)) }.any?
15
+ end
14
16
  end
15
- end
16
17
 
17
- unless Rails.env.test?
18
- Rack::Attack.throttle(
19
- "requests by ip",
20
- limit: Decidim.throttling_max_requests,
21
- period: Decidim.throttling_period,
22
- &:ip
23
- )
18
+ unless Rails.env.test?
19
+ Rack::Attack.throttle(
20
+ "requests by ip",
21
+ limit: Decidim.throttling_max_requests,
22
+ period: Decidim.throttling_period,
23
+ &:ip
24
+ )
24
25
 
25
- # Throttle login attempts for a given email parameter to 6 reqs/minute
26
- # Return the email as a discriminator on POST /users/sign_in requests
27
- Rack::Attack.throttle("limit logins per email", limit: 5, period: 60.seconds) do |request|
28
- request.params["user"]["email"] if request.path == "/users/sign_in" && request.post?
29
- end
26
+ # Throttle login attempts for a given email parameter to 6 reqs/minute
27
+ # Return the email as a discriminator on POST /users/sign_in requests
28
+ Rack::Attack.throttle("limit logins per email", limit: 5, period: 60.seconds) do |request|
29
+ request.params["user"]["email"] if request.path == "/users/sign_in" && request.post?
30
+ end
30
31
 
31
- # Throttle login attempts for a given email parameter to 6 reqs/minute
32
- # Return the email as a discriminator on POST /users/sign_in requests
33
- Rack::Attack.throttle("limit password recovery attempts per email", limit: 5, period: 60.seconds) do |request|
34
- request.params["user"]["email"] if request.path == "/users/password" && request.post?
32
+ # Throttle login attempts for a given email parameter to 6 reqs/minute
33
+ # Return the email as a discriminator on POST /users/sign_in requests
34
+ Rack::Attack.throttle("limit password recovery attempts per email", limit: 5, period: 60.seconds) do |request|
35
+ request.params["user"]["email"] if request.path == "/users/password" && request.post?
36
+ end
35
37
  end
36
38
  end
37
39
  end
@@ -711,6 +711,9 @@ ar:
711
711
  index:
712
712
  last_activity: النشاط الاخير
713
713
  resource_type: نوع
714
+ links:
715
+ warning:
716
+ cancel: إلغاء
714
717
  log:
715
718
  base_presenter:
716
719
  create: "%{user_name} تم الإنشاء %{resource_name}"
@@ -920,6 +923,7 @@ ar:
920
923
  report_html: <p>بعد <a href="%{url}">محتوى</a> تم إخفاء تلقائيا.</p>
921
924
  subject: تم إخفاء المورد تلقائيًا
922
925
  report:
926
+ content_original_language: لغة المحتوى الأصلية
923
927
  hello: مرحبا %{name}،
924
928
  report_html: <p>تم الإبلاغ عن المحتوى <a href="%{url}">التالي</a> .</p>
925
929
  subject: تم الإبلاغ عن مورد
@@ -962,6 +966,8 @@ ar:
962
966
  other: "%{count} النتائج"
963
967
  view_all: عرض الكل (%{count})
964
968
  shared:
969
+ confirm_modal:
970
+ cancel: إلغاء
965
971
  embed_modal:
966
972
  close_window: أغلق النافذة
967
973
  embed: يرجى لصق هذا الرمز في صفحتك
@@ -1218,6 +1224,8 @@ ar:
1218
1224
  close_session: اغلق الموسم
1219
1225
  description_html: أنت تدير المشارك <b>%{user_name}</b>.
1220
1226
  expire_time_html: سوف تنتهي جلستك في <b><span class="minutes">%{minutes}</span> دقائق</b>.
1227
+ language_chooser:
1228
+ choose_language: اختر اللغة
1221
1229
  notifications_dashboard:
1222
1230
  mark_all_as_read: اشر عليها بانها قرات
1223
1231
  user_menu:
@@ -76,6 +76,30 @@ ca:
76
76
  decidim_with_day_and_month_name: "%A %d %b %Y"
77
77
  decidim_with_month_name: "%d %B %Y"
78
78
  decidim_with_month_name_short: "%d %b"
79
+ datetime:
80
+ distance_in_words:
81
+ about_x_hours:
82
+ one: al voltant d’1 hora
83
+ other: al voltant de %{count} hores
84
+ about_x_months:
85
+ one: al voltant d’1 mes
86
+ other: al voltant de %{count} mesos
87
+ half_a_minute: mig minut
88
+ less_than_x_minutes:
89
+ one: menys d’un minut
90
+ other: menys de %{count} minuts
91
+ less_than_x_seconds:
92
+ one: ara mateix
93
+ other: menys de %{count} segons
94
+ x_days:
95
+ one: fa 1 dia
96
+ other: "fa %{count} dies"
97
+ x_hours:
98
+ one: fa 1 hora
99
+ other: "fa %{count} hores"
100
+ x_minutes:
101
+ one: fa 1 minut
102
+ other: "fa %{count} minuts"
79
103
  decidim:
80
104
  accessibility:
81
105
  external_link: Enllaç extern
@@ -504,6 +528,11 @@ ca:
504
528
  this_application_will_not_be_able_to: 'Aquesta aplicació no podrà:'
505
529
  update_profile: Actualitza el teu perfil
506
530
  wants_to_use_your_account_html: "<strong>%{application_name}</strong> vol utilitzar el teu compte"
531
+ editor_images:
532
+ create:
533
+ error: S'ha produït un error en pujar la imatge
534
+ success: La imatge s'ha pujat correctament
535
+ drag_and_drop_help: Afegeix imatges arrossegant-les i deixant-les anar o bé enganxant-les.
507
536
  endorsable:
508
537
  endorsements: Adhesions
509
538
  endorsements_count: Número d'adhesions
@@ -694,6 +723,7 @@ ca:
694
723
  no_followers: Encara no hi ha seguidores.
695
724
  following:
696
725
  no_followings: No segueix a cap persona ni cap activitat.
726
+ non_public_followings: Alguns dels recursos seguits no són públics.
697
727
  follows:
698
728
  create:
699
729
  button: Seguir
@@ -959,6 +989,7 @@ ca:
959
989
  next: Següent
960
990
  no_conversations: Encara no tens converses
961
991
  title: Converses
992
+ to: Per a
962
993
  reply:
963
994
  placeholder: La teva resposta...
964
995
  send: Enviar
@@ -966,6 +997,7 @@ ca:
966
997
  show:
967
998
  back: Tornar a totes les converses
968
999
  chat_with: Conversa amb
1000
+ deleted_accounts: No podeu tenir una conversa amb un compte d'usuària eliminat.
969
1001
  not_allowed: Aquesta participant no accepta missatges directes.
970
1002
  title: Conversa amb %{usernames}
971
1003
  start:
@@ -1033,6 +1065,12 @@ ca:
1033
1065
  greetings: Salutacions,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
1034
1066
  hello: Hola,
1035
1067
  subject: Vols seguir rebent informació rellevant sobre %{organization_name}?
1068
+ notification_mailer:
1069
+ event_received:
1070
+ no_translation_available: Ho sentim, no s'ha pogut recuperar la traducció automàtica en enviar el correu. Pots comprovar la traducció del text original a través del següent enllaç %{link}.
1071
+ original_text: 'Text original:'
1072
+ same_language: El contingut s'ha publicat en la teva llengua de preferència (%{language}), és per això que no es mostra cap traducció automàtica en aquest correu electrònic.
1073
+ translated_text: 'Text de la traducció automàtica:'
1036
1074
  notifications:
1037
1075
  no_notifications: Encara no hi ha notificacions.
1038
1076
  notifications_settings:
@@ -1330,6 +1368,7 @@ ca:
1330
1368
  title_reply: Respondre
1331
1369
  show:
1332
1370
  back: Mostra totes les converses
1371
+ deleted_accounts: No podeu tenir una conversa amb un compte d'usuària eliminat.
1333
1372
  not_allowed: Aquesta participant no accepta missatges directes.
1334
1373
  title: Conversa amb %{usernames}
1335
1374
  update:
@@ -1626,10 +1665,12 @@ ca:
1626
1665
  name: Català
1627
1666
  name_with_error: Anglès (error!)
1628
1667
  password_validator:
1668
+ blacklisted: a la llista negra
1629
1669
  domain_included_in_password: és massa semblant a aquest nom de domini
1630
1670
  email_included_in_password: és massa similar al teu correu electrònic
1631
1671
  fallback: no és vàlid
1632
1672
  name_included_in_password: és massa semblant al teu nom
1673
+ nickname_included_in_password: és massa semblant al teu àlies
1633
1674
  not_enough_unique_characters: no té prou caràcters únics
1634
1675
  password_not_allowed: no està permès
1635
1676
  password_too_common: és massa comú
@@ -1664,6 +1705,8 @@ ca:
1664
1705
  day_of_week: "%a"
1665
1706
  day_of_week_long: "%a %e"
1666
1707
  day_of_year: "%d/%m/%y"
1708
+ ddmm: "%d.%m"
1709
+ ddmmyyyy: "%d.%m.%Y"
1667
1710
  decidim_day_of_year: "%d %B %Y"
1668
1711
  decidim_short: "%d/%m/%Y %H:%M"
1669
1712
  default: "%a, %d %b %Y %H:%M:%S %z"
@@ -84,6 +84,48 @@ cs:
84
84
  decidim_with_day_and_month_name: "%A %d %b %Y"
85
85
  decidim_with_month_name: "%d %B %Y"
86
86
  decidim_with_month_name_short: "%d %b"
87
+ datetime:
88
+ distance_in_words:
89
+ about_x_hours:
90
+ one: asi 1 hodina
91
+ few: asi %{count} hodiny
92
+ many: asi %{count} hodin
93
+ other: asi %{count} hodin
94
+ about_x_months:
95
+ one: asi 1 měsíc
96
+ few: asi %{count} měsíce
97
+ many: asi %{count} měsíců
98
+ other: asi %{count} měsíců
99
+ half_a_minute: půl minuty
100
+ less_than_x_minutes:
101
+ one: méně než minutu.
102
+ few: méně než %{count} minuty.
103
+ many: méně než %{count} minut.
104
+ other: méně než %{count} minut.
105
+ less_than_x_seconds:
106
+ one: právě teď
107
+ few: méně než %{count} vteřiny.
108
+ many: méně než %{count} vteřin.
109
+ other: méně než %{count} vteřin.
110
+ x_days:
111
+ one: před 1 dnem
112
+ few: "před %{count} dny"
113
+ many: "před %{count} ti dny"
114
+ other: "před %{count} ti dny"
115
+ x_hours:
116
+ one: před 1 hodinou
117
+ few: "před %{count} hodinami"
118
+ many: "před %{count} hodinami"
119
+ other: "před %{count} hodinami"
120
+ x_minutes:
121
+ one: před 1 minutou
122
+ few: "před %{count} minutami"
123
+ many: "před %{count} minutami"
124
+ other: "před %{count} minutami"
125
+ x_seconds:
126
+ one: před 1 vteřinou
127
+ other: "před %{count} vteřinami"
128
+ zero: právě teď
87
129
  decidim:
88
130
  accessibility:
89
131
  external_link: Externí odkaz
@@ -527,6 +569,11 @@ cs:
527
569
  this_application_will_not_be_able_to: 'Tato aplikace nebude moci:'
528
570
  update_profile: Aktualizujte svůj profil
529
571
  wants_to_use_your_account_html: "<strong>%{application_name}</strong> chce používat váš účet"
572
+ editor_images:
573
+ create:
574
+ error: Chyba při nahrávání obrázku
575
+ success: Obrázek byl úspěšně nahrán
576
+ drag_and_drop_help: Přidejte obrázky přetažením nebo vložením.
530
577
  endorsable:
531
578
  endorsements: Schválení
532
579
  endorsements_count: Počet schvalování
@@ -719,6 +766,7 @@ cs:
719
766
  no_followers: Zatím žádní sledující.
720
767
  following:
721
768
  no_followings: Nesleduje nikoho ani nic.
769
+ non_public_followings: Některé z uvedených zdrojů nejsou veřejné.
722
770
  follows:
723
771
  create:
724
772
  button: Sledovat
@@ -984,6 +1032,7 @@ cs:
984
1032
  next: Další
985
1033
  no_conversations: Nemáte zatím žádné konverzace
986
1034
  title: Konverzace
1035
+ to: Komu
987
1036
  reply:
988
1037
  placeholder: Vaše odpověď...
989
1038
  send: Poslat
@@ -991,6 +1040,7 @@ cs:
991
1040
  show:
992
1041
  back: Zpět ke všem konverzacím
993
1042
  chat_with: Konverzace s
1043
+ deleted_accounts: Nemůžete mít konverzaci s odstraněnými účty.
994
1044
  not_allowed: Tento uživatel nepřijímá přímé zprávy.
995
1045
  title: Konverzace s číslem %{usernames}
996
1046
  start:
@@ -1058,6 +1108,12 @@ cs:
1058
1108
  greetings: Zdravím,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
1059
1109
  hello: Ahoj,
1060
1110
  subject: Chcete nadále dostávat příslušné informace o %{organization_name}?
1111
+ notification_mailer:
1112
+ event_received:
1113
+ no_translation_available: Omlouváme se, po odeslání e-mailu nelze získat automatický překlad. Překlad původního textu můžete zkontrolovat na následujícím odkazu %{link}.
1114
+ original_text: 'Původní text:'
1115
+ same_language: Obsah byl zveřejněn ve vašem preferovaném jazyce (%{language}), proto se v tomto e-mailu nezobrazuje automatický překlad.
1116
+ translated_text: 'Automaticky přeložený text:'
1061
1117
  notifications:
1062
1118
  no_notifications: Zatím žádné oznámení.
1063
1119
  notifications_settings:
@@ -1357,6 +1413,7 @@ cs:
1357
1413
  title_reply: Odpovědět
1358
1414
  show:
1359
1415
  back: Zobrazit všechny konverzace
1416
+ deleted_accounts: Nemůžete mít konverzaci s odstraněnými účty.
1360
1417
  not_allowed: Tento uživatel již nepřijímá žádné přímé zprávy.
1361
1418
  title: Konverzace s %{usernames}
1362
1419
  update:
@@ -1660,10 +1717,12 @@ cs:
1660
1717
  name: Čeština
1661
1718
  name_with_error: Čeština
1662
1719
  password_validator:
1720
+ blacklisted: je na černé listině
1663
1721
  domain_included_in_password: je příliš podobné tomuto názvu domény
1664
1722
  email_included_in_password: je příliš podobný e-mailu
1665
1723
  fallback: není platný
1666
1724
  name_included_in_password: je příliš podobné vašemu jménu
1725
+ nickname_included_in_password: je příliš podobné vaší přezdívce
1667
1726
  not_enough_unique_characters: nemá dostatek jedinečných znaků
1668
1727
  password_not_allowed: není povoleno
1669
1728
  password_too_common: je příliš běžné
@@ -1698,6 +1757,8 @@ cs:
1698
1757
  day_of_week: "%a"
1699
1758
  day_of_week_long: "%a %e"
1700
1759
  day_of_year: "%d.%m.%y"
1760
+ ddmm: "%d.%m"
1761
+ ddmmyyyy: "%d.%m.%Y"
1701
1762
  decidim_day_of_year: "%d %B %Y"
1702
1763
  decidim_short: "%d/%m/%Y %H:%M"
1703
1764
  default: "%a, %d %b %Y %H:%M:%S %z"
@@ -77,6 +77,34 @@ en:
77
77
  decidim_with_day_and_month_name: "%A %d %b %Y"
78
78
  decidim_with_month_name: "%d %B %Y"
79
79
  decidim_with_month_name_short: "%d %b"
80
+ datetime:
81
+ distance_in_words:
82
+ about_x_hours:
83
+ one: about 1 hour
84
+ other: about %{count} hours
85
+ about_x_months:
86
+ one: about 1 month
87
+ other: about %{count} months
88
+ half_a_minute: half a minute
89
+ less_than_x_minutes:
90
+ one: less than a min.
91
+ other: less than %{count} min.
92
+ less_than_x_seconds:
93
+ one: right now
94
+ other: less than %{count} sec.
95
+ x_days:
96
+ one: 1 day ago
97
+ other: "%{count} days ago"
98
+ x_hours:
99
+ one: 1 hour ago
100
+ other: "%{count} hours ago"
101
+ x_minutes:
102
+ one: 1 min. ago
103
+ other: "%{count} min. ago"
104
+ x_seconds:
105
+ one: 1 sec. ago
106
+ other: "%{count} sec. ago"
107
+ zero: right now
80
108
  decidim:
81
109
  accessibility:
82
110
  external_link: External link
@@ -512,6 +540,11 @@ en:
512
540
  this_application_will_not_be_able_to: 'This application will not be able to:'
513
541
  update_profile: Update your profile
514
542
  wants_to_use_your_account_html: "<strong>%{application_name}</strong> wants to use your account"
543
+ editor_images:
544
+ create:
545
+ error: Error uploading image
546
+ success: Image uploaded successfully
547
+ drag_and_drop_help: Add images by dragging & dropping or pasting them.
515
548
  endorsable:
516
549
  endorsements: Endorsements
517
550
  endorsements_count: Endorsements count
@@ -702,6 +735,7 @@ en:
702
735
  no_followers: No followers yet.
703
736
  following:
704
737
  no_followings: Doesn't follow anyone or anything yet.
738
+ non_public_followings: Some of the resources followed are not public.
705
739
  follows:
706
740
  create:
707
741
  button: Follow
@@ -967,6 +1001,7 @@ en:
967
1001
  next: Next
968
1002
  no_conversations: You have no conversations yet
969
1003
  title: Conversations
1004
+ to: To
970
1005
  reply:
971
1006
  placeholder: Your reply...
972
1007
  send: Send
@@ -974,6 +1009,7 @@ en:
974
1009
  show:
975
1010
  back: Back to all conversations
976
1011
  chat_with: Conversation with
1012
+ deleted_accounts: You can't have a conversation with deleted accounts.
977
1013
  not_allowed: This participant does not accept direct messages.
978
1014
  title: Conversation with %{usernames}
979
1015
  start:
@@ -1041,6 +1077,12 @@ en:
1041
1077
  greetings: Greetings,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
1042
1078
  hello: Hello,
1043
1079
  subject: Do you want to keep receiving relevant information about %{organization_name}?
1080
+ notification_mailer:
1081
+ event_received:
1082
+ no_translation_available: Sorry, the automated translation could not be retrieved when the email has been sent. You can check the translation of the original text on the following link %{link}.
1083
+ original_text: 'Original text:'
1084
+ same_language: The content has been posted in your preferred language (%{language}), this is why no automated translation is displayed in this email.
1085
+ translated_text: 'Automatically translated text:'
1044
1086
  notifications:
1045
1087
  no_notifications: No notifications yet.
1046
1088
  notifications_settings:
@@ -1338,6 +1380,7 @@ en:
1338
1380
  title_reply: Reply
1339
1381
  show:
1340
1382
  back: Show all conversations
1383
+ deleted_accounts: You can't have a conversation with deleted accounts.
1341
1384
  not_allowed: This user does not accept any more direct messages.
1342
1385
  title: Conversation with %{usernames}
1343
1386
  update:
@@ -1635,10 +1678,12 @@ en:
1635
1678
  name: English
1636
1679
  name_with_error: English (error!)
1637
1680
  password_validator:
1681
+ blacklisted: is blacklisted
1638
1682
  domain_included_in_password: is too similar to this domain name
1639
1683
  email_included_in_password: is too similar to your email
1640
1684
  fallback: is not valid
1641
1685
  name_included_in_password: is too similar to your name
1686
+ nickname_included_in_password: is too similar to your nickname
1642
1687
  not_enough_unique_characters: does not have enough unique characters
1643
1688
  password_not_allowed: is not allowed
1644
1689
  password_too_common: is too common
@@ -1673,6 +1718,8 @@ en:
1673
1718
  day_of_week: "%a"
1674
1719
  day_of_week_long: "%a %e"
1675
1720
  day_of_year: "%d.%m.%y"
1721
+ ddmm: "%d.%m"
1722
+ ddmmyyyy: "%d.%m.%Y"
1676
1723
  decidim_day_of_year: "%d %B %Y"
1677
1724
  decidim_short: "%d/%m/%Y %H:%M"
1678
1725
  default: "%a, %d %b %Y %H:%M:%S %z"