refinerycms-blog 1.1 → 1.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.
Files changed (51) hide show
  1. data/app/controllers/admin/blog/posts_controller.rb +53 -0
  2. data/app/controllers/admin/blog/settings_controller.rb +14 -2
  3. data/app/controllers/blog/posts_controller.rb +18 -7
  4. data/app/helpers/blog_posts_helper.rb +23 -7
  5. data/app/models/blog_category.rb +4 -11
  6. data/app/models/blog_comment.rb +11 -3
  7. data/app/models/blog_post.rb +35 -14
  8. data/app/models/categorization.rb +5 -0
  9. data/app/views/admin/blog/_submenu.html.erb +37 -27
  10. data/app/views/admin/blog/categories/_category.html.erb +3 -3
  11. data/app/views/admin/blog/categories/_form.html.erb +1 -1
  12. data/app/views/admin/blog/categories/index.html.erb +2 -6
  13. data/app/views/admin/blog/comments/_comment.html.erb +2 -2
  14. data/app/views/admin/blog/posts/_form.html.erb +1 -1
  15. data/app/views/admin/blog/posts/_post.html.erb +5 -5
  16. data/app/views/admin/blog/posts/index.html.erb +2 -6
  17. data/app/views/admin/blog/posts/uncategorized.html.erb +26 -0
  18. data/app/views/admin/blog/settings/notification_recipients.html.erb +1 -1
  19. data/app/views/blog/posts/_nav.html.erb +9 -11
  20. data/app/views/blog/posts/_post.html.erb +5 -7
  21. data/app/views/blog/posts/archive.html.erb +8 -6
  22. data/app/views/blog/posts/index.html.erb +10 -7
  23. data/app/views/blog/posts/show.html.erb +5 -4
  24. data/app/views/blog/shared/_categories.html.erb +10 -8
  25. data/app/views/blog/shared/_post.html.erb +9 -7
  26. data/app/views/blog/shared/_posts.html.erb +10 -8
  27. data/app/views/blog/shared/_rss_feed.html.erb +1 -1
  28. data/changelog.md +24 -0
  29. data/config/locales/de.yml +128 -0
  30. data/config/locales/en.yml +17 -3
  31. data/config/locales/es.yml +122 -0
  32. data/config/locales/fr.yml +125 -0
  33. data/config/locales/it.yml +1 -0
  34. data/config/locales/pl.yml +134 -0
  35. data/config/locales/pt-BR.yml +125 -0
  36. data/config/locales/ru.yml +125 -0
  37. data/config/routes.rb +5 -2
  38. data/features/authors.feature +15 -0
  39. data/features/support/factories/blog_categories.rb +1 -1
  40. data/features/support/factories/blog_posts.rb +3 -1
  41. data/features/support/step_definitions/authors_steps.rb +7 -0
  42. data/lib/gemspec.rb +1 -0
  43. data/lib/generators/refinerycms_blog/templates/db/migrate/migration_number_add_user_id_to_blog_posts.rb +11 -0
  44. data/lib/generators/refinerycms_blog_generator.rb +14 -7
  45. data/lib/refinerycms-blog.rb +2 -6
  46. data/public/javascripts/refinery/refinerycms-blog.js +3 -3
  47. data/spec/models/blog_categories_spec.rb +28 -8
  48. data/spec/models/blog_posts_spec.rb +167 -7
  49. metadata +16 -20
  50. data/Gemfile +0 -2
  51. data/Gemfile.lock +0 -11
@@ -1,4 +1,4 @@
1
- <% form_for [:admin, @blog_category] do |f| -%>
1
+ <%= form_for [:admin, @blog_category] do |f| -%>
2
2
  <%= render :partial => "/shared/admin/error_messages",
3
3
  :locals => {
4
4
  :object => f.object,
@@ -10,15 +10,11 @@
10
10
  <% end %>
11
11
  <% else %>
12
12
  <% if @blog_categories.any? %>
13
- <%= will_paginate @blog_categories,
14
- :previous_label => '&laquo;',
15
- :next_label => '&raquo;' %>
13
+ <%= will_paginate @blog_categories %>
16
14
 
17
15
  <%= render :partial => "sortable_list" %>
18
16
 
19
- <%= will_paginate @blog_categories,
20
- :previous_label => '&laquo;',
21
- :next_label => '&raquo;' %>
17
+ <%= will_paginate @blog_categories %>
22
18
  <% else %>
23
19
  <p>
24
20
  <strong>
@@ -1,12 +1,12 @@
1
1
  <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= "comment-#{comment.to_param}" -%>">
2
2
  <span class='title'>
3
- <%=h comment.name %>
3
+ <%= comment.name %>
4
4
  <span class="preview"> - <%= truncate(comment.message, :length => 75) %></span>
5
5
  </span>
6
6
  <span class='actions'>
7
7
  <%= link_to refinery_icon_tag("application_go.png"),
8
8
  blog_post_url(comment.post, :anchor => "comment-#{comment.to_param}"),
9
- :title => t('.view_live'),
9
+ :title => t('.view_live_html'),
10
10
  :target => "_blank" unless comment.unmoderated? %>
11
11
  <%= link_to refinery_icon_tag('zoom.png'), admin_blog_comment_path(comment),
12
12
  :title => t('.read') %>
@@ -1,4 +1,4 @@
1
- <% form_for [:admin, @blog_post] do |f| -%>
1
+ <%= form_for [:admin, @blog_post] do |f| -%>
2
2
  <%= render :partial => "/shared/admin/error_messages",
3
3
  :locals => {
4
4
  :object => f.object,
@@ -1,18 +1,18 @@
1
1
  <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(post) -%>">
2
2
  <span class='title'>
3
- <%=h post.title %>
4
- <span class="preview">&nbsp;</span>
3
+ <%= post.title %>
4
+ <span class="preview"><%= post.published_at.try(:strftime, '%b %d, %Y') || 'draft' %><%= " by #{post.author.username}" if post.author.present? %></span>
5
5
  </span>
6
6
  <span class='actions'>
7
7
  <%= link_to refinery_icon_tag("application_go.png"), blog_post_url(post),
8
- :title => t('.view_live'),
8
+ :title => t('.view_live_html'),
9
9
  :target => "_blank" %>
10
10
  <%= link_to refinery_icon_tag("application_edit.png"), edit_admin_blog_post_path(post),
11
11
  :title => t('.edit') %>
12
12
  <%= link_to refinery_icon_tag("delete.png"), admin_blog_post_path(post),
13
13
  :class => "cancel confirm-delete",
14
14
  :title => t('.delete'),
15
- :'data-method' => 'delete',
16
- :'data-confirm' => t('shared.admin.delete.message', :title => post.title) %>
15
+ :method => :delete,
16
+ :confirm => t('shared.admin.delete.message', :title => post.title) %>
17
17
  </span>
18
18
  </li>
@@ -10,15 +10,11 @@
10
10
  <% end %>
11
11
  <% else %>
12
12
  <% if @blog_posts.any? %>
13
- <%= will_paginate @blog_posts,
14
- :previous_label => '&laquo;',
15
- :next_label => '&raquo;' %>
13
+ <%= will_paginate @blog_posts %>
16
14
 
17
15
  <%= render :partial => "sortable_list" %>
18
16
 
19
- <%= will_paginate @blog_posts,
20
- :previous_label => '&laquo;',
21
- :next_label => '&raquo;' %>
17
+ <%= will_paginate @blog_posts %>
22
18
  <% else %>
23
19
  <p>
24
20
  <strong>
@@ -0,0 +1,26 @@
1
+ <%= render :partial => '/admin/blog/submenu' %>
2
+ <div id='records'>
3
+ <% if searching? %>
4
+ <h2><%= t('shared.admin.search.results_for', :query => params[:search]) %></h2>
5
+ <% if @blog_posts.any? %>
6
+ <%= render :partial => "blog_posts",
7
+ :collection => @blog_posts %>
8
+ <% else %>
9
+ <p><%= t('admin.search_no_results') %></p>
10
+ <% end %>
11
+ <% else %>
12
+ <% if @blog_posts.any? %>
13
+ <%= will_paginate @blog_posts %>
14
+
15
+ <%= render :partial => "sortable_list" %>
16
+
17
+ <%= will_paginate @blog_posts %>
18
+ <% else %>
19
+ <p>
20
+ <strong>
21
+ <%= t('.no_items_yet', :create => t('admin.blog.submenu.posts.new')) %>
22
+ </strong>
23
+ </p>
24
+ <% end %>
25
+ <% end %>
26
+ </div>
@@ -1,4 +1,4 @@
1
- <% form_tag do %>
1
+ <%= form_tag do %>
2
2
 
3
3
  <div class='field'>
4
4
  <span class='label_with_help'>
@@ -1,13 +1,11 @@
1
- <% if next_or_previous?(@blog_post) -%>
2
- <nav id="next_prev_article">
3
- <% if @blog_post.next.present? -%>
4
- <%= link_to raw(truncate(@blog_post.next.title) + "&nbsp;&#187;"), @blog_post.next, :class => 'next' %>
5
- <% end -%>
1
+ <nav id="next_prev_article">
2
+ <% if @blog_post.next.present? -%>
3
+ <%= link_to (truncate(@blog_post.next.title) + " &#187;").html_safe, @blog_post.next, :class => 'next' %>
4
+ <% end -%>
6
5
 
7
- <%= link_to 'Blog Home', blog_root_path, :class => 'home' %>
6
+ <%= link_to t('blog.posts.show.blog_home'), blog_root_path, :class => 'home' %>
8
7
 
9
- <% if @blog_post.prev.present? -%>
10
- <%= link_to "&#171;&nbsp;".html_safe + truncate(@blog_post.prev.title), @blog_post.prev, :class => 'prev' %>
11
- <% end -%>
12
- </nav><!-- /next_prev_article -->
13
- <% end -%>
8
+ <% if @blog_post.prev.present? -%>
9
+ <%= link_to ("&#171; " + truncate(@blog_post.prev.title)).html_safe, @blog_post.prev, :class => 'prev' %>
10
+ <% end -%>
11
+ </nav><!-- /next_prev_article -->
@@ -7,12 +7,12 @@
7
7
  <header>
8
8
  <h1><%= @blog_post.title %></h1>
9
9
  <details>
10
- <time datetime="<%= @blog_post.published_at.strftime('%Y-%m-%d') %>" class='posted_at'>
11
- <%= t('blog.shared.posts.created_at', :when => @blog_post.published_at.strftime('%d %B %Y')) %>.
12
- </time>
10
+ <time datetime="<%=l @blog_post.published_at.to_date, :format => :default %>" class='posted_at'>
11
+ <%= t('blog.shared.posts.created_at', :when => l(@blog_post.published_at.to_date, :format => :short)) %>.
12
+ </time><%= " by #{@blog_post.author.username}" if @blog_post.author.present? %>
13
13
  <% if (categories = @blog_post.categories).any? %>
14
14
  <aside class='filed_in'>
15
- <%= t('.filed_in') %>
15
+ <%= t('blog.posts.show.filed_in') %>
16
16
  <% categories.each_with_index do |category, index| %>
17
17
  <%= link_to category.title, blog_category_url(category) -%><%= ',' if index < ((categories.length) - 1) %>
18
18
  <% end %>
@@ -28,7 +28,5 @@
28
28
  </article>
29
29
  <%= render :partial => '/shared/draft_page_message' unless @blog_post.nil? or @blog_post.live? -%>
30
30
  <% if next_or_previous?(@blog_post) -%>
31
- <nav id="next_prev_article">
32
- <%= render 'nav' %>
33
- </nav><!-- /next_prev_article -->
31
+ <%= render 'nav' %>
34
32
  <% end -%>
@@ -1,11 +1,13 @@
1
1
  <% content_for :body_content_left do %>
2
2
  <%= @page[Page.default_parts.first.to_sym] %>
3
- <h1>Blog Archive for <%= @archive_date.strftime('%B %Y') %></h1>
4
- <section id="blog_posts">
5
- <%= render :partial => "/blog/shared/post", :collection => @blog_posts %>
6
- </section>
7
- <%= "There are no blog articles posted for #{@archive_date.strftime('%B %Y')}. Stay tuned." unless @blog_posts.any? %>
8
- <%# TODO: Add locale logic here - hubble is a n00b at that %>
3
+ <h1><%= t('.blog_archive_for', :date => @archive_date.strftime('%B %Y')) %></h1>
4
+ <% if @blog_posts.any? %>
5
+ <section id="blog_posts">
6
+ <%= render :partial => "/blog/shared/post", :collection => @blog_posts %>
7
+ </section>
8
+ <% else %>
9
+ <p><%= t('.no_blog_articles_posted', :date => @archive_date.strftime('%B %Y')) %></p>
10
+ <% end %>
9
11
  <% end %>
10
12
 
11
13
  <% content_for :body_content_right do %>
@@ -1,15 +1,18 @@
1
1
  <% content_for :body_content_left do %>
2
- <%= @page[Page.default_parts.first.to_sym] %>
2
+ <%=raw @page[Page.default_parts.first.to_sym] if Page.default_parts.any? %>
3
3
 
4
- <section id="blog_posts">
5
- <%= render :partial => "/blog/shared/post", :collection => @blog_posts %>
6
- </section>
7
- <%= "<p>There are no blog articles posted yet. Stay tuned.</p>".html_safe unless @blog_posts.any? %>
8
- <%# TODO: Add locale logic here - hubble is a n00b at that %>
4
+ <% if @blog_posts.any? %>
5
+ <section id="blog_posts">
6
+ <%= render :partial => "/blog/shared/post", :collection => @blog_posts %>
7
+ <%= will_paginate @blog_posts %>
8
+ </section>
9
+ <% else %>
10
+ <p><%= t('.no_blog_articles_yet') %></p>
11
+ <% end %>
9
12
  <% end %>
10
13
 
11
14
  <% content_for :body_content_right do %>
12
- <%= @page[Page.default_parts.second.to_sym] %>
15
+ <%=raw @page[Page.default_parts.second.to_sym] if Page.default_parts.many? %>
13
16
 
14
17
  <%= render :partial => "/blog/shared/categories" %>
15
18
  <%= render :partial => "/blog/shared/rss_feed" %>
@@ -6,7 +6,6 @@
6
6
  <% if BlogPost.comments_allowed? %>
7
7
  <aside id="comments">
8
8
  <h2><%= t('.comments.title') %></h2>
9
-
10
9
  <% if (comments = @blog_post.comments.approved).any? %>
11
10
  <%= render :partial => "comment", :collection => comments %>
12
11
  <% else %>
@@ -22,7 +21,7 @@
22
21
  <% end %>
23
22
 
24
23
  <h2><%= t('.comments.add') %></h2>
25
- <% form_for [:blog_post, @blog_comment] do |f| %>
24
+ <%= form_for [:blog_post, @blog_comment] do |f| %>
26
25
  <%= render :partial => "/shared/admin/error_messages",
27
26
  :locals => {
28
27
  :object => f.object,
@@ -61,7 +60,8 @@
61
60
  <% content_for :head_libraries, jquery_include_tags(:jquery_ui => false) %>
62
61
  <% content_for :head do %>
63
62
  <%= stylesheet_link_tag 'refinerycms-blog' %>
64
- <%= javascript_include_tag('refinerycms-blog') %>
63
+ <%# enable AJAX'd post nav at your own risk until html5 history API implemented. %>
64
+ <%#= javascript_include_tag('refinerycms-blog') %>
65
65
  <% if BlogPost::ShareThis.enabled? %>
66
66
  <script src="http://w.sharethis.com/button/buttons.js"></script>
67
67
  <script>stLight.options({publisher:'<%= BlogPost::ShareThis.key %>'});</script>
@@ -71,7 +71,8 @@
71
71
  <% content_for :stylesheets, stylesheet_link_tag('refinerycms-blog') %>
72
72
  <% content_for :before_javascript_libraries, jquery_include_tags(:jquery_ui => false) %>
73
73
  <% content_for :javascripts do %>
74
- <%= javascript_include_tag 'refinerycms-blog' %>
74
+ <%# enable AJAX'd post nav at your own risk until html5 history API implemented. %>
75
+ <%#= javascript_include_tag('refinerycms-blog') %>
75
76
  <script src="http://w.sharethis.com/button/buttons.js"></script>
76
77
  <script>stLight.options({publisher:'<%= BlogPost::ShareThis.key %>'});</script>
77
78
  <% end if BlogPost::ShareThis.enabled? %>
@@ -1,8 +1,10 @@
1
- <h2><%= t('.title') %></h2>
2
- <ul id='categories'>
3
- <% @blog_categories.each do |category| %>
4
- <li<%= " class='selected'" if @category.present? and @category.id == category.id %>>
5
- <%= link_to "#{category.title} (#{category.post_count})", blog_category_url(category) %>
6
- </li>
7
- <% end %>
8
- </ul>
1
+ <% if @blog_categories.any? %>
2
+ <h2><%= t('.title') %></h2>
3
+ <ul id='categories'>
4
+ <% @blog_categories.each do |category| %>
5
+ <li<%= " class='selected'" if @category.present? and @category.id == category.id %>>
6
+ <%= link_to "#{category.title} (#{category.post_count})", blog_category_url(category) %>
7
+ </li>
8
+ <% end %>
9
+ </ul>
10
+ <% end %>
@@ -3,9 +3,9 @@
3
3
  <header>
4
4
  <h1><%= link_to post.title, blog_post_url(post) %></h1>
5
5
  <details>
6
- <time datetime="<%= post.published_at.strftime('%Y-%m-%d') %>" class='posted_at'>
7
- <%= t('blog.shared.posts.created_at', :when => post.published_at.strftime('%d %B %Y')) %>.
8
- </time>
6
+ <time datetime="<%=l post.published_at.to_date, :format => :default %>" class='posted_at'>
7
+ <%= t('blog.shared.posts.created_at', :when => l(post.published_at.to_date, :format => :short)) %>.
8
+ </time><%= " by #{post.author.username}" if post.author.present? %>
9
9
  <% if (categories = post.categories).any? %>
10
10
  <aside class='filed_in'>
11
11
  <%= t('filed_in', :scope => 'blog.posts.show') %>
@@ -26,10 +26,12 @@
26
26
  <%= link_to t('blog.shared.posts.read_more'), blog_post_url(post) %>
27
27
 
28
28
  <aside class='comment_count'>
29
- <% if post.comments.any? %>
30
- (<%= pluralize(post.comments.approved.count, t('blog.shared.comments.singular')) %>)
31
- <% else %>
32
- (<%= t('blog.shared.comments.none') %>)
29
+ <% if BlogPost.comments_allowed? %>
30
+ <% if post.comments.any? %>
31
+ (<%= pluralize(post.comments.approved.count, t('blog.shared.comments.singular')) %>)
32
+ <% else %>
33
+ (<%= t('blog.shared.comments.none') %>)
34
+ <% end %>
33
35
  <% end %>
34
36
  </aside>
35
37
  </p>
@@ -1,8 +1,10 @@
1
- <h2><%= t('.other') %></h2>
2
- <ul id="blog_posts">
3
- <% @blog_posts.each do |blog_post| %>
4
- <li class='clearfix'>
5
- <%= link_to blog_post.title, blog_post_url(blog_post) %>
6
- </li>
7
- <% end %>
8
- </ul>
1
+ <% if @blog_posts.many? %>
2
+ <h2><%= t('.other') %></h2>
3
+ <ul id="blog_posts">
4
+ <% @blog_posts.each do |blog_post| %>
5
+ <li class='clearfix'>
6
+ <%= link_to blog_post.title, blog_post_url(blog_post) %>
7
+ </li>
8
+ <% end %>
9
+ </ul>
10
+ <% end %>
@@ -1,2 +1,2 @@
1
1
  <h2><%= t('.title') %></h2>
2
- <%= link_to "Subscribe", blog_rss_feed_url, :id => "rss_feed_subscribe"%>
2
+ <%= link_to t('.subscribe'), blog_rss_feed_url, :id => "rss_feed_subscribe"%>
data/changelog.md ADDED
@@ -0,0 +1,24 @@
1
+ ## 1.2 [01 March 2011]
2
+
3
+ * Posts can be authored [joemsak](https://github.com/joemsak)
4
+ * Front-end pagination [joemsak](https://github.com/joemsak)
5
+ * Archives start grouping by year after 2 years [joemsak](https://github.com/joemsak)
6
+ * Removed ajax blog post navigation [joemsak](https://github.com/joemsak)
7
+ * Administrate uncategorized posts [joemsak](https://github.com/joemsak)
8
+ * Categories in has_many :through relationship [joemsak](https://github.com/joemsak)
9
+ * General bug fixing & test coverage [parndt](https://github.com/parndt) [joemsak](https://github.com/joemsak)
10
+ * Russian translation [iband](https://github.com/iband)
11
+ * French translation [AdrienGiboire](https://github.com/AdrienGiboire)
12
+ * Polish translation [murbanski](https://github.com/murbanski)
13
+ * German translation [gern](https://github.com/gern)
14
+ * Spanish translation help [xavib](https://github.com/xavib)
15
+ * Rails 3 cleanup & optimization [ugisozols](https://github.com/ugisozols)
16
+ * [See full list](https://github.com/resolve/refinerycms-blog/compare/1.1...1.2)
17
+
18
+
19
+ ## 1.1 [02 December 2010]
20
+
21
+ * Rails 3 Support
22
+ * Archives
23
+ * Categories
24
+ * [See full list](https://github.com/resolve/refinerycms-blog/compare/1.0...1.1)
@@ -0,0 +1,128 @@
1
+ de:
2
+ plugins:
3
+ refinerycms_blog:
4
+ title: Blog
5
+ admin:
6
+ blog:
7
+ categories:
8
+ category:
9
+ edit: Diese Kategorie bearbeiten
10
+ delete: Diese Kategorie dauerhaft entfernen
11
+ index:
12
+ no_items_yet: 'Es sind noch keine Kategorien vorhanden. Klicken Sie auf "%{create}", um Ihre erste Kategorie hinzuzufügen.'
13
+ comments:
14
+ approved: 'Der Kommentar von "%{author}" wurde genehmigt.'
15
+ comment:
16
+ view_live: Diesen Kommentar live betrachten <br/><em>(öffnet sich in einem neuen Fenster)</em>
17
+ read: Kommentar lesen
18
+ reject: Kommentar ablehnen
19
+ approve: Kommentar genehmigen
20
+ rejected: 'Der Kommentar von "%{author}" wurde abgelehnt.'
21
+ index:
22
+ no_items_yet: 'Es sind keine %{type}en Kommentare vorhanden.'
23
+ show:
24
+ comment: Kommentar
25
+ blog_post: Artikel
26
+ from: Verfasst von
27
+ date: Verfasst am
28
+ message: Kommentar
29
+ details: Details
30
+ age: Alter
31
+ actions: Aktionen
32
+ back: Zurück zu allen Kommentaren
33
+ reject: Kommentar ablehnen
34
+ approve: Kommentar genehmigen
35
+ posts:
36
+ form:
37
+ advanced_options: Erweiterte Optionen
38
+ toggle_advanced_options: Klicken, um auf Meta-Tag-Einstellungen und Menüoptionen zuzugreifen
39
+ save_as_draft: Als Entwurf speichern
40
+ published_at: Veröffentlichungsdatum
41
+ index:
42
+ no_items_yet: 'Es sind noch keine Artikel vorhanden. Klicken Sie auf "%{create}", um Ihren ersten Artikel hinzuzufügen.'
43
+ uncategorized:
44
+ no_items_yet: 'Es sind keine unkategorisierten Artikel vorhanden.'
45
+ post:
46
+ view_live: Diesen Artikel live betrachten <br/><em>(öffnet sich in einem neuen Fenster)</em>
47
+ edit: Diesen Artikel bearbeiten
48
+ delete: Diesen Artikel dauerhaft entfernen
49
+ settings:
50
+ notification_recipients:
51
+ value: Sende Benachrichtigungen an
52
+ explanation: 'Jedes Mal, wenn jemand einen Artikel kommentiert, sendet Refinery eine E-Mail Benachrichtigung aus, um über den neuen Kommentar zu informieren.'
53
+ hint: 'Refinery sendet eine E-Mail Benachrichtigung an Sie, wenn ein neuer Kommentar hinzugefügt wurde.'
54
+ example: "Geben Sie Ihre E-Mail-Adresse(n) wie folgt ein: jack@work.com, jill@office.com"
55
+ updated: 'Empfänger für Benachrichtigungen wurden auf "%{recipients}" gesetzt'
56
+ submenu:
57
+ categories:
58
+ title: Kategorien
59
+ manage: Verwalten
60
+ new: Neue Kategorie anlegen
61
+ comments:
62
+ title: Kommentare
63
+ title_with_count: 'Kommentare (%{new_count} neu)'
64
+ new: Neu
65
+ unmoderated: Neu
66
+ approved: Genehmigt
67
+ rejected: Abgelehnt
68
+ posts:
69
+ title: Artikel
70
+ manage: Artikel verwalten
71
+ new: Neuen Artikel anlegen
72
+ uncategorized: Unkategorisierte Artikel
73
+ settings:
74
+ title: Einstellungen
75
+ moderation: Moderation
76
+ update_notified: Empfänger für Benachrichtigungen bearbeiten
77
+ comments: Kommentare
78
+ blog:
79
+ comment_mailer:
80
+ notification:
81
+ greeting: Hallo
82
+ you_recieved_new_comment: Auf Ihrer Website wurde soeben ein neuer Kommentar hinzugefügt.
83
+ comment_starts: --- Kommentar beginnt ---
84
+ comment_ends: --- Kommentar endet ---
85
+ from: Von
86
+ email: E-Mail
87
+ message: Nachricht
88
+ closing_line: Mit besten Grüßen
89
+ ps: P.S. Alle Kommentare sind im "Blog" Abschnitt von Refinery - im Untermenü "Kommentare" - gespeichert, falls Sie diese später dort lesen möchten.
90
+ shared:
91
+ categories:
92
+ title: Kategorien
93
+ rss_feed:
94
+ title: RSS Feed
95
+ subscribe: Abonnieren
96
+ posts:
97
+ other: Andere Artikel
98
+ created_at: 'Verfasst am %{when}'
99
+ read_more: Mehr lesen
100
+ comments:
101
+ singular: Kommentar
102
+ none: Keine Kommentare
103
+ archives: Archiv
104
+ categories:
105
+ show:
106
+ no_posts: Es sind noch keine Artikel vorhanden.
107
+ posts:
108
+ post:
109
+ filed_in: Gespeichert unter
110
+ comment: Kommentar
111
+ comments:
112
+ by: 'Verfasst von %{who}'
113
+ time_ago: 'vor %{time}'
114
+ thank_you: 'Danke für den Kommentar.'
115
+ thank_you_moderated: 'Danke für den Kommentar. Die Nachricht wurde in die Warteschlange der Moderation gestellt und erscheint in Kürze.'
116
+ index:
117
+ no_blog_articles_yet: Es wurden noch keine Artikel verfasst.
118
+ show:
119
+ blog_home: Blog Startseite
120
+ comments:
121
+ title: Kommentare
122
+ add: Neuen Kommentar hinzufügen
123
+ other: Andere Artikel
124
+ filed_in: Gespeichert unter
125
+ submit: Kommentar senden
126
+ archive:
127
+ blog_archive_for: Blog Archiv für %{date}
128
+ no_blog_articles_posted: Für %{date} wurden keine Artikel verfasst.