decidim-core 0.31.0.rc1 → 0.31.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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/activity_cell.rb +6 -0
  3. data/app/cells/decidim/author/avatar.erb +1 -7
  4. data/app/cells/decidim/author/badge.erb +6 -0
  5. data/app/cells/decidim/author/name.erb +1 -5
  6. data/app/cells/decidim/author/show.erb +47 -15
  7. data/app/cells/decidim/author_cell.rb +10 -0
  8. data/app/cells/decidim/profile/avatar.erb +0 -2
  9. data/app/cells/decidim/profile/badge.erb +3 -3
  10. data/app/cells/decidim/profile/details.erb +2 -1
  11. data/app/cells/decidim/user_activity_cell.rb +6 -1
  12. data/app/controllers/decidim/download_your_data_controller.rb +5 -2
  13. data/app/helpers/decidim/map_helper.rb +1 -1
  14. data/app/helpers/decidim/menu_helper.rb +8 -2
  15. data/app/mailers/decidim/user_group_mailer.rb +21 -0
  16. data/app/models/decidim/private_export.rb +4 -0
  17. data/app/models/decidim/user.rb +2 -2
  18. data/app/packs/src/decidim/controllers/dropdown/controller.js +2 -2
  19. data/app/packs/src/decidim/controllers/editor/controller.js +4 -1
  20. data/app/packs/src/decidim/controllers/form_filter/controller.js +6 -0
  21. data/app/packs/src/decidim/datepicker/generate_datepicker.js +6 -0
  22. data/app/packs/src/decidim/datepicker/generate_timepicker.js +9 -0
  23. data/app/packs/src/decidim/index.js +10 -5
  24. data/app/packs/src/decidim/map/controller/markers.js +3 -1
  25. data/app/packs/src/decidim/refactor/moved/check_boxes_tree.js +1 -0
  26. data/app/packs/stylesheets/decidim/_accordion.scss +4 -4
  27. data/app/packs/stylesheets/decidim/_author.scss +15 -1
  28. data/app/packs/stylesheets/decidim/_cards.scss +5 -1
  29. data/app/packs/stylesheets/decidim/_dropdown.scss +22 -5
  30. data/app/packs/stylesheets/decidim/_filters.scss +1 -1
  31. data/app/packs/stylesheets/decidim/_footer.scss +5 -0
  32. data/app/packs/stylesheets/decidim/_profile.scss +6 -6
  33. data/app/packs/stylesheets/decidim/editor.scss +3 -1
  34. data/app/services/decidim/download_your_data_exporter.rb +15 -4
  35. data/app/services/decidim/open_data_exporter.rb +2 -1
  36. data/app/validators/etiquette_validator.rb +2 -2
  37. data/app/validators/password_validator.rb +3 -1
  38. data/app/views/decidim/application/_document.html.erb +2 -2
  39. data/app/views/decidim/download_your_data/_export.html.erb +1 -1
  40. data/app/views/decidim/export_mailer/download_your_data_export.html.erb +1 -1
  41. data/app/views/decidim/export_mailer/export.html.erb +1 -1
  42. data/app/views/decidim/shared/_filters.html.erb +1 -1
  43. data/app/views/decidim/user_group_mailer/notify_deprecation_to_member.html.erb +4 -1
  44. data/app/views/decidim/user_group_mailer/notify_deprecation_to_owner.html.erb +1 -4
  45. data/app/views/decidim/user_group_mailer/notify_user_group_patched.html.erb +21 -0
  46. data/app/views/layouts/decidim/_application.html.erb +1 -1
  47. data/config/locales/ca-IT.yml +30 -18
  48. data/config/locales/ca.yml +28 -16
  49. data/config/locales/cs.yml +6 -7
  50. data/config/locales/de.yml +2 -11
  51. data/config/locales/en.yml +22 -10
  52. data/config/locales/es-MX.yml +20 -8
  53. data/config/locales/es-PY.yml +20 -8
  54. data/config/locales/es.yml +20 -8
  55. data/config/locales/eu.yml +60 -48
  56. data/config/locales/fi-plain.yml +20 -9
  57. data/config/locales/fi.yml +20 -9
  58. data/config/locales/fr-CA.yml +22 -10
  59. data/config/locales/fr.yml +22 -10
  60. data/config/locales/it.yml +2 -0
  61. data/config/locales/ja.yml +22 -10
  62. data/config/locales/ro-RO.yml +1 -1
  63. data/config/locales/ru.yml +0 -1
  64. data/config/locales/sl.yml +0 -1
  65. data/db/data/20251108232118_add_dummy_migration.rb +11 -0
  66. data/db/migrate/20250217192438_convert_user_groups_into_users.rb +19 -1
  67. data/db/migrate/20250819110800_convert_private_exports_id_to_uuid.rb +55 -0
  68. data/decidim-core.gemspec +1 -0
  69. data/lib/decidim/asset_router/storage.rb +8 -8
  70. data/lib/decidim/core/engine.rb +9 -0
  71. data/lib/decidim/core/test/factories.rb +7 -2
  72. data/lib/decidim/core/test/shared_examples/comments_examples.rb +24 -0
  73. data/lib/decidim/core/version.rb +1 -1
  74. data/lib/decidim/form_builder.rb +1 -1
  75. data/lib/decidim/shakapacker/configuration.rb +5 -1
  76. data/lib/tasks/upgrade/clean.rake +11 -0
  77. data/lib/tasks/upgrade/decidim_fix_action_log.rake +28 -0
  78. data/lib/tasks/upgrade/user_groups_migration.rake +33 -0
  79. metadata +25 -6
@@ -22,14 +22,21 @@ module Decidim
22
22
  end
23
23
 
24
24
  # i18n-tasks-use t("decidim.download_your_data.show.download_your_data")
25
- def export
26
- user_export = user.private_exports.build
25
+ def export(retries: 0)
26
+ data.rewind
27
+ user_export = user.private_exports.build(file_size: data.length)
27
28
  user_export.export_type = name
28
- user_export.file.attach(io: data, filename: "#{name}.zip", content_type: "application/zip")
29
+ user_export.content_type = "application/zip"
29
30
  user_export.expires_at = Decidim.download_your_data_expiry_time.from_now
30
31
  user_export.metadata = {}
31
32
  user_export.save!
32
- user_export
33
+ user_export.file.attach(io: data, filename: "#{name}.zip", content_type: "application/zip")
34
+
35
+ return user_export.reload if user_export.reload.file.attached?
36
+ return user_export.reload if retries >= 3
37
+
38
+ user_export.destroy!
39
+ export(retries: retries + 1)
33
40
  end
34
41
 
35
42
  private
@@ -37,6 +44,10 @@ module Decidim
37
44
  attr_reader :user, :export_format, :name
38
45
 
39
46
  def data
47
+ @data ||= load_data!
48
+ end
49
+
50
+ def load_data!
40
51
  user_data, user_attachments = data_and_attachments_for_user
41
52
  buffer = Zip::OutputStream.write_buffer do |out|
42
53
  save_user_data(out, user_data)
@@ -117,9 +117,10 @@ module Decidim
117
117
  end
118
118
 
119
119
  def data_for_participatory_space(export_manifest)
120
- collection = participatory_spaces.flat_map do |participatory_space|
120
+ collection = participatory_spaces.filter { |space| space.manifest.name == export_manifest.manifest.name }.flat_map do |participatory_space|
121
121
  export_manifest.collection.call(participatory_space)
122
122
  end
123
+
123
124
  serializer = export_manifest.open_data_serializer.nil? ? export_manifest.serializer : export_manifest.open_data_serializer
124
125
  exporter = Decidim::Exporters::CSV.new(collection, serializer)
125
126
  get_help_definition(:spaces, exporter, export_manifest, collection.count) unless collection.empty?
@@ -31,7 +31,7 @@ class EtiquetteValidator < ActiveModel::EachValidator
31
31
  end
32
32
 
33
33
  def validate_caps(record, attribute, value)
34
- number_of_caps = value.scan(/[A-Z]/).length
34
+ number_of_caps = value.scan(/[[:upper:]]/).length
35
35
  return if number_of_caps.zero? || number_of_caps < value.length / 2 # 50%
36
36
 
37
37
  record.errors.add(attribute, options[:message] || :too_much_caps)
@@ -44,7 +44,7 @@ class EtiquetteValidator < ActiveModel::EachValidator
44
44
  end
45
45
 
46
46
  def validate_caps_first(record, attribute, value)
47
- return if value.scan(/\A[a-z]{1}/).empty?
47
+ return if value.scan(/\A[[:lower:]]{1}/).empty?
48
48
 
49
49
  record.errors.add(attribute, options[:message] || :must_start_with_caps)
50
50
  end
@@ -55,7 +55,9 @@ class PasswordValidator < ActiveModel::EachValidator
55
55
  attr_reader :record, :attribute, :value
56
56
 
57
57
  def get_message(reason)
58
- I18n.t "password_validator.#{reason}"
58
+ I18n.t! "password_validator.#{reason}"
59
+ rescue I18n::MissingTranslationData
60
+ I18n.t "password_validator.fallback"
59
61
  end
60
62
 
61
63
  def organization
@@ -1,8 +1,8 @@
1
1
  <div id="<%= dom_id(document) %>">
2
2
  <div class="card__list-content">
3
- <%= link_to document.url, target: "_blank", rel: "noopener noreferrer", class: "card__list-title", title: t("decidim.application.document.download") do %>
3
+ <span class="card__list-title">
4
4
  <%= h attachment_title(document) %>
5
- <% end %>
5
+ </span>
6
6
  <% if document.description.present? %>
7
7
  <div class="card__list-text"><%= decidim_escape_translated(document.description) %></div>
8
8
  <% end %>
@@ -2,7 +2,7 @@
2
2
  <td class="text-left p-4"><%= t(export.export_type, scope:"decidim.download_your_data.show") %></td>
3
3
  <td class="text-center"><%= export.expired? ? t("expired", scope:"decidim.download_your_data.show") : l(export.expires_at, format: :decidim_short) %></td>
4
4
  <td class="py-4">
5
- <%= button_to download_download_your_data_path(export),
5
+ <%= button_to download_download_your_data_path(uuid: export.uuid),
6
6
  class: "button button__sm button__transparent-secondary m-auto block",
7
7
  disabled: export.expired?,
8
8
  aria: { label: t("download", scope:"decidim.download_your_data.show") },
@@ -3,5 +3,5 @@
3
3
  </p>
4
4
 
5
5
  <p class="email-button email-button__cta">
6
- <%= link_to t(".download"), download_download_your_data_url(@private_export, host: @organization.host), class: "button expanded hollow button--sc" %>
6
+ <%= link_to t(".download"), download_download_your_data_url(uuid: @private_export.uuid, host: @organization.host), class: "button expanded hollow button--sc" %>
7
7
  </p>
@@ -3,5 +3,5 @@
3
3
  </p>
4
4
 
5
5
  <p class="email-button email-button__cta">
6
- <%= link_to t(".download"), download_download_your_data_url(@private_export, host: @organization.host), class: "button expanded hollow button--sc" %>
6
+ <%= link_to t(".download"), download_download_your_data_url(uuid: @private_export.uuid, host: @organization.host), class: "button expanded hollow button--sc" %>
7
7
  </p>
@@ -14,7 +14,7 @@
14
14
 
15
15
  <div id="dropdown-menu-filters">
16
16
  <% if local_assigns.has_key?(:skip_to_id) %>
17
- <%= link_to t("skip", scope: "decidim.shared.filter_form_help"), "##{skip_to_id}", class: "filter-skip", role: "menuitem" %>
17
+ <%= link_to t("skip", scope: "decidim.shared.filter_form_help"), "##{skip_to_id}", class: "filter-skip", role: "menuitem", "data-skip-to-content": true %>
18
18
  <% end %>
19
19
 
20
20
  <p id="filter-help-text" class="filter-help" role="menuitem" aria-disabled="true"><%= t("help", scope: "decidim.shared.filter_form_help") %></p>
@@ -6,10 +6,13 @@
6
6
 
7
7
  <p class="email-instructions"><%= t(".instructions_title").html_safe %></p>
8
8
 
9
- <p class="email-instructions"><%= t(".instructions_intro") %></p>
9
+ <p class="email-instructions"><%= t(".instructions_intro", email: @group_email) %></p>
10
10
 
11
11
  <ul class="list-decimal">
12
12
  <li>
13
13
  <%= t(".instructions_1") %>
14
14
  </li>
15
+ <li>
16
+ <%= t(".instructions_2") %>
17
+ </li>
15
18
  </ul>
@@ -14,9 +14,6 @@
14
14
  <p class="email-button email-button__cta"><%= link_to t(".set_password"), new_password_url(:user, host: @organization.host) %></p>
15
15
  </li>
16
16
  <li>
17
- <%= t(".instructions_2") %>
18
- </li>
19
- <li>
20
- <%= t(".instructions_3") %>
17
+ <%= t(".instructions_2", email: @group_email) %>
21
18
  </li>
22
19
  </ol>
@@ -0,0 +1,21 @@
1
+ <p class="email-greeting"><%= t(".greeting", name: @user.name) %></p>
2
+
3
+ <p class="email-instructions"><%= t(".body_1_html", organization_name: organization_name(@organization)) %></p>
4
+
5
+ <p class="email-instructions"><%= t(".body_2_html", name: @group.name) %></p>
6
+
7
+ <p class="email-instructions"><%= t(".body_3_html") %></p>
8
+
9
+ <p class="email-instructions"><%= t(".instructions_title_html") %></p>
10
+
11
+ <ul class="list-decimal">
12
+ <li>
13
+ <%= t(".instructions_1_html", email: @group.email, password: @password) %>
14
+ </li>
15
+ <li>
16
+ <%= t(".instructions_2_html") %>
17
+ </li>
18
+ <li>
19
+ <%= t(".instructions_3_html") %>
20
+ </li>
21
+ </ul>
@@ -8,7 +8,7 @@
8
8
 
9
9
  <body class="text-black text-md form-defaults<%= yield (:body_class) %>">
10
10
  <!--noindex--><!--googleoff: all-->
11
- <%= link_to t("skip_button", scope: "decidim.accessibility"), "#content", class: "layout-container__skip" %>
11
+ <%= link_to t("skip_button", scope: "decidim.accessibility"), "#content", class: "layout-container__skip", "data-skip-to-content": true %>
12
12
  <%= cell("decidim/data_consent", current_organization) %>
13
13
  <!--googleon: all--><!--/noindex-->
14
14
 
@@ -64,7 +64,7 @@ ca-IT:
64
64
  decidim/attachment_created_event: Arxiu adjunt
65
65
  decidim/component_published_event: Component actiu
66
66
  decidim/demoted_membership: Ja no ets una administradora del grup
67
- decidim/gamification/badge_earned_event: Insígnia obtinguda
67
+ decidim/gamification/badge_earned_event: Ensenya obtinguda
68
68
  decidim/gamification/level_up_event: Has pujat de nivell
69
69
  decidim/invited_to_group_event: Convidada al grup
70
70
  decidim/join_request_accepted_event: Sol·licitud d'incorporació acceptada
@@ -199,6 +199,7 @@ ca-IT:
199
199
  success: El teu compte s'ha eliminat correctament.
200
200
  download_your_data_export:
201
201
  export_expired: L'exportació ha caducat. Intenta generar una nova exportació.
202
+ export_not_found: L'exportació a la qual has accedit no existeix o no tens accés o permisos per descarregar-la
202
203
  file_no_exists: L'arxiu no existeix
203
204
  notice: La descàrrega de les teves dades està en curs. Rebràs un correu electrònic quan estigui completa.
204
205
  email_change:
@@ -1084,7 +1085,7 @@ ca-IT:
1084
1085
  dropzone: Arrossega-hi els arxius o fes clic per a pujar-los
1085
1086
  explanation: Guia per a %{attribute}
1086
1087
  gamification:
1087
- all_badges_link: Veure totes les insígnies disponibles.
1088
+ all_badges_link: Veure totes les ensenyes disponibles.
1088
1089
  badges:
1089
1090
  followers:
1090
1091
  conditions:
@@ -1097,11 +1098,11 @@ ca-IT:
1097
1098
  unearned_another: Aquesta participant encara no té seguidores.
1098
1099
  unearned_own: Encara no et segueix ningú.
1099
1100
  index:
1100
- badge_title: "Insígnia %{name}"
1101
+ badge_title: "Ensenya %{name}"
1101
1102
  how: Com pots aconseguir-la
1102
- page_description: Les insígnies són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus. Aquí tens la llista d'insígnies i algunes formes d'aconseguir-les.
1103
- title: Insígnies
1104
- description: Les insígnies són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus.
1103
+ page_description: Les ensenyes són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus. Aquí tens la llista d'ensenyes i algunes formes d'aconseguir-les.
1104
+ title: Ensenyes
1105
+ description: Les ensenyes són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus.
1105
1106
  level: Nivell %{level}
1106
1107
  reached_top: Has arribat al màxim nivell d'aquesta ensenya.
1107
1108
  title: Què són les ensenyes?
@@ -1149,6 +1150,7 @@ ca-IT:
1149
1150
  create_with_space: "%{user_name} ha creat %{resource_name} a %{space_name}"
1150
1151
  delete: "%{user_name} ha eliminat %{resource_name}"
1151
1152
  delete_with_space: "%{user_name} ha eliminat %{resource_name} en %{space_name}"
1153
+ publish: "%{user_name} ha publicat %{resource_name}"
1152
1154
  publish_with_space: "%{user_name} ha publicat %{resource_name} en %{space_name}"
1153
1155
  unknown_action: "%{user_name} ha realitzat una acció a %{resource_name}"
1154
1156
  unknown_action_with_space: "%{user_name} ha realitzat una acció a %{resource_name} en %{space_name}"
@@ -1534,7 +1536,7 @@ ca-IT:
1534
1536
  default_officialization_text_for_users: Aquesta participant està verificada públicament. S'ha verificat que el seu nom o la seva funció es correspon amb el seu nom i funció reals.
1535
1537
  show:
1536
1538
  activity: Activitat
1537
- badges: Insígnies
1539
+ badges: Ensenyes
1538
1540
  conversations: Converses
1539
1541
  followers: Seguidores
1540
1542
  following: Seguint
@@ -1724,20 +1726,30 @@ ca-IT:
1724
1726
  body_2: Com a part dels nostres esforços per simplificar l'experiència de les organitzacions, la funció "Grups d'usuàries" tal com la coneixem fins ara quedarà obsoleta. El perfil del Grup d'Usuàries ha esdevingut un perfil de participant en ús.
1725
1727
  greeting: Benvolgut/da %{name},
1726
1728
  instructions_1: Si tens accés a aquest compte de correu electrònic, si us plau, revisa la safata d'entrada per veure les instruccions.
1727
- instructions_intro: Hem enviat instruccions per establir una nova contrasenya pel perfil, al correu electrònic associat al compte.
1729
+ instructions_2: Si no, algun membre del grup amb accés al correu haurà d'establir la contrasenya i compartir les credencials d'inici de sessió amb tu.
1730
+ instructions_intro: Els membres del grup ara compartiran l'accés a aquest perfil usant credencials d'accés compartides (email i contrasenya). Hem enviat instruccions a %{email} per establir una contrasenya nova per al perfil.
1728
1731
  instructions_title: "<strong>Què vol dir això per a tu?</strong>"
1729
- subject: Actualització important sobre un grup d'usuaris del que formeu part
1732
+ subject: Actualització important respecte al perfil del teu grup d'usuàries
1730
1733
  notify_deprecation_to_owner:
1731
1734
  body_1: Ens posem en contacte amb tu per informar-te sobre una important actualització respecte al Grup d'usuaris %{organization_name} del qual formes part.
1732
1735
  body_2: 'Com a part dels nostres esforços per simplificar l''experiència de les organitzacions com la vostra, la funció "Grups d''Usuàries" tal com la coneixem fins ara quedarà obsoleta. El perfil del Grup: <strong>%{name}</strong> s''ha convertit en un perfil de participant a l''ús.'
1733
- body_3: Per poder seguir accedint al teu compte, necessitem que estableixis una contrasenya.
1736
+ body_3: Per continuar accedint al grup i compartir l'accés, cal que defineixis una contrasenya. Un cop configurada, pots compartir les credencials d'inici de sessió (email i contrasenya) amb qui consideris oportú. Aquesta/es persona/es podrà realitzar diferents accions a la plataforma amb el nom de l'organització.
1734
1737
  greeting: Benvolgut/da %{name},
1735
- instructions_1: 'Clica a l''enllaç que trobaràs a continuació per iniciar el procés per configurar la contrasenya:'
1736
- instructions_2: Al formulari, introdueix l'adreça de correu electrònic on vas rebre aquest missatge i envia la sol·licitud.
1737
- instructions_3: Revisa la teva safata d'entrada a la recerca d'un correu electrònic amb més instruccions per establir la contrasenya nova.
1738
+ instructions_1: 'Fes clic a l''enllaç següent per establir una contrasenya:'
1739
+ instructions_2: 'Comparteix les credencials d''inici de sessió (correu electrònic: %{email} i la nova contrasenya) amb qui consideris oportú. Recorda: aquesta/es persona/es podrà realitzar diferents accions a la plataforma amb el perfil de l''organització.'
1738
1740
  instructions_title: "<strong>Què cal que facis?</strong>"
1739
- set_password: Iniciar el procés de configuració de la contrasenya
1740
- subject: Actualització important del grup d'usuàries
1741
+ set_password: Estableix la teva contrasenya
1742
+ subject: Actualització important respecte al perfil del teu grup d'usuàries
1743
+ notify_user_group_patched:
1744
+ body_1_html: Ens posem en contacte amb tu per informar-te sobre una important actualització respecte al Grup d'usuàries %{organization_name} del qual formes part.
1745
+ body_2_html: 'Com a part dels nostres esforços per simplificar l''experiència de les organitzacions com la vostra, la funció "Grups d''Usuàries" tal com la coneixem fins ara quedarà obsoleta. El perfil del Grup: <strong>%{name}</strong> s''ha convertit en un perfil de participant a l''ús.'
1746
+ body_3_html: Per continuar accedint al vostre compte i compartir l'accés, necessitem que definiu un correu electrònic i una contrasenya nous. Tingueu en compte que cada membre del vostre grup rebrà aquest correu electrònic. Per garantir l'accés continuat, haureu d'acordar internament les credencials compartides (correu electrònic i contrasenya) que tothom utilitzarà.
1747
+ greeting: Benvolgut/da %{name},
1748
+ instructions_1_html: 'Fes servir les credencials temporals següents per iniciar la sessió: <br><br> Nom d''usuari: <strong>%{email}</strong> <br> Contrasenya: <strong>%{password}</strong><br><br>'
1749
+ instructions_2_html: Estableix una nova adreça de correu electrònic i una contrasenya.
1750
+ instructions_3_html: Comparteix les credencials d'inici de sessió escollides amb les teves companyes perquè tot el grup pugui continuar accedint al compte.
1751
+ instructions_title_html: "<strong>Què cal que facis?</strong>"
1752
+ subject: Actualització important respecte al perfil del teu grup d'usuàries
1741
1753
  user_report_mailer:
1742
1754
  notify:
1743
1755
  body_1: La usuària %{user} ha estat reportada per %{token}
@@ -1770,7 +1782,7 @@ ca-IT:
1770
1782
  show:
1771
1783
  version_index: Versió %{index} de %{total}
1772
1784
  welcome_notification:
1773
- default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}} et donem la benvinguda!</p><ul><li>Si vole fer-te una idea ràpida de que pots fer-hi, fes una ullada a la <a href="{{help_url}}">Secció d'ajuda</a>.</li><li>Una vegada l'hagis llegit rebràs la teva primera ensenya. Aquí trobaràs un <a href="{{badges_url}}">llistat de totes les ensenyes</a>que pots aconsegui participant a {{organization}}</li><li>. Per acabar, però no per això menys important, uneix-te a d'altres persones, comparteix amb elles d'estar compromesa i de participar a {{organization}}. Fes propostes, comentaris, debat, pensa en com contribuir a un bé comú, aporta arguments per mirar de convèncer, escolta i llegeix per convèncer-te, expressa les teves idees de manera concreta i directa, respon amb paciència i decisió, defensa les teves idees i resta oberta de ment per a col·laborar i unir-te a les idees d'altra gent.</li></ul>
1785
+ default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}} i benvinguda!</p><ul><li>Si vols fer-te una idea ràpida del que pots fer aquí, fes un cop d'ull a la secció d'<a href="{{help_url}}">Ajuda</a>.</li><li>Un cop l'hagis llegit obtindràs la teva primera ensenya. Aquí tens la <a href="{{badges_url}}">llista</a> de totes les ensenyes que pots anar aconseguint a mesura que participis a {{organization}}</li><li>Finalment, però no per això menys important, uneix-te a altres persones, comparteix amb elles l'experiència d'implicar-se i participar a {{organization}}. Fes propostes, comenta, debat, pensa en com contribuir al bé comú, aporta arguments per convèncer, escolta i llegeix per convèncer-te, expressa les teves idees de manera concreta i directa, respon amb paciència i decisió, defensa les teves idees i manté la ment oberta a col·laborar i sumar-te a les idees d'altres persones.</li></ul>
1774
1786
  default_subject: Gràcies per unir-te a {{organization}}!
1775
1787
  wizard_step_form:
1776
1788
  wizard_aside:
@@ -2160,8 +2172,8 @@ ca-IT:
2160
2172
  profile: Perfil
2161
2173
  title: Configuració de la participant
2162
2174
  locale:
2163
- name: Català
2164
- name_with_error: Català (error!)
2175
+ name: Alguerés
2176
+ name_with_error: Alguerés (error!)
2165
2177
  number:
2166
2178
  currency:
2167
2179
  format:
@@ -64,7 +64,7 @@ ca:
64
64
  decidim/attachment_created_event: Arxiu adjunt
65
65
  decidim/component_published_event: Component actiu
66
66
  decidim/demoted_membership: Ja no ets una administradora del grup
67
- decidim/gamification/badge_earned_event: Insígnia obtinguda
67
+ decidim/gamification/badge_earned_event: Ensenya obtinguda
68
68
  decidim/gamification/level_up_event: Has pujat de nivell
69
69
  decidim/invited_to_group_event: Convidada al grup
70
70
  decidim/join_request_accepted_event: Sol·licitud d'incorporació acceptada
@@ -199,6 +199,7 @@ ca:
199
199
  success: El teu compte s'ha eliminat correctament.
200
200
  download_your_data_export:
201
201
  export_expired: L'exportació ha caducat. Intenta generar una nova exportació.
202
+ export_not_found: L'exportació a la qual has accedit no existeix o no tens accés o permisos per descarregar-la
202
203
  file_no_exists: L'arxiu no existeix
203
204
  notice: La descàrrega de les teves dades està en curs. Rebràs un correu electrònic quan estigui completa.
204
205
  email_change:
@@ -1084,7 +1085,7 @@ ca:
1084
1085
  dropzone: Arrossega-hi els arxius o fes clic per a pujar-los
1085
1086
  explanation: Guia per a %{attribute}
1086
1087
  gamification:
1087
- all_badges_link: Veure totes les insígnies disponibles.
1088
+ all_badges_link: Veure totes les ensenyes disponibles.
1088
1089
  badges:
1089
1090
  followers:
1090
1091
  conditions:
@@ -1097,11 +1098,11 @@ ca:
1097
1098
  unearned_another: Aquesta participant encara no té seguidores.
1098
1099
  unearned_own: Encara no et segueix ningú.
1099
1100
  index:
1100
- badge_title: "Insígnia %{name}"
1101
+ badge_title: "Ensenya %{name}"
1101
1102
  how: Com pots aconseguir-la
1102
- page_description: Les insígnies són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus. Aquí tens la llista d'insígnies i algunes formes d'aconseguir-les.
1103
- title: Insígnies
1104
- description: Les insígnies són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus.
1103
+ page_description: Les ensenyes són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus. Aquí tens la llista d'ensenyes i algunes formes d'aconseguir-les.
1104
+ title: Ensenyes
1105
+ description: Les ensenyes són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus.
1105
1106
  level: Nivell %{level}
1106
1107
  reached_top: Has arribat al màxim nivell d'aquesta ensenya.
1107
1108
  title: Què són les ensenyes?
@@ -1149,6 +1150,7 @@ ca:
1149
1150
  create_with_space: "%{user_name} ha creat %{resource_name} a %{space_name}"
1150
1151
  delete: "%{user_name} ha eliminat %{resource_name}"
1151
1152
  delete_with_space: "%{user_name} ha eliminat %{resource_name} en %{space_name}"
1153
+ publish: "%{user_name} ha publicat %{resource_name}"
1152
1154
  publish_with_space: "%{user_name} ha publicat %{resource_name} en %{space_name}"
1153
1155
  unknown_action: "%{user_name} ha realitzat una acció a %{resource_name}"
1154
1156
  unknown_action_with_space: "%{user_name} ha realitzat una acció a %{resource_name} en %{space_name}"
@@ -1534,7 +1536,7 @@ ca:
1534
1536
  default_officialization_text_for_users: Aquesta participant està verificada públicament. S'ha verificat que el seu nom o la seva funció es correspon amb el seu nom i funció reals.
1535
1537
  show:
1536
1538
  activity: Activitat
1537
- badges: Insígnies
1539
+ badges: Ensenyes
1538
1540
  conversations: Converses
1539
1541
  followers: Seguidores
1540
1542
  following: Seguint
@@ -1724,20 +1726,30 @@ ca:
1724
1726
  body_2: Com a part dels nostres esforços per simplificar l'experiència de les organitzacions, la funció "Grups d'usuàries" tal com la coneixem fins ara quedarà obsoleta. El perfil del Grup d'Usuàries ha esdevingut un perfil de participant en ús.
1725
1727
  greeting: Benvolgut/da %{name},
1726
1728
  instructions_1: Si tens accés a aquest compte de correu electrònic, si us plau, revisa la safata d'entrada per veure les instruccions.
1727
- instructions_intro: Hem enviat instruccions per establir una nova contrasenya pel perfil, al correu electrònic associat al compte.
1729
+ instructions_2: Si no, algun membre del grup amb accés al correu haurà d'establir la contrasenya i compartir les credencials d'inici de sessió amb tu.
1730
+ instructions_intro: Els membres del grup ara compartiran l'accés a aquest perfil usant credencials d'accés compartides (email i contrasenya). Hem enviat instruccions a %{email} per establir una contrasenya nova per al perfil.
1728
1731
  instructions_title: "<strong>Què vol dir això per a tu?</strong>"
1729
- subject: Actualització important sobre un grup d'usuaris del que formeu part
1732
+ subject: Actualització important respecte al perfil del teu grup d'usuàries
1730
1733
  notify_deprecation_to_owner:
1731
1734
  body_1: Ens posem en contacte amb tu per informar-te sobre una important actualització respecte al Grup d'usuaris %{organization_name} del qual formes part.
1732
1735
  body_2: 'Com a part dels nostres esforços per simplificar l''experiència de les organitzacions com la vostra, la funció "Grups d''Usuàries" tal com la coneixem fins ara quedarà obsoleta. El perfil del Grup: <strong>%{name}</strong> s''ha convertit en un perfil de participant a l''ús.'
1733
- body_3: Per poder seguir accedint al teu compte, necessitem que estableixis una contrasenya.
1736
+ body_3: Per continuar accedint al grup i compartir l'accés, cal que defineixis una contrasenya. Un cop configurada, pots compartir les credencials d'inici de sessió (email i contrasenya) amb qui consideris oportú. Aquesta/es persona/es podrà realitzar diferents accions a la plataforma amb el nom de l'organització.
1734
1737
  greeting: Benvolgut/da %{name},
1735
- instructions_1: 'Clica a l''enllaç que trobaràs a continuació per iniciar el procés per configurar la contrasenya:'
1736
- instructions_2: Al formulari, introdueix l'adreça de correu electrònic on vas rebre aquest missatge i envia la sol·licitud.
1737
- instructions_3: Revisa la teva safata d'entrada a la recerca d'un correu electrònic amb més instruccions per establir la contrasenya nova.
1738
+ instructions_1: 'Fes clic a l''enllaç següent per establir una contrasenya:'
1739
+ instructions_2: 'Comparteix les credencials d''inici de sessió (correu electrònic: %{email} i la nova contrasenya) amb qui consideris oportú. Recorda: aquesta/es persona/es podrà realitzar diferents accions a la plataforma amb el perfil de l''organització.'
1738
1740
  instructions_title: "<strong>Què cal que facis?</strong>"
1739
- set_password: Iniciar el procés de configuració de la contrasenya
1740
- subject: Actualització important del grup d'usuàries
1741
+ set_password: Estableix la teva contrasenya
1742
+ subject: Actualització important respecte al perfil del teu grup d'usuàries
1743
+ notify_user_group_patched:
1744
+ body_1_html: Ens posem en contacte amb tu per informar-te sobre una important actualització respecte al Grup d'usuàries %{organization_name} del qual formes part.
1745
+ body_2_html: 'Com a part dels nostres esforços per simplificar l''experiència de les organitzacions com la vostra, la funció "Grups d''Usuàries" tal com la coneixem fins ara quedarà obsoleta. El perfil del Grup: <strong>%{name}</strong> s''ha convertit en un perfil de participant a l''ús.'
1746
+ body_3_html: Per continuar accedint al vostre compte i compartir l'accés, necessitem que definiu un correu electrònic i una contrasenya nous. Tingueu en compte que cada membre del vostre grup rebrà aquest correu electrònic. Per garantir l'accés continuat, haureu d'acordar internament les credencials compartides (correu electrònic i contrasenya) que tothom utilitzarà.
1747
+ greeting: Benvolgut/da %{name},
1748
+ instructions_1_html: 'Fes servir les credencials temporals següents per iniciar la sessió: <br><br> Nom d''usuari: <strong>%{email}</strong> <br> Contrasenya: <strong>%{password}</strong><br><br>'
1749
+ instructions_2_html: Estableix una nova adreça de correu electrònic i una contrasenya.
1750
+ instructions_3_html: Comparteix les credencials d'inici de sessió escollides amb les teves companyes perquè tot el grup pugui continuar accedint al compte.
1751
+ instructions_title_html: "<strong>Què cal que facis?</strong>"
1752
+ subject: Actualització important respecte al perfil del teu grup d'usuàries
1741
1753
  user_report_mailer:
1742
1754
  notify:
1743
1755
  body_1: La usuària %{user} ha estat reportada per %{token}
@@ -1770,7 +1782,7 @@ ca:
1770
1782
  show:
1771
1783
  version_index: Versió %{index} de %{total}
1772
1784
  welcome_notification:
1773
- default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}} et donem la benvinguda!</p><ul><li>Si vole fer-te una idea ràpida de que pots fer-hi, fes una ullada a la <a href="{{help_url}}">Secció d'ajuda</a>.</li><li>Una vegada l'hagis llegit rebràs la teva primera ensenya. Aquí trobaràs un <a href="{{badges_url}}">llistat de totes les ensenyes</a>que pots aconsegui participant a {{organization}}</li><li>. Per acabar, però no per això menys important, uneix-te a d'altres persones, comparteix amb elles d'estar compromesa i de participar a {{organization}}. Fes propostes, comentaris, debat, pensa en com contribuir a un bé comú, aporta arguments per mirar de convèncer, escolta i llegeix per convèncer-te, expressa les teves idees de manera concreta i directa, respon amb paciència i decisió, defensa les teves idees i resta oberta de ment per a col·laborar i unir-te a les idees d'altra gent.</li></ul>
1785
+ default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}} i benvinguda!</p><ul><li>Si vols fer-te una idea ràpida del que pots fer aquí, fes un cop d'ull a la secció d'<a href="{{help_url}}">Ajuda</a>.</li><li>Un cop l'hagis llegit obtindràs la teva primera ensenya. Aquí tens la <a href="{{badges_url}}">llista</a> de totes les ensenyes que pots anar aconseguint a mesura que participis a {{organization}}</li><li>Finalment, però no per això menys important, uneix-te a altres persones, comparteix amb elles l'experiència d'implicar-se i participar a {{organization}}. Fes propostes, comenta, debat, pensa en com contribuir al bé comú, aporta arguments per convèncer, escolta i llegeix per convèncer-te, expressa les teves idees de manera concreta i directa, respon amb paciència i decisió, defensa les teves idees i manté la ment oberta a col·laborar i sumar-te a les idees d'altres persones.</li></ul>
1774
1786
  default_subject: Gràcies per unir-te a {{organization}}!
1775
1787
  wizard_step_form:
1776
1788
  wizard_aside:
@@ -1739,15 +1739,8 @@ cs:
1739
1739
  body_1: 'Kontaktujeme vás, abychom vás informovali o důležité aktualizaci uživatelské skupiny, kterou jste členem: <strong>%{group_name}</strong>.'
1740
1740
  greeting: Dobrý den %{name},
1741
1741
  instructions_1: Pokud máte přístup k tomuto e-mailovému účtu, zkontrolujte prosím svou doručenou poštu pro pokyny.
1742
- instructions_intro: Poslali jsme pokyny na e-mail přidružený k účtu pro nastavení nového hesla k profilu.
1743
- instructions_title: "<strong>Co to pro vás znamená</strong>"
1744
1742
  notify_deprecation_to_owner:
1745
- body_3: Abyste mohli pokračovat v přístupu k vašemu účtu, musíte nastavit heslo.
1746
1743
  greeting: Dobrý den %{name},
1747
- instructions_1: 'Klikněte na odkaz níže pro spuštění procesu nastavení hesla:'
1748
- instructions_title: "<strong>Co potřebujete udělat</strong>"
1749
- set_password: Začít proces nastavení hesla
1750
- subject: Důležitá aktualizace uživatelské skupiny
1751
1744
  user_report_mailer:
1752
1745
  notify:
1753
1746
  body_1: Uživatel %{user} byl nahlášen od %{token}
@@ -2124,6 +2117,7 @@ cs:
2124
2117
  social_media: Sociální sítě
2125
2118
  terms_of_service: Podmínky služby
2126
2119
  header:
2120
+ back: Zpět
2127
2121
  close: Zavřít‏
2128
2122
  confirm_close_ephemeral_session: Pokud odejdete, vaše dočasná relace bude ukončena. Nicméně veškerý váš pokrok a aktivita budou uloženy. Pokud jste svou aktivitu dokončili, klikněte na tlačítko Ok.
2129
2123
  confirm_title_close_ephemeral_session: Před opuštěním této stránky…
@@ -2176,6 +2170,11 @@ cs:
2176
2170
  locale:
2177
2171
  name: Čeština
2178
2172
  name_with_error: Čeština (chyba!)
2173
+ number:
2174
+ currency:
2175
+ format:
2176
+ format: "%u %n"
2177
+ format_html: "<span>%u</span> %n"
2179
2178
  password_validator:
2180
2179
  denied: je odepřen
2181
2180
  domain_included_in_password: je příliš podobné tomuto názvu domény
@@ -686,7 +686,7 @@ de:
686
686
  newsletter_title: Kontakterlaubnis
687
687
  sign_up: Konto erstellen
688
688
  subtitle: Erstellen Sie ein Konto, um auf der Plattform teilzunehmen.
689
- terms: die Nutzungsbedingungen
689
+ terms: den Nutzungsbedingungen
690
690
  tos_agreement: Mit der Anmeldung stimmen Sie %{link} zu.
691
691
  tos_title: Nutzungsbedingungen
692
692
  username_help: Öffentlich sichtbarer Name, der in Ihren Beiträgen angezeigt wird. Um Anonymität zu gewährleisten, kann es sich um einen beliebigen Namen handeln.
@@ -1731,20 +1731,11 @@ de:
1731
1731
  body_2: Um die Benutzerfreundlichkeit zu steigern, wird die Funktion "Gruppen" nicht mehr weiterentwickelt. Das Profil der Gruppe wird nun in ein reguläres Profil umgewandelt.
1732
1732
  greeting: Hallo %{name},
1733
1733
  instructions_1: Wenn Sie Zugriff auf dieses E-Mail-Konto haben, überprüfen Sie bitte Ihren Posteingang für die Anweisungen.
1734
- instructions_intro: Wir haben Anweisungen an die mit dem Konto verknüpfte E-Mail-Adresse gesendet, um ein neues Passwort für das Profil festzulegen.
1735
- instructions_title: "<strong>Was das für Sie bedeutet</strong>"
1736
- subject: Wichtige Aktualisierung zu einer Gruppe, von der Sie Mitglied sind
1734
+ instructions_2: Wenn nicht, muss einer Ihrer Kollegen, der Zugriff hat, das Passwort festlegen und die Anmeldedaten mit Ihnen teilen.
1737
1735
  notify_deprecation_to_owner:
1738
1736
  body_1: 'Wir möchten Sie gerne über ein wichtiges Update ihres Gruppenprofil informieren: %{organization_name}.'
1739
1737
  body_2: Wir möchten die Erfahrungen von Organisationen vereinfachen und verbessern und werden deshalb die Funktion "Benutzergruppen" abschalten. Ihre Gruppe, <strong>%{name}</strong>, wurde in ein reguläres Konto umgewandelt.
1740
- body_3: Um weiterhin auf Ihr Konto zuzugreifen, müssen Sie ein Passwort setzen.
1741
1738
  greeting: Hallo %{name},
1742
- instructions_1: 'Klicken Sie auf den Link unten, um den Passwortaufsetzungsprozess zu starten:'
1743
- instructions_2: Geben Sie in das Formular die E-Mail-Adresse ein, unter der Sie diese Nachricht erhalten haben, und senden Sie die Anfrage ab.
1744
- instructions_3: Überprüfen Sie Ihren Posteingang für eine E-Mail mit weiteren Anweisungen, um Ihr neues Passwort festzulegen.
1745
- instructions_title: "<strong>Was Sie tun müssen</strong>"
1746
- set_password: Starte Passwortsetzungsprozess
1747
- subject: Wichtiges Update zur Gruppenfunktion
1748
1739
  user_report_mailer:
1749
1740
  notify:
1750
1741
  body_1: Benutzer %{user} wurde von %{token} gemeldet
@@ -199,6 +199,7 @@ en:
199
199
  success: Your account was successfully deleted.
200
200
  download_your_data_export:
201
201
  export_expired: The export has expired. Try to generate a new export.
202
+ export_not_found: The export you have accessed does not exist, or you do not have access to download it
202
203
  file_no_exists: File does not exist
203
204
  notice: The download of your data is currently in progress. You will receive an email when it is complete.
204
205
  email_change:
@@ -1156,6 +1157,7 @@ en:
1156
1157
  create_with_space: "%{user_name} created %{resource_name} in %{space_name}"
1157
1158
  delete: "%{user_name} deleted %{resource_name}"
1158
1159
  delete_with_space: "%{user_name} deleted %{resource_name} in %{space_name}"
1160
+ publish: "%{user_name} published %{resource_name}"
1159
1161
  publish_with_space: "%{user_name} published %{resource_name} in %{space_name}"
1160
1162
  unknown_action: "%{user_name} performed some action on %{resource_name}"
1161
1163
  unknown_action_with_space: "%{user_name} performed some action on %{resource_name} in %{space_name}"
@@ -1731,20 +1733,30 @@ en:
1731
1733
  body_2: As part of our efforts to simplify the experience for organizations, the "User Groups" feature is being deprecated. Your User Group profile has now been converted into a regular participant profile.
1732
1734
  greeting: Dear %{name},
1733
1735
  instructions_1: If you have access to that email account, please check your inbox for the instructions.
1734
- instructions_intro: We have sent instructions to the email associated with the account to set a new password for the profile.
1735
- instructions_title: "<strong>What This Means for You</strong>"
1736
- subject: User group you are member of important update
1736
+ instructions_2: If not, one of your colleagues who has access will need to set the password and share the login credentials with you.
1737
+ instructions_intro: Group members will now share access to this profile using shared login credentials (email and password). We have sent instructions to %{email} to set a new password for the profile.
1738
+ instructions_title: "<strong>What this means for you</strong>"
1739
+ subject: Important update regarding your Group profile
1737
1740
  notify_deprecation_to_owner:
1738
1741
  body_1: We are reaching out to inform you about an important update regarding your Group profile on %{organization_name}.
1739
1742
  body_2: As part of our efforts to simplify and improve the experience for organizations like yours, we are deprecating the "User Groups" feature. Your Group, <strong>%{name}</strong>, has been converted into a regular account.
1740
- body_3: To continue accessing your account, we need you to set a password.
1743
+ body_3: To continue accessing your account and share access, we need you to set a password. Once set, you can share the login credentials (email and password) with anyone.
1741
1744
  greeting: Dear %{name},
1742
- instructions_1: 'Click the link below to start the password setup process:'
1743
- instructions_2: On the form, enter the email address where you received this message and submit the request.
1744
- instructions_3: Check your inbox for an email with further instructions to set your new password.
1745
- instructions_title: "<strong>What You Need to Do</strong>"
1746
- set_password: Start Password Setting Process
1747
- subject: User group important update
1745
+ instructions_1: 'Click the link below to set your password:'
1746
+ instructions_2: 'Share the login credentials (email: %{email} and the new password) with your colleagues.'
1747
+ instructions_title: "<strong>What you need to do</strong>"
1748
+ set_password: Set Your Password
1749
+ subject: Important update regarding your Group profile
1750
+ notify_user_group_patched:
1751
+ body_1_html: We are reaching out to inform you about an important update regarding your Group profile on %{organization_name}.
1752
+ body_2_html: As part of our efforts to simplify and improve the experience for organizations like yours, we are deprecating the "User Groups" feature. Your Group, <strong>%{name}</strong>, has been converted into a regular account.
1753
+ body_3_html: To continue accessing your account and share access, we need you to set a new email and password. Please note that each member of your group will receive this email. To ensure continued access, you will need to agree internally on the shared credentials (email and password) that everyone will use.
1754
+ greeting: Dear %{name},
1755
+ instructions_1_html: 'Use the following temporary credentials to log in: <br><br> Username: <strong>%{email}</strong> <br> Password: <strong>%{password}</strong><br><br>'
1756
+ instructions_2_html: Set a new email address and password.
1757
+ instructions_3_html: Share the chosen login credentials with your colleagues so the entire group can continue accessing the account.
1758
+ instructions_title_html: "<strong>What You Need to Do</strong>"
1759
+ subject: Important update regarding your Group profile
1748
1760
  user_report_mailer:
1749
1761
  notify:
1750
1762
  body_1: User %{user} has been reported by %{token}