decidim-core 0.30.0.rc2 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/amendable/amendments/show.erb +1 -1
  3. data/app/cells/decidim/participatory_space_dropdown_metadata/show.erb +5 -3
  4. data/app/cells/decidim/profile_actions/show.erb +1 -1
  5. data/app/cells/decidim/report_button/already_reported_modal.erb +2 -2
  6. data/app/cells/decidim/report_button/flag_modal.erb +13 -27
  7. data/app/cells/decidim/report_button_cell.rb +2 -8
  8. data/app/cells/decidim/report_user_button/already_reported_modal.erb +11 -0
  9. data/app/cells/decidim/report_user_button/flag_modal.erb +46 -0
  10. data/app/cells/decidim/report_user_button/show.erb +2 -0
  11. data/app/cells/decidim/report_user_button_cell.rb +59 -0
  12. data/app/cells/decidim/resource_types_filter/show.erb +1 -1
  13. data/app/cells/decidim/resource_types_filter_cell.rb +6 -6
  14. data/app/cells/decidim/user_activity/show.erb +1 -1
  15. data/app/commands/decidim/create_omniauth_registration.rb +14 -8
  16. data/app/commands/decidim/create_report.rb +1 -6
  17. data/app/commands/decidim/search.rb +14 -0
  18. data/app/controllers/decidim/profiles_controller.rb +2 -2
  19. data/app/controllers/decidim/reports_controller.rb +1 -1
  20. data/app/controllers/decidim/user_activities_controller.rb +1 -1
  21. data/app/forms/decidim/account_form.rb +5 -2
  22. data/app/jobs/decidim/hide_child_resources_job.rb +3 -3
  23. data/app/jobs/decidim/migrate/paper_trail_job.rb +33 -0
  24. data/app/mailers/decidim/reported_mailer.rb +1 -0
  25. data/app/models/decidim/action_log.rb +1 -9
  26. data/app/models/decidim/user.rb +0 -4
  27. data/app/models/decidim/user_base_entity.rb +4 -0
  28. data/app/packs/src/decidim/datepicker/datepicker_functions.js +3 -3
  29. data/app/packs/src/decidim/index.js +4 -2
  30. data/app/packs/src/decidim/sticky_footer.js +19 -0
  31. data/app/packs/stylesheets/decidim/_cards.scss +4 -0
  32. data/app/packs/stylesheets/decidim/_content_blocks.scss +5 -1
  33. data/app/packs/stylesheets/decidim/_header.scss +6 -2
  34. data/app/packs/stylesheets/decidim/_login.scss +4 -0
  35. data/app/packs/stylesheets/decidim/_modal_authorization.scss +1 -1
  36. data/app/packs/stylesheets/decidim/_profile.scss +1 -1
  37. data/app/presenters/decidim/log/user_presenter.rb +1 -0
  38. data/app/presenters/decidim/user_presenter.rb +1 -1
  39. data/app/resolvers/decidim/meta_image_url_resolver.rb +1 -0
  40. data/app/services/decidim/base_diff_renderer.rb +2 -0
  41. data/app/services/decidim/static_map_generator.rb +1 -1
  42. data/app/views/decidim/devise/registrations/new.html.erb +1 -1
  43. data/app/views/decidim/devise/sessions/new.html.erb +1 -1
  44. data/app/views/decidim/devise/shared/_omniauth_buttons.html.erb +1 -1
  45. data/app/views/decidim/last_activities/index.html.erb +1 -1
  46. data/app/views/decidim/open_data/index.html.erb +1 -1
  47. data/app/views/decidim/reported_mailer/hide.html.erb +17 -1
  48. data/app/views/decidim/reported_mailer/report.html.erb +1 -1
  49. data/app/views/decidim/searches/_count.html.erb +1 -1
  50. data/app/views/decidim/searches/_filters.html.erb +40 -38
  51. data/app/views/layouts/decidim/footer/_main_legal.html.erb +1 -1
  52. data/config/locales/ar.yml +15 -28
  53. data/config/locales/bg.yml +10 -24
  54. data/config/locales/bs-BA.yml +2 -0
  55. data/config/locales/ca-IT.yml +2400 -0
  56. data/config/locales/ca.yml +43 -35
  57. data/config/locales/cs.yml +25 -32
  58. data/config/locales/de.yml +19 -25
  59. data/config/locales/el.yml +10 -15
  60. data/config/locales/en.yml +24 -16
  61. data/config/locales/eo.yml +2 -0
  62. data/config/locales/es-MX.yml +39 -31
  63. data/config/locales/es-PY.yml +44 -36
  64. data/config/locales/es.yml +42 -34
  65. data/config/locales/eu.yml +104 -98
  66. data/config/locales/fi-plain.yml +14 -28
  67. data/config/locales/fi.yml +15 -29
  68. data/config/locales/fr-CA.yml +74 -24
  69. data/config/locales/fr.yml +73 -23
  70. data/config/locales/ga-IE.yml +4 -4
  71. data/config/locales/gl.yml +25 -14
  72. data/config/locales/hu.yml +9 -23
  73. data/config/locales/id-ID.yml +24 -15
  74. data/config/locales/is-IS.yml +10 -0
  75. data/config/locales/it.yml +34 -26
  76. data/config/locales/ja.yml +188 -27
  77. data/config/locales/lb.yml +24 -22
  78. data/config/locales/lt.yml +5 -17
  79. data/config/locales/lv.yml +18 -15
  80. data/config/locales/nl.yml +22 -17
  81. data/config/locales/no.yml +18 -16
  82. data/config/locales/pl.yml +6 -20
  83. data/config/locales/pt-BR.yml +11 -24
  84. data/config/locales/pt.yml +18 -16
  85. data/config/locales/ro-RO.yml +187 -20
  86. data/config/locales/ru.yml +23 -8
  87. data/config/locales/sk.yml +29 -18
  88. data/config/locales/sr-CS.yml +2 -0
  89. data/config/locales/sv.yml +30 -26
  90. data/config/locales/tr-TR.yml +24 -23
  91. data/config/locales/uk.yml +12 -1
  92. data/config/locales/zh-CN.yml +18 -15
  93. data/config/locales/zh-TW.yml +8 -16
  94. data/db/migrate/20240722215500_change_object_changes_on_versions.rb +4 -24
  95. data/lib/decidim/asset_router/storage.rb +7 -2
  96. data/lib/decidim/attributes/time_with_zone.rb +5 -1
  97. data/lib/decidim/content_parsers/blob_parser.rb +10 -8
  98. data/lib/decidim/content_parsers/user_parser.rb +1 -1
  99. data/lib/decidim/core/test/shared_examples/reports_examples.rb +8 -15
  100. data/lib/decidim/core/test/shared_examples/uncommentable_component_examples.rb +26 -0
  101. data/lib/decidim/core/test/shared_examples/versions_controller_examples.rb +26 -0
  102. data/lib/decidim/core/version.rb +1 -1
  103. data/lib/decidim/map/provider/static_map/here.rb +34 -0
  104. data/lib/decidim/moderation_tools.rb +14 -8
  105. data/lib/decidim/nicknamizable.rb +1 -1
  106. data/lib/decidim/participatory_space_user.rb +1 -3
  107. data/lib/decidim/reportable.rb +6 -2
  108. data/lib/decidim/translatable_attributes.rb +5 -1
  109. data/lib/tasks/upgrade/decidim_fix_nickname_uniqueness.rake +23 -20
  110. metadata +12 -14
  111. data/app/cells/decidim/author/flag.erb +0 -6
  112. data/app/cells/decidim/author/flag_user.erb +0 -14
  113. data/app/cells/decidim/flag_modal/flag_user.erb +0 -34
  114. data/app/cells/decidim/flag_modal/show.erb +0 -52
  115. data/app/cells/decidim/flag_modal_cell.rb +0 -56
  116. data/app/cells/decidim/profile_sidebar/show.erb +0 -167
  117. data/app/cells/decidim/profile_sidebar_cell.rb +0 -68
  118. data/lib/tasks/upgrade/clean_hidden_resources.rake +0 -33
@@ -8,12 +8,27 @@
8
8
 
9
9
  const footer = document.querySelector("footer");
10
10
  const stickyButtons = document.querySelector("[data-sticky-buttons]");
11
+ import { screens } from "tailwindcss/defaultTheme"
11
12
 
13
+ /**
14
+ * Checks if a key is in the current viewport
15
+ *
16
+ * @param {('sm'|'md'|'lg'|'xl'|'2xl')} key - The key to check the screen size.
17
+ * @returns {boolean} - Returns true if the screen size corresponds with the key
18
+ */
19
+ const isScreenSize = (key) => {
20
+ return window.matchMedia(`(min-width: ${screens[key]})`).matches;
21
+ }
12
22
  const adjustCtasButtons = () => {
13
23
  if (!stickyButtons) {
14
24
  return;
15
25
  }
16
26
 
27
+ if (isScreenSize("md")) {
28
+ footer.style.marginBottom = "0px";
29
+ return;
30
+ }
31
+
17
32
  const marginBottom = stickyButtons.offsetHeight;
18
33
  footer.style.marginBottom = `${marginBottom}px`;
19
34
  };
@@ -26,4 +41,8 @@ if (stickyButtons) {
26
41
  document.addEventListener("on:toggle", () => {
27
42
  adjustCtasButtons();
28
43
  });
44
+
45
+ window.addEventListener("resize", () => {
46
+ adjustCtasButtons();
47
+ });
29
48
  }
@@ -151,6 +151,10 @@
151
151
  }
152
152
  }
153
153
 
154
+ & > div.success {
155
+ @apply text-sm text-success;
156
+ }
157
+
154
158
  [data-author] + [data-author] {
155
159
  @apply -ml-4;
156
160
  }
@@ -27,10 +27,14 @@
27
27
  @apply block;
28
28
  }
29
29
  }
30
+
31
+ > h3:not([class~="not-prose"]) {
32
+ @apply mb-[-0.4rem] pt-4 pb-2;
33
+ }
30
34
  }
31
35
 
32
36
  &__span {
33
- @apply text-gray-2 font-semibold uppercase;
37
+ @apply mb-4 text-gray-2 font-semibold uppercase;
34
38
  }
35
39
 
36
40
  & ~ & {
@@ -167,7 +167,7 @@ header {
167
167
  }
168
168
 
169
169
  &__item {
170
- @apply relative;
170
+ @apply flex relative;
171
171
  }
172
172
 
173
173
  &__search {
@@ -434,8 +434,12 @@ header {
434
434
  @apply h4 md:h3;
435
435
  }
436
436
 
437
+ nav {
438
+ @apply w-full md:w-1/4;
439
+ }
440
+
437
441
  &__menu {
438
- @apply w-full md:w-1/4 bg-primary px-4 md:px-8 pt-0 pb-3 md:py-3 divide-y divide-gray-3 text-white;
442
+ @apply w-full bg-primary px-4 md:px-8 pt-0 pb-3 md:py-3 divide-y divide-gray-3 text-white;
439
443
 
440
444
  > * {
441
445
  @apply py-3 md:py-3.5;
@@ -32,6 +32,10 @@ $google_background_hover: #dcdcdc; // 30% opacity
32
32
 
33
33
  &--developer {
34
34
  @apply flex;
35
+
36
+ svg {
37
+ @apply fill-current;
38
+ }
35
39
  }
36
40
 
37
41
  &--facebook {
@@ -15,7 +15,7 @@
15
15
  }
16
16
 
17
17
  &-container {
18
- @apply mt-8 space-y-8;
18
+ @apply m-8 space-y-8;
19
19
  }
20
20
  }
21
21
  }
@@ -45,7 +45,7 @@
45
45
 
46
46
  &__actions {
47
47
  &-main {
48
- @apply w-fit mx-auto gap-x-4 gap-y-6 md:gap-4;
48
+ @apply grid w-fit mx-auto gap-x-4 gap-y-6 md:gap-4;
49
49
 
50
50
  &__dropdown {
51
51
  @apply divide-y divide-gray-3 z-20 w-64;
@@ -46,6 +46,7 @@ module Decidim
46
46
  # Returns an HTML-safe String.
47
47
  def present_user
48
48
  return h.content_tag(:span, present_user_name, class: "logs__log__author") if user.blank?
49
+ return I18n.t("decidim.profile.deleted") if user.respond_to?(:deleted?) && user.deleted?
49
50
 
50
51
  h.link_to(
51
52
  present_user_name,
@@ -37,7 +37,7 @@ module Decidim
37
37
  return default_avatar_url if __getobj__.blocked?
38
38
  return default_avatar_url unless avatar.attached?
39
39
 
40
- avatar.path(variant:)
40
+ avatar.url(variant:)
41
41
  end
42
42
 
43
43
  def default_avatar_url
@@ -25,6 +25,7 @@ module Decidim
25
25
  # @return [String, nil] - The resolved image blob or nil if no image is found.
26
26
  def resolve
27
27
  return unless blob
28
+ return unless blob.service.exist?(blob.key)
28
29
 
29
30
  resized_variant = blob.variant(resize_to_limit: [1200, 630]).processed
30
31
  Rails.application.routes.url_helpers.rails_representation_url(resized_variant, only_path: true)
@@ -41,6 +41,8 @@ module Decidim
41
41
  end
42
42
 
43
43
  def parse_i18n_changeset(attribute, values, type, diff)
44
+ return diff unless values.last.is_a?(Hash)
45
+
44
46
  (values.last.keys - ["machine_translations"]).each do |locale, _value|
45
47
  first_value = values.first.try(:[], locale)
46
48
  last_value = values.last.try(:[], locale)
@@ -15,7 +15,7 @@ module Decidim
15
15
  def data
16
16
  return if @resource.blank? || map_utility.nil?
17
17
 
18
- Rails.cache.fetch(@resource.cache_key) do
18
+ Rails.cache.fetch(@resource.cache_key_with_version) do
19
19
  map_utility.image_data(
20
20
  latitude: @resource.latitude,
21
21
  longitude: @resource.longitude,
@@ -4,7 +4,7 @@
4
4
  <%= render "decidim/devise/shared/links" %>
5
5
  <% end %>
6
6
 
7
- <%= render(layout: "layouts/decidim/shared/layout_center", locals: { columns: 8 }) do %>
7
+ <%= render(layout: "layouts/decidim/shared/layout_center") do %>
8
8
  <div class="flex justify-center">
9
9
  <h1 class="title-decorator my-12"><%= t("decidim.devise.registrations.new.sign_up") %></h1>
10
10
  </div>
@@ -1,6 +1,6 @@
1
1
  <% add_decidim_page_title(t("devise.sessions.new.log_in")) %>
2
2
 
3
- <%= render(layout: "layouts/decidim/shared/layout_center", locals: { columns: 8 }) do %>
3
+ <%= render(layout: "layouts/decidim/shared/layout_center") do %>
4
4
 
5
5
  <div class="flex justify-center">
6
6
  <h1 class="title-decorator my-12"><%= t("devise.sessions.new.log_in") %></h1>
@@ -5,7 +5,7 @@
5
5
  <% link_classes = "login__omniauth-button login__omniauth-button--#{normalize_provider_name(provider)}" %>
6
6
  <%= link_to decidim.send("user_#{provider}_omniauth_authorize_path"), class: link_classes, method: :post, title: t("devise.shared.links.log_in_with_provider", provider: normalize_provider_name(provider).titleize) do %>
7
7
  <%= oauth_icon provider %>
8
- <span><%= t("devise.shared.links.log_in_with_provider", provider: normalize_provider_name(provider).titleize) %></span>
8
+ <span class="sr-only"><%= t("devise.shared.links.log_in_with_provider", provider: normalize_provider_name(provider).titleize) %></span>
9
9
  <% end %>
10
10
  <% end %>
11
11
  </div>
@@ -5,7 +5,7 @@
5
5
  <h1 class="title-decorator my-12"><%= t("last_activity", scope: "decidim.last_activities.index") %></h1>
6
6
 
7
7
  <div class="profile__activity pb-16">
8
- <%= cell "decidim/resource_types_filter", resource_types, form_path: last_activities_path, filter_param_key: :with_resource_type, filter: %>
8
+ <%= cell "decidim/resource_types_filter", resource_types, source: :last_activities, filter_param_key: :with_resource_type %>
9
9
  <div id="activities">
10
10
  <%= render partial: "activities" %>
11
11
  </div>
@@ -17,7 +17,7 @@
17
17
  <%= t("description", scope: "decidim.open_data.index", organization_name: current_organization_name) %>
18
18
  </p>
19
19
 
20
- <%= render layout: "decidim/application/accordion_section", locals: { panel_id: "explanation", title: t("title", scope: "decidim.open_data.index.explanation") } do %>
20
+ <%= render layout: "decidim/application/accordion_section", locals: { panel_id: "explanation", title: t("title", scope: "decidim.open_data.index.explanation"), open_accordion: true } do %>
21
21
  <p> <%= t("body_1", scope: "decidim.open_data.index.explanation", organization_name: current_organization_name) %> </p>
22
22
  <p> <%= t("body_2", scope: "decidim.open_data.index.explanation") %> </p>
23
23
  <% end %>
@@ -1,9 +1,25 @@
1
1
  <p class="email-greeting"><%= t(".hello", name: @user.name) %></p>
2
2
 
3
3
  <p class="email-instructions">
4
- <%= t(".report_html", url: reported_content_url ) %>
4
+ <%= t(".report_html", url: report_url ) %>
5
5
  </p>
6
6
 
7
+ <p><b><%= t(".participatory_space") %></b></p>
8
+ <p><%= link_to translated_attribute(@participatory_space.title), resource_locator(@participatory_space).url %></p>
9
+
10
+ <p><b><%= t(".reason") %></b></p>
11
+ <p><%= t(@report.reason, organization_name: organization_name(@participatory_space.organization), scope: "decidim.shared.flag_modal") %></p>
12
+
13
+ <% if @report.details.present? %>
14
+ <p><b><%= t(".details") %></b></p>
15
+ <blockquote>
16
+ <%= @report.details %>
17
+ </blockquote>
18
+ <% end %>
19
+
20
+ <p><b><%= t(".content") %></b></p>
21
+ <%= reported_content_cell %>
22
+
7
23
  <p class="email-button email-button__cta">
8
24
  <%= link_to t(".manage_moderations"), manage_moderations_url %>
9
25
  </p>
@@ -1,7 +1,7 @@
1
1
  <p class="email-greeting"><%= t(".hello", name: @user.name) %></p>
2
2
 
3
3
  <p class="email-instructions">
4
- <%= t(".report_html", url: reported_content_url) %>
4
+ <%= t(".report_html", url: report_url) %>
5
5
  </p>
6
6
 
7
7
  <br>
@@ -15,6 +15,6 @@
15
15
  <% end %>
16
16
  </div>
17
17
 
18
- <h1 class="h3 decorator mb-10 md:my-10">
18
+ <h1 id="search-results-title" class="h3 decorator mb-10 md:my-10">
19
19
  <%= t("decidim.search.results_found_for_term", count: @results_count, term:) %>
20
20
  </h1>
@@ -1,44 +1,46 @@
1
- <div class="filter-container search__filter">
2
- <button id="dropdown-trigger-search" data-component="dropdown" data-target="dropdown-menu-search" data-auto-close="true">
3
- <%= content_tag :span, t("decidim.searches.filters_small_view.filter_by"), class: "#{"is-active" if params.dig(:filter, :with_resource_type) == nil}" %>
4
- <% @blocks.each do |elements| %>
5
- <% elements.each do |type, results| %>
6
- <%= content_tag :span, class: "#{"is-active" if params.dig(:filter, :with_resource_type) == type}" do %>
7
- <span><%= searchable_resource_human_name(type) %></span>
1
+ <nav role="navigation" aria-labelledby="search-results-title">
2
+ <div class="filter-container search__filter">
3
+ <button id="dropdown-trigger-search" data-component="dropdown" data-target="dropdown-menu-search" data-auto-close="true">
4
+ <%= content_tag :span, t("decidim.searches.filters_small_view.filter_by"), class: "#{"is-active" if params.dig(:filter, :with_resource_type) == nil}" %>
5
+ <% @blocks.each do |elements| %>
6
+ <% elements.each do |type, results| %>
7
+ <%= content_tag :span, class: "#{"is-active" if params.dig(:filter, :with_resource_type) == type}" do %>
8
+ <span><%= searchable_resource_human_name(type) %></span>
9
+ <% end %>
8
10
  <% end %>
9
11
  <% end %>
10
- <% end %>
11
- <%= icon "arrow-down-s-line", class: "w-8 h-8 flex-none text-secondary fill-current" %>
12
- <%= icon "arrow-up-s-line", class: "w-8 h-8 flex-none text-secondary fill-current" %>
13
- </button>
14
- <div id="dropdown-menu-search" aria-hidden="true">
15
- <div>
16
- <%= link_to main_search_path, class: "filter#{" is-active" if params.dig(:filter, :with_resource_type) == nil}" do %>
17
- <%= resource_type_icon("all") %>
18
- <span><%= t("all", scope: "decidim.searches.filters.state") %></span>
19
- <span class="label ml-auto"><%= @results_count %></span>
20
- <% end %>
21
- </div>
22
- <% @blocks.each do |elements| %>
12
+ <%= icon "arrow-down-s-line", class: "w-8 h-8 flex-none text-secondary fill-current" %>
13
+ <%= icon "arrow-up-s-line", class: "w-8 h-8 flex-none text-secondary fill-current" %>
14
+ </button>
15
+ <div id="dropdown-menu-search" aria-hidden="true">
23
16
  <div>
24
- <% elements.each do |type, results| %>
25
- <div>
26
- <% if results[:count].positive? %>
27
- <%= link_to search_path_by_resource_type(type), class: "filter#{" is-active" if params.dig(:filter, :with_resource_type) == type}" do %>
28
- <%= resource_type_icon(type) %>
29
- <span><%= searchable_resource_human_name(type) %></span>
30
- <span class="label ml-auto"><%= results[:count] %></span>
31
- <% end %>
32
- <% else %>
33
- <%= content_tag :div, class: "filter#{" is-empty" if results[:count].zero?}" do %>
34
- <%= resource_type_icon(type) %>
35
- <span><%= searchable_resource_human_name(type) %></span>
36
- <span class="label ml-auto"><%= results[:count] %></span>
37
- <% end %>
38
- <% end %>
39
- </div>
17
+ <%= link_to main_search_path, class: "filter#{" is-active" if params.dig(:filter, :with_resource_type) == nil}" do %>
18
+ <%= resource_type_icon("all") %>
19
+ <span><%= t("all", scope: "decidim.searches.filters.state") %></span>
20
+ <span class="label ml-auto"><%= @results_count %></span>
40
21
  <% end %>
41
22
  </div>
42
- <% end %>
23
+ <% @blocks.each do |elements| %>
24
+ <div>
25
+ <% elements.each do |type, results| %>
26
+ <div>
27
+ <% if results[:count].positive? %>
28
+ <%= link_to search_path_by_resource_type(type), class: "filter#{" is-active" if params.dig(:filter, :with_resource_type) == type}" do %>
29
+ <%= resource_type_icon(type) %>
30
+ <span><%= searchable_resource_human_name(type) %></span>
31
+ <span class="label ml-auto"><%= results[:count] %></span>
32
+ <% end %>
33
+ <% else %>
34
+ <%= content_tag :div, class: "filter#{" is-empty" if results[:count].zero?}" do %>
35
+ <%= resource_type_icon(type) %>
36
+ <span><%= searchable_resource_human_name(type) %></span>
37
+ <span class="label ml-auto"><%= results[:count] %></span>
38
+ <% end %>
39
+ <% end %>
40
+ </div>
41
+ <% end %>
42
+ </div>
43
+ <% end %>
44
+ </div>
43
45
  </div>
44
- </div>
46
+ </nav>
@@ -3,6 +3,6 @@
3
3
  <%= link_to t("layouts.decidim.footer.terms_of_service"), decidim.page_path("terms-of-service") %>
4
4
  </li>
5
5
  <li>
6
- <a href="#" data-dialog-open="dc-modal"><%= t("layouts.decidim.footer.data_consent_settings") %></a>
6
+ <a href="#" role="button" data-dialog-open="dc-modal"><%= t("layouts.decidim.footer.data_consent_settings") %></a>
7
7
  </li>
8
8
  </ul>
@@ -488,7 +488,7 @@ ar:
488
488
  metrics:
489
489
  name: مقاييس المنظمة
490
490
  participatory_space_metrics:
491
- name: المقاييس
491
+ name: المشاركة في الأرقام
492
492
  participatory_space_stats:
493
493
  name: الإحصائيات
494
494
  social_networks_metadata:
@@ -930,12 +930,12 @@ ar:
930
930
  conversation_mailer:
931
931
  comanagers_new_conversation:
932
932
  admin_in_group: تتلقى هذا لأنك مدير في %{group}.
933
- greeting: مرحباً، %{recipient}!
933
+ greeting: مرحبًا ، %{recipient}!
934
934
  intro: "بدأ %{manager} محادثة جديدة باسم %{group}. انقر هنا لرؤيتها:"
935
935
  subject: "بدأ %{manager} محادثة جديدة كـ %{group}"
936
936
  comanagers_new_message:
937
937
  admin_in_group: تتلقى هذا لأنك مدير في %{group}.
938
- greeting: مرحباً، %{recipient}!
938
+ greeting: مرحبًا ، %{recipient}!
939
939
  intro: "قام %{manager} بنشر رسائل جديدة في المحادثة ذات اسم %{group}. انقر هنا لرؤيتها:"
940
940
  subject: "%{manager} أرسل رسائل جديدة كـ %{group}"
941
941
  new_conversation:
@@ -944,12 +944,12 @@ ar:
944
944
  subject: "%{sender} بدأ محادثة معك"
945
945
  new_group_conversation:
946
946
  admin_in_group: تتلقى هذا لأنك مدير في %{group}.
947
- greeting: مرحباً، %{recipient}!
947
+ greeting: مرحبًا ، %{recipient}!
948
948
  intro: "بدأ %{sender} محادثة جديدة مع المجموعة %{group}. انقر هنا لرؤيتها:"
949
949
  subject: "بدأ %{sender} محادثة جديدة مع %{group}"
950
950
  new_group_message:
951
951
  admin_in_group: تتلقى هذا لأنك مدير في %{group}.
952
- greeting: مرحباً، %{recipient}!
952
+ greeting: مرحبًا ، %{recipient}!
953
953
  intro: "قام %{sender} بنشر رسائل جديدة في المحادثة مع المجوعة %{group}. انقر هنا لرؤيتها:"
954
954
  subject: "%{group} لديها رسائل جديدة من %{sender}"
955
955
  new_message:
@@ -994,7 +994,7 @@ ar:
994
994
  participants:
995
995
  description: عدد المشاركين النشطين في المنظمة
996
996
  object: المشاركين
997
- title: المشاركين
997
+ title: المشاركون
998
998
  reported_users:
999
999
  description: عدد المشاركين المبلّغ عنهم
1000
1000
  user_reports:
@@ -1002,7 +1002,7 @@ ar:
1002
1002
  users:
1003
1003
  description: عدد المشاركين في المنظمة
1004
1004
  object: المشاركين
1005
- title: المشاركين
1005
+ title: المشاركون
1006
1006
  newsletter_mailer:
1007
1007
  newsletter:
1008
1008
  no_reply_notice: تم إرسال هذا البريد الإلكتروني من عنوان بريد إلكتروني للإشعارات لا يستقبل لا بريد إلكتروني وارد. يرجى عدم الرد على هذه الرسالة.
@@ -1137,35 +1137,25 @@ ar:
1137
1137
  conversations: محادثات
1138
1138
  followers: متابعون
1139
1139
  following: يتبع
1140
+ group_admins: إدارة المشرفين
1141
+ group_members: إدارة الأعضاء
1140
1142
  groups: المجموعات
1141
1143
  members: أفراد
1142
1144
  officialized: مشارك رسمي
1143
1145
  send_private_message: ارسال رسالة خاصة
1144
- sidebar:
1145
- badges:
1146
- info: يتم الحصول على الشارات من خلال أداء نشاط معين في النظام الأساسي.
1147
- title: شارات
1148
1146
  user:
1149
1147
  actions:
1150
1148
  create_user_group: إنشاء مجموعة
1151
1149
  edit_profile: تعديل الملف الشخصي
1152
- edit_user_group: تعديل الملف الشخصي للمجموعة
1150
+ edit_user_group: تحرير ملف تعريف المجموعة
1153
1151
  invite_user: دعوة مشارك
1154
- join_user_group: طلب الانضمام للمجموعة
1155
- leave_user_group: مغادرة الفريق
1152
+ join_user_group: طلب الانضمام إلى المجموعة
1153
+ leave_user_group: غادر المجموعة
1156
1154
  manage_user_group: إدارة الفريق
1157
- manage_user_group_admins: إدارة المدراء
1158
- manage_user_group_users: إدارة الاعضاء
1155
+ manage_user_group_admins: إدارة المشرفين
1156
+ manage_user_group_users: إدارة الأعضاء
1159
1157
  message: الرسالة
1160
- create_user_group: إنشاء مجموعة
1161
- edit_profile: تعديل الملف الشخصي
1162
- edit_user_group: تحرير ملف تعريف المجموعة
1163
- invite_user: دعوة مشارك
1164
- join_user_group: طلب الانضمام إلى المجموعة
1165
- leave_user_group: غادر المجموعة
1166
- manage_user_group_admins: إدارة المشرفين
1167
- manage_user_group_users: إدارة الأعضاء
1168
- resend_email_confirmation_instructions: إعادة إرسال تعليمات تأكيد البريد الإلكتروني
1158
+ resend_email_confirmation_instructions: إعادة إرسال تعليمات تأكيد البريد الإلكتروني
1169
1159
  reported_mailer:
1170
1160
  hide:
1171
1161
  hello: مرحبا %{name}،
@@ -1242,12 +1232,9 @@ ar:
1242
1232
  title: الإبلاغ عن مشكلة
1243
1233
  flag_user_modal:
1244
1234
  already_reported: تم الإبلاغ عن هذا المحتوى وسيتم مراجعته من قبل مدير.
1245
- close: إغلاق
1246
- description: ما هو الأمر الغير مناسب بخصوص هذا المستخدم؟
1247
1235
  offensive: يتضمن العنصرية أو التحيز الجنسي أو الشتائم أو الهجمات الشخصية أو التهديد بالقتل أو طلبات الانتحار أو أي شكل من أشكال خطاب الكراهية.
1248
1236
  report: إبلاغ
1249
1237
  spam: يحتوي على طعم النقر(clickbaiting) أو إعلان، أو احتيال، أو روبوتات سكريبتة.
1250
- title: الإبلاغ عن مستخدم مخل
1251
1238
  floating_help:
1252
1239
  help: المساعدة
1253
1240
  login_modal:
@@ -33,6 +33,8 @@ bg:
33
33
  personal_url: Персонален URL
34
34
  remove_avatar: Премахни аватара
35
35
  tos_agreement: Споразумение за условия на услугата
36
+ user_group:
37
+ avatar: Аватар
36
38
  models:
37
39
  decidim/attachment_created_event: Прикачени файлове
38
40
  decidim/component_published_event: Активен компонент
@@ -90,7 +92,7 @@ bg:
90
92
  decidim_with_month_name_short: "%d %b"
91
93
  help:
92
94
  date_format: 'Формат: дд/мм/гггг'
93
- order: д-м-г
95
+ order: d-m-y
94
96
  separator: "/"
95
97
  datetime:
96
98
  distance_in_words:
@@ -537,7 +539,7 @@ bg:
537
539
  metrics:
538
540
  name: Показатели за организацията
539
541
  participatory_space_metrics:
540
- name: Метрики
542
+ name: Индикатори
541
543
  participatory_space_stats:
542
544
  name: Статистики
543
545
  social_networks_metadata:
@@ -1331,41 +1333,28 @@ bg:
1331
1333
  conversations: Разговори
1332
1334
  followers: Последователи
1333
1335
  following: Следванния
1334
- group_admins: Управление на администраторите
1335
- group_members: Управление на членовете
1336
+ group_admins: Управлявай администраторите
1337
+ group_members: Управллявай членовете
1336
1338
  groups: Групи
1337
1339
  members: Членове
1338
1340
  officialized: Официален участник
1339
1341
  send_private_message: Изпрати лично съобщение
1340
- sidebar:
1341
- badges:
1342
- info: Значките се заслужват чрез извършване на конкретна дейност в платформата.
1343
- title: Значки
1344
1342
  user:
1345
1343
  actions:
1346
- create_user_group: Създаване на група
1344
+ create_user_group: Създай група
1347
1345
  disabled_message: Съобщение
1348
1346
  edit_profile: Редактиране на профил
1349
- edit_user_group: Редактиране на профила на групата
1347
+ edit_user_group: Редактиране профил на група
1350
1348
  invite_user: Покани участник
1351
1349
  join_user_group: Заявка за присъединяване към група
1352
1350
  leave_user_group: Напусни на групата
1353
1351
  manage_user_group: Управление на групата
1354
- manage_user_group_admins: Управление на администраторите
1355
- manage_user_group_users: Управление на членовете
1352
+ manage_user_group_admins: Управлявай администраторите
1353
+ manage_user_group_users: Управллявай членовете
1356
1354
  message: Съобщение
1357
1355
  resend_email_confirmation_instructions: Изпрати отново инструкции за потвърждение
1358
1356
  confirmation_instructions_sent: Изпратени са инструкции за потвърждение по имейл.
1359
- create_user_group: Създай група
1360
- edit_profile: Редактиране на профил
1361
- edit_user_group: Редактиране профил на група
1362
1357
  fill_in_email_to_confirm_it: Моля, попълнете електронната поща на групата си, за да я потвърдите.
1363
- invite_user: Покани участник
1364
- join_user_group: Заявка за присъединяване към група
1365
- leave_user_group: Напусни на групата
1366
- manage_user_group_admins: Управлявай администраторите
1367
- manage_user_group_users: Управлявай членовете
1368
- resend_email_confirmation_instructions: Изпрати отново инструкции за потвърждение
1369
1358
  reported_mailer:
1370
1359
  hide:
1371
1360
  hello: Здравейте %{name},
@@ -1447,14 +1436,11 @@ bg:
1447
1436
  flag_user_modal:
1448
1437
  already_reported: Това съдържание вече е докладвано и ще бъде прегледано от администратор.
1449
1438
  block: Блокирай този участник
1450
- close: Затвори
1451
- description: Какво е неприемливо при този потребител?
1452
1439
  does_not_belong: Съдържа незаконна дейност, заплахи за самоубийство, лична информация или нещо друго, което смятате, че не принадлежи на %{organization_name}.
1453
1440
  hide: Скрийте цялото им съдържание
1454
1441
  offensive: Съдържа расизъм, сексизъм, злословия, лични атаки, заплахи за смърт, заявки за самоубийство или всякаква форма на омраза.
1455
1442
  report: Доклад
1456
1443
  spam: Съдържа примамка за кликване, реклама, измами или скриптове.
1457
- title: Докладвайте за неподходящ потребител
1458
1444
  floating_help:
1459
1445
  help: Помощ
1460
1446
  follow_button:
@@ -25,6 +25,8 @@ bs:
25
25
  hero_settings_form:
26
26
  background_image: Pozadinska slika
27
27
  welcome_text: Tekst dobrodošlice
28
+ participatory_space_metrics:
29
+ name: Metrika
28
30
  stats:
29
31
  name: Statistika organizacije
30
32
  endorsements: