decidim-proposals 0.17.2 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/decidim/proposals/proposals_controller.rb +1 -0
  3. data/app/controllers/decidim/proposals/versions_controller.rb +3 -2
  4. data/app/forms/decidim/proposals/admin/import_participatory_text_form.rb +33 -13
  5. data/app/helpers/decidim/proposals/control_version_helper.rb +16 -29
  6. data/app/models/decidim/proposals/proposal.rb +25 -1
  7. data/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb +7 -1
  8. data/app/services/decidim/proposals/proposal_search.rb +2 -2
  9. data/app/views/decidim/proposals/proposals/_filters.html.erb +1 -1
  10. data/app/views/decidim/proposals/proposals/_proposal.html.erb +1 -5
  11. data/app/views/decidim/proposals/proposals/show.html.erb +1 -1
  12. data/app/views/decidim/proposals/versions/show.html.erb +1 -4
  13. data/config/locales/ar-SA.yml +4 -0
  14. data/config/locales/ar.yml +801 -0
  15. data/config/locales/ca.yml +4 -0
  16. data/config/locales/cs.yml +4 -0
  17. data/config/locales/de.yml +4 -0
  18. data/config/locales/en.yml +4 -0
  19. data/config/locales/es-MX.yml +4 -0
  20. data/config/locales/es-PY.yml +4 -0
  21. data/config/locales/es.yml +4 -0
  22. data/config/locales/eu.yml +4 -0
  23. data/config/locales/fi-plain.yml +4 -0
  24. data/config/locales/fi.yml +4 -0
  25. data/config/locales/fr.yml +4 -0
  26. data/config/locales/gl.yml +4 -0
  27. data/config/locales/hu.yml +4 -0
  28. data/config/locales/id-ID.yml +4 -0
  29. data/config/locales/it.yml +5 -1
  30. data/config/locales/nl.yml +4 -0
  31. data/config/locales/pl.yml +4 -0
  32. data/config/locales/pt-BR.yml +4 -0
  33. data/config/locales/pt.yml +4 -0
  34. data/config/locales/sv.yml +4 -0
  35. data/config/locales/tr-TR.yml +4 -0
  36. data/lib/decidim/proposals/commentable_proposal.rb +4 -0
  37. data/lib/decidim/proposals/component.rb +2 -0
  38. data/lib/decidim/proposals/proposal_serializer.rb +1 -0
  39. data/lib/decidim/proposals/version.rb +1 -1
  40. metadata +32 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bd6389f19c1fa5a4ffd208e3a44d71211c92bf27ad211175b20b76efff9c3474
4
- data.tar.gz: 065f6b5f6698aca13ad7b15c030bde4783819f69826151031eabc6b5ad52f12a
3
+ metadata.gz: 273bb9b6fd8eb0de9832a682120112c71568c54a2efc33b9c812c7f9e937340d
4
+ data.tar.gz: c0919c4c4a0fb106e85028ed028945b47626bbcd9fa0be538ea5dc7e617b690c
5
5
  SHA512:
6
- metadata.gz: 46c084c652fdf80b00c18d3bb0916b1a2795f6e382b8260a83c10242e55dd70d09968f70e82df1cd254429a5eaac7d5fbc777029fbd07c5db8ea6229a6dac25a
7
- data.tar.gz: 4782654d8316b07cc99db69bf5baf513747df6c12defa31b715c521e6f01991d1fcdd729bc6e22398b103531b016e7d163429fec1ef8a4369d0661efdd9f5229
6
+ metadata.gz: 91f2235a6033966349814688acb5ae463c01e0411c22a6bdb9b954d7220e1c392724bb310426ec1ba94445b6cdfbcc41f22dbf6f88b43214063c985bdd02ebf3
7
+ data.tar.gz: 56435636e8b3d94ae31f725c63fefe2b4ab48bd3d1346d474d57db1a76795b78653f25203fb5ae9d273af6c4f9238bcd8485ff1232aaac807cdbac0c8d81db7f
@@ -28,6 +28,7 @@ module Decidim
28
28
  .where(component: current_component)
29
29
  .published
30
30
  .not_hidden
31
+ .only_amendables
31
32
  .includes(:category, :scope)
32
33
  .order(position: :asc)
33
34
  render "decidim/proposals/proposals/participatory_texts/participatory_text"
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Decidim
4
4
  module Proposals
5
- # Exposes CollaborativeDraft versions so users can see how a CollaborativeDraft
5
+ # Exposes Proposals versions so users can see how a Proposal/CollaborativeDraft
6
6
  # has been updated through time.
7
7
  class VersionsController < Decidim::Proposals::ApplicationController
8
8
  helper Decidim::TraceabilityHelper
@@ -19,7 +19,8 @@ module Decidim
19
19
  end
20
20
 
21
21
  def current_version
22
- return nil if params[:id].to_i < 1
22
+ return nil unless params[:id].to_i.positive?
23
+
23
24
  @current_version ||= item.versions[params[:id].to_i - 1]
24
25
  end
25
26
  end
@@ -15,29 +15,49 @@ module Decidim
15
15
  attribute :document
16
16
 
17
17
  validates :title, translatable_presence: true
18
- validate :accepted_mime_type
18
+ validates :document, presence: true, if: :new_participatory_text?
19
+ validate :document_type_must_be_valid, if: :document
19
20
 
20
- def default_locale
21
- current_participatory_space.organization.default_locale
21
+ # Assume it's a NEW participatory_text if there are no proposals
22
+ # Validate document presence while CREATING proposals from document
23
+ # Allow skipping document validation while UPDATING title/description
24
+ def new_participatory_text?
25
+ Decidim::Proposals::Proposal.where(component: current_component).blank?
22
26
  end
23
27
 
24
- def document_text
25
- @document_text ||= document&.read
28
+ def document_type_must_be_valid
29
+ return if valid_mime_types.include?(document_type)
30
+
31
+ errors.add(:document, i18n_invalid_document_type_text)
32
+ end
33
+
34
+ # Return ACCEPTED_MIME_TYPES plus `text/plain` for better markdown support
35
+ def valid_mime_types
36
+ ACCEPTED_MIME_TYPES.values + [Decidim::Proposals::DocToMarkdown::TEXT_PLAIN_MIME_TYPE]
26
37
  end
27
38
 
28
39
  def document_type
29
40
  document.content_type
30
41
  end
31
42
 
32
- def accepted_mime_type
33
- accepted_mime_types = ACCEPTED_MIME_TYPES.values + [Decidim::Proposals::DocToMarkdown::TEXT_PLAIN_MIME_TYPE]
34
- return if accepted_mime_types.include?(document_type)
43
+ def i18n_invalid_document_type_text
44
+ I18n.t("invalid_document_type",
45
+ scope: "activemodel.errors.models.participatory_text.attributes.document",
46
+ valid_mime_types: i18n_valid_mime_types_text)
47
+ end
48
+
49
+ def i18n_valid_mime_types_text
50
+ ACCEPTED_MIME_TYPES.keys.map do |mime_type|
51
+ I18n.t(mime_type, scope: "decidim.proposals.admin.participatory_texts.new_import.accepted_mime_types")
52
+ end.join(", ")
53
+ end
54
+
55
+ def default_locale
56
+ current_participatory_space.organization.default_locale
57
+ end
35
58
 
36
- errors.add(:document,
37
- I18n.t("activemodel.errors.models.participatory_text.attributes.document.invalid_document_type",
38
- valid_mime_types: ACCEPTED_MIME_TYPES.keys.map do |m|
39
- I18n.t("decidim.proposals.admin.participatory_texts.new_import.accepted_mime_types.#{m}")
40
- end.join(", ")))
59
+ def document_text
60
+ @document_text ||= document&.read
41
61
  end
42
62
  end
43
63
  end
@@ -3,56 +3,43 @@
3
3
  module Decidim
4
4
  module Proposals
5
5
  # Custom helpers, scoped to the proposals engine.
6
- #
7
6
  module ControlVersionHelper
8
- def versions_controller?
9
- return true if params[:controller] == "decidim/proposals/versions"
10
-
11
- false
12
- end
13
-
14
- def proposal?
15
- return true if item.class == Decidim::Proposals::Proposal
16
-
17
- false
7
+ def item_name
8
+ item.model_name.singular_route_key.to_sym
18
9
  end
19
10
 
20
11
  def back_to_resource_path_text
21
- return unless versions_controller?
22
-
23
- if proposal?
24
- t("versions.stats.back_to_proposal", scope: "decidim.proposals")
25
- else
26
- t("versions.stats.back_to_collaborative_draft", scope: "decidim.proposals")
12
+ case item_name
13
+ when :proposal
14
+ t("back_to_proposal", scope: "decidim.proposals.versions.stats")
15
+ when :collaborative_draft
16
+ t("back_to_collaborative_draft", scope: "decidim.proposals.versions.stats")
27
17
  end
28
18
  end
29
19
 
30
20
  def back_to_resource_path
31
- return unless versions_controller?
32
-
33
- if proposal?
21
+ case item_name
22
+ when :proposal
34
23
  proposal_path(item)
35
- else
24
+ when :collaborative_draft
36
25
  collaborative_draft_path(item)
37
26
  end
38
27
  end
39
28
 
40
29
  def resource_version_path(index)
41
- return unless versions_controller?
42
-
43
- if proposal?
30
+ case item_name
31
+ when :proposal
44
32
  proposal_version_path(item, index + 1)
45
- else
33
+ when :collaborative_draft
46
34
  collaborative_draft_version_path(item, index + 1)
47
35
  end
48
36
  end
49
37
 
50
38
  def resource_all_versions_path
51
- return unless versions_controller?
52
-
53
- if proposal?
39
+ case item_name
40
+ when :proposal
54
41
  proposal_versions_path(item)
55
- else
42
+ when :collaborative_draft
56
43
  collaborative_draft_versions_path(item)
57
44
  end
58
45
  end
@@ -22,12 +22,12 @@ module Decidim
22
22
  include Decidim::Hashtaggable
23
23
  include Decidim::Proposals::ParticipatoryTextSection
24
24
  include Decidim::Amendable
25
+ include Decidim::NewsletterParticipant
25
26
 
26
27
  fingerprint fields: [:title, :body]
27
28
 
28
29
  amendable(
29
30
  fields: [:title, :body],
30
- ignore: [:published_at, :reference, :state, :answered_at, :answer],
31
31
  form: "Decidim::Proposals::ProposalForm"
32
32
  )
33
33
 
@@ -90,6 +90,30 @@ module Decidim
90
90
  .where("decidim_coauthorships.decidim_author_id = ? AND decidim_coauthorships.decidim_author_type = ? ", author.id, author.class.base_class.name)
91
91
  end
92
92
 
93
+ def self.retrieve_proposals_for(component)
94
+ Decidim::Proposals::Proposal.where(component: component).joins(:coauthorships)
95
+ .includes(:votes, :endorsements)
96
+ .where(decidim_coauthorships: { decidim_author_type: "Decidim::UserBaseEntity" })
97
+ .not_hidden
98
+ .published
99
+ .except_withdrawn
100
+ end
101
+
102
+ def self.newsletter_participant_ids(component)
103
+ proposals = retrieve_proposals_for(component).uniq
104
+
105
+ coauthors_recipients_ids = proposals.map { |p| p.notifiable_identities.pluck(:id) }.flatten.compact.uniq
106
+
107
+ participants_has_voted_ids = Decidim::Proposals::ProposalVote.joins(:proposal).where(proposal: proposals).joins(:author).map(&:decidim_author_id).flatten.compact.uniq
108
+
109
+ endorsements_participants_ids = Decidim::Proposals::ProposalEndorsement.joins(:proposal)
110
+ .where(proposal: proposals)
111
+ .where(decidim_author_type: "Decidim::UserBaseEntity")
112
+ .map(&:decidim_author_id).flatten.compact.uniq
113
+
114
+ (endorsements_participants_ids + participants_has_voted_ids + coauthors_recipients_ids).flatten.compact.uniq
115
+ end
116
+
93
117
  # Public: Updates the vote count of this proposal.
94
118
  #
95
119
  # Returns nothing.
@@ -34,7 +34,13 @@ module Decidim
34
34
  def retrieve_proposals(from_start = false)
35
35
  @proposals ||= Decidim::Proposals::Proposal.where(component: @resource).joins(:coauthorships)
36
36
  .includes(:votes, :endorsements)
37
- .where(decidim_coauthorships: { decidim_author_type: "Decidim::UserBaseEntity" })
37
+ .where(decidim_coauthorships: {
38
+ decidim_author_type: [
39
+ "Decidim::UserBaseEntity",
40
+ "Decidim::Organization",
41
+ "Decidim::Meetings::Meeting"
42
+ ]
43
+ })
38
44
  .where("decidim_proposals_proposals.published_at <= ?", end_time)
39
45
  .except_withdrawn
40
46
 
@@ -84,9 +84,9 @@ module Decidim
84
84
  def search_type
85
85
  case type
86
86
  when "proposals"
87
- query.where.not(id: query.joins(:amendable).pluck(:id))
87
+ query.only_amendables
88
88
  when "amendments"
89
- query.where(id: query.joins(:amendable).pluck(:id))
89
+ query.only_emendations
90
90
  else
91
91
  query
92
92
  end
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
  </div>
14
14
 
15
- <% if component_settings.amendments_enabled %>
15
+ <% if Decidim::Proposals::Proposal.only_emendations.any? %>
16
16
  <%= form.collection_radio_buttons :type, filter_type_values, :first, :last, legend_title: t(".amendment_type") %>
17
17
  <% end %>
18
18
  <% if component_settings.official_proposals_enabled %>
@@ -1,5 +1 @@
1
- <% if amendments_enabled? %>
2
- <%= card_for proposal, from: proposal %>
3
- <% else %>
4
- <%= card_for proposal, from: proposal if !proposal.emendation? %>
5
- <% end %>
1
+ <%= card_for proposal, from: proposal %>
@@ -30,7 +30,7 @@ edit_link(
30
30
  </div>
31
31
  <div class="row">
32
32
  <div class="columns section view-side mediumlarge-4 mediumlarge-push-8 large-3 large-push-9">
33
- <% unless @proposal.emendation? %>
33
+ <% if @proposal.amendable? %>
34
34
  <div class="card text-center">
35
35
  <div class="card__content">
36
36
  <div>
@@ -7,10 +7,7 @@
7
7
  <div class="row">
8
8
  <div class="mediumlarge-8 columns">
9
9
  <div class="section">
10
- <% diff_renderer.diff.each_value do |data| %>
11
- <h3 class="section-heading"><%= data[:label] %></h3>
12
- <%= render_diff_data(data) %>
13
- <% end %>
10
+ <%= cell("decidim/diff", current_version) %>
14
11
  </div>
15
12
  </div>
16
13
 
@@ -41,6 +41,10 @@ ar:
41
41
  attributes:
42
42
  attachment:
43
43
  needs_to_be_reattached: يحتاج إلى إعادة ربط
44
+ body:
45
+ identical: لا يمكن أن يكون العنوان متطابقًا
46
+ title:
47
+ identical: و الجسم لا يمكن أن تكون متطابقة
44
48
  models:
45
49
  decidim/proposals/accepted_proposal_event: تم قبول الاقتراح
46
50
  decidim/proposals/admin/update_proposal_category_event: تم تغيير فئة الاقتراح
@@ -0,0 +1,801 @@
1
+ ar:
2
+ activemodel:
3
+ attributes:
4
+ collaborative_draft:
5
+ address: عنوان
6
+ body: الجسم
7
+ category_id: الفئة
8
+ decidim_scope_id: نطاق
9
+ has_address: لديه عنوان
10
+ state: حالة
11
+ title: عنوان
12
+ user_group_id: إنشاء مسودة تعاونية كـ
13
+ proposal:
14
+ address: عنوان
15
+ answer: إجابة
16
+ answered_at: أجاب في
17
+ automatic_hashtags: علامات التصنيف المضافة تلقائيًا
18
+ body: الجسم
19
+ category_id: الفئة
20
+ has_address: لديه عنوان
21
+ scope_id: نطاق
22
+ state: حالة
23
+ suggested_hashtags: الهاشتاج المقترحة
24
+ title: عنوان
25
+ user_group_id: إنشاء اقتراح باسم
26
+ proposal_answer:
27
+ answer: إجابة
28
+ proposals_copy:
29
+ copy_proposals: أدرك أن هذا سيؤدي إلى استيراد جميع المقترحات من المكون المحدد إلى المكون الحالي وأنه لا يمكن عكس هذا الإجراء.
30
+ origin_component_id: مكون لنسخ المقترحات من
31
+ proposals_import:
32
+ import_proposals: مقترحات الاستيراد
33
+ keep_authors: الحفاظ على المؤلفين الأصلي
34
+ errors:
35
+ models:
36
+ participatory_text:
37
+ attributes:
38
+ document:
39
+ invalid_document_type: 'نوع المستند غير صالح. التنسيقات المقبولة هي: %{valid_mime_types}'
40
+ proposal:
41
+ attributes:
42
+ attachment:
43
+ needs_to_be_reattached: يحتاج إلى إعادة ربط
44
+ body:
45
+ identical: لا يمكن أن يكون العنوان متطابقًا
46
+ title:
47
+ identical: و الجسم لا يمكن أن تكون متطابقة
48
+ models:
49
+ decidim/proposals/accepted_proposal_event: تم قبول الاقتراح
50
+ decidim/proposals/admin/update_proposal_category_event: تم تغيير فئة الاقتراح
51
+ decidim/proposals/creation_enabled_event: تمكين إنشاء الاقتراح
52
+ decidim/proposals/endorsing_enabled_event: تمكين اقتراح الاقتراح
53
+ decidim/proposals/evaluating_proposal_event: يجري تقييم الاقتراح
54
+ decidim/proposals/proposal_endorsed_event: تمت الموافقة على الاقتراح
55
+ decidim/proposals/proposal_mentioned_event: الاقتراح المذكور
56
+ decidim/proposals/publish_proposal_event: تم نشر الاقتراح
57
+ decidim/proposals/rejected_proposal_event: تم رفض الاقتراح
58
+ decidim/proposals/voting_enabled_event: تم تمكين التصويت على الاقتراح
59
+ activerecord:
60
+ models:
61
+ decidim/proposals/collaborative_draft:
62
+ zero: المسودات التعاونية
63
+ one: مشروع تعاوني
64
+ two: المسودات التعاونية
65
+ few: المسودات التعاونية
66
+ many: المسودات التعاونية
67
+ other: المسودات التعاونية
68
+ decidim/proposals/proposal:
69
+ zero: اقتراحات
70
+ one: اقتراح
71
+ two: اقتراحات
72
+ few: اقتراحات
73
+ many: اقتراحات
74
+ other: اقتراحات
75
+ decidim/proposals/proposal_endorsement:
76
+ zero: موافقات
77
+ one: المصادقة
78
+ two: موافقات
79
+ few: موافقات
80
+ many: موافقات
81
+ other: موافقات
82
+ decidim/proposals/proposal_note:
83
+ zero: ملاحظات
84
+ one: ملحوظة
85
+ two: ملاحظات
86
+ few: ملاحظات
87
+ many: ملاحظات
88
+ other: ملاحظات
89
+ decidim/proposals/proposal_vote:
90
+ zero: الدعم
91
+ one: الدعم
92
+ two: الدعم
93
+ few: الدعم
94
+ many: الدعم
95
+ other: الدعم
96
+ decidim:
97
+ components:
98
+ proposals:
99
+ actions:
100
+ create: إنشاء
101
+ endorse: تأييد
102
+ vote: الدعم
103
+ withdraw: سحب
104
+ name: اقتراحات
105
+ settings:
106
+ global:
107
+ amendments_enabled: تم تمكين التعديلات
108
+ announcement: إعلان
109
+ attachments_allowed: السماح للمرفقات
110
+ can_accumulate_supports_beyond_threshold: يمكن أن تتراكم الدعم وراء العتبة
111
+ collaborative_drafts_enabled: تم تمكين المسودات التعاونية
112
+ comments_enabled: تم تمكين التعليقات
113
+ geocoding_enabled: تم تمكين الترميز الجغرافي
114
+ minimum_votes_per_user: الحد الأدنى من الدعم لكل مستخدم
115
+ new_proposal_help_text: نص مساعدة اقتراح جديد
116
+ official_proposals_enabled: تم تمكين المقترحات الرسمية
117
+ participatory_texts_enabled: تم تمكين النصوص التشاركية
118
+ proposal_answering_enabled: تم تمكين الرد على الاقتراح
119
+ proposal_edit_before_minutes: يمكن تحرير المقترحات من قبل المؤلفين قبل مرور عدة دقائق
120
+ proposal_length: الحد الأقصى لطول الاقتراح المقترح
121
+ proposal_limit: حد الاقتراح لكل مشارك
122
+ proposal_wizard_step_1_help_text: اقتراح الاقتراح "إنشاء" نص مساعدة الخطوة
123
+ proposal_wizard_step_2_help_text: اقتراح الاقتراح "قارن" نص خطوة المساعدة
124
+ proposal_wizard_step_3_help_text: نص اقتراح "إكمال" تعليمات نص المعالج
125
+ proposal_wizard_step_4_help_text: اقتراح الاقتراح "نشر" نص تعليمات الخطوة
126
+ resources_permissions_enabled: يمكن تعيين أذونات الإجراءات لكل اقتراح
127
+ threshold_per_proposal: عتبة لكل اقتراح
128
+ vote_limit: حد الدعم لكل مشارك
129
+ step:
130
+ announcement: إعلان
131
+ automatic_hashtags: علامات التصنيف المضافة إلى جميع المقترحات
132
+ comments_blocked: تم حظر التعليقات
133
+ creation_enabled: تمكين إنشاء الاقتراح
134
+ endorsements_blocked: المصادقة المحظورة
135
+ endorsements_enabled: تم التصديق
136
+ proposal_answering_enabled: تم تمكين الرد على الاقتراح
137
+ suggested_hashtags: اقترح علامات التصنيف للمشاركين لتقديم مقترحات جديدة
138
+ votes_blocked: يدعم المحظورة
139
+ votes_enabled: يدعم تمكين
140
+ votes_hidden: يدعم مخفي (إذا تم تمكين الدعم ، سيؤدي تحديد هذا إلى إخفاء عدد الدعم)
141
+ events:
142
+ proposals:
143
+ collaborative_draft_access_accepted:
144
+ email_intro: 'تم قبول %{requester_name} للوصول كمساهم في المسودة التعاونية <a href="%{resource_path}">%{resource_title}</a>.'
145
+ email_outro: لقد تلقيت هذا الإشعار لأنك متعاون مع <a href="%{resource_path}">%{resource_title}</a>.
146
+ email_subject: "تم قبول %{requester_name} للوصول كمساهم في %{resource_title}."
147
+ notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> كان <strong>مقبولة للوصول كمساهم</strong> من <a href="%{resource_path}">%{resource_title}</a> مشروع تعاوني.
148
+ collaborative_draft_access_rejected:
149
+ email_intro: 'تم رفض %{requester_name} للوصول كمساهم في المسودة التعاونية <a href="%{resource_path}">%{resource_title}</a>.'
150
+ email_outro: لقد تلقيت هذا الإشعار لأنك متعاون مع <a href="%{resource_path}">%{resource_title}</a>.
151
+ email_subject: "تم رفض %{requester_name} للوصول كمساهم في المسودة التعاونية %{resource_title}."
152
+ notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> تم رفض الوصول إلى <strong>كمساهم</strong> في المسودة التعاونية <a href="%{resource_path}">%{resource_title}</a>.
153
+ collaborative_draft_access_requested:
154
+ email_intro: '%{requester_name} طلب الوصول كمساهم. يمكنك <strong>قبول أو رفض طلب</strong> من <a href="%{resource_path}">%{resource_title}</a> مشروع الصفحة التعاونية.'
155
+ email_outro: لقد تلقيت هذا الإشعار لأنك متعاون مع <a href="%{resource_path}">%{resource_title}</a>.
156
+ email_subject: "%{requester_name} طلب الوصول للمساهمة في %{resource_title}."
157
+ notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> طلب الوصول للمساهمة في المسودة التعاونية <a href="%{resource_path}">%{resource_title}</a> . يرجى <strong>قبول أو رفض الطلب</strong>.
158
+ collaborative_draft_access_requester_accepted:
159
+ email_intro: لقد تم قبولك للدخول كمساهم في المسودة التعاونية <a href="%{resource_path}">%{resource_title}</a>.
160
+ email_outro: لقد تلقيت هذا الإشعار لأنك طلبت أن تصبح متعاونًا مع <a href="%{resource_path}">%{resource_title}</a>.
161
+ email_subject: تم قبولك كمساهم بـ %{resource_title}.
162
+ notification_title: لقد تم قبول <strong>للدخول كمساهم</strong> في المسودة التعاونية <a href="%{resource_path}">%{resource_title}</a>.
163
+ collaborative_draft_access_requester_rejected:
164
+ email_intro: لقد تم رفض وصولك كمساهم في المسودة التعاونية <a href="%{resource_path}">%{resource_title}</a>.
165
+ email_outro: لقد تلقيت هذا الإشعار لأنك طلبت أن تصبح متعاونًا مع <a href="%{resource_path}">%{resource_title}</a>.
166
+ email_subject: لقد تم رفضك كمساهم بـ %{resource_title}.
167
+ notification_title: لقد تم رفض دخولك <strong>كمساهم</strong> في المسودة التعاونية <a href="%{resource_path}">%{resource_title}</a>.
168
+ collaborative_draft_withdrawn:
169
+ email_intro: <a href="%{author_path}">%{author_name} %{author_nickname}</a> سحبت المسودة التعاونية <a href="%{resource_path}">%{resource_title}</a>.
170
+ email_outro: لقد تلقيت هذا الإشعار لأنك متعاون مع <a href="%{resource_path}">%{resource_title}</a>.
171
+ email_subject: "%{author_name} %{author_nickname} سحب المشروع %{resource_title} التعاوني."
172
+ notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> <strong>سحبت</strong> مشروع <a href="%{resource_path}">%{resource_title}</a> التعاوني.
173
+ creation_enabled:
174
+ email_intro: 'يمكنك الآن إنشاء مقترحات جديدة في %{participatory_space_title}! ابدأ المشاركة في هذه الصفحة:'
175
+ email_outro: لقد تلقيت هذا الإشعار لأنك تتابع %{participatory_space_title}. يمكنك إيقاف تلقي الإخطارات باتباع الرابط السابق.
176
+ email_subject: مقترحات متاحة الآن في %{participatory_space_title}
177
+ notification_title: يمكنك الآن طرح <a href="%{resource_path}">مقترحات جديدة</a> في <a href="%{participatory_space_url}">%{participatory_space_title}</a>
178
+ endorsing_enabled:
179
+ email_intro: 'يمكنك تأييد المقترحات في %{participatory_space_title}! ابدأ المشاركة في هذه الصفحة:'
180
+ email_outro: لقد تلقيت هذا الإشعار لأنك تتابع %{participatory_space_title}. يمكنك إيقاف تلقي الإخطارات باتباع الرابط السابق.
181
+ email_subject: بدأت اقتراحات الموافقة على %{participatory_space_title}
182
+ notification_title: يمكنك الآن بدء <a href="%{resource_path}">تأييد مقترحات</a> في <a href="%{participatory_space_url}">%{participatory_space_title}</a>
183
+ proposal_accepted:
184
+ affected_user:
185
+ email_intro: 'تم قبول اقتراحك "%{resource_title}". يمكنك قراءة الإجابة في هذه الصفحة:'
186
+ email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف "%{resource_title}".
187
+ email_subject: تم قبول الاقتراح الخاص بك
188
+ notification_title: تم قبول اقتراحك <a href="%{resource_path}">%{resource_title}</a>.
189
+ proposal_endorsed:
190
+ email_intro: '%{endorser_name} %{endorser_nickname}، الذي تتابعه ، وافق للتو على الاقتراح "%{resource_title}" ونعتقد أنه قد يكون مثيرا للاهتمام بالنسبة لك. التحقق من ذلك والمساهمة:'
191
+ email_outro: لقد تلقيت هذا الإشعار لأنك تتابع %{endorser_nickname}. يمكنك إيقاف تلقي الإخطارات باتباع الرابط السابق.
192
+ email_subject: "%{endorser_nickname} قد صادق على اقتراح جديد"
193
+ notification_title: تمت الموافقة على اقتراح <a href="%{resource_path}">%{resource_title}</a> من قبل <a href="%{endorser_path}">%{endorser_name} %{endorser_nickname}</a>.
194
+ proposal_evaluating:
195
+ affected_user:
196
+ email_intro: 'يتم حاليًا تقييم الاقتراح الخاص بك "%{resource_title}". يمكنك التحقق من وجود إجابة في هذه الصفحة:'
197
+ email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف "%{resource_title}".
198
+ email_subject: يتم تقييم الاقتراح الخاص بك
199
+ notification_title: يتم تقييم الاقتراح الخاص بك <a href="%{resource_path}">%{resource_title}</a>.
200
+ proposal_mentioned:
201
+ email_intro: لقد تم ذكر اقتراحك "%{mentioned_proposal_title}" <a href="%{resource_path}">في هذه المساحة</a> في التعليقات.
202
+ email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف "%{resource_title}".
203
+ email_subject: تم ذكر اقتراحك "%{mentioned_proposal_title}"
204
+ notification_title: لقد تم ذكر اقتراحك "%{mentioned_proposal_title}" <a href="%{resource_path}">في هذه المساحة</a> في التعليقات.
205
+ proposal_published:
206
+ email_intro: '%{author_name} %{author_nickname}، الذي تتابعه ، بنشر اقتراح جديد يسمى "%{resource_title}". التحقق من ذلك والمساهمة:'
207
+ email_outro: لقد تلقيت هذا الإشعار لأنك تتابع %{author_nickname}. يمكنك إيقاف تلقي الإخطارات باتباع الرابط السابق.
208
+ email_subject: اقتراح جديد "%{resource_title}" من %{author_nickname}
209
+ notification_title: تم نشر مقترح <a href="%{resource_path}">%{resource_title}</a> بواسطة <a href="%{author_path}">%{author_name} %{author_nickname}</a>.
210
+ proposal_published_for_space:
211
+ email_intro: تمت إضافة الاقتراح "%{resource_title}" إلى "%{participatory_space_title}" الذي تتابعه.
212
+ email_outro: لقد تلقيت هذا الإشعار لأنك تتابع "%{participatory_space_title}". يمكنك إيقاف تلقي الإخطارات باتباع الرابط السابق.
213
+ email_subject: تمت إضافة اقتراح جديد "%{resource_title}" إلى %{participatory_space_title}
214
+ notification_title: تمت إضافة الاقتراح <a href="%{resource_path}">%{resource_title}</a> إلى %{participatory_space_title}
215
+ proposal_rejected:
216
+ affected_user:
217
+ email_intro: 'تم رفض اقتراحك "%{resource_title}". يمكنك قراءة الإجابة في هذه الصفحة:'
218
+ email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف "%{resource_title}".
219
+ email_subject: تم رفض اقتراحك
220
+ notification_title: تم رفض اقتراحك <a href="%{resource_path}">%{resource_title}</a>.
221
+ proposal_update_category:
222
+ email_intro: 'قام المشرف بتحديث فئة اقتراحك "%{resource_title}" ، تحقق من ذلك في هذه الصفحة:'
223
+ email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف الاقتراح.
224
+ email_subject: تم تحديث فئة %{resource_title} اقتراح
225
+ notification_title: تم تحديث فئة اقتراح <a href="%{resource_path}">%{resource_title}</a> بواسطة مسؤول.
226
+ voting_enabled:
227
+ email_intro: 'يمكنك دعم المقترحات في %{participatory_space_title}! ابدأ المشاركة في هذه الصفحة:'
228
+ email_outro: لقد تلقيت هذا الإشعار لأنك تتابع %{participatory_space_title}. يمكنك إيقاف تلقي الإخطارات باتباع الرابط السابق.
229
+ email_subject: بدأ دعم الاقتراح لمدة %{participatory_space_title}
230
+ notification_title: يمكنك الآن بدء <a href="%{resource_path}">دعم المقترحات</a> في <a href="%{participatory_space_url}">%{participatory_space_title}</a>
231
+ gamification:
232
+ badges:
233
+ accepted_proposals:
234
+ conditions:
235
+ - اختر مساحة المشاركة التي تهمك مع تمكين تقديم المقترحات
236
+ - حاول تقديم مقترحات يمكن تنفيذها. بهذه الطريقة هم أكثر عرضة للقبول.
237
+ description: تُمنح هذه الشارة عندما تشارك بفعالية في المقترحات الجديدة ويتم قبولها.
238
+ description_another: هذا المشارك لديه %{score} مقترحات مقبولة.
239
+ description_own: حصلت على %{score} مقترحات مقبولة.
240
+ name: مقترحات مقبولة
241
+ next_level_in: احصل على %{score} مقترحات أخرى مقبولة للوصول إلى المستوى التالي!
242
+ unearned_another: هذا المشارك لم يكن لديه أي مقترحات مقبولة.
243
+ unearned_own: لم تحصل على اقتراحات مقبولة حتى الآن.
244
+ proposal_votes:
245
+ conditions:
246
+ - تصفح وقضاء بعض الوقت في قراءة اقتراحات الآخرين
247
+ - قدم الدعم للمقترحات التي تحبها أو تجدها مثيرة للاهتمام
248
+ description: تُمنح هذه الشارة عند دعم اقتراحات الآخرين.
249
+ description_another: قدم هذا المشارك الدعم إلى %{score} مقترحات.
250
+ description_own: لقد قدمت الدعم إلى %{score} مقترحات.
251
+ name: يدعم الاقتراح
252
+ next_level_in: تقديم الدعم ل %{score} مقترحات أخرى للوصول إلى المستوى التالي!
253
+ unearned_another: لم يقدم هذا المشارك الدعم لأي مقترحات حتى الآن.
254
+ unearned_own: لقد قدمت الدعم لأية مقترحات حتى الآن.
255
+ proposals:
256
+ conditions:
257
+ - اختر مساحة المشاركة التي تهمك مع تمكين تقديم المقترحات
258
+ - إنشاء اقتراح جديد
259
+ description: تُمنح هذه الشارة عندما تشارك بنشاط في مقترحات جديدة.
260
+ description_another: قام هذا المشارك بإنشاء %{score} مقترحات.
261
+ description_own: لقد قمت بإنشاء %{score} مقترحات.
262
+ name: اقتراحات
263
+ next_level_in: إنشاء %{score} المزيد من المقترحات للوصول إلى المستوى التالي!
264
+ unearned_another: لم ينشئ هذا المشارك أي مقترحات حتى الآن.
265
+ unearned_own: لم تنشئ اقتراحات بعد.
266
+ metrics:
267
+ accepted_proposals:
268
+ description: عدد المقترحات المقبولة
269
+ object: اقتراحات
270
+ title: مقترحات مقبولة
271
+ endorsements:
272
+ description: عدد موافقات المقترحات
273
+ object: موافقات
274
+ title: موافقات
275
+ proposals:
276
+ description: عدد المقترحات
277
+ object: اقتراحات
278
+ title: اقتراحات
279
+ votes:
280
+ description: عدد الدعم للمقترحات
281
+ object: الدعم
282
+ title: الدعم
283
+ participatory_processes:
284
+ participatory_process_groups:
285
+ highlighted_proposals:
286
+ proposals: اقتراحات
287
+ participatory_spaces:
288
+ highlighted_proposals:
289
+ see_all: شاهد الكل (%{count})
290
+ proposals:
291
+ actions:
292
+ answer: إجابة
293
+ edit_proposal: تعديل الاقتراح
294
+ import: استيراد من مكون آخر
295
+ new: عرض جديد
296
+ participatory_texts: النصوص التشاركية
297
+ private_notes: ملاحظات خاصة
298
+ title: أفعال
299
+ admin:
300
+ actions:
301
+ preview: معاينة
302
+ exports:
303
+ comments: تعليقات
304
+ proposals: اقتراحات
305
+ models:
306
+ proposal:
307
+ name: اقتراح
308
+ participatory_texts:
309
+ bulk-actions:
310
+ are_you_sure: هل أنت متأكد من تجاهل مشروع النص التشاركي بأكمله؟
311
+ discard_all: تجاهل كل
312
+ import_doc: استيراد المستند
313
+ discard:
314
+ success: تم تجاهل جميع المسودات النصية التشاركية.
315
+ import:
316
+ invalid: النموذج غير صالح!
317
+ success: مبروك ، تم تحويل الأقسام التالية إلى مقترحات. يمكنك الآن مراجعتها وضبطها قبل النشر.
318
+ index:
319
+ info_1: تم تحويل الأقسام التالية إلى مقترحات. يمكنك الآن مراجعتها وضبطها قبل النشر.
320
+ publish_document: نشر المستند
321
+ save_draft: حفظ المسودة
322
+ title: عرض نص المشاركة
323
+ new_import:
324
+ accepted_mime_types:
325
+ md: تخفيض السعر
326
+ odt: ODT
327
+ bottom_hint: "(سوف تكون قادرًا على معاينة وفرز أقسام المستندات)"
328
+ document_legend: 'أضف مستندًا أقل من 2 ميغابايت ، وسيتم تحليل كل قسم حتى عمق 3 مستويات في الاقتراحات. التنسيقات المدعومة هي: %{valid_mime_types}'
329
+ title: إضافة وثيقة
330
+ upload_document: تحميل المستند
331
+ publish:
332
+ invalid: لا يمكن نشر المقترحات
333
+ success: تم نشر جميع المقترحات
334
+ sections:
335
+ article: "<em>المادة</em>"
336
+ section: "<em>القسم:</em> <strong>%{title}</strong>"
337
+ sub-section: "<em>القسم الفرعي:</em> %{title}"
338
+ update:
339
+ success: تم تحديث النص التشاركي بنجاح.
340
+ proposal_answers:
341
+ edit:
342
+ accepted: وافقت
343
+ answer_proposal: إجابة
344
+ evaluating: تقييم
345
+ rejected: مرفوض
346
+ title: الإجابة على الاقتراح %{title}
347
+ proposal_notes:
348
+ create:
349
+ error: حدثت مشكلة أثناء إنشاء مذكرة الاقتراح هذه
350
+ success: تم إنشاء ملاحظة الاقتراح بنجاح
351
+ form:
352
+ note: ملحوظة
353
+ submit: خضع
354
+ leave_your_note: اترك ملاحظتك
355
+ title: ملاحظات خاصة
356
+ proposals:
357
+ answer:
358
+ invalid: كانت هناك مشكلة في الإجابة على هذا الاقتراح
359
+ success: تم الرد على الاقتراح بنجاح
360
+ create:
361
+ invalid: كانت هناك مشكلة في إنشاء هذا الاقتراح
362
+ success: تم إنشاء الاقتراح بنجاح
363
+ edit:
364
+ title: تحديث الاقتراح
365
+ update: تحديث
366
+ form:
367
+ attachment_legend: "(اختياري) إضافة مرفق"
368
+ created_in_meeting: هذا الاقتراح يأتي من اجتماع
369
+ select_a_category: اختر تصنيف
370
+ select_a_meeting: اختيار اجتماع
371
+ index:
372
+ actions: أفعال
373
+ cancel: إلغاء
374
+ change_category: تغيير الفئة
375
+ merge: دمج في واحدة جديدة
376
+ merge_button: دمج
377
+ select_component: حدد المكون
378
+ selected: المحدد
379
+ split: تقسيم المقترحات
380
+ split_button: انشق، مزق
381
+ title: اقتراحات
382
+ update: تحديث
383
+ new:
384
+ create: إنشاء
385
+ title: إنشاء اقتراح
386
+ update_category:
387
+ invalid: 'هذه المقترحات لديها بالفعل فئة %{category} : %{proposals}.'
388
+ select_a_category: الرجاء تحديد الفئة
389
+ select_a_proposal: يرجى اختيار الاقتراح
390
+ success: 'تم تحديث الاقتراحات بنجاح إلى فئة %{category} : %{proposals}.'
391
+ proposals_imports:
392
+ create:
393
+ invalid: كانت هناك مشكلة في استيراد المقترحات
394
+ success: "%{number} مقترحات تم استيرادها بنجاح"
395
+ new:
396
+ create: مقترحات الاستيراد
397
+ no_components: لا توجد مكونات اقتراح أخرى في هذه المساحة التشاركية لاستيراد المقترحات منها.
398
+ select_component: يرجى اختيار عنصر
399
+ select_states: تحقق من حالة مقترحات الاستيراد
400
+ proposals_merges:
401
+ create:
402
+ invalid: كانت هناك مشكلة في دمج المقترحات المحددة.
403
+ success: دمج المقترحات بنجاح في واحدة جديدة.
404
+ proposals_splits:
405
+ create:
406
+ invalid: كانت هناك مشكلة في تقسيم المقترحات المحددة.
407
+ success: تم تقسيم المقترحات بنجاح إلى مقترحات جديدة.
408
+ shared:
409
+ info_proposal:
410
+ body: الجسم
411
+ created_at: تاريخ الإنشاء
412
+ proposal_votes_count: يدعم العد
413
+ proposals: اقتراحات
414
+ admin_log:
415
+ proposal:
416
+ answer: "%{user_name} أجاب على الاقتراح %{resource_name} على %{space_name} الفضاء"
417
+ create: "%{user_name} بإنشاء الاقتراح %{resource_name} على الحيز %{space_name} كمقترح رسمي"
418
+ update: "%{user_name} تحديث الاقتراح الرسمي %{resource_name} على %{space_name} الفضاء"
419
+ proposal_note:
420
+ create: "غادر %{user_name} ملاحظة خاصة على الاقتراح %{resource_name} على %{space_name} الفضاء"
421
+ answers:
422
+ accepted: وافقت
423
+ evaluating: تقييم
424
+ not_answered: بلا جواب
425
+ rejected: مرفوض
426
+ withdrawn: سحب
427
+ application_helper:
428
+ filter_origin_values:
429
+ all: الكل
430
+ citizens: المواطنون
431
+ meetings: اجتماعات
432
+ user_groups: المجموعات
433
+ filter_state_values:
434
+ accepted: وافقت
435
+ all: الكل
436
+ evaluating: تقييم
437
+ rejected: مرفوض
438
+ filter_type_values:
439
+ all: الكل
440
+ amendments: تعديلات
441
+ proposals: اقتراحات
442
+ collaborative_drafts:
443
+ collaborative_draft:
444
+ publish:
445
+ error: حدثت مشكلة أثناء نشر المسودة التعاونية.
446
+ irreversible_action_modal:
447
+ body: بعد نشر المسودة كاقتراح ، لن تكون المسودة قابلة للتحرير بعد الآن. لن يقبل الاقتراح مؤلفين أو مساهمات جديدة.
448
+ cancel: إلغاء
449
+ ok: نشر كاقتراح
450
+ title: الإجراء التالي لا رجعة فيه
451
+ success: مسودة تعاونية تم نشرها بنجاح كمقترح
452
+ view_collaborative_draft: عرض المسودة التعاونية
453
+ withdraw:
454
+ error: حدثت مشكلة أثناء إغلاق المسودة التعاونية.
455
+ irreversible_action_modal:
456
+ body: بعد إغلاق المسودة ، لن تكون المسودة قابلة للتحرير بعد الآن. لن يقبل المسودة مؤلفين أو مساهمات جديدة.
457
+ cancel: إلغاء
458
+ ok: سحب المسودة التعاونية
459
+ title: الإجراء التالي لا رجعة فيه
460
+ success: تم سحب مشروع تعاوني بنجاح.
461
+ compare:
462
+ mine_is_different: مسودتي التعاونية مختلفة
463
+ no_similars_found: أحسنت! لم يتم العثور على مسودات تعاونية مماثلة
464
+ title: مسودات تعاونية مماثلة
465
+ complete:
466
+ send: إرسال
467
+ title: أكمل مسودتك التعاونية
468
+ count:
469
+ drafts_count:
470
+ zero: "%{count} مسودات تعاونية"
471
+ one: "%{count} مشروع تعاوني"
472
+ two: "%{count} مسودات تعاونية"
473
+ few: "%{count} مسودات تعاونية"
474
+ many: "%{count} مسودات تعاونية"
475
+ other: "%{count} مسودات تعاونية"
476
+ create:
477
+ error: كانت هناك مشكلة في إنشاء هذه المسودات التعاونية
478
+ success: تم إنشاء مشروع تعاوني بنجاح.
479
+ edit:
480
+ attachment_legend: "(اختياري) إضافة مرفق"
481
+ back: الى الخلف
482
+ select_a_category: الرجاء تحديد الفئة
483
+ send: إرسال
484
+ title: تحرير المسودة التعاونية
485
+ filters:
486
+ all: الكل
487
+ amendment: تعديلات
488
+ category: الفئة
489
+ category_prompt: الفئة موجه
490
+ open: افتح
491
+ published: نشرت
492
+ related_to: متعلق ب
493
+ search: بحث
494
+ state: الحالة
495
+ withdrawn: سحب
496
+ filters_small_view:
497
+ close_modal: إغلاق مشروط
498
+ filter: منقي
499
+ filter_by: مصنف بواسطة
500
+ unfold: كشف
501
+ new:
502
+ send: استمر
503
+ title: إنشاء مسودتك التعاونية
504
+ new_collaborative_draft_button:
505
+ new_collaborative_draft: مشروع تعاوني جديد
506
+ orders:
507
+ label: 'ترتيب المسودات حسب:'
508
+ most_contributed: التي تحصلت على معظم المساهمات
509
+ random: عشوائية
510
+ recent: الأخيرة
511
+ requests:
512
+ accepted_request:
513
+ error: لا يمكن قبول كمتعاون ، يرجى المحاولة مرة أخرى في وقت لاحق.
514
+ success: "تم قبول @%{user} كمتعاون بنجاح"
515
+ access_requested:
516
+ error: تعذر إكمال طلبك ، يرجى إعادة المحاولة لاحقًا.
517
+ success: تم إرسال طلبك للتعاون بنجاح
518
+ collaboration_requests:
519
+ accept_request: قبول
520
+ reject_request: رفض
521
+ title: طلبات التعاون
522
+ rejected_request:
523
+ error: لا يمكن الرفض كمتعاون ، يرجى المحاولة مرة أخرى لاحقًا.
524
+ success: "تم رفض @%{user} بنجاح كمتعاون"
525
+ show:
526
+ back: الى الخلف
527
+ edit: تحرير المسودة التعاونية
528
+ final_proposal: الاقتراح النهائي
529
+ final_proposal_help_text: انتهى هذا المشروع. تحقق من الاقتراح النهائي
530
+ hidden_authors_count:
531
+ zero: و %{count} المزيد من الناس
532
+ one: و %{count} شخص آخر
533
+ two: و %{count} المزيد من الناس
534
+ few: و %{count} المزيد من الناس
535
+ many: و %{count} المزيد من الناس
536
+ other: و %{count} المزيد من الناس
537
+ info-message: هذا هو <strong>مشروع تعاوني</strong> لاقتراح. هذا يعني أنه يمكنك مساعدة مؤلفيها في صياغة الاقتراح باستخدام قسم التعليقات أدناه أو تحسينه مباشرةً من خلال طلب الوصول لتحريره. بمجرد أن يمنحك المؤلفون حق الوصول ، ستتمكن من إجراء تغييرات على هذه المسودة.
538
+ of_versions: "(من %{number})"
539
+ publish: نشر
540
+ publish_info: نشر هذا الإصدار من المسودة أو
541
+ published_proposal: الاقتراح المنشور
542
+ request_access: طلب الدخول
543
+ requested_access: طلب الوصول
544
+ see_other_versions: رؤية الإصدارات الأخرى
545
+ version: الإصدار %{number}
546
+ version_history: انظر تاريخ الإصدار لهذا الاقتراح
547
+ withdraw: سحب المشروع
548
+ states:
549
+ open: افتح
550
+ published: نشرت
551
+ withdrawn: سحب
552
+ update:
553
+ error: حدثت مشكلة في حفظ المسودة التعاونية.
554
+ success: تم تحديث المسودة التعاونية بنجاح.
555
+ wizard_aside:
556
+ back: الى الخلف
557
+ info: إنك لعلى خلق <strong>مشروع تعاوني</strong>.
558
+ wizard_steps:
559
+ see_steps: عرض الخطوات
560
+ step_1: إنشاء مسودتك التعاونية
561
+ step_2: قارن مع المسودات التعاونية
562
+ step_3: أكمل مسودتك التعاونية
563
+ step_of: الخطوة %{current_step_num} من %{total_steps}
564
+ create:
565
+ error: كانت هناك مشكلة في حفظ الاقتراح.
566
+ success: تم إنشاء الاقتراح بنجاح. تم الحفظ كمسودة.
567
+ destroy_draft:
568
+ error: حدثت مشكلة في حذف المسودة التعاونية.
569
+ success: تم حذف مسودة الاقتراح بنجاح.
570
+ last_activity:
571
+ new_proposal_at_html: "<span>اقتراح جديد في %{link}</span>"
572
+ models:
573
+ collaborative_draft:
574
+ fields:
575
+ authors: المؤلفون
576
+ comments: تعليقات
577
+ contributions: مساهمات
578
+ proposal:
579
+ fields:
580
+ category: الفئة
581
+ comments: تعليقات
582
+ endorsements: موافقات
583
+ id: هوية شخصية
584
+ notes: ملاحظات
585
+ official_proposal: الاقتراح الرسمي
586
+ published_at: نشرت في
587
+ scope: نطاق
588
+ state: الحالة
589
+ title: عنوان
590
+ votes: الأصوات
591
+ new:
592
+ limit_reached: لا يمكنك إنشاء مقترحات جديدة لأنك تجاوزت الحد.
593
+ participatory_text_proposal:
594
+ alternative_title: لا توجد نصوص تشاركية في الوقت الحالي
595
+ buttons:
596
+ amend: تعديل
597
+ comment: تعليق
598
+ comments: تعليقات
599
+ endorse: تأييد
600
+ proposal_endorsements:
601
+ create:
602
+ error: كانت هناك مشكلة في تأييد الاقتراح.
603
+ identities:
604
+ done: فعله
605
+ select_identity: حدد الهوية
606
+ proposal_endorsements_helper:
607
+ endorsement_button:
608
+ already_endorsed: أيد
609
+ endorse: تأييد
610
+ render_endorsements_button_card_part:
611
+ endorse: تأييد
612
+ proposal_votes:
613
+ create:
614
+ error: كانت هناك مشكلة في دعم الاقتراح.
615
+ proposals:
616
+ compare:
617
+ continue: استمر
618
+ no_similars_found: أحسنت! لم يتم العثور على مقترحات مماثلة
619
+ title: مقترحات مماثلة
620
+ complete:
621
+ send: إرسال
622
+ title: أكمل اقتراحك
623
+ count:
624
+ proposals_count:
625
+ zero: "%{count} مقترحات"
626
+ one: "%{count} اقتراح"
627
+ two: "%{count} مقترحات"
628
+ few: "%{count} مقترحات"
629
+ many: "%{count} مقترحات"
630
+ other: "%{count} مقترحات"
631
+ edit:
632
+ attachment_legend: "(اختياري) إضافة مرفق"
633
+ back: الى الخلف
634
+ select_a_category: الرجاء تحديد الفئة
635
+ send: إرسال
636
+ title: تعديل الاقتراح
637
+ edit_draft:
638
+ discard: تجاهل هذه المسودة
639
+ discard_confirmation: هل أنت متأكد من أنك تريد التخلص من مسودة الاقتراح؟
640
+ send: معاينة
641
+ title: تحرير مسودة الاقتراح
642
+ endorsement_identities_cabin:
643
+ endorse: تأييد
644
+ endorsements_card_row:
645
+ comments: تعليقات
646
+ filters:
647
+ activity: نشاط
648
+ amendment_type: نوع
649
+ category: الفئة
650
+ category_prompt: اختر تصنيف
651
+ origin: الأصل
652
+ related_to: متعلق ب
653
+ search: بحث
654
+ state: الحالة
655
+ voted: أيد
656
+ filters_small_view:
657
+ close_modal: إغلاق مشروط
658
+ filter: منقي
659
+ filter_by: مصنف بواسطة
660
+ unfold: كشف
661
+ index:
662
+ collaborative_drafts_list: الوصول إلى المسودات التعاونية
663
+ new_proposal: عرض جديد
664
+ see_all_withdrawn: الاطلاع على جميع المقترحات المسحوبة
665
+ view_proposal: عرض الاقتراح
666
+ linked_proposals:
667
+ proposal_votes:
668
+ zero: الدعم
669
+ one: الدعم
670
+ two: الدعم
671
+ few: الدعم
672
+ many: الدعم
673
+ other: الدعم
674
+ new:
675
+ send: استمر
676
+ title: إنشاء اقتراحك
677
+ orders:
678
+ label: 'ترتيب المقترحات حسب:'
679
+ most_voted: التي تحصلت على أكبر دعم
680
+ random: عشوائية
681
+ recent: الأخيرة
682
+ participatory_texts:
683
+ index:
684
+ document_index: فهرس الوثيقة
685
+ view_index:
686
+ see_index: انظر الفهرس
687
+ preview:
688
+ modify: تعديل الاقتراح
689
+ proposal_edit_before_minutes:
690
+ zero: ستتمكن من تعديل هذا الاقتراح خلال الدقائق %{count} الأولى بعد نشر الاقتراح. بمجرد مرور هذه النافذة الزمنية ، لن تتمكن من تعديل الاقتراح.
691
+ one: ستتمكن من تعديل هذا الاقتراح خلال الدقيقة الأولى بعد نشر الاقتراح. بمجرد مرور هذه النافذة الزمنية ، لن تتمكن من تعديل الاقتراح.
692
+ two: ستتمكن من تعديل هذا الاقتراح خلال الدقائق %{count} الأولى بعد نشر الاقتراح. بمجرد مرور هذه النافذة الزمنية ، لن تتمكن من تعديل الاقتراح.
693
+ few: ستتمكن من تعديل هذا الاقتراح خلال الدقائق %{count} الأولى بعد نشر الاقتراح. بمجرد مرور هذه النافذة الزمنية ، لن تتمكن من تعديل الاقتراح.
694
+ many: ستتمكن من تعديل هذا الاقتراح خلال الدقائق %{count} الأولى بعد نشر الاقتراح. بمجرد مرور هذه النافذة الزمنية ، لن تتمكن من تعديل الاقتراح.
695
+ other: ستتمكن من تعديل هذا الاقتراح خلال الدقائق %{count} الأولى بعد نشر الاقتراح. بمجرد مرور هذه النافذة الزمنية ، لن تتمكن من تعديل الاقتراح.
696
+ publish: نشر
697
+ title: نشر اقتراحك
698
+ proposal:
699
+ creation_date: 'الإنشاء: %{date}'
700
+ view_proposal: عرض الاقتراح
701
+ show:
702
+ back_to: ارجع الى
703
+ edit_proposal: تعديل الاقتراح
704
+ endorsements_list: قائمة المصادقة
705
+ hidden_endorsers_count:
706
+ zero: و %{count} المزيد من الناس
707
+ one: و %{count} شخص آخر
708
+ two: و %{count} المزيد من الناس
709
+ few: و %{count} المزيد من الناس
710
+ many: و %{count} المزيد من الناس
711
+ other: و %{count} المزيد من الناس
712
+ link_to_collaborative_draft_help_text: هذا الاقتراح هو نتيجة لمشروع تعاوني. مراجعة التاريخ
713
+ link_to_collaborative_draft_text: انظر المسودة التعاونية
714
+ proposal_accepted_reason: 'تم قبول هذا الاقتراح بسبب:'
715
+ proposal_in_evaluation_reason: هذا الاقتراح قيد التقييم
716
+ proposal_rejected_reason: 'تم رفض هذا الاقتراح بسبب:'
717
+ report: أبلغ عن
718
+ withdraw_btn_hint: يمكنك سحب اقتراحك إذا غيرت رأيك ، طالما أنك لم تتلق أي دعم. لم يتم حذف الاقتراح ، وسوف يظهر في قائمة المقترحات المسحوبة.
719
+ withdraw_confirmation: هل أنت متأكد أنك تريد سحب هذا الاقتراح؟
720
+ withdraw_proposal: سحب الاقتراح
721
+ tags:
722
+ changed_from: "(تم التغيير من <u>%{previous_category}</u> بواسطة مسؤول)"
723
+ filed_as: قدم كما
724
+ vote_button:
725
+ already_voted: معتمد بالفعل
726
+ already_voted_hover: سحب الدعم
727
+ maximum_votes_reached: تم الوصول إلى حد الدعم
728
+ no_votes_remaining: لا يدعم المتبقية
729
+ vote: الدعم
730
+ votes_blocked: يدعم المعوقين
731
+ votes_count:
732
+ count:
733
+ zero: يدعم
734
+ one: الدعم
735
+ two: يدعم
736
+ few: يدعم
737
+ many: يدعم
738
+ other: يدعم
739
+ most_popular_proposal: الاقتراح الأكثر شعبية
740
+ need_more_votes: بحاجة الى مزيد من الدعم
741
+ voting_rules:
742
+ can_accumulate_supports_beyond_threshold:
743
+ description: كل اقتراح يمكن أن تتراكم أكثر من %{limit} يدعم
744
+ minimum_votes_per_user:
745
+ description: يجب عليك توزيع ما لا يقل عن %{votes} دعما بين المقترحات المختلفة.
746
+ given_enough_votes: لقد قدمت ما يكفي من الدعم.
747
+ supports_remaining: يجب عليك دعم %{remaining_votes} مقترحات أخرى ليتم أخذها في الاعتبار.
748
+ proposal_limit:
749
+ description: يمكنك إنشاء ما يصل إلى %{limit} مقترحات.
750
+ threshold_per_proposal:
751
+ description: من أجل التحقق من صحة المقترحات تحتاج إلى الوصول إلى %{limit} الدعم
752
+ title: 'الدعامات تخضع للقواعد التالية:'
753
+ vote_limit:
754
+ description: يمكنك دعم ما يصل إلى %{limit} مقترحات.
755
+ left: متبق
756
+ votes: الدعم
757
+ wizard_aside:
758
+ back: الى الخلف
759
+ info: إنك بصدد إنشاء <strong>اقتراح</strong>.
760
+ wizard_steps:
761
+ see_steps: عرض الخطوات
762
+ step_1: إنشاء اقتراحك
763
+ step_2: قارن
764
+ step_3: إكمال
765
+ step_4: انشر اقتراحك
766
+ step_of: الخطوة %{current_step_num} من %{total_steps}
767
+ publish:
768
+ error: كانت هناك مشكلة في نشر الاقتراح.
769
+ success: تم نشر الاقتراح بنجاح.
770
+ update:
771
+ error: كانت هناك مشكلة في حفظ الاقتراح.
772
+ success: تم تحديث الاقتراح بنجاح.
773
+ update_draft:
774
+ error: حدثت مشكلة في حفظ المسودة التعاونية.
775
+ success: تم تحديث مسودة الاقتراح بنجاح.
776
+ versions:
777
+ changes_at_title: التغييرات في "%{title}"
778
+ index:
779
+ title: إصدارات
780
+ stats:
781
+ back_to_collaborative_draft: العودة إلى المسودة التعاونية
782
+ back_to_proposal: العودة إلى الاقتراح
783
+ number_of_versions: إصدارات
784
+ show_all_versions: عرض جميع الإصدارات
785
+ version_author: مؤلف الإصدار
786
+ version_created_at: تم إنشاء الإصدار في
787
+ version_number: رقم الإصدار
788
+ version_number_out_of_total: "%{current_version} من %{total_count}"
789
+ version:
790
+ version_index: الإصدار %{index}
791
+ withdraw:
792
+ errors:
793
+ has_supports: لا يمكن سحب هذا الاقتراح لأنه تلقى دعما مِن قَبل.
794
+ resource_links:
795
+ copied_from_component:
796
+ proposal_proposal: المقترحات ذات الصلة
797
+ included_projects:
798
+ project_result: 'النتائج التي تظهر في هذا المشروع:'
799
+ included_proposals:
800
+ proposal_project: 'اقتراح يظهر في هذه المشاريع:'
801
+ proposal_result: 'اقتراح يظهر في هذه النتائج:'