diff --git a/boards/locale/ru/LC_MESSAGES/django.mo b/boards/locale/ru/LC_MESSAGES/django.mo index 04ae6f6ee04cdd82c74b4513472beba5839d7596..02ee1bbd6cebece0ea3ed9c996cf2f3e7db89638 GIT binary patch literal 8921 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 diff --git a/boards/locale/ru/LC_MESSAGES/django.po b/boards/locale/ru/LC_MESSAGES/django.po --- a/boards/locale/ru/LC_MESSAGES/django.po +++ b/boards/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-12 12:48+0300\n" +"POT-Creation-Date: 2015-10-09 23:21+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -101,7 +101,7 @@ msgstr "Неверный список дополнительных тем" msgid "Either text or file must be entered." msgstr "Текст или файл должны быть введены." -#: forms.py:317 templates/boards/all_threads.html:148 +#: forms.py:317 templates/boards/all_threads.html:153 #: templates/boards/rss/post.html:10 templates/boards/tags.html:6 msgid "Tags" msgstr "Метки" @@ -110,27 +110,27 @@ msgstr "Метки" msgid "Inappropriate characters in tags." msgstr "Недопустимые символы в метках." -#: forms.py:338 +#: forms.py:344 msgid "Need at least one section." msgstr "Нужен хотя бы один раздел." -#: forms.py:350 +#: forms.py:356 msgid "Theme" msgstr "Тема" -#: forms.py:351 +#: forms.py:357 msgid "Image view mode" msgstr "Режим просмотра изображений" -#: forms.py:352 +#: forms.py:358 msgid "User name" msgstr "Имя пользователя" -#: forms.py:353 +#: forms.py:359 msgid "Time zone" msgstr "Часовой пояс" -#: forms.py:359 +#: forms.py:365 msgid "Inappropriate characters." msgstr "Недопустимые символы." @@ -150,70 +150,81 @@ msgstr "Связанное сообщение" msgid "Edit tag" msgstr "Изменить метку" -#: templates/boards/all_threads.html:75 +#: templates/boards/all_threads.html:76 #, python-format -msgid "" -"This tag has %(thread_count)s threads (%(active_thread_count)s active) and " -"%(post_count)s posts." -msgstr "" -"С этой меткой есть %(thread_count)s тем (%(active_thread_count)s активных) и " -"%(post_count)s сообщений." +msgid "%(count)s active thread" +msgid_plural "%(count)s active threads" +msgstr[0] "%(count)s активная тема" +msgstr[1] "%(count)s активные темы" +msgstr[2] "%(count)s активных тем" #: templates/boards/all_threads.html:77 -msgid "Related tags:" -msgstr "Похожие метки:" +#, python-format +msgid "%(count)s archived thread" +msgid_plural "%(count)s archived thread" +msgstr[0] "%(count)s архивная тема" +msgstr[1] "%(count)s архивные темы" +msgstr[2] "%(count)s архивных тем" -#: templates/boards/all_threads.html:90 templates/boards/feed.html:30 +#: templates/boards/all_threads.html:78 templates/boards/post.html:102 +#, python-format +#| msgid "%(count)s message" +#| msgid_plural "%(count)s messages" +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s сообщение" +msgstr[1] "%(count)s сообщения" +msgstr[2] "%(count)s сообщений" + +#: templates/boards/all_threads.html:95 templates/boards/feed.html:30 #: templates/boards/notifications.html:17 templates/search/search.html:26 msgid "Previous page" msgstr "Предыдущая страница" -#: templates/boards/all_threads.html:104 +#: templates/boards/all_threads.html:109 #, python-format -#| msgid "Skipped %(count)s replies. Open thread to see all replies." msgid "Skipped %(count)s reply. Open thread to see all replies." msgid_plural "Skipped %(count)s replies. Open thread to see all replies." -msgstr[0] "" -"Пропущен %(count)s ответ. Откройте тред, чтобы увидеть все ответы." +msgstr[0] "Пропущен %(count)s ответ. Откройте тред, чтобы увидеть все ответы." msgstr[1] "" "Пропущено %(count)s ответа. Откройте тред, чтобы увидеть все ответы." msgstr[2] "" "Пропущено %(count)s ответов. Откройте тред, чтобы увидеть все ответы." -#: templates/boards/all_threads.html:122 templates/boards/feed.html:40 +#: templates/boards/all_threads.html:127 templates/boards/feed.html:40 #: templates/boards/notifications.html:27 templates/search/search.html:37 msgid "Next page" msgstr "Следующая страница" -#: templates/boards/all_threads.html:127 +#: templates/boards/all_threads.html:132 msgid "No threads exist. Create the first one!" msgstr "Нет тем. Создайте первую!" -#: templates/boards/all_threads.html:133 +#: templates/boards/all_threads.html:138 msgid "Create new thread" msgstr "Создать новую тему" -#: templates/boards/all_threads.html:138 templates/boards/preview.html:16 +#: templates/boards/all_threads.html:143 templates/boards/preview.html:16 #: templates/boards/thread_normal.html:51 msgid "Post" msgstr "Отправить" -#: templates/boards/all_threads.html:139 templates/boards/preview.html:6 +#: templates/boards/all_threads.html:144 templates/boards/preview.html:6 #: templates/boards/staticpages/help.html:21 #: templates/boards/thread_normal.html:52 msgid "Preview" msgstr "Предпросмотр" -#: templates/boards/all_threads.html:144 +#: templates/boards/all_threads.html:149 msgid "Tags must be delimited by spaces. Text or image is required." msgstr "" "Метки должны быть разделены пробелами. Текст или изображение обязательны." -#: templates/boards/all_threads.html:147 templates/boards/thread_normal.html:58 +#: templates/boards/all_threads.html:152 templates/boards/thread_normal.html:58 msgid "Text syntax" msgstr "Синтаксис текста" -#: templates/boards/all_threads.html:161 templates/boards/feed.html:53 +#: templates/boards/all_threads.html:166 templates/boards/feed.html:53 msgid "Pages:" msgstr "Страницы: " @@ -269,25 +280,33 @@ msgstr "Случайные изображения" msgid "random" msgstr "случайные" -#: templates/boards/base.html:45 templates/boards/base.html.py:46 +#: templates/boards/base.html:44 +msgid "favorites" +msgstr "избранное" + +#: templates/boards/base.html:48 templates/boards/base.html.py:49 #: templates/boards/notifications.html:8 msgid "Notifications" msgstr "Уведомления" -#: templates/boards/base.html:53 templates/boards/settings.html:8 +#: templates/boards/base.html:56 templates/boards/settings.html:8 msgid "Settings" msgstr "Настройки" -#: templates/boards/base.html:79 +#: templates/boards/base.html:59 +msgid "Loading..." +msgstr "Загрузка..." + +#: templates/boards/base.html:71 msgid "Admin" msgstr "Администрирование" -#: templates/boards/base.html:81 +#: templates/boards/base.html:73 #, python-format msgid "Speed: %(ppd)s posts per day" msgstr "Скорость: %(ppd)s сообщений в день" -#: templates/boards/base.html:83 +#: templates/boards/base.html:75 msgid "Up" msgstr "Вверх" @@ -295,46 +314,31 @@ msgstr "Вверх" msgid "No posts exist. Create the first one!" msgstr "Нет сообщений. Создайте первое!" -#: templates/boards/post.html:32 +#: templates/boards/post.html:33 msgid "Open" msgstr "Открыть" -#: templates/boards/post.html:34 templates/boards/post.html.py:45 +#: templates/boards/post.html:35 templates/boards/post.html.py:46 msgid "Reply" msgstr "Ответить" -#: templates/boards/post.html:40 +#: templates/boards/post.html:41 msgid " in " msgstr " в " -#: templates/boards/post.html:50 +#: templates/boards/post.html:51 msgid "Edit" msgstr "Изменить" -#: templates/boards/post.html:52 +#: templates/boards/post.html:53 msgid "Edit thread" msgstr "Изменить тему" -#: templates/boards/post.html:94 +#: templates/boards/post.html:91 msgid "Replies" msgstr "Ответы" -#: templates/boards/post.html:105 -#, python-format -msgid "%(count)s message" -msgid_plural "%(count)s messages" -msgstr[0] "%(count)s сообщение" -msgstr[1] "%(count)s сообщения" -msgstr[2] "%(count)s сообщений" - -#, python-format -msgid "Please wait %(delay)d second before sending message" -msgid_plural "Please wait %(delay)d seconds before sending message" -msgstr[0] "Пожалуйста подождите %(delay)d секунду перед отправкой сообщения" -msgstr[1] "Пожалуйста подождите %(delay)d секунды перед отправкой сообщения" -msgstr[2] "Пожалуйста подождите %(delay)d секунд перед отправкой сообщения" - -#: templates/boards/post.html:106 +#: templates/boards/post.html:103 #, python-format msgid "%(count)s image" msgid_plural "%(count)s images" @@ -420,33 +424,33 @@ msgstr "Другие метки:" msgid "All tags..." msgstr "Все метки..." -#: templates/boards/thread.html:15 +#: templates/boards/thread.html:14 msgid "Normal" msgstr "Нормальный" -#: templates/boards/thread.html:16 +#: templates/boards/thread.html:15 msgid "Gallery" msgstr "Галерея" -#: templates/boards/thread.html:17 +#: templates/boards/thread.html:16 msgid "Tree" msgstr "Дерево" -#: templates/boards/thread.html:36 +#: templates/boards/thread.html:35 msgid "message" msgid_plural "messages" msgstr[0] "сообщение" msgstr[1] "сообщения" msgstr[2] "сообщений" -#: templates/boards/thread.html:39 +#: templates/boards/thread.html:38 msgid "image" msgid_plural "images" msgstr[0] "изображение" msgstr[1] "изображения" msgstr[2] "изображений" -#: templates/boards/thread.html:41 +#: templates/boards/thread.html:40 msgid "Last update: " msgstr "Последнее обновление: " @@ -474,19 +478,13 @@ msgstr "Закрыть форму" msgid "Ok" msgstr "Ок" -#: utils.py:102 +#: utils.py:120 #, python-format msgid "File must be less than %s bytes" msgstr "Файл должен быть менее %s байт" -msgid "favorites" -msgstr "избранное" - -msgid "Loading..." -msgstr "Загрузка..." - -msgid "Category:" -msgstr "Категория:" - -msgid "Subcategories:" -msgstr "Подкатегории:" +msgid "Please wait %(delay)d second before sending message" +msgid_plural "Please wait %(delay)d seconds before sending message" +msgstr[0] "Пожалуйста подождите %(delay)d секунду перед отправкой сообщения" +msgstr[1] "Пожалуйста подождите %(delay)d секунды перед отправкой сообщения" +msgstr[2] "Пожалуйста подождите %(delay)d секунд перед отправкой сообщения" diff --git a/boards/models/tag.py b/boards/models/tag.py --- a/boards/models/tag.py +++ b/boards/models/tag.py @@ -69,6 +69,9 @@ class Tag(models.Model, Viewable): def get_active_thread_count(self) -> int: return self.get_thread_count(archived=False) + def get_archived_thread_count(self) -> int: + return self.get_thread_count(archived=True) + def get_absolute_url(self): return reverse('tag', kwargs={'tag_name': self.name}) diff --git a/boards/templates/boards/all_threads.html b/boards/templates/boards/all_threads.html --- a/boards/templates/boards/all_threads.html +++ b/boards/templates/boards/all_threads.html @@ -72,7 +72,11 @@ {% if tag.get_description %}

{{ tag.get_description|safe }}

{% endif %} -

{% blocktrans with active_thread_count=tag.get_active_thread_count thread_count=tag.get_thread_count post_count=tag.get_post_count %}This tag has {{ thread_count }} threads ({{ active_thread_count}} active) and {{ post_count }} posts.{% endblocktrans %}

+

+ {% blocktrans count count=tag.get_active_thread_count %}{{ count }} active thread{% plural %}active threads{% endblocktrans %}, + {% blocktrans count count=tag.get_archived_thread_count %}{{ count }} archived thread{% plural %}archived threads{% endblocktrans %}, + {% blocktrans count count=tag.get_post_count %}{{ count }} message{% plural %}messages{% endblocktrans %}. +

{% if tag.get_all_parents %}

{% for parent in tag.get_all_parents %}