decidim-comments 0.28.0 → 0.28.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.
- checksums.yaml +4 -4
- data/app/cells/decidim/comments/comment/actions.erb +4 -5
- data/app/cells/decidim/comments/comment/show.erb +7 -5
- data/app/cells/decidim/comments/comment_cell.rb +24 -4
- data/app/cells/decidim/comments/comment_thread/show.erb +1 -1
- data/app/cells/decidim/comments/comments/order_control.erb +2 -1
- data/app/cells/decidim/comments/comments/show.erb +1 -1
- data/app/cells/decidim/comments/comments/user_comments_blocked_warning.erb +2 -2
- data/app/cells/decidim/comments/comments_cell.rb +5 -1
- data/app/events/decidim/comments/comment_event.rb +4 -0
- data/app/models/decidim/comments/comment.rb +2 -2
- data/app/models/decidim/comments/comment_vote.rb +10 -0
- data/app/packs/src/decidim/comments/comments.component.test.js +4 -4
- data/app/packs/src/decidim/comments/comments.component_for_testing.js +1 -0
- data/config/locales/ar.yml +0 -1
- data/config/locales/bg.yml +169 -0
- data/config/locales/ca.yml +13 -8
- data/config/locales/cs.yml +3 -1
- data/config/locales/de.yml +6 -1
- data/config/locales/el.yml +0 -1
- data/config/locales/en.yml +6 -1
- data/config/locales/es-MX.yml +6 -1
- data/config/locales/es-PY.yml +6 -1
- data/config/locales/es.yml +14 -9
- data/config/locales/eu.yml +3 -1
- data/config/locales/fi-plain.yml +6 -1
- data/config/locales/fi.yml +6 -1
- data/config/locales/fr-CA.yml +6 -1
- data/config/locales/fr.yml +6 -1
- data/config/locales/gl.yml +0 -1
- data/config/locales/he-IL.yml +1 -0
- data/config/locales/hu.yml +5 -1
- data/config/locales/it.yml +0 -1
- data/config/locales/ja.yml +5 -1
- data/config/locales/lb.yml +0 -1
- data/config/locales/lt.yml +0 -1
- data/config/locales/lv.yml +0 -1
- data/config/locales/nl.yml +0 -1
- data/config/locales/no.yml +0 -1
- data/config/locales/pl.yml +5 -1
- data/config/locales/pt-BR.yml +0 -1
- data/config/locales/pt.yml +0 -1
- data/config/locales/ro-RO.yml +7 -4
- data/config/locales/sk.yml +0 -1
- data/config/locales/sq-AL.yml +41 -0
- data/config/locales/sr-CS.yml +0 -2
- data/config/locales/sv.yml +0 -1
- data/config/locales/tr-TR.yml +3 -1
- data/config/locales/zh-CN.yml +0 -1
- data/config/locales/zh-TW.yml +0 -1
- data/db/migrate/20240304092558_add_comment_vote_counter_cache_to_comments.rb +21 -0
- data/decidim-comments.gemspec +40 -0
- data/lib/decidim/api/comment_type.rb +2 -2
- data/lib/decidim/comments/test/factories.rb +20 -7
- data/lib/decidim/comments/test/shared_examples/comment_event.rb +34 -1
- data/lib/decidim/comments/test/shared_examples/comment_voted_event.rb +1 -1
- data/lib/decidim/comments/version.rb +1 -1
- metadata +14 -12
- data/config/environment.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24cf379816e56d8d02c96af8dfd596b8946c7098f2c672f305a97fb563861248
|
4
|
+
data.tar.gz: 361246cb66e6171732029b68e1a51edabf47bd1d605d26f698144fb148006eb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b649d92b1c7cff28097d16eaee1ab6e3d08b5600c72a180e9e83cf4556730f0a5b62223a23051d61fa160fea8b2925d9161da05e7b600e4439c973ea1fcb9a58
|
7
|
+
data.tar.gz: fef878987f09ba7d4156bc86b573d59db4c030d67f69cabca6f271ea66b1fe44288bef6e615cbf1cd423fb2e363dfa7d87a273b98fee46d7990209235b5d6467
|
@@ -1,14 +1,13 @@
|
|
1
1
|
<div class="comment__actions">
|
2
2
|
<% if depth.zero? && has_replies_in_children? %>
|
3
|
-
<button class="button button__sm button__text-secondary comment__hide" data-controls="comment-<%= model.id %>-replies">
|
3
|
+
<button class="button button__sm button__text-secondary comment__hide" data-controls="comment-<%= model.id %>-replies" data-open="true" id="comment-<%= model.id %>-replies-trigger">
|
4
|
+
<span class="show-comment-replies font-normal"><%= t("decidim.components.comment.show_replies", count: replies.size) %></span>
|
4
5
|
<%= icon "arrow-up-s-line" %>
|
5
|
-
<span class="hide-comment-replies font-normal"><%= t("decidim.components.comment.hide_replies") %></span>
|
6
|
-
<%= icon "arrow-down-s-line" %>
|
7
|
-
<span class="show-comment-replies font-normal"><%= t("decidim.components.comment.show_replies", count: replies.size, replies_count: replies.size ) %></span>
|
6
|
+
<span class="hide-comment-replies font-normal"><%= t("decidim.components.comment.hide_replies", count: replies.size) %></span>
|
8
7
|
</button>
|
9
8
|
<% end %>
|
10
9
|
<% if can_reply? %>
|
11
|
-
<button class="button button__sm button__text-secondary" data-controls="panel-<%= reply_id %>">
|
10
|
+
<button class="button button__sm button__text-secondary" data-controls="panel-<%= reply_id %>" id="panel-<%= reply_id %>-trigger">
|
12
11
|
<%= icon "chat-1-line" %>
|
13
12
|
<span class="font-normal"><%= t("decidim.components.comment.reply") %></span>
|
14
13
|
<%= icon "close-circle-line" %>
|
@@ -1,10 +1,12 @@
|
|
1
|
-
<%= content_tag :div, id: "comment_#{model.id}", class: "comment relative", data: { comment_id: model.id } do %>
|
1
|
+
<%= content_tag :div, id: "comment_#{model.id}", class: "comment relative", role: "comment", data: { comment_id: model.id, parent: parent_element_id } do %>
|
2
2
|
<% if model.hidden? %>
|
3
3
|
<%= render :moderation_data %>
|
4
4
|
<% elsif model.deleted? %>
|
5
5
|
<%= render :deletion_data %>
|
6
6
|
<% else %>
|
7
7
|
<div class="comment__header">
|
8
|
+
<div class="sr-only"><%= comment_label %></div>
|
9
|
+
|
8
10
|
<span class="font-bold">
|
9
11
|
<%== cell("decidim/author", author_presenter) %>
|
10
12
|
</span>
|
@@ -18,7 +20,7 @@
|
|
18
20
|
<% end %>
|
19
21
|
|
20
22
|
<div class="relative ml-auto">
|
21
|
-
<button id="dropdown-trigger-<%= context_menu_id %>" data-component="dropdown" data-target="dropdown-menu-<%= context_menu_id %>">
|
23
|
+
<button id="dropdown-trigger-<%= context_menu_id %>" data-component="dropdown" data-target="dropdown-menu-<%= context_menu_id %>" aria-label="<%= t("decidim.components.comment.controls_label") %>">
|
22
24
|
…
|
23
25
|
</button>
|
24
26
|
|
@@ -30,20 +32,20 @@
|
|
30
32
|
</li>
|
31
33
|
<% end %>
|
32
34
|
<li>
|
33
|
-
<%= link_to "#{commentable_path("commentId" => model.id)}#comment_#{model.id}", target: "_blank", data: { "external-link": "
|
35
|
+
<%= link_to "#{commentable_path("commentId" => model.id)}#comment_#{model.id}", target: "_blank", data: { "external-link": "text-only" }, class: "dropdown__item", title: t("decidim.components.comment.single_comment_link_title") do %>
|
34
36
|
<%= icon "share-line" %>
|
35
37
|
<span><%= t("decidim.components.comment.single_comment_link_title") %></span>
|
36
38
|
<% end %>
|
37
39
|
</li>
|
38
40
|
<% if model.authored_by?(current_user) %>
|
39
41
|
<li>
|
40
|
-
<button type="button" class="dropdown__item" data-dialog-open="<%= "editCommentModal#{model.id}" %>" title="<%= t("decidim.components.comment.edit") %>" aria-controls="<%= "editCommentModal#{model.id}" %>" aria-haspopup="dialog"
|
42
|
+
<button type="button" class="dropdown__item" data-dialog-open="<%= "editCommentModal#{model.id}" %>" title="<%= t("decidim.components.comment.edit") %>" aria-controls="<%= "editCommentModal#{model.id}" %>" aria-haspopup="dialog">
|
41
43
|
<%= icon "edit-line" %>
|
42
44
|
<span><%= t("decidim.components.comment.edit") %></span>
|
43
45
|
</button>
|
44
46
|
</li>
|
45
47
|
<li>
|
46
|
-
<%= link_to comment_path, remote: true, method: :delete, class: "dropdown__item", data: { confirm: t("decidim.components.comment.confirm_destroy") }
|
48
|
+
<%= link_to comment_path, remote: true, method: :delete, class: "dropdown__item", data: { confirm: t("decidim.components.comment.confirm_destroy") } do %>
|
47
49
|
<%= icon "delete-bin-line" %>
|
48
50
|
<span><%= t("decidim.components.comment.delete") %></span>
|
49
51
|
<% end %>
|
@@ -39,6 +39,24 @@ module Decidim
|
|
39
39
|
|
40
40
|
private
|
41
41
|
|
42
|
+
def parent_element_id
|
43
|
+
return unless reply?
|
44
|
+
|
45
|
+
"comment_#{model.decidim_commentable_id}"
|
46
|
+
end
|
47
|
+
|
48
|
+
def comment_label
|
49
|
+
if reply?
|
50
|
+
t("decidim.components.comment.comment_label_reply", comment_id: model.id, parent_comment_id: model.decidim_commentable_id)
|
51
|
+
else
|
52
|
+
t("decidim.components.comment.comment_label", comment_id: model.id)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def reply?
|
57
|
+
model.decidim_commentable_type == model.class.name
|
58
|
+
end
|
59
|
+
|
42
60
|
def cache_hash
|
43
61
|
return @hash if defined?(@hash)
|
44
62
|
|
@@ -47,6 +65,8 @@ module Decidim
|
|
47
65
|
hash.push(model.must_render_translation?(current_organization) ? 1 : 0)
|
48
66
|
hash.push(model.authored_by?(current_user) ? 1 : 0)
|
49
67
|
hash.push(model.reported_by?(current_user) ? 1 : 0)
|
68
|
+
hash.push(model.up_votes_count)
|
69
|
+
hash.push(model.down_votes_count)
|
50
70
|
hash.push(model.cache_key_with_version)
|
51
71
|
hash.push(model.author.cache_key_with_version)
|
52
72
|
@hash = hash.join(Decidim.cache_key_separator)
|
@@ -137,11 +157,11 @@ module Decidim
|
|
137
157
|
end
|
138
158
|
|
139
159
|
def up_votes_count
|
140
|
-
model.
|
160
|
+
model.up_votes_count
|
141
161
|
end
|
142
162
|
|
143
163
|
def down_votes_count
|
144
|
-
model.
|
164
|
+
model.down_votes_count
|
145
165
|
end
|
146
166
|
|
147
167
|
def root_depth
|
@@ -157,11 +177,11 @@ module Decidim
|
|
157
177
|
end
|
158
178
|
|
159
179
|
def voted_up?
|
160
|
-
model.up_voted_by?(current_user)
|
180
|
+
@up_voted ||= model.up_voted_by?(current_user)
|
161
181
|
end
|
162
182
|
|
163
183
|
def voted_down?
|
164
|
-
model.down_voted_by?(current_user)
|
184
|
+
@down_voted ||= model.down_voted_by?(current_user)
|
165
185
|
end
|
166
186
|
|
167
187
|
def nested?
|
@@ -5,7 +5,8 @@
|
|
5
5
|
t("decidim.components.comment_order_selector.order.#{order_value}"),
|
6
6
|
decidim_comments.comments_path(commentable_gid: model.to_signed_global_id.to_s, order: order_value, reload: 1),
|
7
7
|
class: "button button__sm button__text-secondary only:m-auto comment-order-by__item inline-block #{order_value == order ? "underline font-bold" : ""}",
|
8
|
-
remote: true
|
8
|
+
remote: true,
|
9
|
+
aria: { controls: threads_node_id }
|
9
10
|
) %>
|
10
11
|
</div>
|
11
12
|
<% end %>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
</div>
|
17
17
|
<%= single_comment_warning %>
|
18
18
|
<%= blocked_comments_warning %>
|
19
|
-
<div class="comment-threads">
|
19
|
+
<div class="comment-threads" id="<%= threads_node_id %>" aria-live="polite">
|
20
20
|
<%= comments_loading %>
|
21
21
|
<% comments.each do |comment| %>
|
22
22
|
<%= cell("decidim/comments/comment_thread", comment, order:) %>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<%# We cannot use the AnnouncementCell directly here as the link is escaped and it would not work %>
|
2
2
|
<div class="flash warning" data-announcement="">
|
3
|
-
<
|
3
|
+
<div class="flash__message">
|
4
4
|
<% if comment_permissions? %>
|
5
5
|
<p><%= blocked_comments_for_unauthorized_user_warning_link %></p>
|
6
6
|
<% else %>
|
7
7
|
<p><%= t("decidim.components.comments.blocked_comments_for_user_warning") %></p>
|
8
8
|
<% end %>
|
9
|
-
</
|
9
|
+
</div>
|
10
10
|
</div>
|
@@ -30,7 +30,7 @@ module Decidim
|
|
30
30
|
|
31
31
|
def blocked_comments_warning
|
32
32
|
return unless comments_blocked?
|
33
|
-
return
|
33
|
+
return if user_comments_blocked?
|
34
34
|
|
35
35
|
render :blocked_comments_warning
|
36
36
|
end
|
@@ -88,6 +88,10 @@ module Decidim
|
|
88
88
|
"comments-for-#{commentable_type.demodulize}-#{model.id}"
|
89
89
|
end
|
90
90
|
|
91
|
+
def threads_node_id
|
92
|
+
"#{node_id}-threads"
|
93
|
+
end
|
94
|
+
|
91
95
|
def commentable_type
|
92
96
|
model.commentable_type
|
93
97
|
end
|
@@ -122,14 +122,14 @@ module Decidim
|
|
122
122
|
#
|
123
123
|
# Returns a bool value to indicate if the condition is truthy or not
|
124
124
|
def up_voted_by?(user)
|
125
|
-
up_votes.
|
125
|
+
up_votes.exists?(author: user)
|
126
126
|
end
|
127
127
|
|
128
128
|
# Public: Check if the user has downvoted the comment
|
129
129
|
#
|
130
130
|
# Returns a bool value to indicate if the condition is truthy or not
|
131
131
|
def down_voted_by?(user)
|
132
|
-
down_votes.
|
132
|
+
down_votes.exists?(author: user)
|
133
133
|
end
|
134
134
|
|
135
135
|
# Public: Overrides the `reported_content_url` Reportable concern method.
|
@@ -14,12 +14,22 @@ module Decidim
|
|
14
14
|
validates :weight, inclusion: { in: [-1, 1] }
|
15
15
|
validate :author_and_comment_same_organization
|
16
16
|
|
17
|
+
after_create :update_comment_votes_count
|
18
|
+
after_destroy :update_comment_votes_count
|
19
|
+
|
17
20
|
def self.export_serializer
|
18
21
|
Decidim::Comments::CommentVoteSerializer
|
19
22
|
end
|
20
23
|
|
21
24
|
private
|
22
25
|
|
26
|
+
def update_comment_votes_count
|
27
|
+
up_votes_count = self.class.where(decidim_comment_id: comment.id, weight: 1).count
|
28
|
+
down_votes_count = self.class.where(decidim_comment_id: comment.id, weight: -1).count
|
29
|
+
|
30
|
+
comment.update(up_votes_count:, down_votes_count:)
|
31
|
+
end
|
32
|
+
|
23
33
|
# Private: check if the comment and the author have the same organization
|
24
34
|
def author_and_comment_same_organization
|
25
35
|
return unless author.present? && comment.present?
|
@@ -18,8 +18,8 @@ window.Rails = Rails;
|
|
18
18
|
// Fake timers for testing polling
|
19
19
|
jest.useFakeTimers();
|
20
20
|
|
21
|
-
import { createCharacterCounter } from "
|
22
|
-
import Configuration from "
|
21
|
+
import { createCharacterCounter } from "src/decidim/input_character_counter";
|
22
|
+
import Configuration from "src/decidim/configuration";
|
23
23
|
// Component is loaded with require because using import loads it before $ has been mocked
|
24
24
|
// so tests are not able to check the spied behaviours
|
25
25
|
const CommentsComponent = require("./comments.component_for_testing.js");
|
@@ -344,9 +344,9 @@ describe("CommentsComponent", () => {
|
|
344
344
|
${generateCommentForm("Dummy", 123)}
|
345
345
|
</div>
|
346
346
|
<div class="flash primary loading-comments hidden">
|
347
|
-
<
|
347
|
+
<div class="flash__message">
|
348
348
|
Loading comments ...
|
349
|
-
</
|
349
|
+
</div>
|
350
350
|
</div>
|
351
351
|
</div>
|
352
352
|
</div>
|
data/config/locales/ar.yml
CHANGED
data/config/locales/bg.yml
CHANGED
@@ -4,4 +4,173 @@ bg:
|
|
4
4
|
models:
|
5
5
|
decidim/comments/comment_by_followed_user_event: Коментар
|
6
6
|
decidim/comments/comment_created_event: Коментар
|
7
|
+
decidim/comments/comment_upvoted_event: Коментарът е одобрен
|
7
8
|
decidim/comments/reply_created_event: Отговор на коментар
|
9
|
+
decidim/comments/user_group_mentioned_event: Споменаване
|
10
|
+
decidim/comments/user_mentioned_event: Споменаване
|
11
|
+
activerecord:
|
12
|
+
models:
|
13
|
+
decidim/comments/comment:
|
14
|
+
one: Коментар
|
15
|
+
other: Коментари
|
16
|
+
decidim/comments/comment_vote:
|
17
|
+
one: Глас
|
18
|
+
other: Гласове
|
19
|
+
decidim:
|
20
|
+
comments:
|
21
|
+
admin:
|
22
|
+
shared:
|
23
|
+
availability_fields:
|
24
|
+
enabled: Коментарите са активирани
|
25
|
+
end_time: Коментарите са активирани до
|
26
|
+
start_time: Коментарите са активирани от
|
27
|
+
comments:
|
28
|
+
create:
|
29
|
+
error: Възникна проблем при създаването на коментара.
|
30
|
+
delete:
|
31
|
+
error: Коментарът не може да бъде изтрит.
|
32
|
+
update:
|
33
|
+
error: Възникна проблем при актуализирането на коментара.
|
34
|
+
comments_title: Коментар
|
35
|
+
last_activity:
|
36
|
+
new_comment: 'Нов коментар:'
|
37
|
+
votes:
|
38
|
+
create:
|
39
|
+
error: Възникна проблем с гласуването за коментара.
|
40
|
+
components:
|
41
|
+
add_comment_form:
|
42
|
+
account_message: <a href="%{sign_in_url}">Влезте в профила си</a> или <a href="%{sign_up_url}">се регистрирайте</a>, за да добавите Вашия коментар.
|
43
|
+
form:
|
44
|
+
body:
|
45
|
+
label: Коментар
|
46
|
+
placeholder: Какво мислите за това?
|
47
|
+
form_error: Текстът е задължителен и не може да е по-дълъг от %{length} символа.
|
48
|
+
submit_reply: Публикуване на отговор
|
49
|
+
submit_root_comment: Публикуване на коментар
|
50
|
+
user_group_id:
|
51
|
+
label: Коментирайте като
|
52
|
+
opinion:
|
53
|
+
label: Вашето мнение по тази тема
|
54
|
+
negative: Негативно
|
55
|
+
negative_selected: Вашето мнение по тази тема е негативно
|
56
|
+
neutral: Неутрално
|
57
|
+
neutral_selected: Вашето мнение по тази тема е неутрално
|
58
|
+
positive: Позитивно
|
59
|
+
positive_selected: Вашето мнение по тази тема е позитивно
|
60
|
+
remaining_characters: "Оставащи символи: %{count}"
|
61
|
+
remaining_characters_1: "%{count} оставащ символ"
|
62
|
+
title: Добавете Вашия коментар
|
63
|
+
comment:
|
64
|
+
alignment:
|
65
|
+
against: Против
|
66
|
+
in_favor: Подкрепям
|
67
|
+
cancel_reply: Отказ от отговор
|
68
|
+
comment_label: Коментар %{comment_id}
|
69
|
+
comment_label_reply: Коментар %{comment_id} (отговор на коментар %{parent_comment_id})
|
70
|
+
confirm_destroy: Сигурни ли сте, че искате да изтриете този коментар?
|
71
|
+
controls_label: Контроли за коментари
|
72
|
+
delete: Изтрий
|
73
|
+
deleted_at: Коментарът е изтрит на %{date}
|
74
|
+
deleted_user: Изтрит участник
|
75
|
+
edit: Редактирай
|
76
|
+
edited: Редактирано
|
77
|
+
hide_replies:
|
78
|
+
one: Скриване на отговора
|
79
|
+
other: Скриване на %{count} отговора
|
80
|
+
moderated_at: Коментарът е модериран на %{date}
|
81
|
+
reply: Отговори
|
82
|
+
report:
|
83
|
+
action: Доклад
|
84
|
+
already_reported: Това съдържание вече е докладвано и ще бъде прегледано от администратор.
|
85
|
+
close: Затвори
|
86
|
+
description: Това съдържание неподходящо ли е?
|
87
|
+
details: Допълнителни коментари
|
88
|
+
reasons:
|
89
|
+
does_not_belong: Съдържа незаконна дейност, заплахи за самоубийство, лична информация или нещо друго, което смятате, че не принадлежи на %{organization_name}.
|
90
|
+
offensive: Съдържа расизъм, сексизъм, злословия, лични атаки, заплахи за смърт, заявки за самоубийство или всякаква форма на омраза.
|
91
|
+
spam: Съдържа примамка за кликване, реклама, измами или скриптове.
|
92
|
+
title: Докладване за неподходящо съдържание
|
93
|
+
show_replies:
|
94
|
+
one: Показване на отговора
|
95
|
+
other: Показване на %{count} отговора
|
96
|
+
single_comment_link_title: Вземете линка
|
97
|
+
comment_order_selector:
|
98
|
+
order:
|
99
|
+
best_rated: С най-висока оценка
|
100
|
+
most_discussed: Най-обсъждани
|
101
|
+
older: По-старо
|
102
|
+
recent: Скорошни
|
103
|
+
title: 'Подреди по:'
|
104
|
+
comments:
|
105
|
+
blocked_comments_for_unauthorized_user_warning: Трябва да сте верифицирани, за да коментирате в този момент, но можете да прочетете предишните.
|
106
|
+
blocked_comments_for_user_warning: Понастоящем не можете да коментирате, но можете да прочетете предходните коментари.
|
107
|
+
blocked_comments_warning: Коментарите в момента са деактивирани, но можете да прочетете предишните.
|
108
|
+
comment_details_title: Детайли за коментара
|
109
|
+
loading: Коментарите се зареждат...
|
110
|
+
single_comment_warning: <a href="%{url}">Вижте всички коментари</a>
|
111
|
+
single_comment_warning_title: Виждате единичен коментар
|
112
|
+
title:
|
113
|
+
one: "%{count} коментар"
|
114
|
+
other: "%{count} коментари"
|
115
|
+
down_vote_button:
|
116
|
+
text: Не съм съгласен с този коментар
|
117
|
+
edit_comment_modal_form:
|
118
|
+
close: Затвори
|
119
|
+
form:
|
120
|
+
body:
|
121
|
+
label: Коментар
|
122
|
+
placeholder: Какво мислите за това?
|
123
|
+
submit: Изпрати
|
124
|
+
title: Редактирайте Вашия коментар
|
125
|
+
up_vote_button:
|
126
|
+
text: Съгласен съм с този коментар
|
127
|
+
events:
|
128
|
+
comments:
|
129
|
+
comment_by_followed_user:
|
130
|
+
email_intro: "%{author_name} остави коментар в %{resource_title}. Можете да го прочетете на тази страница:"
|
131
|
+
email_outro: Получихте това известие, защото следвате %{author_name}. Можете да спрете да следвате този потребител от страницата на неговия профил.
|
132
|
+
email_subject: Има нов коментар от %{author_name} в(ъв) %{resource_title}
|
133
|
+
notification_title: Има нов коментар от <a href="%{author_path}">%{author_name} %{author_nickname}</a> в(ъв) <a href="%{resource_path}">%{resource_title}</a>.
|
134
|
+
comment_by_followed_user_group:
|
135
|
+
email_intro: 'Групата %{author_name} остави коментар в(ъв) %{resource_title}. Можете да го прочетете на следната страница:'
|
136
|
+
email_outro: Получавате това известие, защото следвате %{author_name}. Можете да спрете да следвате тази група от страницата на профила ѝ.
|
137
|
+
email_subject: Има нов коментар от %{author_name} в(ъв) %{resource_title}
|
138
|
+
notification_title: Има нов коментар от <a href="%{author_path}">%{author_name} %{author_nickname}</a> в(ъв) <a href="%{resource_path}">%{resource_title}</a>.
|
139
|
+
comment_created:
|
140
|
+
email_intro: "%{resource_title} получи коментар. Можете да прочетете коментара на тази страница:"
|
141
|
+
email_outro: Получавате това известие, защото следвате „%{resource_title}“ или неговия автор. Можете да прекратите следването от предходната връзка.
|
142
|
+
email_subject: Има нов коментар от %{author_name} по %{resource_title}
|
143
|
+
notification_title: Има нов коментар от <a href="%{author_path}">%{author_name} %{author_nickname}</a> по <a href="%{resource_path}">%{resource_title}</a>
|
144
|
+
comment_downvoted:
|
145
|
+
email_intro: Вашият коментар в „%{resource_title}“ беше гласуван против. Вече има общо %{upvotes} гласа за и %{downvotes} гласа против.
|
146
|
+
email_outro: Получихте това известие, защото вие сте авторът на този коментар.
|
147
|
+
email_subject: Вашият коментар в „%{resource_title}“ беше гласуван против.
|
148
|
+
notification_title: Вашият <a href="%{resource_path}">коментар</a> в „%{resource_title}“ беше гласуван против. Вече има общо %{upvotes} гласа за и %{downvotes} гласа против.
|
149
|
+
comment_upvoted:
|
150
|
+
email_intro: Коментарът ви в „%{resource_title}“ беше гласуван в подкрепа. Вече има общо %{upvotes} гласа за и %{downvotes} гласа против.
|
151
|
+
email_outro: Получихте това известие, защото вие сте авторът на този коментар.
|
152
|
+
email_subject: Коментарът ви в „%{resource_title}“ беше гласуван в подкрепа.
|
153
|
+
notification_title: Вашият <a href="%{resource_path}">коментар</a> в „%{resource_title}“ получи положителен глас. Вече има общо %{upvotes} гласа за и %{downvotes} гласа против.
|
154
|
+
reply_created:
|
155
|
+
email_intro: "%{author_name} отговори на вашия коментар в %{resource_title}. Можете да го прочетете на тази страница:"
|
156
|
+
email_outro: Получавате това известие, защото някой отговори на коментара Ви.
|
157
|
+
email_subject: "%{author_name} отговори на коментара Ви по %{resource_title}"
|
158
|
+
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> отговори на коментара Ви по <a href="%{resource_path}">%{resource_title}</a>
|
159
|
+
user_group_mentioned:
|
160
|
+
email_intro: Група, към която принадлежите, беше спомената
|
161
|
+
email_outro: Получавате това известие, защото сте член на групата %{group_name}, която беше спомената в(ъв) %{resource_title}.
|
162
|
+
email_subject: Бяхте споменати в(ъв) %{resource_title} като член на %{group_name}
|
163
|
+
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> Ви спомена в(ъв) <a href="%{resource_path}">%{resource_title}</a> като член на <a href="%{group_path}">%{group_name} %{group_nickname}</a>
|
164
|
+
user_mentioned:
|
165
|
+
email_intro: Бяхте споменати
|
166
|
+
email_outro: Получавате това известие, защото бяхте споменати в(ъв) %{resource_title}.
|
167
|
+
email_subject: Бяхте споменати в(ъв) %{resource_title}
|
168
|
+
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> Ви спомена в(ъв) <a href="%{resource_path}">%{resource_title}</a>
|
169
|
+
metrics:
|
170
|
+
comments:
|
171
|
+
description: Брой коментари генерирани от участници
|
172
|
+
object: коментари
|
173
|
+
title: Коментари
|
174
|
+
errors:
|
175
|
+
messages:
|
176
|
+
cannot_have_comments: не може да има коментари
|
data/config/locales/ca.yml
CHANGED
@@ -65,13 +65,18 @@ ca:
|
|
65
65
|
against: En contra
|
66
66
|
in_favor: A favor
|
67
67
|
cancel_reply: Cancel·lar resposta
|
68
|
+
comment_label: Comentari %{comment_id}
|
69
|
+
comment_label_reply: Comentari %{comment_id} (respon al comentari %{parent_comment_id})
|
68
70
|
confirm_destroy: Segur que vols esborrar aquest comentari?
|
71
|
+
controls_label: Controls de comentaris
|
69
72
|
delete: Esborrar
|
70
73
|
deleted_at: Comentari esborrat el %{date}
|
71
74
|
deleted_user: Participant eliminada
|
72
75
|
edit: Editar
|
73
76
|
edited: Editat
|
74
|
-
hide_replies:
|
77
|
+
hide_replies:
|
78
|
+
one: Amagar resposta
|
79
|
+
other: Amagar %{count} respostes
|
75
80
|
moderated_at: Comentari moderat el %{date}
|
76
81
|
reply: Respondre
|
77
82
|
report:
|
@@ -123,27 +128,27 @@ ca:
|
|
123
128
|
comments:
|
124
129
|
comment_by_followed_user:
|
125
130
|
email_intro: "%{author_name} ha deixat un comentari a %{resource_title}. Podeu llegir-lo en aquesta pàgina:"
|
126
|
-
email_outro: Has rebut aquesta notificació perquè estàs seguint %{author_name}. Pots deixar de seguir a aquesta participant des de la seva pàgina de perfil.
|
131
|
+
email_outro: Has rebut aquesta notificació perquè estàs seguint el comentari "%{author_name}". Pots deixar de seguir a aquesta participant des de la seva pàgina de perfil.
|
127
132
|
email_subject: Hi ha un nou comentari de %{author_name} en %{resource_title}
|
128
133
|
notification_title: Hi ha un nou comentari per <a href="%{author_path}">%{author_name} %{author_nickname}</a> a <a href="%{resource_path}">%{resource_title}</a>.
|
129
134
|
comment_by_followed_user_group:
|
130
135
|
email_intro: '%{author_name} ha deixat un comentari a%{resource_title}. Pots llegir-lo en aquesta pàgina:'
|
131
|
-
email_outro: Reps aquesta notificació perquè segueixes a %{author_name}. Pots deixar de seguir aquest grup des de la seva pàgina de perfil.
|
136
|
+
email_outro: Reps aquesta notificació perquè segueixes a "%{author_name}". Pots deixar de seguir aquest grup des de la seva pàgina de perfil.
|
132
137
|
email_subject: Hi ha un nou comentari de %{author_name} en %{resource_title}
|
133
138
|
notification_title: Hi ha un nou comentari per <a href="%{author_path}">%{author_name} %{author_nickname}</a> a <a href="%{resource_path}">%{resource_title}</a>.
|
134
139
|
comment_created:
|
135
140
|
email_intro: "S'ha comentat %{resource_title}. Pots llegir el comentari d'aquesta pàgina:"
|
136
|
-
email_outro: Has rebut aquesta notificació perquè estàs seguint "%{resource_title}" o la seva autora. Pots deixar de seguir-la des de l'enllaç anterior.
|
141
|
+
email_outro: Has rebut aquesta notificació perquè estàs seguint el comentari "%{resource_title}" o la seva autora. Pots deixar de seguir-la des de l'enllaç anterior.
|
137
142
|
email_subject: Hi ha un nou comentari de %{author_name} a %{resource_title}
|
138
143
|
notification_title: Hi ha un nou comentari de <a href="%{author_path}">%{author_name} %{author_nickname}</a> en <a href="%{resource_path}">%{resource_title}</a>
|
139
144
|
comment_downvoted:
|
140
145
|
email_intro: El teu comentari a "%{resource_title}" ha rebut un vot negatiu. Ara té un total de %{upvotes} vots positius i %{downvotes} vots negatius.
|
141
|
-
email_outro: Has rebut aquesta notificació perquè
|
146
|
+
email_outro: Has rebut aquesta notificació perquè vas fer aquest comentari.
|
142
147
|
email_subject: El teu comentari a "%{resource_title}" ha rebut un vot negatiu.
|
143
148
|
notification_title: El teu <a href="%{resource_path}">comentari</a> a "%{resource_title}" ha rebut un vot negatiu. Ara té un total de %{upvotes} vots positius i %{downvotes} vots negatius.
|
144
149
|
comment_upvoted:
|
145
150
|
email_intro: El teu comentari a "%{resource_title}" ha rebut un vot positiu. Ara té un total de %{upvotes} vots positius i %{downvotes} vots negatius.
|
146
|
-
email_outro: Has rebut aquesta notificació perquè
|
151
|
+
email_outro: Has rebut aquesta notificació perquè vas fer aquest comentari.
|
147
152
|
email_subject: El teu comentari a "%{resource_title}" ha rebut un vot positiu.
|
148
153
|
notification_title: El teu <a href="%{resource_path}">comentari</a> a "%{resource_title}" ha rebut un vot positiu. Ara té un total de %{upvotes} vots positius i %{downvotes} vots negatius.
|
149
154
|
reply_created:
|
@@ -153,12 +158,12 @@ ca:
|
|
153
158
|
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> ha respost el teu comentari a <a href="%{resource_path}">%{resource_title}</a>
|
154
159
|
user_group_mentioned:
|
155
160
|
email_intro: Un grup al qual pertanys ha estat esmentat
|
156
|
-
email_outro: Has rebut aquesta notificació perquè formes part del grup %{group_name} que ha estat esmentat a %{resource_title}.
|
161
|
+
email_outro: Has rebut aquesta notificació perquè formes part del grup "%{group_name}" que ha estat esmentat a %{resource_title}.
|
157
162
|
email_subject: T'han esmentat a %{resource_title} com a membre de %{group_name}
|
158
163
|
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> t'ha esmentat com a membre de <a href="%{group_path}">%{group_name} %{group_nickname}</a> a <a href="%{resource_path}">%{resource_title}</a>
|
159
164
|
user_mentioned:
|
160
165
|
email_intro: Has estat esmentada
|
161
|
-
email_outro: Has rebut aquesta notificació perquè
|
166
|
+
email_outro: Has rebut aquesta notificació perquè t'han esmentat al comentari "%{resource_title}".
|
162
167
|
email_subject: Has estat esmentada a %{resource_title}
|
163
168
|
notification_title: Has estat esmentada a <a href="%{resource_path}">%{resource_title}</a> per <a href="%{author_path}">%{author_name} %{author_nickname}</a>
|
164
169
|
metrics:
|
data/config/locales/cs.yml
CHANGED
@@ -69,13 +69,15 @@ cs:
|
|
69
69
|
against: Proti
|
70
70
|
in_favor: Ve prospěch
|
71
71
|
cancel_reply: Zrušit odpověď
|
72
|
+
comment_label: Komentář %{comment_id}
|
73
|
+
comment_label_reply: Komentář %{comment_id} (odpověď na komentář %{parent_comment_id})
|
72
74
|
confirm_destroy: Opravdu chcete odstranit tento komentář?
|
75
|
+
controls_label: Ovládání komentářů
|
73
76
|
delete: Smazat
|
74
77
|
deleted_at: Komentář byl smazán dne %{date}
|
75
78
|
deleted_user: Vymazaný účastník
|
76
79
|
edit: Upravit
|
77
80
|
edited: Upraveno
|
78
|
-
hide_replies: Skrýt odpovědi
|
79
81
|
moderated_at: Komentář moderován dne %{date}
|
80
82
|
reply: Odpověď
|
81
83
|
report:
|
data/config/locales/de.yml
CHANGED
@@ -65,13 +65,18 @@ de:
|
|
65
65
|
against: Gegen
|
66
66
|
in_favor: Zugunsten
|
67
67
|
cancel_reply: Antwort abbrechen
|
68
|
+
comment_label: Kommentar %{comment_id}
|
69
|
+
comment_label_reply: Kommentar %{comment_id} (Antwort auf Kommentar %{parent_comment_id})
|
68
70
|
confirm_destroy: Sind Sie sich sicher, dass Sie diesen Kommentar löschen möchten?
|
71
|
+
controls_label: Kommentarsteuerung
|
69
72
|
delete: Löschen
|
70
73
|
deleted_at: Kommentar gelöscht am %{date}
|
71
74
|
deleted_user: Gelöschter Benutzer
|
72
75
|
edit: Bearbeiten
|
73
76
|
edited: Bearbeitet
|
74
|
-
hide_replies:
|
77
|
+
hide_replies:
|
78
|
+
one: Antwort verbergen
|
79
|
+
other: '%{count} Antworten verbergen'
|
75
80
|
moderated_at: Kommentar moderiert am %{date}
|
76
81
|
reply: Antworten
|
77
82
|
report:
|
data/config/locales/el.yml
CHANGED
data/config/locales/en.yml
CHANGED
@@ -65,13 +65,18 @@ en:
|
|
65
65
|
against: Against
|
66
66
|
in_favor: In favor
|
67
67
|
cancel_reply: Cancel reply
|
68
|
+
comment_label: Comment %{comment_id}
|
69
|
+
comment_label_reply: Comment %{comment_id} (reply to comment %{parent_comment_id})
|
68
70
|
confirm_destroy: Are you sure you want to delete this comment?
|
71
|
+
controls_label: Comment controls
|
69
72
|
delete: Delete
|
70
73
|
deleted_at: Comment deleted on %{date}
|
71
74
|
deleted_user: Deleted participant
|
72
75
|
edit: Edit
|
73
76
|
edited: Edited
|
74
|
-
hide_replies:
|
77
|
+
hide_replies:
|
78
|
+
one: Hide reply
|
79
|
+
other: Hide %{count} replies
|
75
80
|
moderated_at: Comment moderated on %{date}
|
76
81
|
reply: Reply
|
77
82
|
report:
|
data/config/locales/es-MX.yml
CHANGED
@@ -65,13 +65,18 @@ es-MX:
|
|
65
65
|
against: En contra
|
66
66
|
in_favor: A favor
|
67
67
|
cancel_reply: Cancelar respuesta
|
68
|
+
comment_label: Comentario %{comment_id}
|
69
|
+
comment_label_reply: Comentario %{comment_id} (responder al comentario %{parent_comment_id})
|
68
70
|
confirm_destroy: '¿Seguro que quieres eliminar este comentario?'
|
71
|
+
controls_label: Controles de comentarios
|
69
72
|
delete: Eliminar
|
70
73
|
deleted_at: Comentario eliminado el %{date}
|
71
74
|
deleted_user: Usuario eliminado
|
72
75
|
edit: Editar
|
73
76
|
edited: Editado
|
74
|
-
hide_replies:
|
77
|
+
hide_replies:
|
78
|
+
one: Ocultar respuesta
|
79
|
+
other: Ocultar %{count} respuestas
|
75
80
|
moderated_at: Comentario moderado el %{date}
|
76
81
|
reply: Respuesta
|
77
82
|
report:
|