decidim-core 0.26.1 → 0.26.2
Sign up to get free protection for your applications and to get access to all the features.
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
|