decidim-core 0.26.1 → 0.26.2
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.
Potentially problematic release.
This version of decidim-core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/cells/decidim/card_m/show.erb +1 -1
- data/app/cells/decidim/followers_cell.rb +1 -1
- data/app/cells/decidim/notification/show.erb +1 -1
- data/app/cells/decidim/notification_cell.rb +6 -0
- data/app/commands/decidim/update_user_interests.rb +5 -1
- data/app/controllers/concerns/decidim/skip_timeoutable.rb +17 -0
- data/app/controllers/decidim/timeouts_controller.rb +2 -6
- data/app/forms/decidim/user_interest_scope_form.rb +1 -1
- data/app/helpers/decidim/application_helper.rb +4 -0
- data/app/helpers/decidim/meta_tags_helper.rb +24 -1
- data/app/helpers/decidim/sanitize_helper.rb +8 -2
- data/app/models/decidim/action_log.rb +1 -0
- data/app/models/decidim/user_base_entity.rb +1 -0
- data/app/packs/src/decidim/external_link.js +6 -0
- data/app/packs/src/decidim/map/controller/static.js +6 -5
- data/app/packs/src/decidim/session_timeouter.js +10 -5
- data/app/validators/password_validator.rb +12 -3
- data/app/views/decidim/devise/invitations/edit.html.erb +2 -2
- data/app/views/layouts/decidim/_timeout_modal.html.erb +2 -0
- data/config/initializers/devise.rb +2 -1
- data/config/locales/ar.yml +17 -0
- data/config/locales/ca.yml +17 -2
- data/config/locales/cs.yml +7 -0
- data/config/locales/de.yml +8 -2
- data/config/locales/en.yml +7 -0
- data/config/locales/es-MX.yml +19 -4
- data/config/locales/es-PY.yml +15 -0
- data/config/locales/es.yml +15 -0
- data/config/locales/fi-plain.yml +8 -0
- data/config/locales/fi.yml +8 -1
- data/config/locales/fr-CA.yml +8 -1
- data/config/locales/fr.yml +35 -28
- data/config/locales/hu.yml +1 -0
- data/config/locales/it.yml +8 -0
- data/config/locales/ja.yml +8 -1
- data/config/locales/pt.yml +2 -2
- data/config/locales/sv.yml +3 -1
- data/lib/decidim/content_parsers/hashtag_parser.rb +1 -1
- data/lib/decidim/content_parsers/resource_parser.rb +97 -0
- data/lib/decidim/content_parsers.rb +1 -0
- data/lib/decidim/content_processor.rb +2 -1
- data/lib/decidim/content_renderers/resource_renderer.rb +30 -0
- data/lib/decidim/content_renderers.rb +1 -0
- data/lib/decidim/core/test/factories.rb +2 -1
- data/lib/decidim/core/version.rb +1 -1
- data/lib/devise/models/decidim_validatable.rb +3 -3
- metadata +11 -13
- data/app/cells/decidim/endorsement_buttons_cell.rb.2 +0 -211
- data/app/helpers/decidim/social_share_button_helper.rb +0 -26
- data/lib/decidim/social_share/service.rb +0 -33
- data/lib/decidim/social_share/service_registry.rb +0 -63
- data/lib/decidim/social_share.rb +0 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18193603bd469c0ea5937875b577f4cc5439727b2ad1759e60ea725d029e18f1
|
4
|
+
data.tar.gz: 91c95bec2cdc7af5ad17a5d5ccd165817516fbaf0ed46051c198d3b8b5b1321b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71b39ec5cae4751ab21048ef686cd6b3704e8d5469d9ba608fcf163944ebf83fc100d1a47c59d4eae4b4c01af4d5074918113a8cf533151e954eb97defa14bf9
|
7
|
+
data.tar.gz: 72011b7df988f022988d64892177f9f4b28338019152d0a2ce46f489696256acdcd095d0da83346e41d70cdeb72c72ef7e21c0e701b50a1d4b35a6de8c51840d
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<span class="text-small"><%= notification.event_class.constantize.model_name.human %></span>
|
14
14
|
<br>
|
15
15
|
<span>
|
16
|
-
<%=
|
16
|
+
<%= notification_title %>
|
17
17
|
</span>
|
18
18
|
<% if notification.display_resource_text? %>
|
19
19
|
<p>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support/concern"
|
4
|
+
|
5
|
+
module Decidim
|
6
|
+
# We don't want to reset timeout timer on routes where we make requests automatically
|
7
|
+
# (e.g. asking time before timeout or fetching comments).
|
8
|
+
module SkipTimeoutable
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def skip_timeout
|
14
|
+
request.env["devise.skip_timeoutable"] = true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -5,6 +5,8 @@ require "active_support/concern"
|
|
5
5
|
module Decidim
|
6
6
|
# Tells/Extends time before inactivity warning or automatic logout.
|
7
7
|
class TimeoutsController < Decidim::ApplicationController
|
8
|
+
include Decidim::SkipTimeoutable
|
9
|
+
|
8
10
|
# Skip these methods because they can call Devise's store_location_for, which can save timeouts path to session.
|
9
11
|
skip_before_action :store_current_location
|
10
12
|
|
@@ -23,11 +25,5 @@ module Decidim
|
|
23
25
|
format.js
|
24
26
|
end
|
25
27
|
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def skip_timeout
|
30
|
-
request.env["devise.skip_timeoutable"] = true
|
31
|
-
end
|
32
28
|
end
|
33
29
|
end
|
@@ -16,7 +16,30 @@ module Decidim
|
|
16
16
|
add_decidim_meta_description(tags[:description])
|
17
17
|
add_decidim_meta_url(tags[:url])
|
18
18
|
add_decidim_meta_twitter_handler(tags[:twitter_handler])
|
19
|
-
add_decidim_meta_image_url(tags[:image_url])
|
19
|
+
add_decidim_meta_image_url(add_base_url_to(tags[:image_url]))
|
20
|
+
end
|
21
|
+
|
22
|
+
# Public: Add base url to path if path doesn't include host.
|
23
|
+
# path - A String containing path (e.g. "/proposals/1" )
|
24
|
+
# Returns a String of URL including base URL and path, or path if it's blank.
|
25
|
+
def add_base_url_to(path)
|
26
|
+
return path if path.blank?
|
27
|
+
return path if URI.parse(path).host.present?
|
28
|
+
|
29
|
+
"#{resolve_base_url}#{path}"
|
30
|
+
end
|
31
|
+
|
32
|
+
# Public: Resolve base url (example: https://www.decidim.org) without url params
|
33
|
+
# Returns a String of base URL
|
34
|
+
def resolve_base_url
|
35
|
+
return request.base_url if respond_to?(:request) && request&.base_url.present?
|
36
|
+
|
37
|
+
uri = URI.parse(decidim.root_url(host: current_organization.host))
|
38
|
+
if uri.port.blank? || [80, 443].include?(uri.port)
|
39
|
+
"#{uri.scheme}://#{uri.host}"
|
40
|
+
else
|
41
|
+
"#{uri.scheme}://#{uri.host}:#{uri.port}"
|
42
|
+
end
|
20
43
|
end
|
21
44
|
|
22
45
|
# Public: Accumulates the given `title` so that they can be chained. Since Rails views
|
@@ -94,11 +94,17 @@ module Decidim
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
+
# This method is currently being used only for Proposal and Meeting,
|
98
|
+
# It aims to load the presenter class, and perform some basic sanitization on the content
|
99
|
+
# This method should be used along side simple_format.
|
100
|
+
# @param resource [Object] Resource object
|
101
|
+
# @param method [Symbol] Method name
|
102
|
+
#
|
103
|
+
# @return ActiveSupport::SafeBuffer
|
97
104
|
def render_sanitized_content(resource, method)
|
98
105
|
content = present(resource).send(method, links: true, strip_tags: !safe_content?)
|
99
|
-
content = simple_format(content, {}, sanitize: false)
|
100
106
|
|
101
|
-
return content unless safe_content?
|
107
|
+
return decidim_sanitize(content, {}) unless safe_content?
|
102
108
|
|
103
109
|
decidim_sanitize_editor(content)
|
104
110
|
end
|
@@ -135,6 +135,7 @@ module Decidim
|
|
135
135
|
def visible_for?(user)
|
136
136
|
return false if resource_lazy.blank?
|
137
137
|
return false if participatory_space_lazy.blank?
|
138
|
+
return false if resource_lazy.respond_to?(:deleted?) && resource_lazy.deleted?
|
138
139
|
return false if resource_lazy.respond_to?(:hidden?) && resource_lazy.hidden?
|
139
140
|
return false if resource_lazy.respond_to?(:can_participate?) && !resource_lazy.can_participate?(user)
|
140
141
|
|
@@ -55,6 +55,7 @@ module Decidim
|
|
55
55
|
scope = scope.public_spaces if klass.try(:participatory_space?)
|
56
56
|
scope = scope.includes(:component) if klass.try(:has_component?)
|
57
57
|
scope = scope.filter(&:visible?) if klass.method_defined?(:visible?)
|
58
|
+
scope = scope.reject(&:blocked) if klass == Decidim::UserBaseEntity
|
58
59
|
scope
|
59
60
|
end
|
60
61
|
end
|
@@ -5,6 +5,9 @@ const EXCLUDE_CLASSES = [
|
|
5
5
|
"footer-social__icon",
|
6
6
|
"logo-cityhall"
|
7
7
|
];
|
8
|
+
const EXCLUDE_ANCESTOR_CLASSES = [
|
9
|
+
"editor-container"
|
10
|
+
]
|
8
11
|
const EXCLUDE_REL = ["license", "decidim"];
|
9
12
|
|
10
13
|
const DEFAULT_MESSAGES = {
|
@@ -27,6 +30,9 @@ export default class ExternalLink {
|
|
27
30
|
if (EXCLUDE_CLASSES.some((cls) => this.$link.hasClass(cls))) {
|
28
31
|
return;
|
29
32
|
}
|
33
|
+
if (EXCLUDE_ANCESTOR_CLASSES.some((cls) => this.$link.parents().hasClass(cls))) {
|
34
|
+
return;
|
35
|
+
}
|
30
36
|
if (
|
31
37
|
EXCLUDE_REL.some((rel) => {
|
32
38
|
const linkRels = `${this.$link.attr("rel")}`.split(" ");
|
@@ -16,6 +16,12 @@ export default class MapStaticController extends MapController {
|
|
16
16
|
this.map.tap.disable();
|
17
17
|
}
|
18
18
|
|
19
|
+
if (this.config.zoom) {
|
20
|
+
this.map.setZoom(this.config.zoom);
|
21
|
+
} else {
|
22
|
+
this.map.setZoom(15);
|
23
|
+
}
|
24
|
+
|
19
25
|
if (this.config.latitude && this.config.longitude) {
|
20
26
|
const coordinates = [this.config.latitude, this.config.longitude];
|
21
27
|
|
@@ -27,11 +33,6 @@ export default class MapStaticController extends MapController {
|
|
27
33
|
}).addTo(this.map);
|
28
34
|
marker._icon.removeAttribute("tabindex");
|
29
35
|
}
|
30
|
-
if (this.config.zoom) {
|
31
|
-
this.map.setZoom(this.config.zoom);
|
32
|
-
} else {
|
33
|
-
this.map.setZoom(15);
|
34
|
-
}
|
35
36
|
|
36
37
|
if (this.config.link) {
|
37
38
|
this.map._container.addEventListener("click", (ev) => {
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import moment from "moment"
|
2
|
-
import Foundation from "foundation-sites"
|
3
2
|
|
4
3
|
$(() => {
|
5
4
|
let sessionTimeOutEnabled = true;
|
@@ -8,17 +7,18 @@ $(() => {
|
|
8
7
|
const secondsUntilTimeoutPath = $timeoutModal.data("seconds-until-timeout-path");
|
9
8
|
const heartbeatPath = $timeoutModal.data("heartbeat-path");
|
10
9
|
const interval = parseInt($timeoutModal.data("session-timeout-interval"), 10);
|
10
|
+
const preventTimeOutSeconds = $timeoutModal.data("prevent-timeout-seconds");
|
11
11
|
let endsAt = moment().add(timeoutInSeconds, "seconds");
|
12
12
|
let lastAction = moment();
|
13
|
-
const popup = new Foundation.Reveal($timeoutModal);
|
14
13
|
const $continueSessionButton = $("#continueSession");
|
15
14
|
let lastActivityCheck = moment();
|
16
15
|
// 5 * 60 seconds = 5 Minutes
|
17
16
|
const activityCheckInterval = 5 * 60;
|
17
|
+
const preventTimeOutUntil = moment().add(preventTimeOutSeconds, "seconds");
|
18
18
|
|
19
19
|
// Ajax request is made at timeout_modal.html.erb
|
20
20
|
$continueSessionButton.on("click", () => {
|
21
|
-
$
|
21
|
+
$timeoutModal.foundation("close");
|
22
22
|
// In admin panel we have to hide all overlays
|
23
23
|
$(".reveal-overlay").css("display", "none");
|
24
24
|
lastActivityCheck = moment();
|
@@ -82,7 +82,12 @@ $(() => {
|
|
82
82
|
}
|
83
83
|
|
84
84
|
const timeRemaining = Math.round((endsAt - moment()) / 1000);
|
85
|
-
if (timeRemaining >
|
85
|
+
if (timeRemaining > 170) {
|
86
|
+
return;
|
87
|
+
}
|
88
|
+
|
89
|
+
if (moment() < preventTimeOutUntil) {
|
90
|
+
heartbeat();
|
86
91
|
return;
|
87
92
|
}
|
88
93
|
|
@@ -95,7 +100,7 @@ $(() => {
|
|
95
100
|
} else if (secondsUntilSessionExpires <= 90) {
|
96
101
|
$timeoutModal.find("#reveal-hidden-sign-out")[0].click();
|
97
102
|
} else if (secondsUntilSessionExpires <= 150) {
|
98
|
-
|
103
|
+
$timeoutModal.foundation("open");
|
99
104
|
}
|
100
105
|
});
|
101
106
|
}, interval);
|
@@ -49,6 +49,15 @@ class PasswordValidator < ActiveModel::EachValidator
|
|
49
49
|
I18n.t "password_validator.#{reason}"
|
50
50
|
end
|
51
51
|
|
52
|
+
def organization
|
53
|
+
@organization ||= organization_from_record
|
54
|
+
end
|
55
|
+
|
56
|
+
def organization_from_record
|
57
|
+
return record.current_organization if record.respond_to?(:current_organization)
|
58
|
+
return record.organization if record.respond_to?(:organization)
|
59
|
+
end
|
60
|
+
|
52
61
|
def strong?
|
53
62
|
VALIDATION_METHODS.each do |method|
|
54
63
|
@weak_password_reasons << method.to_s.sub(/\?$/, "").to_sym if send(method.to_s)
|
@@ -96,10 +105,10 @@ class PasswordValidator < ActiveModel::EachValidator
|
|
96
105
|
end
|
97
106
|
|
98
107
|
def domain_included_in_password?
|
99
|
-
return false unless
|
100
|
-
return true if value.include?(
|
108
|
+
return false unless organization && organization.host
|
109
|
+
return true if value.include?(organization.host)
|
101
110
|
|
102
|
-
|
111
|
+
organization.host.split(".").each do |part|
|
103
112
|
next if part.length < IGNORE_SIMILARITY_SHORTER_THAN
|
104
113
|
|
105
114
|
return true if value.include?(part)
|
@@ -27,11 +27,11 @@
|
|
27
27
|
|
28
28
|
<% if f.object.class.require_password_on_accepting %>
|
29
29
|
<div class="field">
|
30
|
-
<p><%= f.password_field :password, required: "required", minlength: ::
|
30
|
+
<p><%= f.password_field :password, required: "required", minlength: ::PasswordValidator::MINIMUM_LENGTH, maxlength: ::PasswordValidator::MAX_LENGTH %></p>
|
31
31
|
</div>
|
32
32
|
|
33
33
|
<div class="field">
|
34
|
-
<p><%= f.password_field :password_confirmation, required: "required", minlength: ::
|
34
|
+
<p><%= f.password_field :password_confirmation, required: "required", minlength: ::PasswordValidator::MINIMUM_LENGTH, maxlength: ::PasswordValidator::MAX_LENGTH %></p>
|
35
35
|
</div>
|
36
36
|
<% end %>
|
37
37
|
</div>
|
@@ -1,9 +1,11 @@
|
|
1
1
|
<% if current_user && !current_user.remember_created_at %>
|
2
2
|
<% timeout_time_seconds = Decidim.config.expire_session_after.to_i %>
|
3
|
+
<% prevent_timeout_for = try(:prevent_timeout_seconds) || 0 %>
|
3
4
|
<div class="reveal" id="timeoutModal" data-close-on-click="false" data-close-on-esc="false"
|
4
5
|
data-seconds-until-timeout-path="<%= decidim.seconds_until_timeout_path %>"
|
5
6
|
data-heartbeat-path="<%= decidim.heartbeat_path %>"
|
6
7
|
data-session-timeout="<%= timeout_time_seconds %>"
|
8
|
+
data-prevent-timeout-seconds="<%= prevent_timeout_for %>"
|
7
9
|
data-session-timeout-interval="<%= Decidim.config.session_timeout_interval.to_i * 1000 %>" data-reveal>
|
8
10
|
<h2><%= t(".title") %></h2>
|
9
11
|
<p><%= t(".body", minutes: (timeout_time_seconds / 60) - 2) %></p>
|
@@ -208,7 +208,8 @@ Devise.setup do |config|
|
|
208
208
|
|
209
209
|
# ==> Configuration for :validatable
|
210
210
|
# Range for password length.
|
211
|
-
|
211
|
+
# NOTE: this will not be used as we're using our own PasswordValidator
|
212
|
+
# config.password_length = 6..128
|
212
213
|
|
213
214
|
# Email regex used to validate email formats. It simply asserts that
|
214
215
|
# one (and only one) @ exists in the given string. This is mainly
|
data/config/locales/ar.yml
CHANGED
@@ -3,6 +3,10 @@ ar:
|
|
3
3
|
attributes:
|
4
4
|
account:
|
5
5
|
delete_reason: سبب حذف حسابك
|
6
|
+
common:
|
7
|
+
created_at: تم إنشاؤها في
|
8
|
+
conversation:
|
9
|
+
body: المحتوى
|
6
10
|
group:
|
7
11
|
about: عن
|
8
12
|
avatar: الصورة الرمزية
|
@@ -11,11 +15,14 @@ ar:
|
|
11
15
|
name: الإسم
|
12
16
|
nickname: الاسم المستعار
|
13
17
|
phone: الهاتف
|
18
|
+
message:
|
19
|
+
body: المحتوى
|
14
20
|
report:
|
15
21
|
details: تعليقات إضافية
|
16
22
|
user:
|
17
23
|
about: عن
|
18
24
|
email: بريدك الإلكتروني
|
25
|
+
locale: اللغة
|
19
26
|
name: اسمك
|
20
27
|
nickname: الاسم المستعار
|
21
28
|
password: الكلمة السرية
|
@@ -33,6 +40,7 @@ ar:
|
|
33
40
|
decidim/profile_updated_event: تحديث الملف الشخصي
|
34
41
|
decidim/promote_to_admin: تمت ترقيته إلى مسؤول المجموعة
|
35
42
|
decidim/removed_from_group: تمت إزالته من المجموعة
|
43
|
+
decidim/resource_endorsed_event: المورد المدعُوم
|
36
44
|
activerecord:
|
37
45
|
attributes:
|
38
46
|
decidim/user:
|
@@ -788,6 +796,10 @@ ar:
|
|
788
796
|
error: لم تبدأ المحادثة. حاول مرة أخرى في وقت لاحق
|
789
797
|
index:
|
790
798
|
close: إغلاق مشروط
|
799
|
+
groups: فِرَقي
|
800
|
+
last_message: آخر رسالة
|
801
|
+
new_conversation: محادثة جديدة
|
802
|
+
next: التالي
|
791
803
|
no_conversations: ليس لديك محادثات حتى الآن
|
792
804
|
title: المحادثات
|
793
805
|
reply:
|
@@ -816,6 +828,10 @@ ar:
|
|
816
828
|
note: لقد تلقيت هذه الرسالة الإلكترونية لأنك مشترك في الرسائل الإخبارية على %{organization_name}. يمكنك تغيير الإعدادات الخاصة بك على هاتفك <a href="%{link}">الصفحة إخطارات</a>.
|
817
829
|
see_on_website: لا يمكن عرض هذا البريد الإلكتروني بشكل صحيح؟ اطلع عليه على <a href="%{link}" target="_blank">الموقع</a>.
|
818
830
|
unsubscribe: لإلغاء الاشتراك في تلقي هذا النوع من البريد الإلكتروني ، <a href="%{link}" target="_blank" class="unsubscribe">إلغاء الاشتراك</a>.
|
831
|
+
newsletter_templates:
|
832
|
+
image_text_cta_settings_form:
|
833
|
+
introduction: مقدمة
|
834
|
+
main_image: الصورة الرئيسية
|
819
835
|
newsletters:
|
820
836
|
unsubscribe:
|
821
837
|
check_subscription: إذا كنت ترغب في تغيير تفضيلاتك ، يمكنك القيام بذلك في صفحة التكوين <a href="%{link}" target="_blank"></a>
|
@@ -1037,6 +1053,7 @@ ar:
|
|
1037
1053
|
label: 'نتائج لكل صفحة:'
|
1038
1054
|
share_modal:
|
1039
1055
|
close_window: أغلق النافذة
|
1056
|
+
copy_share_link: انسخ
|
1040
1057
|
share: شارك
|
1041
1058
|
share_link: مشاركة الرابط
|
1042
1059
|
statistics:
|
data/config/locales/ca.yml
CHANGED
@@ -22,6 +22,7 @@ ca:
|
|
22
22
|
user:
|
23
23
|
about: Quant a
|
24
24
|
email: El teu correu electrònic
|
25
|
+
locale: Configuració regional
|
25
26
|
name: El teu nom
|
26
27
|
nickname: Àlies
|
27
28
|
password: Contrasenya
|
@@ -34,12 +35,17 @@ ca:
|
|
34
35
|
decidim/demoted_membership: Ja no ets una administradora del grup
|
35
36
|
decidim/gamification/badge_earned_event: Insígnia obtinguda
|
36
37
|
decidim/gamification/level_up_event: Has pujat de nivell
|
38
|
+
decidim/invited_to_group_event: Convidada al grup
|
37
39
|
decidim/join_request_accepted_event: Sol·licitud d'incorporació acceptada
|
38
40
|
decidim/join_request_rejected_event: Sol·licitud d'incorporació rebutjada
|
39
41
|
decidim/profile_updated_event: Perfil actualitzat
|
40
42
|
decidim/promote_to_admin: Promocionada a administradora del grup
|
43
|
+
decidim/promoted_to_admin_event: Promocionada a administradora del grup
|
41
44
|
decidim/removed_from_group: Eliminada del grup
|
42
45
|
decidim/resource_endorsed_event: Adhesió a recurs feta
|
46
|
+
decidim/resource_hidden_event: Recurs amagat
|
47
|
+
decidim/user_group_created_event: S'ha creat el grup de l'usuari
|
48
|
+
decidim/welcome_notification_event: Missatge de benvinguda
|
43
49
|
activerecord:
|
44
50
|
attributes:
|
45
51
|
decidim/user:
|
@@ -107,6 +113,7 @@ ca:
|
|
107
113
|
decidim:
|
108
114
|
accessibility:
|
109
115
|
external_link: Enllaç extern
|
116
|
+
front_page_link: Anar a la pàgina principal
|
110
117
|
logo: "Logo oficial de %{organization}"
|
111
118
|
skip_button: Vés al contingut principal
|
112
119
|
account:
|
@@ -696,6 +703,11 @@ ca:
|
|
696
703
|
email_outro: Has rebut aquesta notificació perquè estàs seguint a %{nickname}. Pots deixar de rebre notificacions seguint l'enllaç anterior.
|
697
704
|
email_subject: "%{nickname} ha actualitzat el seu perfil"
|
698
705
|
notification_title: El <a href="%{resource_path}"> perfi l</a> de %{name} (%{nickname}), a qui estàs seguint, s'ha actualitzat.
|
706
|
+
user_officialized:
|
707
|
+
email_intro: La participant %{name} (%{nickname}) ha estat oficialitzada.
|
708
|
+
email_outro: Has rebut aquesta notificació perquè ets una de les administradores de la plataforma.
|
709
|
+
email_subject: "S'ha oficialitzat a %{name}"
|
710
|
+
notification_title: La participant %{name} (%{nickname}) ha estat oficialitzada.
|
699
711
|
export_mailer:
|
700
712
|
data_portability_export:
|
701
713
|
click_button: 'Fes clic en el següent enllaç per descarregar les teves dades.<br/>L''arxiu estarà disponible fins %{date}.<br/>Necessitaràs <a href="https://www.7-zip.org/">7-Zip</a> (per a Windows), <a href="https://www.keka.io/en/">Keka</a> (per a MacOS) o <a href="https://peazip.github.io">PeaZip</a> (per a Linux) per obrir-lo. Contrasenya: %{password}'
|
@@ -1077,6 +1089,8 @@ ca:
|
|
1077
1089
|
translated_text: 'Text de la traducció automàtica:'
|
1078
1090
|
notifications:
|
1079
1091
|
no_notifications: Encara no hi ha notificacions.
|
1092
|
+
show:
|
1093
|
+
missing_event: Vaja, aquesta notificació pertany a un element que ja no està disponible. Pots descartar-la.
|
1080
1094
|
notifications_settings:
|
1081
1095
|
show:
|
1082
1096
|
administrators: Administradores
|
@@ -1718,8 +1732,8 @@ ca:
|
|
1718
1732
|
mailer:
|
1719
1733
|
invitation_instructions:
|
1720
1734
|
accept_until_format: "%B %d, %Y %I:%M %p"
|
1721
|
-
long: "%
|
1722
|
-
long_dashed: "%
|
1735
|
+
long: "%d de %B, %Y %H:%M"
|
1736
|
+
long_dashed: "%d-%m-%Y %H:%M:%S"
|
1723
1737
|
short: "%d/%m/%Y %H:%M"
|
1724
1738
|
time_of_day: "%H:%M"
|
1725
1739
|
versions:
|
@@ -1729,6 +1743,7 @@ ca:
|
|
1729
1743
|
dropdown:
|
1730
1744
|
choose_diff_view_html: 'Vista HTML:'
|
1731
1745
|
choose_diff_view_mode: 'Mode de vista de comparació:'
|
1746
|
+
choose_diff_view_mode_menu: Triar el mode de comparació
|
1732
1747
|
option_escaped: Escapada
|
1733
1748
|
option_split: Costat per costat
|
1734
1749
|
option_unescaped: No escapada
|
data/config/locales/cs.yml
CHANGED
@@ -35,12 +35,17 @@ cs:
|
|
35
35
|
decidim/demoted_membership: Již není správcem skupiny
|
36
36
|
decidim/gamification/badge_earned_event: Získaný odznak
|
37
37
|
decidim/gamification/level_up_event: Vy jste vyrovnali
|
38
|
+
decidim/invited_to_group_event: Pozván do skupiny
|
38
39
|
decidim/join_request_accepted_event: Připojit žádost přijatou
|
39
40
|
decidim/join_request_rejected_event: Připojit žádost zamítnuta
|
40
41
|
decidim/profile_updated_event: Profil aktualizován
|
41
42
|
decidim/promote_to_admin: Propagováno na správu skupiny
|
43
|
+
decidim/promoted_to_admin_event: Povýšen na administrátora skupiny
|
42
44
|
decidim/removed_from_group: Odstraněna ze skupiny
|
43
45
|
decidim/resource_endorsed_event: Zdroj byl schválen
|
46
|
+
decidim/resource_hidden_event: Zdroj skryt
|
47
|
+
decidim/user_group_created_event: Uživatelská skupina vytvořena
|
48
|
+
decidim/welcome_notification_event: Uvítací zpráva
|
44
49
|
activerecord:
|
45
50
|
attributes:
|
46
51
|
decidim/user:
|
@@ -1123,6 +1128,8 @@ cs:
|
|
1123
1128
|
translated_text: 'Automaticky přeložený text:'
|
1124
1129
|
notifications:
|
1125
1130
|
no_notifications: Zatím žádné oznámení.
|
1131
|
+
show:
|
1132
|
+
missing_event: Jejda, toto oznámení patří k položce, která již není k dispozici. Můžete ho zahodit.
|
1126
1133
|
notifications_settings:
|
1127
1134
|
show:
|
1128
1135
|
administrators: Správci
|
data/config/locales/de.yml
CHANGED
@@ -22,6 +22,7 @@ de:
|
|
22
22
|
user:
|
23
23
|
about: Über
|
24
24
|
email: Ihre E-Mail
|
25
|
+
locale: Spracheinstellung
|
25
26
|
name: Ihr Name
|
26
27
|
nickname: Spitzname
|
27
28
|
password: Passwort
|
@@ -34,6 +35,7 @@ de:
|
|
34
35
|
decidim/demoted_membership: Kein Gruppenadministrator mehr
|
35
36
|
decidim/gamification/badge_earned_event: Abzeichen verdient
|
36
37
|
decidim/gamification/level_up_event: Sie sind um ein Level aufgestiegen
|
38
|
+
decidim/invited_to_group_event: Zur Gruppe eingeladen
|
37
39
|
decidim/join_request_accepted_event: Beitrittsanfrage akzeptiert
|
38
40
|
decidim/join_request_rejected_event: Beitrittsanfrage abgelehnt
|
39
41
|
decidim/profile_updated_event: Profil aktualisiert
|
@@ -79,6 +81,10 @@ de:
|
|
79
81
|
datetime:
|
80
82
|
distance_in_words:
|
81
83
|
half_a_minute: eine halbe Minute
|
84
|
+
x_seconds:
|
85
|
+
one: vor 1 Sekunde
|
86
|
+
other: "Vor %{count} Sekunden"
|
87
|
+
zero: sofort
|
82
88
|
decidim:
|
83
89
|
accessibility:
|
84
90
|
external_link: Externer Link
|
@@ -478,7 +484,7 @@ de:
|
|
478
484
|
shared:
|
479
485
|
newsletter_modal:
|
480
486
|
buttons:
|
481
|
-
check:
|
487
|
+
check: Kontakterlaubnis erteilen und fortfahren
|
482
488
|
close_modal: Modal schließen
|
483
489
|
uncheck: Ohne Kontakterlaubnis fortfahren
|
484
490
|
notice: |-
|
@@ -956,7 +962,7 @@ de:
|
|
956
962
|
new_conversation: Neue Unterhaltung
|
957
963
|
next: Weiter
|
958
964
|
no_conversations: Du hast noch keine Unterhaltungen
|
959
|
-
title:
|
965
|
+
title: Nachrichten
|
960
966
|
reply:
|
961
967
|
placeholder: Ihre Antwort...
|
962
968
|
send: Senden
|
data/config/locales/en.yml
CHANGED
@@ -36,12 +36,17 @@ en:
|
|
36
36
|
decidim/demoted_membership: No longer a group admin
|
37
37
|
decidim/gamification/badge_earned_event: Badge earned
|
38
38
|
decidim/gamification/level_up_event: You've leveled up
|
39
|
+
decidim/invited_to_group_event: Invited to group
|
39
40
|
decidim/join_request_accepted_event: Join request accepted
|
40
41
|
decidim/join_request_rejected_event: Join request rejected
|
41
42
|
decidim/profile_updated_event: Profile updated
|
42
43
|
decidim/promote_to_admin: Promoted to group admin
|
44
|
+
decidim/promoted_to_admin_event: Promoted to group admin
|
43
45
|
decidim/removed_from_group: Removed from group
|
44
46
|
decidim/resource_endorsed_event: Resource endorsed
|
47
|
+
decidim/resource_hidden_event: Resource hidden
|
48
|
+
decidim/user_group_created_event: User group created
|
49
|
+
decidim/welcome_notification_event: Welcome message
|
45
50
|
activerecord:
|
46
51
|
attributes:
|
47
52
|
decidim/user:
|
@@ -1092,6 +1097,8 @@ en:
|
|
1092
1097
|
translated_text: 'Automatically translated text:'
|
1093
1098
|
notifications:
|
1094
1099
|
no_notifications: No notifications yet.
|
1100
|
+
show:
|
1101
|
+
missing_event: Oops, this notification belongs to an item that is no longer available. You can discard it.
|
1095
1102
|
notifications_settings:
|
1096
1103
|
show:
|
1097
1104
|
administrators: Administrators
|