decidim-conferences 0.17.1 → 0.19.1

This diff has not been reviewed by any users.
Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheet/decidim/conferences/conferences.scss +3 -0
  3. data/app/cells/decidim/conferences/conference_address/show.erb +1 -1
  4. data/app/cells/decidim/conferences/conference_m/footer.erb +1 -1
  5. data/app/cells/decidim/conferences/conference_speaker/show.erb +2 -2
  6. data/app/cells/decidim/conferences/conference_speaker_cell.rb +6 -2
  7. data/app/cells/decidim/conferences/linked_participatory_spaces_cell.rb +6 -0
  8. data/app/cells/decidim/conferences/partner_cell.rb +2 -0
  9. data/app/cells/decidim/conferences/photos_list_cell.rb +1 -0
  10. data/app/cells/decidim/conferences/registration_type_cell.rb +2 -0
  11. data/app/commands/decidim/conferences/admin/confirm_conference_registration.rb +1 -0
  12. data/app/commands/decidim/conferences/admin/create_conference.rb +0 -10
  13. data/app/commands/decidim/conferences/admin/create_conference_admin.rb +1 -0
  14. data/app/commands/decidim/conferences/admin/publish_conference.rb +12 -0
  15. data/app/commands/decidim/conferences/admin/update_conference.rb +6 -2
  16. data/app/commands/decidim/conferences/admin/update_diploma.rb +1 -0
  17. data/app/commands/decidim/conferences/join_conference.rb +2 -0
  18. data/app/commands/decidim/conferences/leave_conference.rb +1 -0
  19. data/app/controllers/decidim/conferences/admin/application_controller.rb +5 -4
  20. data/app/controllers/decidim/conferences/admin/concerns/conference_admin.rb +6 -4
  21. data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +1 -0
  22. data/app/controllers/decidim/conferences/application_controller.rb +6 -5
  23. data/app/controllers/decidim/conferences/conference_program_controller.rb +4 -1
  24. data/app/controllers/decidim/conferences/conference_registrations_controller.rb +1 -0
  25. data/app/controllers/decidim/conferences/conference_speakers_controller.rb +1 -0
  26. data/app/controllers/decidim/conferences/media_controller.rb +1 -0
  27. data/app/controllers/decidim/conferences/registration_types_controller.rb +1 -0
  28. data/app/forms/decidim/conferences/admin/conference_form.rb +4 -0
  29. data/app/forms/decidim/conferences/admin/conference_speaker_form.rb +1 -0
  30. data/app/forms/decidim/conferences/admin/registration_type_form.rb +1 -0
  31. data/app/helpers/decidim/conferences/conference_helper.rb +1 -0
  32. data/app/models/decidim/conference.rb +9 -4
  33. data/app/models/decidim/conference_user_role.rb +1 -0
  34. data/app/permissions/decidim/conferences/permissions.rb +6 -0
  35. data/app/presenters/decidim/conferences/admin_log/value_types/role_presenter.rb +1 -0
  36. data/app/presenters/decidim/log/value_types/conference_presenter.rb +1 -0
  37. data/app/queries/decidim/conferences/admin/admin_users.rb +8 -1
  38. data/app/queries/decidim/conferences/admin/conference_invites.rb +1 -0
  39. data/app/queries/decidim/conferences/admin/conference_speakers.rb +1 -0
  40. data/app/views/decidim/conferences/admin/conference_user_roles/index.html.erb +3 -3
  41. data/app/views/decidim/conferences/admin/conferences/index.html.erb +3 -3
  42. data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma_user.html.erb +1 -1
  43. data/app/views/decidim/conferences/conferences/_partners.html.erb +1 -1
  44. data/app/views/decidim/conferences/conferences/_promoted_conference.html.erb +1 -1
  45. data/app/views/decidim/conferences/conferences/show.html.erb +3 -3
  46. data/app/views/decidim/conferences/media/index.html.erb +2 -2
  47. data/app/views/layouts/decidim/_conference_hero.html.erb +2 -2
  48. data/app/views/layouts/decidim/diploma.html.erb +2 -2
  49. data/config/locales/ar-SA.yml +1 -0
  50. data/config/locales/ar.yml +589 -0
  51. data/config/locales/ca.yml +1 -0
  52. data/config/locales/cs.yml +56 -55
  53. data/config/locales/de.yml +10 -9
  54. data/config/locales/en.yml +1 -0
  55. data/config/locales/eo-UY.yml +1 -0
  56. data/config/locales/es-MX.yml +1 -0
  57. data/config/locales/es-PY.yml +1 -0
  58. data/config/locales/es.yml +1 -0
  59. data/config/locales/eu.yml +1 -0
  60. data/config/locales/fi-plain.yml +1 -0
  61. data/config/locales/fi.yml +1 -0
  62. data/config/locales/fr.yml +95 -94
  63. data/config/locales/gl.yml +1 -0
  64. data/config/locales/hu.yml +4 -3
  65. data/config/locales/id-ID.yml +1 -0
  66. data/config/locales/it.yml +4 -3
  67. data/config/locales/nl.yml +3 -2
  68. data/config/locales/no.yml +117 -0
  69. data/config/locales/pl.yml +1 -0
  70. data/config/locales/pt-BR.yml +1 -0
  71. data/config/locales/pt.yml +1 -0
  72. data/config/locales/sv.yml +204 -203
  73. data/config/locales/tr-TR.yml +1 -0
  74. data/lib/decidim/conferences/participatory_space.rb +1 -0
  75. data/lib/decidim/conferences/version.rb +1 -1
  76. metadata +23 -20
@@ -50,6 +50,7 @@ module Decidim
50
50
  def conference_meetings
51
51
  meeting_components = current_participatory_space.components.where(manifest_name: "meetings")
52
52
  return unless meeting_components || conference_meeting_ids.delete("").present?
53
+
53
54
  @conference_meetings ||= Decidim::ConferenceMeeting.where(component: meeting_components).where(id: conference_meeting_ids)
54
55
  end
55
56
 
@@ -36,6 +36,7 @@ module Decidim
36
36
  def conference_meetings
37
37
  meeting_components = current_participatory_space.components.where(manifest_name: "meetings")
38
38
  return unless meeting_components || conference_meeting_ids.delete("").present?
39
+
39
40
  @conference_meetings ||= Decidim::ConferenceMeeting.where(component: meeting_components).where(id: conference_meeting_ids)
40
41
  end
41
42
  end
@@ -8,6 +8,7 @@ module Decidim
8
8
  #
9
9
  def render_date(conference)
10
10
  return l(conference.start_date, format: :decidim_with_month_name_short) if conference.start_date == conference.end_date
11
+
11
12
  "#{l(conference.start_date, format: :decidim_with_month_name_short)} - #{l(conference.end_date, format: :decidim_with_month_name_short)}"
12
13
  end
13
14
  end
@@ -20,10 +20,7 @@ module Decidim
20
20
  belongs_to :organization,
21
21
  foreign_key: "decidim_organization_id",
22
22
  class_name: "Decidim::Organization"
23
- belongs_to :area,
24
- foreign_key: "decidim_area_id",
25
- class_name: "Decidim::Area",
26
- optional: true
23
+
27
24
  has_many :categories,
28
25
  foreign_key: "decidim_participatory_space_id",
29
26
  foreign_type: "decidim_participatory_space_type",
@@ -87,6 +84,7 @@ module Decidim
87
84
 
88
85
  def has_available_slots?
89
86
  return true if available_slots.zero?
87
+
90
88
  available_slots > conference_registrations.count
91
89
  end
92
90
 
@@ -96,7 +94,14 @@ module Decidim
96
94
 
97
95
  def diploma_sent?
98
96
  return false if diploma_sent_at.nil?
97
+
99
98
  true
100
99
  end
100
+
101
+ def closed?
102
+ return false if end_date.blank?
103
+
104
+ end_date < Date.current
105
+ end
101
106
  end
102
107
  end
@@ -24,6 +24,7 @@ module Decidim
24
24
  # Private: check if the process and the user have the same organization
25
25
  def user_and_conference_same_organization
26
26
  return if !conference || !user
27
+
27
28
  errors.add(:conference, :invalid) unless user.organization == conference.organization
28
29
  end
29
30
  end
@@ -30,6 +30,7 @@ module Decidim
30
30
  end
31
31
 
32
32
  return permission_action unless user
33
+
33
34
  if !has_manageable_conferences? && !user.admin?
34
35
  disallow!
35
36
  return permission_action
@@ -94,12 +95,14 @@ module Decidim
94
95
  # Checks if it has any manageable conference, with any possible role.
95
96
  def has_manageable_conferences?(role: :any)
96
97
  return unless user
98
+
97
99
  conferences_with_role_privileges(role).any?
98
100
  end
99
101
 
100
102
  # Whether the user can manage the given conference or not.
101
103
  def can_manage_conference?(role: :any)
102
104
  return unless user
105
+
103
106
  conferences_with_role_privileges(role).include? conference
104
107
  end
105
108
 
@@ -123,6 +126,7 @@ module Decidim
123
126
 
124
127
  return allow! if user&.admin?
125
128
  return allow! if conference.published?
129
+
126
130
  toggle_allow(can_manage_conference?)
127
131
  end
128
132
 
@@ -222,12 +226,14 @@ module Decidim
222
226
  # Everyone can read the conference list
223
227
  def user_can_read_conference_list?
224
228
  return unless read_conference_list_permission_action?
229
+
225
230
  toggle_allow(user.admin? || has_manageable_conferences?)
226
231
  end
227
232
 
228
233
  def user_can_read_current_conference?
229
234
  return unless read_conference_list_permission_action?
230
235
  return if permission_action.subject == :conference_list
236
+
231
237
  toggle_allow(user.admin? || can_manage_conference?)
232
238
  end
233
239
 
@@ -13,6 +13,7 @@ module Decidim
13
13
  # Returns an HTML-safe String.
14
14
  def present
15
15
  return if value.blank?
16
+
16
17
  h.t(value, scope: "decidim.admin.models.conference_user_role.roles", default: value)
17
18
  end
18
19
  end
@@ -14,6 +14,7 @@ module Decidim
14
14
  def present
15
15
  return unless value
16
16
  return h.translated_attribute(conference.title) if conference
17
+
17
18
  I18n.t("not_found", id: value, scope: "decidim.log.value_types.conference_presenter")
18
19
  end
19
20
 
@@ -23,7 +23,7 @@ module Decidim
23
23
  #
24
24
  # Returns an ActiveRecord::Relation.
25
25
  def query
26
- Decidim::User.where(id: organization_admins)
26
+ Decidim::User.where(id: organization_admins).or(conference_user_admins)
27
27
  end
28
28
 
29
29
  private
@@ -33,6 +33,13 @@ module Decidim
33
33
  def organization_admins
34
34
  conference.organization.admins
35
35
  end
36
+
37
+ def conference_user_admins
38
+ conference_user_admin_ids = Decidim::ConferenceUserRole
39
+ .where(conference: conference, role: :admin)
40
+ .pluck(:decidim_user_id)
41
+ Decidim::User.where(id: conference_user_admin_ids)
42
+ end
36
43
  end
37
44
  end
38
45
  end
@@ -36,6 +36,7 @@ module Decidim
36
36
 
37
37
  def filter_by_search(conference_invites)
38
38
  return conference_invites if @query.blank?
39
+
39
40
  conference_invites.joins(:user).where(
40
41
  User.arel_table[:name].lower.matches("%#{@query}%").or(User.arel_table[:email].lower.matches("%#{@query}%"))
41
42
  )
@@ -32,6 +32,7 @@ module Decidim
32
32
 
33
33
  def filter_by_search(conference_speakers)
34
34
  return conference_speakers if @query.blank?
35
+
35
36
  conference_speakers.where("LOWER(full_name) LIKE LOWER(?)", "%#{@query}%")
36
37
  end
37
38
  end
@@ -25,10 +25,10 @@
25
25
  <% @conference_user_roles.each do |role| %>
26
26
  <tr>
27
27
  <td>
28
- <%= role.user.name %><br />
28
+ <%= role.user.name %><br>
29
29
  </td>
30
30
  <td>
31
- <%= role.user.email %><br />
31
+ <%= role.user.email %><br>
32
32
  </td>
33
33
  <td>
34
34
  <% if role.user.invitation_sent_at %>
@@ -41,7 +41,7 @@
41
41
  <% end %>
42
42
  </td>
43
43
  <td>
44
- <%= t("#{role.role}", scope: "decidim.admin.models.conference_user_role.roles") %><br />
44
+ <%= t("#{role.role}", scope: "decidim.admin.models.conference_user_role.roles") %><br>
45
45
  </td>
46
46
  <td class="table-list__actions">
47
47
  <% if allowed_to?(:invite, :conference_user_role, user_role: role) && role.user.invited_to_sign_up? %>
@@ -26,11 +26,11 @@
26
26
  </span>
27
27
  <% end %>
28
28
  <% if allowed_to? :update, :conference, conference: conference %>
29
- <%= link_to translated_attribute(conference.title), edit_conference_path(conference) %><br />
29
+ <%= link_to translated_attribute(conference.title), edit_conference_path(conference) %><br>
30
30
  <% elsif allowed_to? :preview, :conference, conference: conference %>
31
- <%= link_to translated_attribute(conference.title), decidim_conferences.conference_path(conference) %><br />
31
+ <%= link_to translated_attribute(conference.title), decidim_conferences.conference_path(conference) %><br>
32
32
  <% elsif allowed_to? :read, :moderation, conference: conference %>
33
- <%= link_to translated_attribute(conference.title), moderations_path(conference) %><br />
33
+ <%= link_to translated_attribute(conference.title), moderations_path(conference) %><br>
34
34
  <% else %>
35
35
  <%= translated_attribute(conference.title) %>
36
36
  <% end %>
@@ -10,7 +10,7 @@
10
10
  <h3><%= t("decidim.conferences.admin.send_conference_diploma_mailer.diploma_user.certificate_of_attendance") %></h3>
11
11
  <p><%= t("decidim.conferences.admin.send_conference_diploma_mailer.diploma_user.certificate_of_attendance_description", user: @user.name, title: translated_attribute(@conference.title), location: @conference.location, start: l(@conference.start_date, format: :decidim_short), end: l(@conference.end_date, format: :decidim_short) ).html_safe %></p>
12
12
  </div>
13
- <hr class="reset mt-m mb-m" />
13
+ <hr class="reset mt-m mb-m">
14
14
  <div class="diploma__attendance">
15
15
  <strong><%= t("decidim.conferences.admin.send_conference_diploma_mailer.diploma_user.attendance_verified_by") %></strong>
16
16
  <div>
@@ -1,7 +1,7 @@
1
1
  <% if conference.partners.any? %>
2
2
  <div id="conference-partners">
3
3
  <% conference.partners.group_by(&:partner_type).each do |partner_type, partners| %>
4
- <hr class="reset mt-none mb-m" />
4
+ <hr class="reset mt-none mb-m">
5
5
  <section class="section">
6
6
  <h1 class="section-heading"><%= t(".#{partner_type.pluralize}") %></h1>
7
7
  <div class="row small-up-2 medium-up-3 card-grid">
@@ -17,7 +17,7 @@
17
17
  <div class="card__content row collapse">
18
18
  <div class="large-6 large-offset-6 columns">
19
19
  <%= link_to conference_path(promoted_conference), class: "button expanded button--sc" do %>
20
- <%= t("conferences.promoted_conference.take_part", scope: "layouts.decidim") %>
20
+ <%= t(promoted_conference.cta_button_text_key, scope: "layouts.decidim.conferences.promoted_conference") %>
21
21
  <% end %>
22
22
  </div>
23
23
  </div>
@@ -22,7 +22,7 @@ edit_link(
22
22
  <h4 class="section-heading"><%= t("conferences.show.introduction", scope: "decidim") %></h4>
23
23
  <%= decidim_sanitize translated_attribute(current_participatory_space.short_description) %>
24
24
  </section>
25
- <hr class="reset mt-none mb-m" />
25
+ <hr class="reset mt-none mb-m">
26
26
  <section class="section">
27
27
  <h4 class="section-heading"><%= t("conferences.show.details", scope: "decidim") %></h4>
28
28
  <%= decidim_sanitize translated_attribute(current_participatory_space.description) %>
@@ -53,7 +53,7 @@ edit_link(
53
53
  <%= render_hook(:conference_venues) %>
54
54
 
55
55
  <% if current_participatory_space.registrations_enabled? %>
56
- <hr class="reset mt-none mb-m" />
56
+ <hr class="reset mt-none mb-m">
57
57
  <section class="section">
58
58
  <h4 class="section-heading"><%= t(".register") %></h4>
59
59
  <% if current_user.present? %>
@@ -72,7 +72,7 @@ edit_link(
72
72
  </section>
73
73
  <% end %>
74
74
 
75
- <hr class="reset mt-none mb-m" />
75
+ <hr class="reset mt-none mb-m">
76
76
 
77
77
  <% unless translated_attribute(current_participatory_space.objectives).blank? %>
78
78
  <section class="section">
@@ -16,7 +16,7 @@ edit_link(
16
16
  <h1 class="section-heading"><%= t("media.index.title", scope: "decidim") %></h1>
17
17
  <p><%= t("media.index.description", scope: "decidim") %></p>
18
18
  </section>
19
- <hr class="reset mt-none mb-s" />
19
+ <hr class="reset mt-none mb-s">
20
20
  <section class="media-links">
21
21
  <ul class="list-reset">
22
22
  <% @media_links.each do |media_link| %>
@@ -24,7 +24,7 @@ edit_link(
24
24
  <% end %>
25
25
  </ul>
26
26
  </section>
27
- <hr class="reset mt-none mb-s" />
27
+ <hr class="reset mt-none mb-s">
28
28
  <% end %>
29
29
  <%= attachments_for_conference current_participatory_space %>
30
30
  </div>
@@ -19,10 +19,10 @@
19
19
  <div class="row">
20
20
  <div class="row column medium-8 text-left mt-m">
21
21
  <div class="column medium-6">
22
- <button type="button" class="button hollow light expanded">
22
+ <div class="conference--date button hollow light expanded">
23
23
  <%= participatory_space_helpers.render_date(current_participatory_space) %>
24
24
  <%= current_participatory_space.location %>
25
- </button>
25
+ </div>
26
26
  </div>
27
27
  <% if current_participatory_space.registrations_enabled? %>
28
28
  <div class="column medium-3 end">
@@ -1,8 +1,8 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="<%= I18n.locale %>" class="no-js">
3
3
  <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
- <meta name="viewport" content="width=device-width" />
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
+ <meta name="viewport" content="width=device-width">
6
6
  <%= wicked_pdf_stylesheet_link_tag "decidim/conference-diploma" %>
7
7
  </head>
8
8
  <body>
@@ -565,6 +565,7 @@ ar:
565
565
  take_part: خذ جزء
566
566
  conferences:
567
567
  conference:
568
+ more_info: مزيد من المعلومات
568
569
  take_part: خذ جزء
569
570
  index:
570
571
  promoted_conferences: المؤتمرات البارزة
@@ -0,0 +1,589 @@
1
+ ar:
2
+ activemodel:
3
+ attributes:
4
+ conference:
5
+ assemblies_ids: الجمعيات ذات الصلة
6
+ banner_image: صورة بانر
7
+ consultations_ids: المشاورات ذات الصلة
8
+ copy_categories: نسخ الفئات
9
+ copy_components: نسخ المكونات
10
+ copy_features: نسخ الميزات
11
+ decidim_scope_id: نطاق
12
+ description: وصف
13
+ hashtag: رابطة هاشتاق
14
+ hero_image: الصورة الرئيسية
15
+ participatory_processes_ids: العمليات التشاركية ذات الصلة
16
+ promoted: سلط الضوء
17
+ published_at: نشرت في
18
+ scope_id: نطاق
19
+ scopes_enabled: تم تمكين النطاقات
20
+ short_description: وصف قصير
21
+ show_statistics: عرض الإحصائيات
22
+ slogan: شعار
23
+ slug: سبيكة العنوان الشبكي
24
+ title: عنوان
25
+ conference_speaker:
26
+ full_name: الاسم الكامل
27
+ conference_user_role:
28
+ email: البريد الإلكتروني
29
+ name: اسم
30
+ role: وظيفة
31
+ errors:
32
+ models:
33
+ conference_registration_invite:
34
+ attributes:
35
+ email:
36
+ already_invited: تمت دعوة هذا البريد الإلكتروني بالفعل
37
+ activerecord:
38
+ models:
39
+ decidim/conference:
40
+ zero: المؤتمرات
41
+ one: مؤتمر
42
+ two: المؤتمرات
43
+ few: المؤتمرات
44
+ many: المؤتمرات
45
+ other: المؤتمرات
46
+ decidim/conference_speaker:
47
+ zero: المتحدثون في المؤتمر
48
+ one: رئيس المؤتمر
49
+ two: المتحدثون في المؤتمر
50
+ few: المتحدثون في المؤتمر
51
+ many: المتحدثون في المؤتمر
52
+ other: المتحدثون في المؤتمر
53
+ decidim/conference_user_role:
54
+ zero: أدوار مستخدم المؤتمر
55
+ one: دور مستخدم المؤتمر
56
+ two: أدوار مستخدم المؤتمر
57
+ few: أدوار مستخدم المؤتمر
58
+ many: أدوار مستخدم المؤتمر
59
+ other: أدوار مستخدم المؤتمر
60
+ decidim:
61
+ admin:
62
+ actions:
63
+ confirm: تؤكد
64
+ new_conference: مؤتمر جديد
65
+ send_diplomas: إرسال شهادات الحضور
66
+ conference_copies:
67
+ new:
68
+ copy: نسخ
69
+ select: حدد البيانات التي ترغب في تكرارها
70
+ title: مؤتمر مكرر
71
+ conference_publications:
72
+ create:
73
+ error: كانت هناك مشكلة في نشر هذا المؤتمر.
74
+ success: تم نشر المؤتمر بنجاح.
75
+ destroy:
76
+ error: كانت هناك مشكلة في إلغاء نشر هذا المؤتمر.
77
+ success: مؤتمر غير منشور بنجاح.
78
+ conference_registration:
79
+ confirm:
80
+ error: حدثت مشكلة في تأكيد تسجيل المؤتمر هذا.
81
+ success: تم تأكيد تسجيل المؤتمر بنجاح.
82
+ conference_speakers:
83
+ create:
84
+ error: حدثت مشكلة أثناء إضافة متحدث إلى هذا المؤتمر.
85
+ success: رئيس المؤتمر تم إنشاؤه بنجاح.
86
+ destroy:
87
+ success: تم حذف رئيس المؤتمر بنجاح.
88
+ edit:
89
+ title: تحديث المتحدث المؤتمر.
90
+ update: تحديث
91
+ index:
92
+ conference_speakers_title: المتحدثون في المؤتمر
93
+ new:
94
+ create: إنشاء
95
+ title: رئيس المؤتمر الجديد.
96
+ update:
97
+ error: حدثت مشكلة أثناء تحديث متحدث المؤتمر هذا.
98
+ success: تم تحديث مكبر صوت المؤتمر بنجاح.
99
+ conference_user_roles:
100
+ create:
101
+ error: حدثت مشكلة أثناء إضافة مشرف إلى هذا المؤتمر.
102
+ success: تمت إضافة مسؤول المؤتمر بنجاح.
103
+ destroy:
104
+ success: تمت إزالة مسؤول المؤتمر بنجاح.
105
+ edit:
106
+ title: تحديث مسؤول المؤتمر.
107
+ update: تحديث
108
+ index:
109
+ conference_admins_title: مدراء المؤتمر
110
+ new:
111
+ create: إنشاء
112
+ title: مشرف المؤتمر الجديد.
113
+ update:
114
+ error: حدثت مشكلة أثناء تحديث مشرف المؤتمر هذا.
115
+ success: تم تحديث مشرف المؤتمر بنجاح.
116
+ conferences:
117
+ create:
118
+ error: كانت هناك مشكلة في إنشاء هذا المؤتمر.
119
+ success: تم إنشاء المؤتمر بنجاح.
120
+ edit:
121
+ update: تحديث
122
+ exports:
123
+ registrations: التسجيلات
124
+ form:
125
+ title: معلومات عامة
126
+ index:
127
+ not_published: غير منشور
128
+ published: نشرت
129
+ new:
130
+ create: إنشاء
131
+ title: مؤتمر
132
+ update:
133
+ error: حدثت مشكلة أثناء تحديث هذا المؤتمر.
134
+ success: تم تحديث المؤتمر بنجاح.
135
+ conferences_copies:
136
+ create:
137
+ error: كانت هناك مشكلة في تكرار هذا المؤتمر.
138
+ success: تم تكرار المؤتمر بنجاح.
139
+ media_links:
140
+ create:
141
+ error: حدثت مشكلة أثناء إنشاء رابط وسائط جديد.
142
+ success: تم إنشاء رابط الوسائط بنجاح.
143
+ destroy:
144
+ success: تم حذف رابط الوسائط بنجاح.
145
+ edit:
146
+ title: تحديث رابط الوسائط.
147
+ update: تحديث
148
+ index:
149
+ media_links_title: روابط الوسائط
150
+ new:
151
+ create: إنشاء
152
+ title: وصلة الوسائط
153
+ update:
154
+ error: حدثت مشكلة أثناء تحديث رابط الوسائط هذا.
155
+ success: تم تحديث رابط الوسائط بنجاح.
156
+ menu:
157
+ conferences: المؤتمرات
158
+ conferences_submenu:
159
+ attachment_collections: المجلدات
160
+ attachment_files: ملفات
161
+ attachments: مرفقات
162
+ categories: الاقسام
163
+ components: المكونات
164
+ conference_invites: تدعو
165
+ conference_speakers: مكبرات الصوت
166
+ diploma: شهادة حضور
167
+ info: معلومات
168
+ media_links: روابط الوسائط
169
+ moderations: الإعتدال
170
+ partners: شركاء
171
+ registration_types: أنواع التسجيل
172
+ registrations: التسجيلات
173
+ user_registrations: تسجيلات المستخدم
174
+ models:
175
+ conference:
176
+ fields:
177
+ created_at: أنشئت في
178
+ promoted: سلط الضوء
179
+ published: نشرت
180
+ title: عنوان
181
+ conference_speaker:
182
+ fields:
183
+ affiliation: الانتماء
184
+ full_name: الاسم الكامل
185
+ position: موضع
186
+ name: رئيس المؤتمر
187
+ conference_user_role:
188
+ fields:
189
+ email: البريد الإلكتروني
190
+ name: اسم
191
+ role: وظيفة
192
+ name: إدارة المؤتمر
193
+ roles:
194
+ admin: مدير
195
+ collaborator: متعاون
196
+ moderator: وسيط
197
+ media_link:
198
+ fields:
199
+ date: تاريخ
200
+ link: حلقة الوصل
201
+ title: عنوان
202
+ name: وصلة الوسائط
203
+ partner:
204
+ fields:
205
+ link: حلقة الوصل
206
+ logo: شعار
207
+ name: اسم
208
+ partner_type: نوع
209
+ name: شريك
210
+ types:
211
+ collaborator: متعاون
212
+ main_promotor: المروج الرئيسي
213
+ registration_type:
214
+ fields:
215
+ conference_meetings: اجتماعات المؤتمر
216
+ price: السعر
217
+ registrations_count: عدد التسجيلات
218
+ title: عنوان
219
+ weight: وزن
220
+ name: نوع التسجيل
221
+ partners:
222
+ create:
223
+ error: حدثت مشكلة أثناء إضافة شريك لهذا المؤتمر.
224
+ success: وأضاف شريك المؤتمر بنجاح.
225
+ destroy:
226
+ success: تمت إزالة شريك المؤتمر بنجاح.
227
+ edit:
228
+ title: تحديث شريك.
229
+ update: تحديث
230
+ new:
231
+ create: إنشاء
232
+ title: شريك جديد
233
+ update:
234
+ error: حدثت مشكلة أثناء تحديث شريك لهذا المؤتمر.
235
+ success: تم تحديث شريك المؤتمر بنجاح.
236
+ registration_type_publications:
237
+ create:
238
+ error: حدثت مشكلة أثناء نشر نوع التسجيل هذا.
239
+ success: نوع التسجيل نشر بنجاح.
240
+ destroy:
241
+ error: حدثت مشكلة في إلغاء نشر نوع التسجيل هذا.
242
+ success: نوع التسجيل غير منشور بنجاح.
243
+ registration_types:
244
+ create:
245
+ error: حدثت مشكلة أثناء إضافة نوع التسجيل لهذا المؤتمر.
246
+ success: تمت إضافة نوع تسجيل المؤتمر بنجاح.
247
+ destroy:
248
+ success: تمت إزالة نوع تسجيل المؤتمر بنجاح.
249
+ edit:
250
+ title: تحديث نوع التسجيل.
251
+ update: تحديث
252
+ new:
253
+ create: إنشاء
254
+ title: نوع التسجيل الجديد
255
+ update:
256
+ error: حدثت مشكلة أثناء تحديث نوع التسجيل لهذا المؤتمر.
257
+ success: تم تحديث نوع تسجيل المؤتمر بنجاح.
258
+ titles:
259
+ conferences: المؤتمرات
260
+ admin_log:
261
+ conference:
262
+ create: "%{user_name} أنشأ المؤتمر %{resource_name}"
263
+ publish: "%{user_name} نشر المؤتمر %{resource_name}"
264
+ send_conference_diplomas: "أرسلت %{user_name} شهادات حضور إلى %{resource_name} atendees المؤتمر"
265
+ unpublish: "%{user_name} غير منشور في المؤتمر %{resource_name}"
266
+ update: "%{user_name} تحديث المؤتمر %{resource_name}"
267
+ update_diploma: "%{user_name} تحديث شهادات تكوين الحضور لمؤتمر %{resource_name}"
268
+ conference_speaker:
269
+ create: "%{user_name} أنشأ المتكلم %{resource_name} في المؤتمر %{space_name}"
270
+ delete: "%{user_name} أزال المتحدث %{resource_name} من المؤتمر %{space_name}"
271
+ update: "%{user_name} تحديث المتكلم %{resource_name} في المؤتمر %{space_name}"
272
+ conference_user_role:
273
+ create: "%{user_name} دعا %{resource_name} إلى %{space_name} المؤتمر"
274
+ delete: "%{user_name} أزال المشرف %{resource_name} من المؤتمر %{space_name}"
275
+ update: "%{user_name} غير دور %{resource_name} في المؤتمر %{space_name}"
276
+ conferences:
277
+ conference_registration:
278
+ confirm: "%{user_name} أكد تسجيل مؤتمر في مؤتمر %{resource_name}"
279
+ partner:
280
+ create: "%{user_name} أنشأ %{resource_name} إلى %{space_name} المؤتمر"
281
+ delete: "%{user_name} أزال المشرف %{resource_name} من المؤتمر %{space_name}"
282
+ update: "%{user_name} محدث %{resource_name} في المؤتمر %{space_name}"
283
+ registration_type:
284
+ create: "%{user_name} أنشأ نوع التسجيل %{resource_name} في المؤتمر %{space_name}"
285
+ publish: "%{user_name} نشر نوع التسجيل %{resource_name} في المؤتمر %{space_name}"
286
+ unpublish: "%{user_name} غير منشور نوع التسجيل %{resource_name} في المؤتمر %{space_name}"
287
+ update: "%{user_name} بتحديث نوع التسجيل %{resource_name} في المؤتمر %{space_name}"
288
+ media_link:
289
+ create: "%{user_name} أنشأ رابط الوسائط %{resource_name} في المؤتمر %{space_name}"
290
+ delete: "%{user_name} أزال رابط الوسائط %{resource_name} من المؤتمر %{space_name}"
291
+ update: "%{user_name} بتحديث رابط الوسائط %{resource_name} في المؤتمر %{space_name}"
292
+ conference_program:
293
+ index:
294
+ title: برنامج
295
+ conference_speakers:
296
+ index:
297
+ title: مكبرات الصوت
298
+ conferences:
299
+ admin:
300
+ conference_copies:
301
+ form:
302
+ slug_help: 'يتم استخدام slugs URL لإنشاء عناوين URL التي تشير إلى هذا المؤتمر. يقبل الحروف والأرقام والشرطات فقط ، ويجب أن يبدأ بحرف. مثال: %{url}'
303
+ conference_invites:
304
+ create:
305
+ error: حدثت مشكلة أثناء دعوة المشارك للانضمام إلى المؤتمر.
306
+ success: تمت دعوة المشارك بنجاح للانضمام إلى المؤتمر.
307
+ form:
308
+ attendee_type: نوع الحضور
309
+ existing_user: المشارك الحالي
310
+ invite_explanation: سيتم دعوة المشارك للانضمام إلى المؤتمر وإلى المنظمة أيضًا.
311
+ non_user: مشارك غير موجود
312
+ select_user: اختر المشارك
313
+ index:
314
+ filter:
315
+ accepted: وافقت
316
+ all: الكل
317
+ rejected: مرفوض
318
+ sent: أرسلت
319
+ filter_by: مصنف بواسطة
320
+ invite_attendee: دعوة مشارك
321
+ invites: تدعو
322
+ search: بحث
323
+ new:
324
+ explanation: سيدعى المشارك للانضمام إلى مؤتمر. إذا لم يتم تسجيل بريدها الإلكتروني ، فستتم دعوتها إلى المنظمة أيضًا.
325
+ invite: دعا
326
+ new_invite: دعوة مشارك
327
+ conference_registrations:
328
+ index:
329
+ registrations: التسجيلات
330
+ conference_speakers:
331
+ form:
332
+ existing_user: المشارك الحالي
333
+ non_user: غير مشارك
334
+ select_user: اختر المشارك
335
+ user_type: نوع المشارك
336
+ index:
337
+ search: بحث
338
+ conferences:
339
+ form:
340
+ available_slots_help: اتركه إلى 0 إذا كان لديك فتحات غير محدودة المتاحة.
341
+ registrations_count:
342
+ zero: كان هناك %{count} التسجيلات.
343
+ one: كان هناك 1 تسجيل.
344
+ two: كان هناك %{count} التسجيلات.
345
+ few: كان هناك %{count} التسجيلات.
346
+ many: كان هناك %{count} التسجيلات.
347
+ other: كان هناك %{count} التسجيلات.
348
+ slug_help: 'يتم استخدام slugs URL لإنشاء عناوين URL التي تشير إلى هذا المؤتمر. يقبل الحروف والأرقام والشرطات فقط ، ويجب أن يبدأ بحرف. مثال: %{url}'
349
+ diplomas:
350
+ edit:
351
+ save: حفظ
352
+ title: شهادة حضور
353
+ invite_join_conference_mailer:
354
+ invite:
355
+ decline: رفض الدعوة "%{conference_title}"
356
+ invited_you_to_join_a_conference: "%{invited_by} للانضمام إلى مؤتمر في %{application}. يمكنك رفضه أو قبوله من خلال الروابط أدناه."
357
+ registration: التسجيل لـ "%{conference_title}"
358
+ partners:
359
+ index:
360
+ title: شركاء
361
+ registration_types:
362
+ form:
363
+ select_conference_meetings: حدد اجتماعات المؤتمر
364
+ index:
365
+ title: أنواع التسجيل
366
+ send_conference_diploma_mailer:
367
+ diploma:
368
+ diploma_html: ستجد شهادة حضور المؤتمر <a href="%{url}">%{title}</a> في المرفقات.
369
+ diploma_user:
370
+ attendance_verified_by: تم التحقق من الحضور بواسطة
371
+ certificate_of_attendance: شهادة حضور
372
+ certificate_of_attendance_description: هذا هو التأكيد على أن <strong>%{user}</strong> قد حضر وشارك في <strong>%{title}</strong> الذي عقد في <strong>%{location}</strong> في <strong>%{start} - %{end}</strong>
373
+ send_diploma:
374
+ error: حدثت مشكلة أثناء إرسال شهادات حضور المؤتمر.
375
+ success: تم إرسال شهادات حضور المؤتمر بنجاح
376
+ conference:
377
+ registration_confirm:
378
+ cancel: إلغاء
379
+ confirm: تؤكد
380
+ show:
381
+ free: حر
382
+ going: حضور
383
+ no_slots_available: لا فتحات المتاحة
384
+ registration: التسجيل
385
+ conference_program:
386
+ program_meeting:
387
+ content: يحتوى
388
+ location: موقعك
389
+ speakers: مكبرات الصوت
390
+ streaming: تدفق
391
+ show:
392
+ day: يوم
393
+ program: برنامج
394
+ conference_registration_mailer:
395
+ confirmation:
396
+ confirmed_html: تم تأكيد تسجيلك للمؤتمر <a href="%{url}">%{title}</a>.
397
+ details_1: 'أنت مسجل في المؤتمر مع %{registration_type} نوع. تبلغ تكلفتها %{price} ويمكنك حضور الأحداث التالية:'
398
+ pending_validation:
399
+ confirmation_pending: سوف تتلقى التأكيد قريبا
400
+ details: 'لقد قمت بالتسجيل إلى %{registration_type} نوع بتكلفة %{price} ويمكنك حضور الأحداث التالية:'
401
+ pending_html: تسجيلك في المؤتمر <a href="%{url}">%{title}</a> انتظار التأكيد.
402
+ conference_registrations:
403
+ create:
404
+ invalid: كانت هناك مشكلة في الانضمام إلى هذا المؤتمر.
405
+ success: لقد انضممت بنجاح إلى المؤتمر.
406
+ decline_invitation:
407
+ invalid: حدثت مشكلة في رفض الدعوة.
408
+ success: لقد رفضت الدعوة بنجاح.
409
+ destroy:
410
+ invalid: حدثت مشكلة أثناء مغادرة هذا المؤتمر.
411
+ success: لقد تركت المؤتمر بنجاح.
412
+ conference_speaker:
413
+ go_to_twitter: انتقل إلى تويتر
414
+ more_info: مزيد من المعلومات
415
+ personal_website: موقع الويب الشخصي
416
+ show:
417
+ more_info: مزيد من المعلومات
418
+ conference_speaker_cell:
419
+ personal_url:
420
+ personal_website: موقع الويب الشخصي
421
+ twitter_handle:
422
+ go_to_twitter: انتقل إلى تويتر
423
+ conference_speakers:
424
+ index:
425
+ speakers: مكبرات الصوت
426
+ conferences:
427
+ partners:
428
+ collaborators: شركاء
429
+ main_promotors: المنظمون
430
+ show:
431
+ login_as: تم تسجيل دخولك كـ %{name} <%{email}>
432
+ make_conference_registration: 'اجعل تسجيلك في المؤتمر:'
433
+ register: تسجيل
434
+ content_blocks:
435
+ highlighted_conferences:
436
+ name: المؤتمرات البارزة
437
+ index:
438
+ title: المؤتمرات
439
+ mailer:
440
+ conference_registration_mailer:
441
+ confirmation:
442
+ subject: تم تأكيد تسجيل مؤتمرك
443
+ pending_validation:
444
+ subject: تسجيل مؤتمرك في انتظار التأكيد
445
+ invite_join_conference_mailer:
446
+ invite:
447
+ subject: دعوة للانضمام إلى مؤتمر
448
+ send_conference_diploma_mailer:
449
+ diploma:
450
+ subject: تم إرسال شهادة حضور المؤتمر
451
+ models:
452
+ conference_invite:
453
+ fields:
454
+ email: البريد الإلكتروني
455
+ name: اسم
456
+ registration_type: نوع التسجيل
457
+ sent_at: أرسلت في
458
+ status: الحالة
459
+ status:
460
+ accepted: مقبول (%{at})
461
+ rejected: مرفوض (%{at})
462
+ sent: أرسلت
463
+ conference_registration:
464
+ fields:
465
+ email: البريد الإلكتروني
466
+ name: اسم
467
+ registration_type: نوع التسجيل
468
+ state: الحالة
469
+ states:
470
+ confirmed: تم تأكيد
471
+ pending: قيد الانتظار
472
+ pages:
473
+ home:
474
+ highlighted_conferences:
475
+ active_conferences: المؤتمرات النشطة
476
+ see_all_conferences: رؤية جميع المؤتمرات
477
+ photo:
478
+ show:
479
+ close_modal: إغلاق مشروط
480
+ photo: صورة
481
+ photos_list:
482
+ show:
483
+ related_photos: صور
484
+ registration_types:
485
+ index:
486
+ choose_an_option: 'اختر خيار التسجيل الخاص بك:'
487
+ login_as: تم تسجيل دخولك كـ %{name} <%{email}>
488
+ register: تسجيل
489
+ title: أنواع التسجيل
490
+ shared:
491
+ conference_user_login:
492
+ already_account: هل تمتلك حسابًا مِن قبلُ على ديسيديم؟
493
+ new_user: مستخدم جديد؟
494
+ sign_in: تسجيل الدخول للتسجيل في المؤتمر
495
+ sign_up: إنشاء حساب في decidim للتسجيل في المؤتمر
496
+ show:
497
+ details: تفاصيل
498
+ introduction: المقدمة
499
+ objectives: الأهداف
500
+ related_assemblies: الجمعيات ذات الصلة
501
+ related_consultations: المشاورات ذات الصلة
502
+ related_participatory_processes: العمليات التشاركية ذات الصلة
503
+ statistics:
504
+ answers_count: الأجوبة
505
+ comments_count: تعليقات
506
+ conference_count: المؤتمرات
507
+ debates_count: المناقشات
508
+ endorsements_count: موافقات
509
+ headline: نشاط
510
+ meetings_count: اجتماعات
511
+ orders_count: الدعم
512
+ pages_count: صفحات
513
+ posts_count: المشاركات
514
+ projects_count: مشاريع
515
+ proposals_count: اقتراحات
516
+ results_count: النتائج
517
+ surveys_count: الدراسات الاستقصائية
518
+ users_count: المشاركين
519
+ votes_count: الدعم
520
+ events:
521
+ conferences:
522
+ conference_registration_confirmed:
523
+ notification_title: تم تأكيد تسجيلك للمؤتمر <a href="%{resource_url}">%{resource_title}</a>.
524
+ conference_registration_validation_pending:
525
+ notification_title: تسجيلك في المؤتمر <a href="%{resource_url}">%{resource_title}</a> انتظار التأكيد.
526
+ conference_registrations_over_percentage:
527
+ email_intro: فتحات "%{resource_title}" التي شغلها المؤتمر تجاوزت %{percentage}٪.
528
+ email_outro: لقد تلقيت هذا الإشعار لأنك مسؤول عن المساحة التشاركية للمؤتمر.
529
+ email_subject: '"%{resource_title}" فتحات احتل المؤتمر أكثر من %{percentage}٪'
530
+ notification_title: و <a href="%{resource_path}">%{resource_title}</a> احتل مؤتمر فتحات ما يزيد على %{percentage}٪.
531
+ conference_updated:
532
+ email_intro: 'تم تحديث مؤتمر "%{resource_title}". يمكنك قراءة الإصدار الجديد من صفحته:'
533
+ email_outro: لقد تلقيت هذا الإشعار لأنك تتابع مؤتمر "%{resource_title}". يمكنك إلغاء تتبعه من الرابط السابق.
534
+ email_subject: تم تحديث مؤتمر "%{resource_title}"
535
+ notification_title: تم تحديث مؤتمر <a href="%{resource_path}">%{resource_title}</a>.
536
+ registrations_enabled:
537
+ email_intro: 'لقد مكّن المؤتمر "%{resource_title}" التسجيلات. يمكنك تسجيل نفسك على صفحتها:'
538
+ email_outro: لقد تلقيت هذا الإشعار لأنك تتابع مؤتمر "%{resource_title}". يمكنك إلغاء تتبعه من الرابط السابق.
539
+ email_subject: لقد مكّن المؤتمر "%{resource_title}" التسجيلات.
540
+ notification_title: لقد مكّن المؤتمر <a href="%{resource_path}">%{resource_title}</a> التسجيلات.
541
+ upcoming_conference:
542
+ email_intro: 'يعقد مؤتمر "%{resource_title}" خلال يومين. يمكنك قراءة الوصف من صفحتها:'
543
+ email_outro: لقد تلقيت هذا الإشعار لأنك تتابع مؤتمر "%{resource_title}". يمكنك إلغاء تتبعه من الرابط السابق.
544
+ email_subject: مؤتمر "%{resource_title}" قادم!
545
+ notification_title: المؤتمر <a href="%{resource_path}">%{resource_title}</a> قادم في يومين.
546
+ log:
547
+ value_types:
548
+ conference_presenter:
549
+ not_found: 'لم يتم العثور على المؤتمر في قاعدة البيانات (المعرف: %{id})'
550
+ media:
551
+ index:
552
+ description: روابط حول هذا المؤتمر
553
+ title: وسائل الإعلام والروابط
554
+ menu:
555
+ conferences: المؤتمرات
556
+ devise:
557
+ mailer:
558
+ join_conference:
559
+ subject: دعوة للانضمام إلى مؤتمر
560
+ layouts:
561
+ decidim:
562
+ conference_hero:
563
+ register: تسجيل
564
+ conference_widgets:
565
+ show:
566
+ take_part: خذ جزء
567
+ conferences:
568
+ conference:
569
+ more_info: مزيد من المعلومات
570
+ take_part: خذ جزء
571
+ index:
572
+ promoted_conferences: المؤتمرات البارزة
573
+ order_by_conferences:
574
+ conferences:
575
+ zero: "%{count} مؤتمرات"
576
+ one: "%{count} مؤتمر"
577
+ two: "%{count} مؤتمرات"
578
+ few: "%{count} مؤتمرات"
579
+ many: "%{count} مؤتمرات"
580
+ other: "%{count} مؤتمرات"
581
+ promoted_conference:
582
+ more_info: مزيد من المعلومات
583
+ take_part: خذ جزء
584
+ conferences_nav:
585
+ conference_menu_item: معلومات
586
+ conference_partners_menu_item: شركاء
587
+ conference_speaker_menu_item: مكبرات الصوت
588
+ media: وسائل الإعلام
589
+ venues: أماكن