Loading README.md +1 −1 Original line number Diff line number Diff line #### Simple OPDS Catalog - Простой OPDS Каталог #### Author: Dmitry V.Shelepnev #### Версия 0.43 #### Версия 0.44 #### 1. Простая установка Simple OPDS (используем простую БД sqlite3) Loading opds_catalog/feeds.py +9 −4 Original line number Diff line number Diff line Loading @@ -319,12 +319,14 @@ class CatalogsFeed(AuthFeed): if item['authors']: s += _("<b>Authors: </b>%(authors)s<br/>") if item['genres']: s += _("<b>Genres: </b>%(genres)s<br/>") if item['series']: s += _("<b>Series: </b>%(series)s<br/>") if item['ser_no']: s += _("<b>No in Series: </b>%(ser_no)s<br/>") s += _("<b>File: </b>%(filename)s<br/><b>File size: </b>%(filesize)s<br/><b>Changes date: </b>%(docdate)s<br/>") s +="<p class='book'>%(annotation)s</p>" return s%{'title':item['title'],'filename':item['filename'], 'filesize':item['filesize'],'docdate':item['docdate'],'annotation':item['annotation'], 'authors':", ".join(a['full_name'] for a in item['authors']), 'genres':", ".join(g['subsection'] for g in item['genres']), 'series':", ".join(s['ser'] for s in item['series']), 'ser_no': ", ".join(str(s['ser_no']) for s in item['ser_no']), } def OpenSearch(request): Loading Loading @@ -418,7 +420,8 @@ class SearchBooksFeed(AuthFeed): ser_id = int(searchterms) except: ser_id = 0 books = Book.objects.filter(series=ser_id).order_by('search_title','-docdate') #books = Book.objects.filter(series=ser_id).order_by('search_title','-docdate') books = Book.objects.filter(series=ser_id).order_by('bseries__ser_no', 'search_title', '-docdate') # Поиск книг по автору и серии elif searchtype == "as": try: Loading @@ -427,7 +430,7 @@ class SearchBooksFeed(AuthFeed): except: ser_id = 0 author_id = 0 books = Book.objects.filter(authors=author_id, series=ser_id if ser_id else None).order_by('search_title','-docdate') books = Book.objects.filter(authors=author_id, series=ser_id if ser_id else None).order_by('bseries__ser_no', 'search_title', '-docdate') # Поиск книг по жанру elif searchtype == 'g': try: Loading Loading @@ -569,6 +572,7 @@ class SearchBooksFeed(AuthFeed): if item['authors']: s += _("<b>Authors: </b>%(authors)s<br/>") if item['genres']: s += _("<b>Genres: </b>%(genres)s<br/>") if item['series']: s += _("<b>Series: </b>%(series)s<br/>") if item['ser_no']: s += _("<b>No in Series: </b>%(ser_no)s<br/>") s += _("<b>File: </b>%(filename)s<br/><b>File size: </b>%(filesize)s<br/><b>Changes date: </b>%(docdate)s<br/>") if item['doubles']: s += _("<b>Doubles count: </b>%(doubles)s<br/>") s +="<p class='book'>%(annotation)s</p>" Loading @@ -577,6 +581,7 @@ class SearchBooksFeed(AuthFeed): 'authors':", ".join(a['full_name'] for a in item['authors']), 'genres':", ".join(g['subsection'] for g in item['genres']), 'series':", ".join(s['ser'] for s in item['series']), 'ser_no': ", ".join(str(s['ser_no']) for s in item['ser_no']), } class SelectSeriesFeed(AuthFeed): Loading opds_catalog/locale/ru/LC_MESSAGES/django.mo +118 B (4.75 KiB) File changed.No diff preview for this file type. View original file View changed file opds_catalog/locale/ru/LC_MESSAGES/django.po +43 −39 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-01-18 23:04+0300\n" "POT-Creation-Date: 2018-01-20 17:27+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" Loading Loading @@ -85,22 +85,26 @@ msgstr "Книжная полка (%(username)s)" msgid "%(username)s books readed: %(bookshelf)s." msgstr "Книг прочитано (%(username)s): %(bookshelf)s." #: .\opds_catalog\feeds.py:319 .\opds_catalog\feeds.py:569 #: .\opds_catalog\feeds.py:319 .\opds_catalog\feeds.py:572 #, python-format msgid "<b>Authors: </b>%(authors)s<br/>" msgstr "<b>Авторов: </b>%(authors)s<br/>" #: .\opds_catalog\feeds.py:320 .\opds_catalog\feeds.py:570 #: .\opds_catalog\feeds.py:320 .\opds_catalog\feeds.py:573 #, python-format msgid "<b>Genres: </b>%(genres)s<br/>" msgstr "<b>Жанров: </b>%(genres)s<br/>" #: .\opds_catalog\feeds.py:321 .\opds_catalog\feeds.py:571 #: .\opds_catalog\feeds.py:321 .\opds_catalog\feeds.py:574 #, python-format msgid "<b>Series: </b>%(series)s<br/>" msgstr "<b>Серий: </b>%(series)s<br/>" #: .\opds_catalog\feeds.py:322 .\opds_catalog\feeds.py:572 #: .\opds_catalog\feeds.py:322 .\opds_catalog\feeds.py:575 msgid "<b>No in Series: </b>%(ser_no)s<br/>" msgstr "<b>No в серии: </b>%(series)s<br/>" #: .\opds_catalog\feeds.py:323 .\opds_catalog\feeds.py:576 #, python-format msgid "" "<b>File: </b>%(filename)s<br/><b>File size: </b>%(filesize)s<br/><b>Changes " Loading @@ -109,147 +113,147 @@ msgstr "" "<b>Файл: </b>%(filename)s<br/><b>Размер файла: </b>%(filesize)s<br/><b>Дата " "изменения: </b>%(docdate)s<br/>" #: .\opds_catalog\feeds.py:355 .\opds_catalog\tests\test_feeds.py:60 #: .\opds_catalog\feeds.py:357 .\opds_catalog\tests\test_feeds.py:60 msgid "Search by titles" msgstr "Поиск по наименованиям" #: .\opds_catalog\feeds.py:355 #: .\opds_catalog\feeds.py:357 msgid "Search books by title" msgstr "Поиск книг по наименованию" #: .\opds_catalog\feeds.py:356 #: .\opds_catalog\feeds.py:358 msgid "Search by authors" msgstr "Поиск авторов" #: .\opds_catalog\feeds.py:356 #: .\opds_catalog\feeds.py:358 msgid "Search authors by name" msgstr "Поиск авторов по имени" #: .\opds_catalog\feeds.py:357 #: .\opds_catalog\feeds.py:359 msgid "Search series" msgstr "Поиск серий" #: .\opds_catalog\feeds.py:389 #: .\opds_catalog\feeds.py:391 msgid "Books found" msgstr "Найдены книги" #: .\opds_catalog\feeds.py:389 #: .\opds_catalog\feeds.py:391 msgid "doubles hide" msgstr "дубликаты скрыты" #: .\opds_catalog\feeds.py:389 #: .\opds_catalog\feeds.py:391 msgid "doubles show" msgstr "дубликаты показаны" #: .\opds_catalog\feeds.py:573 #: .\opds_catalog\feeds.py:577 #, python-format msgid "<b>Doubles count: </b>%(doubles)s<br/>" msgstr "<b>Число дубликатов: </b>%(doubles)s<br/>" #: .\opds_catalog\feeds.py:587 #: .\opds_catalog\feeds.py:592 msgid "Series by authors select" msgstr "Выбор серий у автора" #: .\opds_catalog\feeds.py:608 #: .\opds_catalog\feeds.py:613 msgid "Books by series" msgstr "Книги по сериям" #: .\opds_catalog\feeds.py:608 #: .\opds_catalog\feeds.py:613 msgid "Books by author and series" msgstr "Книги по авторам и сериям" #: .\opds_catalog\feeds.py:609 #: .\opds_catalog\feeds.py:614 msgid "Books outside series" msgstr "Книги вне серий" #: .\opds_catalog\feeds.py:609 #: .\opds_catalog\feeds.py:614 msgid "Books by author outside series" msgstr "Книги автора вне серий" #: .\opds_catalog\feeds.py:610 #: .\opds_catalog\feeds.py:615 msgid "Books by alphabet" msgstr "Книги по алфавиту" #: .\opds_catalog\feeds.py:610 #: .\opds_catalog\feeds.py:615 msgid "Books by author alphabetical order" msgstr "Книги автора в алфавитном порядке" #: .\opds_catalog\feeds.py:641 #: .\opds_catalog\feeds.py:646 msgid "Authors found" msgstr "Найдены авторы" #: .\opds_catalog\feeds.py:694 .\opds_catalog\feeds.py:772 #: .\opds_catalog\feeds.py:699 .\opds_catalog\feeds.py:777 #, python-format msgid "Books count: %s" msgstr "Всего: %s книг" #: .\opds_catalog\feeds.py:710 #: .\opds_catalog\feeds.py:715 msgid "Series found" msgstr "Найдены серии" #: .\opds_catalog\feeds.py:796 #: .\opds_catalog\feeds.py:801 msgid "Select language" msgstr "Выбор алфавита" #: .\opds_catalog\feeds.py:808 .\opds_catalog\tests\test_feeds.py:106 #: .\opds_catalog\feeds.py:813 .\opds_catalog\tests\test_feeds.py:106 #: .\opds_catalog\tests\test_feeds.py:119 #: .\opds_catalog\tests\test_feeds.py:130 msgid "Cyrillic" msgstr "Кириллица (РУС)" #: .\opds_catalog\feeds.py:809 .\opds_catalog\tests\test_feeds.py:107 #: .\opds_catalog\feeds.py:814 .\opds_catalog\tests\test_feeds.py:107 msgid "Latin" msgstr "Латинница (LAT)" #: .\opds_catalog\feeds.py:810 .\opds_catalog\tests\test_feeds.py:108 #: .\opds_catalog\feeds.py:815 .\opds_catalog\tests\test_feeds.py:108 msgid "Digits" msgstr "Цифры (0..9)" #: .\opds_catalog\feeds.py:811 .\opds_catalog\tests\test_feeds.py:109 #: .\opds_catalog\feeds.py:816 .\opds_catalog\tests\test_feeds.py:109 msgid "Other symbols" msgstr "Другие символы" #: .\opds_catalog\feeds.py:812 .\opds_catalog\tests\test_feeds.py:110 #: .\opds_catalog\feeds.py:817 .\opds_catalog\tests\test_feeds.py:110 msgid "Show all" msgstr "Показать все" #: .\opds_catalog\feeds.py:842 #: .\opds_catalog\feeds.py:847 msgid "Select books by substring" msgstr "Поиск книг по подстроке" #: .\opds_catalog\feeds.py:879 .\opds_catalog\feeds.py:1045 #: .\opds_catalog\feeds.py:884 .\opds_catalog\feeds.py:1050 #, python-format msgid "Found: %s books" msgstr "Найдено %s книг" #: .\opds_catalog\feeds.py:900 #: .\opds_catalog\feeds.py:905 msgid "Select authors by substring" msgstr "Поиск авторов по подстроке" #: .\opds_catalog\feeds.py:937 #: .\opds_catalog\feeds.py:942 #, python-format msgid "Found: %s authors" msgstr "Найдено %s авторов" #: .\opds_catalog\feeds.py:958 #: .\opds_catalog\feeds.py:963 msgid "Select series by substring" msgstr "Поиск серий по подстроке" #: .\opds_catalog\feeds.py:995 #: .\opds_catalog\feeds.py:1000 #, python-format msgid "Found: %s series" msgstr "Найдено %s серий" #: .\opds_catalog\feeds.py:1016 #: .\opds_catalog\feeds.py:1021 #, python-format msgid "Select genres (%s)" msgstr "Выбор жанра (%s)" #: .\opds_catalog\feeds.py:1016 #: .\opds_catalog\feeds.py:1021 msgid "section" msgstr "секция" #: .\opds_catalog\feeds.py:1016 #: .\opds_catalog\feeds.py:1021 msgid "subsection" msgstr "подсекция" Loading sopds/locale/ru/LC_MESSAGES/django.mo (5.37 KiB) File changed.No diff preview for this file type. View original file View changed file Loading
README.md +1 −1 Original line number Diff line number Diff line #### Simple OPDS Catalog - Простой OPDS Каталог #### Author: Dmitry V.Shelepnev #### Версия 0.43 #### Версия 0.44 #### 1. Простая установка Simple OPDS (используем простую БД sqlite3) Loading
opds_catalog/feeds.py +9 −4 Original line number Diff line number Diff line Loading @@ -319,12 +319,14 @@ class CatalogsFeed(AuthFeed): if item['authors']: s += _("<b>Authors: </b>%(authors)s<br/>") if item['genres']: s += _("<b>Genres: </b>%(genres)s<br/>") if item['series']: s += _("<b>Series: </b>%(series)s<br/>") if item['ser_no']: s += _("<b>No in Series: </b>%(ser_no)s<br/>") s += _("<b>File: </b>%(filename)s<br/><b>File size: </b>%(filesize)s<br/><b>Changes date: </b>%(docdate)s<br/>") s +="<p class='book'>%(annotation)s</p>" return s%{'title':item['title'],'filename':item['filename'], 'filesize':item['filesize'],'docdate':item['docdate'],'annotation':item['annotation'], 'authors':", ".join(a['full_name'] for a in item['authors']), 'genres':", ".join(g['subsection'] for g in item['genres']), 'series':", ".join(s['ser'] for s in item['series']), 'ser_no': ", ".join(str(s['ser_no']) for s in item['ser_no']), } def OpenSearch(request): Loading Loading @@ -418,7 +420,8 @@ class SearchBooksFeed(AuthFeed): ser_id = int(searchterms) except: ser_id = 0 books = Book.objects.filter(series=ser_id).order_by('search_title','-docdate') #books = Book.objects.filter(series=ser_id).order_by('search_title','-docdate') books = Book.objects.filter(series=ser_id).order_by('bseries__ser_no', 'search_title', '-docdate') # Поиск книг по автору и серии elif searchtype == "as": try: Loading @@ -427,7 +430,7 @@ class SearchBooksFeed(AuthFeed): except: ser_id = 0 author_id = 0 books = Book.objects.filter(authors=author_id, series=ser_id if ser_id else None).order_by('search_title','-docdate') books = Book.objects.filter(authors=author_id, series=ser_id if ser_id else None).order_by('bseries__ser_no', 'search_title', '-docdate') # Поиск книг по жанру elif searchtype == 'g': try: Loading Loading @@ -569,6 +572,7 @@ class SearchBooksFeed(AuthFeed): if item['authors']: s += _("<b>Authors: </b>%(authors)s<br/>") if item['genres']: s += _("<b>Genres: </b>%(genres)s<br/>") if item['series']: s += _("<b>Series: </b>%(series)s<br/>") if item['ser_no']: s += _("<b>No in Series: </b>%(ser_no)s<br/>") s += _("<b>File: </b>%(filename)s<br/><b>File size: </b>%(filesize)s<br/><b>Changes date: </b>%(docdate)s<br/>") if item['doubles']: s += _("<b>Doubles count: </b>%(doubles)s<br/>") s +="<p class='book'>%(annotation)s</p>" Loading @@ -577,6 +581,7 @@ class SearchBooksFeed(AuthFeed): 'authors':", ".join(a['full_name'] for a in item['authors']), 'genres':", ".join(g['subsection'] for g in item['genres']), 'series':", ".join(s['ser'] for s in item['series']), 'ser_no': ", ".join(str(s['ser_no']) for s in item['ser_no']), } class SelectSeriesFeed(AuthFeed): Loading
opds_catalog/locale/ru/LC_MESSAGES/django.mo +118 B (4.75 KiB) File changed.No diff preview for this file type. View original file View changed file
opds_catalog/locale/ru/LC_MESSAGES/django.po +43 −39 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-01-18 23:04+0300\n" "POT-Creation-Date: 2018-01-20 17:27+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" Loading Loading @@ -85,22 +85,26 @@ msgstr "Книжная полка (%(username)s)" msgid "%(username)s books readed: %(bookshelf)s." msgstr "Книг прочитано (%(username)s): %(bookshelf)s." #: .\opds_catalog\feeds.py:319 .\opds_catalog\feeds.py:569 #: .\opds_catalog\feeds.py:319 .\opds_catalog\feeds.py:572 #, python-format msgid "<b>Authors: </b>%(authors)s<br/>" msgstr "<b>Авторов: </b>%(authors)s<br/>" #: .\opds_catalog\feeds.py:320 .\opds_catalog\feeds.py:570 #: .\opds_catalog\feeds.py:320 .\opds_catalog\feeds.py:573 #, python-format msgid "<b>Genres: </b>%(genres)s<br/>" msgstr "<b>Жанров: </b>%(genres)s<br/>" #: .\opds_catalog\feeds.py:321 .\opds_catalog\feeds.py:571 #: .\opds_catalog\feeds.py:321 .\opds_catalog\feeds.py:574 #, python-format msgid "<b>Series: </b>%(series)s<br/>" msgstr "<b>Серий: </b>%(series)s<br/>" #: .\opds_catalog\feeds.py:322 .\opds_catalog\feeds.py:572 #: .\opds_catalog\feeds.py:322 .\opds_catalog\feeds.py:575 msgid "<b>No in Series: </b>%(ser_no)s<br/>" msgstr "<b>No в серии: </b>%(series)s<br/>" #: .\opds_catalog\feeds.py:323 .\opds_catalog\feeds.py:576 #, python-format msgid "" "<b>File: </b>%(filename)s<br/><b>File size: </b>%(filesize)s<br/><b>Changes " Loading @@ -109,147 +113,147 @@ msgstr "" "<b>Файл: </b>%(filename)s<br/><b>Размер файла: </b>%(filesize)s<br/><b>Дата " "изменения: </b>%(docdate)s<br/>" #: .\opds_catalog\feeds.py:355 .\opds_catalog\tests\test_feeds.py:60 #: .\opds_catalog\feeds.py:357 .\opds_catalog\tests\test_feeds.py:60 msgid "Search by titles" msgstr "Поиск по наименованиям" #: .\opds_catalog\feeds.py:355 #: .\opds_catalog\feeds.py:357 msgid "Search books by title" msgstr "Поиск книг по наименованию" #: .\opds_catalog\feeds.py:356 #: .\opds_catalog\feeds.py:358 msgid "Search by authors" msgstr "Поиск авторов" #: .\opds_catalog\feeds.py:356 #: .\opds_catalog\feeds.py:358 msgid "Search authors by name" msgstr "Поиск авторов по имени" #: .\opds_catalog\feeds.py:357 #: .\opds_catalog\feeds.py:359 msgid "Search series" msgstr "Поиск серий" #: .\opds_catalog\feeds.py:389 #: .\opds_catalog\feeds.py:391 msgid "Books found" msgstr "Найдены книги" #: .\opds_catalog\feeds.py:389 #: .\opds_catalog\feeds.py:391 msgid "doubles hide" msgstr "дубликаты скрыты" #: .\opds_catalog\feeds.py:389 #: .\opds_catalog\feeds.py:391 msgid "doubles show" msgstr "дубликаты показаны" #: .\opds_catalog\feeds.py:573 #: .\opds_catalog\feeds.py:577 #, python-format msgid "<b>Doubles count: </b>%(doubles)s<br/>" msgstr "<b>Число дубликатов: </b>%(doubles)s<br/>" #: .\opds_catalog\feeds.py:587 #: .\opds_catalog\feeds.py:592 msgid "Series by authors select" msgstr "Выбор серий у автора" #: .\opds_catalog\feeds.py:608 #: .\opds_catalog\feeds.py:613 msgid "Books by series" msgstr "Книги по сериям" #: .\opds_catalog\feeds.py:608 #: .\opds_catalog\feeds.py:613 msgid "Books by author and series" msgstr "Книги по авторам и сериям" #: .\opds_catalog\feeds.py:609 #: .\opds_catalog\feeds.py:614 msgid "Books outside series" msgstr "Книги вне серий" #: .\opds_catalog\feeds.py:609 #: .\opds_catalog\feeds.py:614 msgid "Books by author outside series" msgstr "Книги автора вне серий" #: .\opds_catalog\feeds.py:610 #: .\opds_catalog\feeds.py:615 msgid "Books by alphabet" msgstr "Книги по алфавиту" #: .\opds_catalog\feeds.py:610 #: .\opds_catalog\feeds.py:615 msgid "Books by author alphabetical order" msgstr "Книги автора в алфавитном порядке" #: .\opds_catalog\feeds.py:641 #: .\opds_catalog\feeds.py:646 msgid "Authors found" msgstr "Найдены авторы" #: .\opds_catalog\feeds.py:694 .\opds_catalog\feeds.py:772 #: .\opds_catalog\feeds.py:699 .\opds_catalog\feeds.py:777 #, python-format msgid "Books count: %s" msgstr "Всего: %s книг" #: .\opds_catalog\feeds.py:710 #: .\opds_catalog\feeds.py:715 msgid "Series found" msgstr "Найдены серии" #: .\opds_catalog\feeds.py:796 #: .\opds_catalog\feeds.py:801 msgid "Select language" msgstr "Выбор алфавита" #: .\opds_catalog\feeds.py:808 .\opds_catalog\tests\test_feeds.py:106 #: .\opds_catalog\feeds.py:813 .\opds_catalog\tests\test_feeds.py:106 #: .\opds_catalog\tests\test_feeds.py:119 #: .\opds_catalog\tests\test_feeds.py:130 msgid "Cyrillic" msgstr "Кириллица (РУС)" #: .\opds_catalog\feeds.py:809 .\opds_catalog\tests\test_feeds.py:107 #: .\opds_catalog\feeds.py:814 .\opds_catalog\tests\test_feeds.py:107 msgid "Latin" msgstr "Латинница (LAT)" #: .\opds_catalog\feeds.py:810 .\opds_catalog\tests\test_feeds.py:108 #: .\opds_catalog\feeds.py:815 .\opds_catalog\tests\test_feeds.py:108 msgid "Digits" msgstr "Цифры (0..9)" #: .\opds_catalog\feeds.py:811 .\opds_catalog\tests\test_feeds.py:109 #: .\opds_catalog\feeds.py:816 .\opds_catalog\tests\test_feeds.py:109 msgid "Other symbols" msgstr "Другие символы" #: .\opds_catalog\feeds.py:812 .\opds_catalog\tests\test_feeds.py:110 #: .\opds_catalog\feeds.py:817 .\opds_catalog\tests\test_feeds.py:110 msgid "Show all" msgstr "Показать все" #: .\opds_catalog\feeds.py:842 #: .\opds_catalog\feeds.py:847 msgid "Select books by substring" msgstr "Поиск книг по подстроке" #: .\opds_catalog\feeds.py:879 .\opds_catalog\feeds.py:1045 #: .\opds_catalog\feeds.py:884 .\opds_catalog\feeds.py:1050 #, python-format msgid "Found: %s books" msgstr "Найдено %s книг" #: .\opds_catalog\feeds.py:900 #: .\opds_catalog\feeds.py:905 msgid "Select authors by substring" msgstr "Поиск авторов по подстроке" #: .\opds_catalog\feeds.py:937 #: .\opds_catalog\feeds.py:942 #, python-format msgid "Found: %s authors" msgstr "Найдено %s авторов" #: .\opds_catalog\feeds.py:958 #: .\opds_catalog\feeds.py:963 msgid "Select series by substring" msgstr "Поиск серий по подстроке" #: .\opds_catalog\feeds.py:995 #: .\opds_catalog\feeds.py:1000 #, python-format msgid "Found: %s series" msgstr "Найдено %s серий" #: .\opds_catalog\feeds.py:1016 #: .\opds_catalog\feeds.py:1021 #, python-format msgid "Select genres (%s)" msgstr "Выбор жанра (%s)" #: .\opds_catalog\feeds.py:1016 #: .\opds_catalog\feeds.py:1021 msgid "section" msgstr "секция" #: .\opds_catalog\feeds.py:1016 #: .\opds_catalog\feeds.py:1021 msgid "subsection" msgstr "подсекция" Loading
sopds/locale/ru/LC_MESSAGES/django.mo (5.37 KiB) File changed.No diff preview for this file type. View original file View changed file