commontator 4.11.1 → 5.0.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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -5
  3. data/app/controllers/commontator/application_controller.rb +4 -4
  4. data/app/controllers/commontator/comments_controller.rb +15 -15
  5. data/app/controllers/commontator/subscriptions_controller.rb +1 -1
  6. data/app/controllers/commontator/threads_controller.rb +5 -5
  7. data/app/mailers/commontator/subscriptions_mailer.rb +25 -37
  8. data/app/models/commontator/comment.rb +11 -11
  9. data/app/models/commontator/subscription.rb +2 -2
  10. data/app/models/commontator/thread.rb +9 -9
  11. data/app/views/commontator/comments/_actions.html.erb +8 -8
  12. data/app/views/commontator/comments/_body.html.erb +1 -1
  13. data/app/views/commontator/comments/_form.html.erb +3 -3
  14. data/app/views/commontator/comments/_list.html.erb +3 -3
  15. data/app/views/commontator/comments/_show.html.erb +8 -8
  16. data/app/views/commontator/comments/_votes.html.erb +16 -16
  17. data/app/views/commontator/comments/cancel.js.erb +5 -5
  18. data/app/views/commontator/comments/create.js.erb +9 -9
  19. data/app/views/commontator/comments/delete.js.erb +7 -7
  20. data/app/views/commontator/comments/edit.js.erb +2 -2
  21. data/app/views/commontator/comments/new.js.erb +4 -4
  22. data/app/views/commontator/comments/update.js.erb +1 -1
  23. data/app/views/commontator/comments/vote.js.erb +3 -3
  24. data/app/views/commontator/shared/_thread.html.erb +6 -6
  25. data/app/views/commontator/subscriptions/_link.html.erb +5 -5
  26. data/app/views/commontator/subscriptions/subscribe.js.erb +3 -3
  27. data/app/views/commontator/subscriptions_mailer/comment_created.html.erb +6 -6
  28. data/app/views/commontator/threads/_reply.html.erb +6 -6
  29. data/app/views/commontator/threads/_show.html.erb +33 -33
  30. data/app/views/commontator/threads/_show.js.erb +7 -7
  31. data/app/views/commontator/threads/show.js.erb +6 -6
  32. data/config/initializers/commontator.rb +43 -38
  33. data/config/locales/de.yml +100 -0
  34. data/config/locales/en.yml +26 -27
  35. data/config/locales/pt-BR.yml +78 -0
  36. data/config/locales/ru.yml +25 -26
  37. data/config/locales/zh.yml +26 -27
  38. data/config/routes.rb +4 -4
  39. data/db/migrate/0_install_commontator.rb +17 -17
  40. data/lib/commontator.rb +2 -2
  41. data/lib/commontator/acts_as_commontable.rb +14 -12
  42. data/lib/commontator/acts_as_commontator.rb +5 -5
  43. data/lib/commontator/shared_helper.rb +6 -6
  44. data/lib/commontator/version.rb +1 -1
  45. data/lib/tasks/commontator_tasks.rake +2 -2
  46. data/spec/controllers/commontator/comments_controller_spec.rb +76 -75
  47. data/spec/controllers/commontator/subscriptions_controller_spec.rb +26 -27
  48. data/spec/controllers/commontator/threads_controller_spec.rb +42 -41
  49. data/spec/dummy/app/controllers/dummy_models_controller.rb +1 -1
  50. data/spec/dummy/app/views/layouts/application.html.erb +1 -2
  51. data/spec/dummy/config/application.rb +1 -1
  52. data/spec/dummy/config/environments/development.rb +1 -2
  53. data/spec/dummy/config/environments/production.rb +1 -2
  54. data/spec/dummy/config/environments/test.rb +1 -2
  55. data/spec/dummy/config/initializers/commontator.rb +7 -7
  56. data/spec/dummy/config/routes.rb +2 -3
  57. data/spec/dummy/db/development.sqlite3 +0 -0
  58. data/spec/dummy/db/migrate/1_create_dummy_models.rb +2 -3
  59. data/spec/dummy/db/migrate/2_create_dummy_users.rb +2 -3
  60. data/spec/dummy/db/migrate/3_acts_as_votable_migration.rb +4 -10
  61. data/spec/dummy/db/schema.rb +45 -48
  62. data/spec/dummy/db/test.sqlite3 +0 -0
  63. data/spec/dummy/log/development.log +413 -0
  64. data/spec/dummy/log/test.log +33690 -0
  65. data/spec/lib/commontator/commontable_config_spec.rb +4 -5
  66. data/spec/lib/commontator/commontator_config_spec.rb +4 -5
  67. data/spec/lib/commontator_spec.rb +2 -3
  68. data/spec/mailers/commontator/subscriptions_mailer_spec.rb +2 -3
  69. data/spec/models/commontator/comment_spec.rb +10 -10
  70. data/spec/rails_helper.rb +3 -2
  71. metadata +64 -44
@@ -2,7 +2,6 @@
2
2
  # All settings are initially set to their default values
3
3
 
4
4
  # Note: Do not "return" from a Proc, use "next" instead if necessary
5
- # "return" in a lambda is OK
6
5
  Commontator.configure do |config|
7
6
  # Engine Configuration
8
7
 
@@ -11,8 +10,8 @@ Commontator.configure do |config|
11
10
  # Arguments: the current controller (ActionController::Base)
12
11
  # Returns: the current user (acts_as_commontator)
13
12
  # The default works for Devise and similar authentication plugins
14
- # Default: lambda { |controller| controller.current_user }
15
- config.current_user_proc = lambda { |controller| controller.current_user }
13
+ # Default: ->(controller) { controller.current_user }
14
+ config.current_user_proc = ->(controller) { controller.current_user }
16
15
 
17
16
  # javascript_proc
18
17
  # Type: Proc
@@ -23,8 +22,8 @@ Commontator.configure do |config|
23
22
  # Objects visible in view templates can be accessed
24
23
  # through the view object (for example, view.flash)
25
24
  # However, the view does not include the main application's helpers
26
- # Default: lambda { |view| '$("#error_explanation").remove();' }
27
- config.javascript_proc = lambda { |view| '$("#error_explanation").remove();' }
25
+ # Default: ->(view) { '$("#error_explanation").remove();' }
26
+ config.javascript_proc = ->(view) { '$("#error_explanation").remove();' }
28
27
 
29
28
 
30
29
 
@@ -34,8 +33,8 @@ Commontator.configure do |config|
34
33
  # Type: Proc
35
34
  # Arguments: a user (acts_as_commontator)
36
35
  # Returns: the user's name (String)
37
- # Default: lambda { |user| I18n.t('commontator.anonymous') } (all users are anonymous)
38
- config.user_name_proc = lambda { |user| I18n.t('commontator.anonymous') }
36
+ # Default: ->(user) { I18n.t('commontator.anonymous') } (all users are anonymous)
37
+ config.user_name_proc = ->(user) { I18n.t('commontator.anonymous') }
39
38
 
40
39
  # user_link_proc
41
40
  # Type: Proc
@@ -45,8 +44,8 @@ Commontator.configure do |config|
45
44
  # If anything non-blank is returned, the user's name in comments
46
45
  # comments will become a hyperlink pointing to this path
47
46
  # The main application's routes can be accessed through the app_routes object
48
- # Default: lambda { |user, app_routes| '' } (no link)
49
- config.user_link_proc = lambda { |user, app_routes| '' }
47
+ # Default: ->(user, app_routes) { '' } (no link)
48
+ config.user_link_proc = ->(user, app_routes) { '' }
50
49
 
51
50
  # user_avatar_proc
52
51
  # Type: Proc
@@ -60,12 +59,12 @@ Commontator.configure do |config|
60
59
  # allows de-anonymization attacks against their email addresses
61
60
  # If you absolutely want to keep users' email addresses or identities secret,
62
61
  # do not use Gravatar or similar services
63
- # Default: lambda { |user, view|
64
- # view.commontator_gravatar_image_tag(
65
- # user, 1, :s => 60, :d => 'mm') }
66
- config.user_avatar_proc = lambda { |user, view|
67
- view.commontator_gravatar_image_tag(
68
- user, 1, :s => 60, :d => 'mm') }
62
+ # Default: ->(user, view) {
63
+ # view.commontator_gravatar_image_tag(user, 1, s: 60, d: 'mm')
64
+ # }
65
+ config.user_avatar_proc = ->(user, view) {
66
+ view.commontator_gravatar_image_tag(user, 1, s: 60, d: 'mm')
67
+ }
69
68
 
70
69
  # user_email_proc
71
70
  # Type: Proc
@@ -76,8 +75,8 @@ Commontator.configure do |config|
76
75
  # to Gravatar, so you should always return the user's email address (if using Gravatar)
77
76
  # If the mailer argument is not nil, then Commontator intends to send an email to
78
77
  # the address returned; you can prevent it from being sent by returning a blank String
79
- # Default: lambda { |user, mailer| user.try(:email) || '' }
80
- config.user_email_proc = lambda { |user, mailer| user.try(:email) || '' }
78
+ # Default: ->(user, mailer) { user.try(:email) || '' }
79
+ config.user_email_proc = ->(user, mailer) { user.try(:email) || '' }
81
80
 
82
81
 
83
82
 
@@ -100,16 +99,16 @@ Commontator.configure do |config|
100
99
  # Arguments: a thread (Commontator::Thread), a user (acts_as_commontator)
101
100
  # Returns: a Boolean, true if and only if the user should be allowed to read that thread
102
101
  # Note: can be called with a user object that is nil (if they are not logged in)
103
- # Default: lambda { |thread, user| true } (anyone can read any thread)
104
- config.thread_read_proc = lambda { |thread, user| true }
102
+ # Default: ->(thread, user) { true } (anyone can read any thread)
103
+ config.thread_read_proc = ->(thread, user) { true }
105
104
 
106
105
  # thread_moderator_proc
107
106
  # Type: Proc
108
107
  # Arguments: a thread (Commontator::Thread), a user (acts_as_commontator)
109
108
  # Returns: a Boolean, true if and only if the user is a moderator for that thread
110
109
  # If you want global moderators, make this proc true for them regardless of thread
111
- # Default: lambda { |thread, user| false } (no moderators)
112
- config.thread_moderator_proc = lambda { |thread, user| false }
110
+ # Default: ->(thread, user) { false } (no moderators)
111
+ config.thread_moderator_proc = ->(thread, user) { false }
113
112
 
114
113
  # comment_editing
115
114
  # Type: Symbol
@@ -161,8 +160,8 @@ Commontator.configure do |config|
161
160
  # Returns: vote count to be displayed (String)
162
161
  # pos is the number of likes, or the rating, or the reputation
163
162
  # neg is the number of dislikes, if applicable, or 0 otherwise
164
- # Default: lambda { |thread, pos, neg| "%+d" % (pos - neg) }
165
- config.vote_count_proc = lambda { |thread, pos, neg| "%+d" % (pos - neg) }
163
+ # Default: ->(thread, pos, neg) { "%+d" % (pos - neg) }
164
+ config.vote_count_proc = ->(thread, pos, neg) { "%+d" % (pos - neg) }
166
165
 
167
166
  # comment_order
168
167
  # Type: Symbol
@@ -217,10 +216,12 @@ Commontator.configure do |config|
217
216
  # Arguments: a thread (Commontator::Thread)
218
217
  # Returns: the address emails are sent "from" (String)
219
218
  # Important: If using subscriptions, change this to at least match your domain name
220
- # Default: lambda { |thread|
221
- # "no-reply@#{Rails.application.class.parent.to_s.downcase}.com" }
222
- config.email_from_proc = lambda { |thread|
223
- "no-reply@#{Rails.application.class.parent.to_s.downcase}.com" }
219
+ # Default: ->(thread) {
220
+ # "no-reply@#{Rails.application.class.parent.to_s.downcase}.com"
221
+ # }
222
+ config.email_from_proc = ->(thread) {
223
+ "no-reply@#{Rails.application.class.parent.to_s.downcase}.com"
224
+ }
224
225
 
225
226
  # commontable_name_proc
226
227
  # Type: Proc
@@ -228,9 +229,9 @@ Commontator.configure do |config|
228
229
  # Returns: a name that refers to the commontable object (String)
229
230
  # If you have multiple commontable models, you can also pass this
230
231
  # configuration value as an argument to acts_as_commontable for each one
231
- # Default: lambda { |thread|
232
+ # Default: ->(thread) {
232
233
  # "#{thread.commontable.class.name} ##{thread.commontable.id}" }
233
- config.commontable_name_proc = lambda { |thread|
234
+ config.commontable_name_proc = ->(thread) {
234
235
  "#{thread.commontable.class.name} ##{thread.commontable.id}" }
235
236
 
236
237
  # comment_url_proc
@@ -240,12 +241,13 @@ Commontator.configure do |config|
240
241
  # Returns: a String containing the url of the view that displays the given comment
241
242
  # This usually is the commontable's "show" page
242
243
  # The main application's routes can be accessed through the app_routes object
243
- # Default: lambda { |comment, app_routes|
244
- # app_routes.polymorphic_url(comment.thread.commontable,
245
- # anchor: "comment_#{comment.id}_div") }
244
+ # Default: ->(comment, app_routes) {
245
+ # app_routes.polymorphic_url(comment.thread.commontable, anchor: "comment_#{comment.id}_div")
246
+ # }
246
247
  # (defaults to the commontable's show url with an anchor pointing to the comment's div)
247
- config.comment_url_proc = lambda { |comment, app_routes|
248
- app_routes.polymorphic_url(comment.thread.commontable, anchor: "comment_#{comment.id}_div") }
248
+ config.comment_url_proc = ->(comment, app_routes) {
249
+ app_routes.polymorphic_url(comment.thread.commontable, anchor: "comment_#{comment.id}_div")
250
+ }
249
251
 
250
252
  # mentions_enabled
251
253
  # Type: Boolean
@@ -260,6 +262,7 @@ Commontator.configure do |config|
260
262
  # Type: Proc
261
263
  # Arguments:
262
264
  # the current user (acts_as_commontator)
265
+ # the current thread (Commontator::Thread)
263
266
  # the search query inputted by user (String)
264
267
  # Returns: an ActiveRecord Relation object
265
268
  # Important notes:
@@ -272,8 +275,10 @@ Commontator.configure do |config|
272
275
  # Make sure to handle SQL escaping properly and that the
273
276
  # attribute being searched does not contain sensitive information.
274
277
  #
275
- # Default: lambda { |current_user, query|
276
- # current_user.class.where('username LIKE ?', "#{query}%") }
277
- config.user_mentions_proc = lambda { |current_user, query|
278
- current_user.class.where('username LIKE ?', "#{query}%") }
278
+ # Default: ->(current_user, query) {
279
+ # current_user.class.where('username LIKE ?', "#{query}%")
280
+ # }
281
+ config.user_mentions_proc = ->(current_user, thread, query) {
282
+ current_user.class.where('username LIKE ?', "#{query}%")
283
+ }
279
284
  end
@@ -0,0 +1,100 @@
1
+ # Files in the config/locales directory are used for internationalization
2
+ # and are automatically loaded by Rails. If you want to use locales other
3
+ # than English, add the necessary files in this directory.
4
+ #
5
+ # To use the locales, use `I18n.t`:
6
+ #
7
+ # I18n.t 'hello'
8
+ #
9
+ # In views, this is aliased to just `t`:
10
+ #
11
+ # <%= t('hello') %>
12
+ #
13
+ # To use a different locale, set it with `I18n.locale`:
14
+ #
15
+ # I18n.locale = :es
16
+ #
17
+ # This would use the information in config/locales/es.yml.
18
+ #
19
+ # To learn more, please read the Rails Internationalization guide
20
+ # available at http://guides.rubyonrails.org/i18n.html.
21
+
22
+ ---
23
+ de:
24
+ activerecord:
25
+ attributes:
26
+ commontator/comment:
27
+ body: Kommentar
28
+ creator: Ersteller
29
+ editor: Bearbeiter
30
+ thread: Diskussion
31
+ commontator/subscription:
32
+ subscriber: Subscriber
33
+ thread: Diskussion
34
+ commontator/thread:
35
+ commontable: Commontable
36
+ models:
37
+ commontator/comment:
38
+ one: Kommentar
39
+ other: Kommentare
40
+ commontator/subscription:
41
+ one: Subscription
42
+ other: Subscriptions
43
+ commontator/thread:
44
+ one: Diskussion
45
+ other: Diskussionen
46
+ commontator:
47
+ anonymous: Anonymous
48
+ comment:
49
+ actions:
50
+ cancel: Abbrechen
51
+ confirm_delete: "Sind Sie sicher, dass sie diesen Kommentar löschen wollen?"
52
+ create: "Kommentar speichern"
53
+ delete: Löschen
54
+ edit: Bearbeiten
55
+ new: "Neuer Kommentar"
56
+ undelete: Löschen rückgängig
57
+ update: "Kommentar bearbeiten"
58
+ errors:
59
+ already_deleted: "Dieser Kommentar wurde bereits gelöscht."
60
+ create: "Kommentar kann nicht veröffentlicht werden:"
61
+ double_posted: "Kommentar ist ein Duplikat."
62
+ not_deleted: "Dieser Kommentar wurde nicht gelöscht.."
63
+ update: "Kommentar kann nicht bearbeitet werden:"
64
+ status:
65
+ created_at: "Veröffentlich am %{created_at}."
66
+ deleted_by: "Kommentar gelöscht von %{deleter_name}."
67
+ updated_at: "Bearbeitet von %{editor_name} am %{updated_at}."
68
+ email:
69
+ comment_created:
70
+ body: "%{creator_name} kommentierte zu %{commontable_name}:"
71
+ subject: "%{creator_name} veröffentlichte einen Kommentar zu %{commontable_name}"
72
+ thread_link_html: "<a href=\"%{comment_url}\">Hier klicken</a> um alle Kommentare zu %{commontable_name} zu sehen."
73
+ require_login: "Sie müssen sich anmelden bevor sie einen Kommentar veröffentlichen können."
74
+ subscription:
75
+ actions:
76
+ confirm_unsubscribe: "Sind Sie sicher, dass sie keine Nachrichten mehr zur Diskussion erhalten möchten?"
77
+ subscribe: Subscribe
78
+ unsubscribe: Unsubscribe
79
+ errors:
80
+ already_subscribed: "Sie erhalten zu der Diskussion bereits Aktualisierungen"
81
+ not_subscribed: "Sie erhalten zu der Diskussion keine Nachrichten."
82
+ thread:
83
+ actions:
84
+ show_all: "Alle Kommentare anzeigen"
85
+ filter: "Kommentare filtern"
86
+ close: "Diskussion beenden"
87
+ confirm_close: "Sind Sie sicher, dass sie die Diskussion schliessen wollen?"
88
+ reopen: "Diskussion wieder eröffnen"
89
+ show: "Kommentare anzeigen"
90
+ hide: "Kommentare ausblenden"
91
+ errors:
92
+ already_closed: "Diese Diskussion ist bereits geschlossen."
93
+ not_closed: "Diese Diskussion ist nicht geschlossen."
94
+ status:
95
+ cannot_post: "Zurzeit können keine neuen Kommentare verfasst werden."
96
+ closed: "Kommentare (geschlossen von %{closer_name})"
97
+ open: Kommentare
98
+ time:
99
+ formats:
100
+ commontator: "%d. %B %Y um %H:%m %Z"
@@ -19,34 +19,34 @@
19
19
  # To learn more, please read the Rails Internationalization guide
20
20
  # available at http://guides.rubyonrails.org/i18n.html.
21
21
 
22
- ---
23
- en:
24
- activerecord:
25
- attributes:
26
- commontator/comment:
22
+ ---
23
+ en:
24
+ activerecord:
25
+ attributes:
26
+ commontator/comment:
27
27
  body: Comment
28
28
  creator: Creator
29
29
  editor: Editor
30
30
  thread: Discussion
31
- commontator/subscription:
31
+ commontator/subscription:
32
32
  subscriber: Subscriber
33
33
  thread: Discussion
34
- commontator/thread:
34
+ commontator/thread:
35
35
  commontable: Commontable
36
- models:
37
- commontator/comment:
36
+ models:
37
+ commontator/comment:
38
38
  one: comment
39
39
  other: comments
40
- commontator/subscription:
40
+ commontator/subscription:
41
41
  one: subscription
42
42
  other: subscriptions
43
- commontator/thread:
43
+ commontator/thread:
44
44
  one: thread
45
45
  other: threads
46
- commontator:
46
+ commontator:
47
47
  anonymous: Anonymous
48
- comment:
49
- actions:
48
+ comment:
49
+ actions:
50
50
  cancel: Cancel
51
51
  confirm_delete: "Are you sure you want to delete this comment?"
52
52
  create: "Post Comment"
@@ -55,33 +55,32 @@ en:
55
55
  new: "New Comment"
56
56
  undelete: Undelete
57
57
  update: "Modify Comment"
58
- errors:
58
+ errors:
59
59
  already_deleted: "This comment has already been deleted."
60
60
  create: "This comment could not be posted because:"
61
61
  double_posted: "is a duplicate of another comment."
62
62
  not_deleted: "This comment is not deleted."
63
63
  update: "This comment could not be modified because:"
64
- status:
64
+ status:
65
65
  created_at: "Posted on %{created_at}."
66
66
  deleted_by: "Comment deleted by %{deleter_name}."
67
67
  updated_at: "Last modified by %{editor_name} on %{updated_at}."
68
- email:
69
- comment_created:
68
+ email:
69
+ comment_created:
70
70
  body: "%{creator_name} commented on %{commontable_name}:"
71
71
  subject: "%{creator_name} posted a comment on %{commontable_name}"
72
72
  thread_link_html: "<a href=\"%{comment_url}\">Click here</a> to view all comments on %{commontable_name}."
73
- undisclosed_recipients: "Undisclosed Recipients"
74
73
  require_login: "You must login before you can post a comment."
75
- subscription:
76
- actions:
74
+ subscription:
75
+ actions:
77
76
  confirm_unsubscribe: "Are you sure you want to unsubscribe from this discussion?"
78
77
  subscribe: Subscribe
79
78
  unsubscribe: Unsubscribe
80
- errors:
79
+ errors:
81
80
  already_subscribed: "You are already subscribed to this discussion."
82
81
  not_subscribed: "You are not subscribed to this discussion."
83
- thread:
84
- actions:
82
+ thread:
83
+ actions:
85
84
  show_all: "Show All Comments"
86
85
  filter: "Filter Comments"
87
86
  close: "Close Discussion"
@@ -92,10 +91,10 @@ en:
92
91
  errors:
93
92
  already_closed: "This discussion has already been closed."
94
93
  not_closed: "This discussion is not closed."
95
- status:
94
+ status:
96
95
  cannot_post: "New comments cannot be posted at this time."
97
96
  closed: "Comments (Closed by %{closer_name})"
98
97
  open: Comments
99
- time:
100
- formats:
98
+ time:
99
+ formats:
101
100
  commontator: "%b %d %Y at %I:%M%p %Z"
@@ -0,0 +1,78 @@
1
+ pt-BR:
2
+ activerecord:
3
+ attributes:
4
+ commontator/comment:
5
+ body: Comentário
6
+ creator: Criador
7
+ editor: Editor
8
+ thread: Discussão
9
+ commontator/subscription:
10
+ subscriber: Assinante
11
+ thread: Discussão
12
+ commontator/thread:
13
+ commontable: Comentável
14
+ models:
15
+ commontator/comment:
16
+ one: comentário
17
+ other: comentários
18
+ commontator/subscription:
19
+ one: inscrição
20
+ other: incrições
21
+ commontator/thread:
22
+ one: tópico
23
+ other: tópicos
24
+ commontator:
25
+ anonymous: Anônimo
26
+ comment:
27
+ actions:
28
+ cancel: Cancelar
29
+ confirm_delete: "Tem certeza que deseja remover esse comentário?"
30
+ create: "Postar comentário"
31
+ delete: Deletar
32
+ edit: Editar
33
+ new: "Novo comentário"
34
+ undelete: Desfazer
35
+ update: "Editar comentário"
36
+ errors:
37
+ already_deleted: "esse comentário já foi removido."
38
+ create: "Esse comentário não pôde ser postado porque:"
39
+ double_posted: "é um comentário duplicado."
40
+ not_deleted: "Esse comentário não foi removido."
41
+ update: "Esse comentário não pôde ser editado porque:"
42
+ status:
43
+ created_at: "Postado em %{created_at}."
44
+ deleted_by: "Comentário removido por %{deleter_name}."
45
+ updated_at: "Última edição por %{editor_name} em %{updated_at}."
46
+ email:
47
+ comment_created:
48
+ body: "%{creator_name} comentou em %{commontable_name}:"
49
+ subject: "%{creator_name} postou um comentário em %{commontable_name}"
50
+ thread_link_html: "<a href=\"%{comment_url}\">Clique aqui</a> para ver todos os comentários em %{commontable_name}."
51
+ require_login: "Você deve fazer login para postar um comentário."
52
+ subscription:
53
+ actions:
54
+ confirm_unsubscribe: "Tem certeza que deseja cancelar sua inscrição nessa discussão?"
55
+ subscribe: Inscrever-se
56
+ unsubscribe: Cancelar inscrição
57
+ errors:
58
+ already_subscribed: "Você já está inscrito nessa discussão."
59
+ not_subscribed: "Você não está inscrito nessa discussão."
60
+ thread:
61
+ actions:
62
+ show_all: "Mostrar todos os comentários"
63
+ filter: "Filtrar comentários"
64
+ close: "Fechar discussão"
65
+ confirm_close: "Tem certeza que deseja fechar a discussão?"
66
+ reopen: "Reabrir discussão"
67
+ show: "Mostrar comentários"
68
+ hide: "Esconder comentários"
69
+ errors:
70
+ already_closed: "Essa discussão já foi fechada."
71
+ not_closed: "Essa discussão não está fechada."
72
+ status:
73
+ cannot_post: "Não é possível postar novos comentários."
74
+ closed: "Comentários (Fechado por %{closer_name})"
75
+ open: Comentários
76
+ time:
77
+ formats:
78
+ commontator: "%b %d %Y às %I:%M%p %Z"