decidim-debates 0.24.1 → 0.25.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/decidim/debates/versions_controller.rb +1 -1
  3. data/app/models/decidim/debates/debate.rb +8 -13
  4. data/app/packs/entrypoints/decidim_debates_admin.js +4 -0
  5. data/app/{assets/images/decidim/debates/icon.svg → packs/images/decidim/debates/decidim_debates.svg} +0 -0
  6. data/app/{assets/images/decidim/gamification/badges/commented_debates.svg → packs/images/decidim/gamification/badges/decidim_gamification_badges_commented_debates.svg} +0 -0
  7. data/app/{assets/javascripts/decidim/debates/admin/debates.js.es6 → packs/src/decidim/debates/admin/debates.js} +3 -3
  8. data/app/presenters/decidim/debates/debate_presenter.rb +3 -22
  9. data/app/queries/decidim/debates/metrics/debates_metric_manage.rb +1 -1
  10. data/app/views/decidim/debates/admin/debates/_form.html.erb +1 -1
  11. data/app/views/decidim/debates/admin/debates/index.html.erb +3 -1
  12. data/app/views/decidim/debates/debates/_filters.html.erb +1 -1
  13. data/app/views/decidim/debates/debates/index.html.erb +0 -2
  14. data/app/views/decidim/debates/debates/show.html.erb +3 -3
  15. data/app/views/decidim/debates/versions/show.html.erb +1 -1
  16. data/config/assets.rb +8 -0
  17. data/config/locales/ca.yml +2 -0
  18. data/config/locales/cs.yml +2 -0
  19. data/config/locales/de.yml +3 -1
  20. data/config/locales/en.yml +3 -0
  21. data/config/locales/es-MX.yml +2 -0
  22. data/config/locales/es-PY.yml +2 -0
  23. data/config/locales/es.yml +2 -0
  24. data/config/locales/fi-plain.yml +2 -0
  25. data/config/locales/fi.yml +2 -0
  26. data/config/locales/fr-LU.yml +237 -0
  27. data/config/locales/gl.yml +2 -0
  28. data/config/locales/it.yml +53 -0
  29. data/config/locales/ja.yml +10 -0
  30. data/config/locales/lb-LU.yml +1 -0
  31. data/config/locales/nl.yml +2 -0
  32. data/config/locales/pl.yml +5 -4
  33. data/config/locales/pt-BR.yml +89 -0
  34. data/config/locales/ro-RO.yml +4 -0
  35. data/config/locales/sv.yml +5 -0
  36. data/db/migrate/20200708072042_fix_debates_i18n_fields.rb +1 -1
  37. data/lib/decidim/debates/admin_engine.rb +0 -4
  38. data/lib/decidim/debates/component.rb +4 -4
  39. data/lib/decidim/debates/engine.rb +30 -33
  40. data/lib/decidim/debates/test/factories.rb +11 -1
  41. data/lib/decidim/debates/version.rb +1 -1
  42. metadata +19 -52
  43. data/app/assets/config/admin/decidim_debates_manifest.js +0 -1
  44. data/app/assets/config/decidim_debates_manifest.js +0 -1
  45. data/config/locales/ja-JP.yml +0 -195
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 334c56869b90316b3368fc1fcd67c98f87f89d3b21dfce7886afba70eb13bdda
4
- data.tar.gz: 99661b644f4c205ee4f1493a2ddd1de20ca934e64f6be0ae4ff18c031acbddbb
3
+ metadata.gz: 82cb7a6fc595965aebb6b4cce2034cf8fe6fdc5f3df354e096a1d499144801bf
4
+ data.tar.gz: 93b13e03a11fa50e576781ca8fba491d460fc48299e11c8fc8c9f1f1080972d0
5
5
  SHA512:
6
- metadata.gz: d8764f8282039b252580459d90be21af9f5ab7df1b0a81f23c0bd1d08e7eab5bc8785d191f9439d50a185925d9b12372ee1021de8444e6268be335df1568817a
7
- data.tar.gz: f0594de74c9d1c58d2dda7a357daa159d954750cac1f6140084a8f420f90d95e1c75bee18d7098bc42e17c79774123fb8fee35e92d2e7c3dee0093a13be3c3b0
6
+ metadata.gz: 43af1a218cd7f16db62aa73f84d7e4e5ee32c97737ec5e5ee90b065de2ddac0aff845134e226709427fca4369fa1013723404968b2b20c7af9f5a31d65ab79db
7
+ data.tar.gz: 7512eabfc220d3eaba29b4cd1ec6f56d5622410aacf9db8785605ff812bf19ebba4f3bcf18dee8b308095a71bee14c2149cde3bff42235cb05bf995a699fbca7
@@ -4,7 +4,7 @@ module Decidim
4
4
  module Debates
5
5
  # Exposes Debates versions so users can see how a Debate has been updated
6
6
  # through time.
7
- class VersionsController < Decidim::Proposals::ApplicationController
7
+ class VersionsController < Decidim::Debates::ApplicationController
8
8
  include Decidim::ApplicationHelper
9
9
  include Decidim::ResourceVersionsConcern
10
10
 
@@ -10,7 +10,7 @@ module Decidim
10
10
  include Decidim::HasCategory
11
11
  include Decidim::Resourceable
12
12
  include Decidim::Followable
13
- include Decidim::Comments::Commentable
13
+ include Decidim::Comments::CommentableWithComponent
14
14
  include Decidim::ScopableResource
15
15
  include Decidim::Authorable
16
16
  include Decidim::Reportable
@@ -96,11 +96,6 @@ module Decidim
96
96
  (ama? && open_ama?) || !ama?
97
97
  end
98
98
 
99
- # Public: Overrides the `commentable?` Commentable concern method.
100
- def commentable?
101
- component.settings.comments_enabled?
102
- end
103
-
104
99
  # Public: Overrides the `accepts_new_comments?` Commentable concern method.
105
100
  def accepts_new_comments?
106
101
  return false unless open?
@@ -131,13 +126,13 @@ module Decidim
131
126
  followers
132
127
  end
133
128
 
134
- def self.export_serializer
135
- Decidim::Debates::DataPortabilityDebateSerializer
129
+ # Public: Overrides the `allow_resource_permissions?` Resourceable concern method.
130
+ def allow_resource_permissions?
131
+ true
136
132
  end
137
133
 
138
- # Public: Whether the object can have new comments or not.
139
- def user_allowed_to_comment?(user)
140
- can_participate_in_space?(user)
134
+ def self.export_serializer
135
+ Decidim::Debates::DataPortabilityDebateSerializer
141
136
  end
142
137
 
143
138
  def self.newsletter_participant_ids(component)
@@ -176,8 +171,8 @@ module Decidim
176
171
  #
177
172
  # rubocop:disable Rails/SkipsModelValidations
178
173
  def update_comments_count
179
- comments_count = comments.not_hidden.count
180
- last_comment = comments.not_hidden.order("created_at DESC").first
174
+ comments_count = comments.not_hidden.not_deleted.count
175
+ last_comment = comments.not_hidden.not_deleted.order("created_at DESC").first
181
176
 
182
177
  update_columns(
183
178
  last_comment_at: last_comment&.created_at,
@@ -0,0 +1,4 @@
1
+ import "src/decidim/debates/admin/debates"
2
+
3
+ // Images
4
+ require.context("../images", true)
@@ -1,6 +1,6 @@
1
- ((exports) => {
2
- const { createFieldDependentInputs } = exports.DecidimAdmin;
1
+ import createFieldDependentInputs from "src/decidim/admin/field_dependent_inputs.component"
3
2
 
3
+ $(() => {
4
4
  const $debateType = $('[name="debate[finite]"');
5
5
 
6
6
  createFieldDependentInputs({
@@ -22,4 +22,4 @@
22
22
  return $("#debate_finite_true").is(":checked")
23
23
  }
24
24
  });
25
- })(window);
25
+ })
@@ -5,11 +5,9 @@ module Decidim
5
5
  #
6
6
  # Decorator for debates
7
7
  #
8
- class DebatePresenter < SimpleDelegator
8
+ class DebatePresenter < Decidim::ResourcePresenter
9
9
  include Decidim::TranslationsHelper
10
10
  include Decidim::ResourceHelper
11
- include Decidim::SanitizeHelper
12
- include Decidim::TranslatableAttributes
13
11
  include ActionView::Helpers::DateHelper
14
12
 
15
13
  def debate
@@ -26,13 +24,10 @@ module Decidim
26
24
  end
27
25
  end
28
26
 
29
- def title(links: false, all_locales: false)
27
+ def title(links: false, all_locales: false, html_escape: false)
30
28
  return unless debate
31
29
 
32
- handle_locales(debate.title, all_locales) do |content|
33
- renderer = Decidim::ContentRenderers::HashtagRenderer.new(decidim_html_escape(content))
34
- renderer.render(links: links).html_safe
35
- end
30
+ super debate.title, links, html_escape, all_locales
36
31
  end
37
32
 
38
33
  def description(strip_tags: false, links: false, all_locales: false)
@@ -47,20 +42,6 @@ module Decidim
47
42
  end
48
43
  end
49
44
 
50
- def handle_locales(content, all_locales, &block)
51
- if all_locales
52
- content.each_with_object({}) do |(key, value), parsed_content|
53
- parsed_content[key] = if key == "machine_translations"
54
- handle_locales(value, all_locales, &block)
55
- else
56
- block.call(value)
57
- end
58
- end
59
- else
60
- yield(translated_attribute(content))
61
- end
62
- end
63
-
64
45
  def last_comment_at
65
46
  return unless debate.last_comment_at
66
47
 
@@ -27,7 +27,7 @@ module Decidim
27
27
  def query
28
28
  return @query if @query
29
29
 
30
- @query = Decidim::Debates::Debate.where(component: visible_component_ids_from_spaces(retrieve_participatory_spaces)).joins(:component)
30
+ @query = Decidim::Debates::Debate.where(component: visible_components_from_spaces(retrieve_participatory_spaces)).joins(:component)
31
31
  .left_outer_joins(:category)
32
32
  @query = @query.where("decidim_debates_debates.start_time <= ?", end_time)
33
33
  @query = @query.group("decidim_categorizations.decidim_category_id",
@@ -46,4 +46,4 @@
46
46
  </div>
47
47
  </div>
48
48
 
49
- <%= javascript_include_tag "decidim/debates/admin/debates" %>
49
+ <%= javascript_pack_tag "decidim_debates_admin" %>
@@ -25,7 +25,7 @@
25
25
  <% debates.each do |debate| %>
26
26
  <tr data-id="<%= debate.id %>">
27
27
  <td>
28
- <%= link_to present(debate).title, resource_locator(debate).path, target: :blank %><br>
28
+ <%= link_to present(debate).title(html_escape: true), resource_locator(debate).path, target: :blank %><br>
29
29
  </td>
30
30
  <td>
31
31
  <% if debate.start_time %>
@@ -51,6 +51,8 @@
51
51
  <span class="action-space icon"></span>
52
52
  <% end %>
53
53
 
54
+ <%= resource_permissions_link(debate) %>
55
+
54
56
  <% if allowed_to? :delete, :debate, debate: debate %>
55
57
  <%= icon_link_to "circle-x", debate_path(debate), t("actions.destroy", scope: "decidim.debates"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.debates") } %>
56
58
  <% else %>
@@ -4,7 +4,7 @@
4
4
  <div class="filters__section">
5
5
  <div class="filters__search">
6
6
  <div class="input-group">
7
- <%= form.search_field :search_text, label: false, class: "input-group-field", placeholder: t(".search"), title: t(".search"), data: { disable_dynamic_change: true } %>
7
+ <%= form.search_field :search_text, label: false, class: "input-group-field", placeholder: t(".search"), title: t(".search"), "aria-label": t(".search"), data: { disable_dynamic_change: true } %>
8
8
  <div class="input-group-button">
9
9
  <button type="submit" class="button" aria-controls="debates">
10
10
  <%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
@@ -24,5 +24,3 @@
24
24
  <%= render partial: "debates" %>
25
25
  </div>
26
26
  </div>
27
-
28
- <%= javascript_include_tag("decidim/filters") %>
@@ -1,6 +1,6 @@
1
1
  <% add_decidim_meta_tags({
2
2
  description: translated_attribute(debate.description),
3
- title: present(debate).title,
3
+ title: present(debate).title(html_escape: true ),
4
4
  url: debate_url(debate.id)
5
5
  }) %>
6
6
 
@@ -22,7 +22,7 @@ edit_link(
22
22
  </div>
23
23
 
24
24
  <h2 class="heading3">
25
- <%== present(debate).title(links: true) %>
25
+ <%== present(debate).title(links: true, html_escape: true) %>
26
26
  </h2>
27
27
 
28
28
  <% debate_presenter = Decidim::Debates::DebatePresenter.new(debate) %>
@@ -45,7 +45,7 @@ edit_link(
45
45
  <% end %>
46
46
  <div class="card extra">
47
47
  <div class="card__content">
48
- <%= cell("decidim/date", { start: debate.start_time, end: debate.end_time }) %>
48
+ <%= cell("decidim/date_range", { start: debate.start_time, end: debate.end_time }) %>
49
49
 
50
50
  <% if endorsements_enabled? && allowed_to?(:endorse, :debate, debate: debate) %>
51
51
  <div class="row collapse buttons__row">
@@ -5,6 +5,6 @@
5
5
  index: params[:id],
6
6
  versioned_resource: versioned_resource,
7
7
  versions_path: proc { url_for(action: :index) },
8
- i18n_scope: "decidim.debates.debates.versions.#{item_name.to_s.pluralize}"
8
+ i18n_scope: "decidim.debates.debates.versions.debates"
9
9
  ) %>
10
10
  </div>
data/config/assets.rb ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ base_path = File.expand_path("..", __dir__)
4
+
5
+ Decidim::Webpacker.register_path("#{base_path}/app/packs")
6
+ Decidim::Webpacker.register_entrypoints(
7
+ decidim_debates_admin: "#{base_path}/app/packs/entrypoints/decidim_debates_admin.js"
8
+ )
@@ -235,3 +235,5 @@ ca:
235
235
  description: Nombre de debats creats
236
236
  object: debats
237
237
  title: Debats
238
+ statistics:
239
+ debates_count: Debats
@@ -239,3 +239,5 @@ cs:
239
239
  description: Počet vytvořených debat
240
240
  object: debaty
241
241
  title: Debaty
242
+ statistics:
243
+ debates_count: Debaty
@@ -112,7 +112,7 @@ de:
112
112
  save: Änderungen speichern
113
113
  title: Debatte bearbeiten
114
114
  filters:
115
- activity: Aktivität
115
+ activity: Meine Aktivität
116
116
  all: Alle
117
117
  category: Kategorie
118
118
  category_prompt: Wählen Sie eine Kategorie
@@ -235,3 +235,5 @@ de:
235
235
  description: Anzahl der erstellten Debatten
236
236
  object: Debatten
237
237
  title: Debatten
238
+ statistics:
239
+ debates_count: Debatten
@@ -28,6 +28,7 @@ en:
28
28
  components:
29
29
  debates:
30
30
  actions:
31
+ comment: Comment
31
32
  create: Create
32
33
  endorse: Endorse
33
34
  name: Debates
@@ -236,3 +237,5 @@ en:
236
237
  description: Number of debates created
237
238
  object: debates
238
239
  title: Debates
240
+ statistics:
241
+ debates_count: Debates
@@ -235,3 +235,5 @@ es-MX:
235
235
  description: Número de debates creados
236
236
  object: debates
237
237
  title: Debates
238
+ statistics:
239
+ debates_count: Debates
@@ -235,3 +235,5 @@ es-PY:
235
235
  description: Número de debates creados.
236
236
  object: debates
237
237
  title: Debates
238
+ statistics:
239
+ debates_count: Debates
@@ -235,3 +235,5 @@ es:
235
235
  description: Número de debates creados
236
236
  object: debates
237
237
  title: Debates
238
+ statistics:
239
+ debates_count: Debates
@@ -235,3 +235,5 @@ fi-pl:
235
235
  description: Keskustelujen määrä
236
236
  object: keskustelut
237
237
  title: Keskustelut
238
+ statistics:
239
+ debates_count: Keskustelua
@@ -235,3 +235,5 @@ fi:
235
235
  description: Keskustelujen määrä
236
236
  object: keskustelut
237
237
  title: Keskustelut
238
+ statistics:
239
+ debates_count: Keskustelua
@@ -0,0 +1,237 @@
1
+ fr-LU:
2
+ activemodel:
3
+ attributes:
4
+ debate:
5
+ category_id: Catégorie
6
+ closed_at: Clôturé le
7
+ conclusions: Conclusions
8
+ decidim_category_id: Catégorie
9
+ description: Description
10
+ end_time: Prend fin à
11
+ information_updates: Informations mises à jour
12
+ instructions: Instructions pour participer
13
+ start_time: Commence à
14
+ title: Titre
15
+ user_group_id: Créer un débat en tant que
16
+ models:
17
+ decidim/debates/close_debate_event: Débat terminé
18
+ decidim/debates/create_debate_event: Débat
19
+ decidim/debates/creation_disabled_event: Débats désactivés
20
+ decidim/debates/creation_enabled_event: Débats activés
21
+ activerecord:
22
+ models:
23
+ decidim/debates/debate:
24
+ one: Débat
25
+ other: Débats
26
+ decidim:
27
+ components:
28
+ debates:
29
+ actions:
30
+ create: Créer
31
+ endorse: Soutenir
32
+ name: Débats
33
+ settings:
34
+ global:
35
+ announcement: Annonce
36
+ comments_enabled: Commentaires activés
37
+ comments_max_length: Longueur max des commentaires (laisser 0 pour la valeur par défaut)
38
+ scope_id: Secteur
39
+ scopes_enabled: Secteurs activés
40
+ step:
41
+ announcement: Annonce
42
+ comments_blocked: Commentaires désactivés
43
+ creation_enabled: Création de débats par les utilisateurs activés
44
+ endorsements_blocked: Soutiens bloqués
45
+ endorsements_enabled: Soutiens activés
46
+ debates:
47
+ actions:
48
+ close: Fermer
49
+ confirm_destroy: Êtes-vous certain ?
50
+ destroy: Supprimer
51
+ edit: Modifier
52
+ new: Nouveau %{name}
53
+ title: Actions
54
+ admin:
55
+ debate_closes:
56
+ edit:
57
+ close: Fermer
58
+ title: Clore le débat
59
+ debates:
60
+ create:
61
+ invalid: Il y a eu un problème lors de la création du débat.
62
+ success: Débat créé avec succès.
63
+ destroy:
64
+ success: Débat supprimé avec succès.
65
+ edit:
66
+ title: Modifier le débat
67
+ update: Actualiser le débat
68
+ form:
69
+ debate_type: Type de débat
70
+ finite: Limité (Avec les heures de début et de fin)
71
+ open: Ouvert (pas de date de début et de fin)
72
+ index:
73
+ title: Débats
74
+ new:
75
+ create: Créer un débat
76
+ title: Nouveau débat
77
+ update:
78
+ invalid: Il y a eu un problème lors de la mise à jour de ce débat.
79
+ success: Débat mis à jour avec succès.
80
+ exports:
81
+ comments: Commentaires
82
+ models:
83
+ debate:
84
+ name: Débat
85
+ admin_log:
86
+ debate:
87
+ close: "%{user_name} a clos le débat %{resource_name} dans l'espace %{space_name}"
88
+ create: "%{user_name} a créé le débat %{resource_name} sur l'espace %{space_name}"
89
+ update: "%{user_name} a mis à jour le débat %{resource_name} sur l'espace %{space_name}"
90
+ debate_m:
91
+ commented_time_ago: Commenté il y a %{time}
92
+ debates:
93
+ close:
94
+ invalid: Une erreur s'est produite lors de la fermeture du débat.
95
+ success: Débat clos avec succès.
96
+ close_debate_modal:
97
+ close: Fermer
98
+ description: Quel est le résumé ou la conclusion de ce débat?
99
+ send: Clore le débat
100
+ closed: Fermé
101
+ count:
102
+ debates_count:
103
+ one: "%{count} débat"
104
+ other: "%{count} débats"
105
+ create:
106
+ invalid: Il y a eu un problème lors de la création de ce débat.
107
+ success: Débat créé avec succès.
108
+ debate:
109
+ participate: Participer
110
+ edit:
111
+ back: Retour
112
+ save: Enregistrer les modifications
113
+ title: Modifier le débat
114
+ filters:
115
+ activity: Mon activité
116
+ all: Tout
117
+ category: Catégorie
118
+ category_prompt: Choisir une catégorie
119
+ citizens: Citoyenne
120
+ commented: Commenté
121
+ my_debates: Mes débats
122
+ official: Officielle
123
+ origin: Origine
124
+ scope: Secteur
125
+ search: Rechercher
126
+ state: Statut
127
+ state_values:
128
+ closed: Fermé
129
+ open: Ouvert
130
+ user_groups: Groupes
131
+ filters_small_view:
132
+ close_modal: Fermer la fenêtre de dialogue
133
+ filter: Filtre
134
+ filter_by: Filtrer par
135
+ unfold: Voir la suite
136
+ form:
137
+ select_a_category: Veuillez sélectionner une catégorie
138
+ index:
139
+ new_debate: Nouveau débat
140
+ new:
141
+ back: Retour
142
+ create: Créer
143
+ title: Nouveau débat
144
+ orders:
145
+ commented: Les plus commentés
146
+ label: Trier les débats par
147
+ random: Ordre aléatoire
148
+ recent: Les plus récents
149
+ updated: Mis à jour récemment
150
+ show:
151
+ back: Retour à la liste
152
+ close_debate: Clore le débat
153
+ date: Date
154
+ debate_closed: Fermé
155
+ debate_conclusions_are: 'Le débat a été clos le %{date} avec ces conclusions:'
156
+ edit_conclusions: Modifier les conclusions
157
+ edit_debate: Modifier le débat
158
+ groups_count: Groupes
159
+ last_comment_by: Dernier commentaire par
160
+ no_comments_yet: Pas encore de commentaire
161
+ open: Ouvrir le débat
162
+ participants_count: Participants
163
+ update:
164
+ invalid: Une erreur s'est produite lors de la mise à jour du débat.
165
+ success: Débat mis à jour avec succès.
166
+ versions:
167
+ debates:
168
+ back_to_resource: Revenir au débat
169
+ index:
170
+ title: Versions
171
+ versions_list:
172
+ back_to_resource: Revenir au débat
173
+ last_activity:
174
+ debate_updated_at_html: "<span>Débat mis à jour à %{link}</span>"
175
+ new_debate_at_html: "<span>Nouveau débat à %{link}</span>"
176
+ models:
177
+ debate:
178
+ fields:
179
+ end_time: Date de fin
180
+ official_debate: Débat officiel
181
+ start_time: Date de début
182
+ title: Titre
183
+ events:
184
+ debates:
185
+ create_debate_event:
186
+ space_followers:
187
+ email_intro: |-
188
+ Salut,
189
+ Un nouveau débat «%{resource_title}» a été créée sur le %{space_title} espace participatif, vérifier et contribuer:
190
+ email_outro: Vous avez reçu cette notification parce que vous suivez l'espace participatif %{space_title}. Vous pouvez cesser de recevoir des notifications en suivant ce dernier lien.
191
+ email_subject: Nouveau débat "%{resource_title}" sur %{space_title}
192
+ notification_title: Le débat <a href="%{resource_path}">%{resource_title}</a> a été créé le <a href="%{space_path}">%{space_title}</a>.
193
+ user_followers:
194
+ email_intro: |-
195
+ Bonjour,
196
+ %{author_name} %{author_nickname}, qui vous suivez, a créé un nouveau débat "%{resource_title}". Découvrez-le et contribuez:
197
+ email_outro: Vous avez reçu cette notification, car vous suivez %{author_nickname}. Vous pouvez cesser de recevoir des notifications à partir du lien précédent.
198
+ email_subject: Nouveau débat "%{resource_title}" par %{author_nickname}
199
+ notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> créé le débat <a href="%{resource_path}">%{resource_title}</a>.
200
+ creation_disabled:
201
+ email_intro: 'La création de débat n''est plus possible dans %{participatory_space_title}. Vous pouvez toujours participer aux débats ouverts depuis cette page :'
202
+ email_outro: Vous avez reçu cette notification parce que vous suivez %{participatory_space_title}. Vous pouvez arrêter de recevoir des notifications à partir du lien précédent.
203
+ email_subject: La création de débats est désactivée dans %{participatory_space_title}
204
+ notification_title: La création de débats est maintenant désactivée dans <a href="%{participatory_space_url}">%{participatory_space_title}</a>
205
+ creation_enabled:
206
+ email_intro: 'Vous pouvez maintenant initier de nouveaux débats dans %{participatory_space_title}! Commencez à participer sur cette page :'
207
+ email_outro: Vous avez reçu cette notification, car vous suivez %{participatory_space_title}. Vous pouvez arrêter de recevoir des notifications à partir du lien précédent.
208
+ email_subject: Débats maintenant disponibles sur %{participatory_space_title}
209
+ notification_title: Vous pouvez maintenant initier <a href="%{resource_path}">nouveaux débats</a> dans <a href="%{participatory_space_url}">%{participatory_space_title}</a>
210
+ debate_closed:
211
+ affected_user:
212
+ email_intro: 'Le débat « %{resource_title} » est fermé. Vous pouvez lire les conclusions sur cette page :'
213
+ email_outro: Vous avez reçu cet avis parce que vous êtes abonné au débat « %{resource_title} ». Vous pouvez vous désabonner depuis le lien précédent.
214
+ email_subject: Le débat "%{resource_title}" est fermé
215
+ notification_title: Le débat <a href="%{resource_path}">%{resource_title}</a> est fermé.
216
+ follower:
217
+ email_intro: 'Le débat « %{resource_title} » est fermé. Vous pouvez lire les conclusions sur cette page :'
218
+ email_outro: Vous avez reçu cet avis parce que vous êtes abonné au débat « %{resource_title} ». Vous pouvez vous désabonner depuis le lien précédent.
219
+ email_subject: Le débat "%{resource_title}" est fermé
220
+ notification_title: Le débat <a href="%{resource_path}">%{resource_title}</a> est fermé.
221
+ gamification:
222
+ badges:
223
+ commented_debates:
224
+ conditions:
225
+ - Choisissez un débat ouvert pour participer à
226
+ description: Ce badge est attribué lorsque vous participez activement aux différents débats en laissant vos commentaires.
227
+ description_another: Cet utilisateur a participé à %{score} débats.
228
+ description_own: Vous avez participé à %{score} débats.
229
+ name: Des débats
230
+ next_level_in: Participez à %{score} autres débats pour atteindre le prochain niveau!
231
+ unearned_another: Cet utilisateur n'a encore participé à aucun débat.
232
+ unearned_own: Vous avez déjà participé à des débats.
233
+ metrics:
234
+ debates:
235
+ description: Nombre de débats créés
236
+ object: débats
237
+ title: Débats