From 8ed897ce861663a5c4eea99f615c73d0a7751ea5 Mon Sep 17 00:00:00 2001 From: Dmitry Shelepnev <mitshel@mail.ru> Date: Fri, 6 Jan 2017 21:31:35 +0300 Subject: [PATCH] Start integration django-constance package to project --- opds_catalog/locale/ru/LC_MESSAGES/django.mo | Bin 4650 -> 4650 bytes opds_catalog/locale/ru/LC_MESSAGES/django.po | 110 +++++++------- opds_catalog/models.py | 3 +- requirements.txt | 3 +- sopds/locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 4869 bytes sopds/locale/ru/LC_MESSAGES/django.po | 141 ++++++++++++++++++ sopds/settings.py | 51 ++++++- .../locale/ru/LC_MESSAGES/django.mo | Bin 5571 -> 5571 bytes .../locale/ru/LC_MESSAGES/django.po | 35 ++++- 9 files changed, 281 insertions(+), 62 deletions(-) create mode 100644 sopds/locale/ru/LC_MESSAGES/django.mo create mode 100644 sopds/locale/ru/LC_MESSAGES/django.po diff --git a/opds_catalog/locale/ru/LC_MESSAGES/django.mo b/opds_catalog/locale/ru/LC_MESSAGES/django.mo index bbfdda88a588b5110ae675d2f24e078af0f1b6af..3c66cbba09c54d57b975274b7c2939131c30090a 100644 GIT binary patch delta 33 pcmZ3bvPxxx7bmZ|u7RPhftiAlp_P&4=5WqL4yKFUlXnRg005o33Dp1q delta 33 pcmZ3bvPxxx7bmZouAz~xk%5Atg_Wt<=5WqL4yFq`Chrm~005rB3IqTE diff --git a/opds_catalog/locale/ru/LC_MESSAGES/django.po b/opds_catalog/locale/ru/LC_MESSAGES/django.po index 859f1bf..58ef9d5 100644 --- a/opds_catalog/locale/ru/LC_MESSAGES/django.po +++ b/opds_catalog/locale/ru/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-20 18:56+0300\n" +"POT-Creation-Date: 2017-01-06 21:29+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" @@ -20,87 +20,87 @@ msgstr "" "10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%" "100>=11 && n%100<=14)? 2 : 3);\n" -#: .\opds_catalog\feeds.py:123 +#: .\opds_catalog\feeds.py:127 #, python-format msgid "All books by %(author)s" msgstr "Все книги автора %(author)s" -#: .\opds_catalog\feeds.py:135 +#: .\opds_catalog\feeds.py:139 msgid "Book doublicates" msgstr "Дубликаты книги" -#: .\opds_catalog\feeds.py:156 .\opds_catalog\feeds.py:241 -#: .\opds_catalog\feeds.py:243 .\opds_catalog\tests\test_feeds.py:22 +#: .\opds_catalog\feeds.py:160 .\opds_catalog\feeds.py:245 +#: .\opds_catalog\feeds.py:247 .\opds_catalog\tests\test_feeds.py:22 msgid "By catalogs" msgstr "По каталогам" -#: .\opds_catalog\feeds.py:157 .\opds_catalog\tests\test_feeds.py:23 +#: .\opds_catalog\feeds.py:161 .\opds_catalog\tests\test_feeds.py:23 #, python-format msgid "Catalogs: %(catalogs)s, books: %(books)s." msgstr "Каталогов: %(catalogs)s, книг: %(books)s." -#: .\opds_catalog\feeds.py:158 +#: .\opds_catalog\feeds.py:162 msgid "By authors" msgstr "По авторам" -#: .\opds_catalog\feeds.py:159 .\opds_catalog\tests\test_feeds.py:24 +#: .\opds_catalog\feeds.py:163 .\opds_catalog\tests\test_feeds.py:24 #, python-format msgid "Authors: %(authors)s." msgstr "Авторов: %(authors)s." -#: .\opds_catalog\feeds.py:160 +#: .\opds_catalog\feeds.py:164 msgid "By titles" msgstr "По наименованиям" -#: .\opds_catalog\feeds.py:161 +#: .\opds_catalog\feeds.py:165 #, python-format msgid "Books: %(books)s." msgstr "Книг: %(books)s." -#: .\opds_catalog\feeds.py:162 +#: .\opds_catalog\feeds.py:166 msgid "By genres" msgstr "По жанрам" -#: .\opds_catalog\feeds.py:163 .\opds_catalog\tests\test_feeds.py:25 +#: .\opds_catalog\feeds.py:167 .\opds_catalog\tests\test_feeds.py:25 #, python-format msgid "Genres: %(genres)s." msgstr "Жанров: %(genres)s." -#: .\opds_catalog\feeds.py:164 +#: .\opds_catalog\feeds.py:168 msgid "By series" msgstr "По сериям" -#: .\opds_catalog\feeds.py:165 +#: .\opds_catalog\feeds.py:169 #, python-format msgid "Series: %(series)s." msgstr "Серий: %(series)s." -#: .\opds_catalog\feeds.py:169 +#: .\opds_catalog\feeds.py:173 #, python-format msgid "%(username)s Book shelf" msgstr "Книжная полка (%(username)s)" -#: .\opds_catalog\feeds.py:170 +#: .\opds_catalog\feeds.py:174 #, python-format msgid "%(username)s books readed: %(bookshelf)s." msgstr "Книг прочитано (%(username)s): %(bookshelf)s." -#: .\opds_catalog\feeds.py:301 .\opds_catalog\feeds.py:545 +#: .\opds_catalog\feeds.py:305 .\opds_catalog\feeds.py:549 #, python-format msgid "<b>Authors: </b>%(authors)s<br/>" msgstr "<b>Авторов: </b>%(authors)s<br/>" -#: .\opds_catalog\feeds.py:302 .\opds_catalog\feeds.py:546 +#: .\opds_catalog\feeds.py:306 .\opds_catalog\feeds.py:550 #, python-format msgid "<b>Genres: </b>%(genres)s<br/>" msgstr "<b>Жанров: </b>%(genres)s<br/>" -#: .\opds_catalog\feeds.py:303 .\opds_catalog\feeds.py:547 +#: .\opds_catalog\feeds.py:307 .\opds_catalog\feeds.py:551 #, python-format msgid "<b>Series: </b>%(series)s<br/>" msgstr "<b>Серий: </b>%(series)s<br/>" -#: .\opds_catalog\feeds.py:304 .\opds_catalog\feeds.py:548 +#: .\opds_catalog\feeds.py:308 .\opds_catalog\feeds.py:552 #, python-format msgid "" "<b>File: </b>%(filename)s<br/><b>File size: </b>%(filesize)s<br/><b>Changes " @@ -109,158 +109,158 @@ msgstr "" "<b>Файл: </b>%(filename)s<br/><b>Размер файла: </b>%(filesize)s<br/><b>Дата " "изменения: </b>%(docdate)s<br/>" -#: .\opds_catalog\feeds.py:337 .\opds_catalog\tests\test_feeds.py:58 +#: .\opds_catalog\feeds.py:341 .\opds_catalog\tests\test_feeds.py:58 msgid "Search by titles" msgstr "Поиск по наименованиям" -#: .\opds_catalog\feeds.py:337 +#: .\opds_catalog\feeds.py:341 msgid "Search books by title" msgstr "Поиск книг по наименованию" -#: .\opds_catalog\feeds.py:338 +#: .\opds_catalog\feeds.py:342 msgid "Search by authors" msgstr "Поиск авторов" -#: .\opds_catalog\feeds.py:338 +#: .\opds_catalog\feeds.py:342 msgid "Search authors by name" msgstr "Поиск авторов по имени" -#: .\opds_catalog\feeds.py:339 +#: .\opds_catalog\feeds.py:343 msgid "Search series" msgstr "Поиск серий" -#: .\opds_catalog\feeds.py:371 +#: .\opds_catalog\feeds.py:375 msgid "Books found" msgstr "Найдены книги" -#: .\opds_catalog\feeds.py:371 +#: .\opds_catalog\feeds.py:375 msgid "doubles hide" msgstr "дубликаты скрыты" -#: .\opds_catalog\feeds.py:371 +#: .\opds_catalog\feeds.py:375 msgid "doubles show" msgstr "дубликаты показаны" -#: .\opds_catalog\feeds.py:549 +#: .\opds_catalog\feeds.py:553 #, python-format msgid "<b>Doubles count: </b>%(doubles)s<br/>" msgstr "<b>Число дубликатов: </b>%(doubles)s<br/>" -#: .\opds_catalog\feeds.py:563 +#: .\opds_catalog\feeds.py:567 msgid "Series by authors select" msgstr "Выбор серий у автора" -#: .\opds_catalog\feeds.py:584 +#: .\opds_catalog\feeds.py:588 msgid "Books by series" msgstr "Книги по сериям" -#: .\opds_catalog\feeds.py:584 +#: .\opds_catalog\feeds.py:588 msgid "Books by author and series" msgstr "Книги по авторам и сериям" -#: .\opds_catalog\feeds.py:585 +#: .\opds_catalog\feeds.py:589 msgid "Books outside series" msgstr "Книги вне серий" -#: .\opds_catalog\feeds.py:585 +#: .\opds_catalog\feeds.py:589 msgid "Books by author outside series" msgstr "Книги автора вне серий" -#: .\opds_catalog\feeds.py:586 +#: .\opds_catalog\feeds.py:590 msgid "Books by alphabet" msgstr "Книги по алфавиту" -#: .\opds_catalog\feeds.py:586 +#: .\opds_catalog\feeds.py:590 msgid "Books by author alphabetical order" msgstr "Книги автора в алфавитном порядке" -#: .\opds_catalog\feeds.py:617 +#: .\opds_catalog\feeds.py:621 msgid "Authors found" msgstr "Найдены авторы" -#: .\opds_catalog\feeds.py:670 .\opds_catalog\feeds.py:748 +#: .\opds_catalog\feeds.py:674 .\opds_catalog\feeds.py:752 #, python-format msgid "Books count: %s" msgstr "Всего: %s книг" -#: .\opds_catalog\feeds.py:686 +#: .\opds_catalog\feeds.py:690 msgid "Series found" msgstr "Найдены серии" -#: .\opds_catalog\feeds.py:772 +#: .\opds_catalog\feeds.py:776 msgid "Select language" msgstr "Выбор алфавита" -#: .\opds_catalog\feeds.py:784 .\opds_catalog\models.py:36 +#: .\opds_catalog\feeds.py:788 .\opds_catalog\models.py:36 #: .\opds_catalog\tests\test_feeds.py:104 #: .\opds_catalog\tests\test_feeds.py:117 #: .\opds_catalog\tests\test_feeds.py:128 msgid "Cyrillic" msgstr "Кириллица (РУС)" -#: .\opds_catalog\feeds.py:785 .\opds_catalog\models.py:36 +#: .\opds_catalog\feeds.py:789 .\opds_catalog\models.py:36 #: .\opds_catalog\tests\test_feeds.py:105 msgid "Latin" msgstr "Латинница (LAT)" -#: .\opds_catalog\feeds.py:786 .\opds_catalog\models.py:36 +#: .\opds_catalog\feeds.py:790 .\opds_catalog\models.py:36 #: .\opds_catalog\tests\test_feeds.py:106 msgid "Digits" msgstr "Цифры (0..9)" -#: .\opds_catalog\feeds.py:787 .\opds_catalog\models.py:36 +#: .\opds_catalog\feeds.py:791 .\opds_catalog\models.py:36 #: .\opds_catalog\tests\test_feeds.py:107 msgid "Other symbols" msgstr "Другие символы" -#: .\opds_catalog\feeds.py:788 .\opds_catalog\models.py:36 +#: .\opds_catalog\feeds.py:792 .\opds_catalog\models.py:36 #: .\opds_catalog\tests\test_feeds.py:108 msgid "Show all" msgstr "Показать все" -#: .\opds_catalog\feeds.py:818 +#: .\opds_catalog\feeds.py:822 msgid "Select books by substring" msgstr "Поиск книг по подстроке" -#: .\opds_catalog\feeds.py:855 .\opds_catalog\feeds.py:1021 +#: .\opds_catalog\feeds.py:859 .\opds_catalog\feeds.py:1025 #, python-format msgid "Found: %s books" msgstr "Найдено %s книг" -#: .\opds_catalog\feeds.py:876 +#: .\opds_catalog\feeds.py:880 msgid "Select authors by substring" msgstr "Поиск авторов по подстроке" -#: .\opds_catalog\feeds.py:913 +#: .\opds_catalog\feeds.py:917 #, python-format msgid "Found: %s authors" msgstr "Найдено %s авторов" -#: .\opds_catalog\feeds.py:934 +#: .\opds_catalog\feeds.py:938 msgid "Select series by substring" msgstr "Поиск серий по подстроке" -#: .\opds_catalog\feeds.py:971 +#: .\opds_catalog\feeds.py:975 #, python-format msgid "Found: %s series" msgstr "Найдено %s серий" -#: .\opds_catalog\feeds.py:992 +#: .\opds_catalog\feeds.py:996 #, python-format msgid "Select genres (%s)" msgstr "Выбор жанра (%s)" -#: .\opds_catalog\feeds.py:992 +#: .\opds_catalog\feeds.py:996 msgid "section" msgstr "секция" -#: .\opds_catalog\feeds.py:992 +#: .\opds_catalog\feeds.py:996 msgid "subsection" msgstr "подсекция" #: .\opds_catalog\opdsdb.py:36 msgid "Unknown genre" -msgstr "Неизвестний жанр" +msgstr "Неизвестный жанр" #: .\opds_catalog\tests\test_feeds.py:76 #, fuzzy, python-format diff --git a/opds_catalog/models.py b/opds_catalog/models.py index 624fd01..b491e5d 100644 --- a/opds_catalog/models.py +++ b/opds_catalog/models.py @@ -130,6 +130,5 @@ class Counter(models.Model): update_time = models.DateTimeField(null=False, default=timezone.now) obj = models.Manager() objects = CounterManager() - - + diff --git a/requirements.txt b/requirements.txt index 03c2041..7dc9a7d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ Django==1.8 ; python_version == '3.3' Django>=1.8 ; python_version >= '3.4' Pillow>=2.9.0 -apscheduler>=3.3.0 \ No newline at end of file +apscheduler>=3.3.0 +django-constance[database]>=1.3 \ No newline at end of file diff --git a/sopds/locale/ru/LC_MESSAGES/django.mo b/sopds/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..b963715d578ccf1849569a7aeb290539a5d7c621 GIT binary patch literal 4869 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 GdJ_P5)Zlyo literal 0 HcmV?d00001 diff --git a/sopds/locale/ru/LC_MESSAGES/django.po b/sopds/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000..208e7f9 --- /dev/null +++ b/sopds/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,141 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-06 21:29+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%" +"100>=11 && n%100<=14)? 2 : 3);\n" + +#: .\sopds\settings.py:152 +msgid "Absolute path to books collection directory" +msgstr "Абсолютный путь к каталогу с файлами книг" + +#: .\sopds\settings.py:153 +msgid "List of managed book files extensions" +msgstr "Список расширений файлов, для включения в коллекцию книг" + +#: .\sopds\settings.py:154 +msgid "This flag hides found doublicates" +msgstr "Флаг прячет найденные дубликаты книг" + +#: .\sopds\settings.py:155 +msgid "This flag activate showing cover of books" +msgstr "Флаг активирует показ обложек книг" + +#: .\sopds\settings.py:156 +msgid "This flag activate extraction metadata from fb2 files" +msgstr "Флаг активирует извлеченеи метаданных из fb2-файлов" + +#: .\sopds\settings.py:157 +msgid "This flag activate zip files scanning" +msgstr "Флаг разрешает сканированеи содержимого ZIP файлов" + +#: .\sopds\settings.py:158 +msgid "Set codepage for filenames inside zipfile" +msgstr "Codepage для имен файлов внутри ZIP" + +#: .\sopds\settings.py:159 +msgid "" +"Enables read metadata from inpx-file (and stop scanning deeper from ipx-file " +"place)" +msgstr "" +"Считываем метаданные книг з INPX-файлов (при этом не сканируем файлы и " +"каталоги, расположенные на уровне или ниже найденого INPX)" + +#: .\sopds\settings.py:160 +msgid "Skip scanning INPX with unchanged size after previous scan" +msgstr "" +"Не сканируем INPX, если его размер не изменился с предидущего сканирования" + +#: .\sopds\settings.py:161 +msgid "Test avialability zip files listed in INPX before add in collection" +msgstr "" +"Проверяем наличие zip файлов, перечисленных в INPX перед добавлением их " +"содержимого в коллекцию" + +#: .\sopds\settings.py:162 +msgid "Test avialability book files listed in INPX before add in collection" +msgstr "" +"Тестируем наличие книг, перечисленных в INPX перед добавлением их " +"содержимого в коллекцию" + +#: .\sopds\settings.py:164 +msgid "Max subitems count in alphabet menuitem" +msgstr "Максимальное число подэлементов в элементах алфавитных меню" + +#: .\sopds\settings.py:165 +msgid "Max items on page" +msgstr "Максимальное число элементов на странице" + +#: .\sopds\settings.py:166 +msgid "Path to FB2-EPUB converter program" +msgstr "Путь к конвертеру FB2-EPUB" + +#: .\sopds\settings.py:167 +msgid "Path to FB2-MOBI converter program" +msgstr "Путь к конвертеру FB2-MOBI" + +#: .\sopds\settings.py:168 +msgid "Path to temporary files directory" +msgstr "Путь к временному каталогу" + +#: .\sopds\settings.py:169 +msgid "Create downloaded filename from book title" +msgstr "Имя загружаемого файла формировать из названия книги" + +#: .\sopds\settings.py:170 +msgid "Enable alphabet submenu" +msgstr "Включить субменю выбора алфавита" + +#: .\sopds\settings.py:171 +msgid "Path to image file showing for book without embedded cover" +msgstr "Путь к изображению, для показа в качестве обложки для книг без обложек" + +#: .\sopds\settings.py:172 +msgid "Enable authentication" +msgstr "Включить аутентификацию" + +#: .\sopds\settings.py:173 +msgid "Path to logfile for sopds_server process" +msgstr "Путь к логфайлу для процесса sopds_server" + +#: .\sopds\settings.py:174 +msgid "Path to logfile for sopds_scanner process" +msgstr "Путь к логфайлу для процесса sopds_scanner" + +#: .\sopds\settings.py:175 +msgid "Path to pidfile for sopds_server process" +msgstr "Путь к pid-файлу для процесса sopds_server" + +#: .\sopds\settings.py:176 +msgid "Path to pidfile for sopds_scanner process" +msgstr "Путь к pid-файлу для процесса sopds_scanner" + +#: .\sopds\settings.py:177 +msgid "sheduled minutes for sopds_scanner (cron syntax)" +msgstr "минуты для планировщика sopds_Scanner (как в cron)" + +#: .\sopds\settings.py:178 +msgid "sheduled hours for sopds_scanner (cron syntax)" +msgstr "часы для планировщика sopds_Scanner (как в cron)" + +#: .\sopds\settings.py:179 +msgid "sheduled day for sopds_scanner (cron syntax)" +msgstr "дни для планировщика sopds_Scanner (как в cron)" + +#: .\sopds\settings.py:180 +msgid "sheduled day of weeks for sopds_scanner (cron syntax)" +msgstr "дни недели для планировщика sopds_Scanner (как в cron)" diff --git a/sopds/settings.py b/sopds/settings.py index d225e72..2ce1b3a 100644 --- a/sopds/settings.py +++ b/sopds/settings.py @@ -13,6 +13,8 @@ https://docs.djangoproject.com/en/1.9/ref/settings/ import os import sys +from django.utils.translation import ugettext_lazy as _ + # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -37,6 +39,8 @@ INSTALLED_APPS = [ 'sopds_web_backend', 'django.contrib.admin', 'django.contrib.staticfiles', + 'constance.backends.database', + 'constance', ] MIDDLEWARE_CLASSES = [ @@ -129,8 +133,8 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization # https://docs.djangoproject.com/en/1.9/topics/i18n/ -LANGUAGE_CODE = 'en-US' -#LANGUAGE_CODE = 'ru-RU' +#LANGUAGE_CODE = 'en-US' +LANGUAGE_CODE = 'ru-RU' TIME_ZONE = 'Europe/Moscow' USE_I18N = True @@ -142,6 +146,49 @@ USE_TZ = True STATIC_URL = '/static/' STATIC_ROOT = 'static' +CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend' + +CONSTANCE_CONFIG = { + 'SOPDS_ROOT_LIB': ('books/',_('Absolute path to books collection directory')), + 'SOPDS_BOOK_EXTENSIONS': ('.pdf .djvu .fb2 .epub', _('List of managed book files extensions')), + 'SOPDS_DOUBLES_HIDE': (True,_('This flag hides found doublicates')), + 'SOPDS_COVER_SHOW': (True,_('This flag activate showing cover of books')), + 'SOPDS_FB2PARSE': (True,_('This flag activate extraction metadata from fb2 files')), + 'SOPDS_ZIPSCAN': (True,_('This flag activate zip files scanning')), + 'SOPDS_ZIPCODEPAGE': ('cp866',_('Set codepage for filenames inside zipfile')), + 'SOPDS_INPX_ENABLE': (False,_('Enables read metadata from inpx-file (and stop scanning deeper from ipx-file place)')), + 'SOPDS_INPX_SKIP_UNCHANGED': (True,_('Skip scanning INPX with unchanged size after previous scan')), + 'SOPDS_INPX_TEST_ZIP': (False,_('Test avialability zip files listed in INPX before add in collection')), + 'SOPDS_INPX_TEST_FILES': (False,_('Test avialability book files listed in INPX before add in collection')), + 'SOPDS_DELETE_LOGICAL': (False,'Logical deleting unavialable files'), + 'SOPDS_SPLITITEMS': (300,_('Max subitems count in alphabet menuitem')), + 'SOPDS_MAXITEMS': (60,_('Max items on page')), + 'SOPDS_FB2TOEPUB': ('',_('Path to FB2-EPUB converter program')), + 'SOPDS_FB2TOMOBI': ('',_('Path to FB2-MOBI converter program')), + 'SOPDS_TEMP_DIR': (os.path.join(BASE_DIR,'tmp'),_('Path to temporary files directory')), + 'SOPDS_TITLE_AS_FILENAME': (True,_('Create downloaded filename from book title')), + 'SOPDS_ALPHABET_MENU': (True,_('Enable alphabet submenu')), + 'SOPDS_NOCOVER_PATH': (os.path.join(BASE_DIR,'static/images/nocover.jpg'),_('Path to image file showing for book without embedded cover')), + 'SOPDS_AUTH': (True,_('Enable authentication')), + 'SOPDS_SERVER_LOG': (os.path.join(BASE_DIR,'opds_catalog/log/sopds_server.log'),_('Path to logfile for sopds_server process')), + 'SOPDS_SCANNER_LOG': (os.path.join(BASE_DIR,'opds_catalog/log/sopds_scanner.log'),_('Path to logfile for sopds_scanner process')), + 'SOPDS_SERVER_PID': (os.path.join(BASE_DIR,'opds_catalog/tmp/sopds_server.pid'),_('Path to pidfile for sopds_server process')), + 'SOPDS_SCANNER_PID': (os.path.join(BASE_DIR,'opds_catalog/tmp/sopds_scanner.pid'),_('Path to pidfile for sopds_scanner process')), + 'SOPDS_SCAN_SHED_MIN': ('0',_('sheduled minutes for sopds_scanner (cron syntax)')), + 'SOPDS_SCAN_SHED_HOUR': ('0,12',_('sheduled hours for sopds_scanner (cron syntax)')), + 'SOPDS_SCAN_SHED_DAY': ('*',_('sheduled day for sopds_scanner (cron syntax)')), + 'SOPDS_SCAN_SHED_DOW': ('*',_('sheduled day of weeks for sopds_scanner (cron syntax)')), +} + +CONSTANCE_CONFIG_FIELDSETS = { + '1. General Options': ('SOPDS_ROOT_LIB', 'SOPDS_BOOK_EXTENSIONS',), + '2. Server Options': ('SOPDS_AUTH', 'SOPDS_ALPHABET_MENU', 'SOPDS_DOUBLES_HIDE', 'SOPDS_COVER_SHOW', 'SOPDS_SPLITITEMS', 'SOPDS_MAXITEMS', 'SOPDS_TITLE_AS_FILENAME', 'SOPDS_NOCOVER_PATH'), + '3. Scanner Options': ('SOPDS_FB2PARSE','SOPDS_ZIPSCAN','SOPDS_ZIPCODEPAGE', 'SOPDS_INPX_ENABLE', 'SOPDS_INPX_SKIP_UNCHANGED', 'SOPDS_INPX_TEST_ZIP', 'SOPDS_INPX_TEST_FILES', 'SOPDS_DELETE_LOGICAL'), + '4. Scanner Shedule': ('SOPDS_SCAN_SHED_MIN', 'SOPDS_SCAN_SHED_HOUR', 'SOPDS_SCAN_SHED_DAY','SOPDS_SCAN_SHED_DOW'), + '5. Converters Options': ('SOPDS_FB2TOEPUB', 'SOPDS_FB2TOMOBI', 'SOPDS_TEMP_DIR'), + '6. Log & PID Files': ('SOPDS_SERVER_LOG', 'SOPDS_SCANNER_LOG', 'SOPDS_SERVER_PID','SOPDS_SCANNER_PID'), +} + # # SIMPLE OPDS SETTINGS # diff --git a/sopds_web_backend/locale/ru/LC_MESSAGES/django.mo b/sopds_web_backend/locale/ru/LC_MESSAGES/django.mo index 934ad59a387ad42ffb131c6dfd8e25f504282783..e0c74d30839a8d0b1097c270c2c30d715e18a81d 100644 GIT binary patch delta 26 icmX@CeOP<LVJ=>CT?0d112Y99Ln|Z8%@?>na{&N#qzG{U delta 26 icmX@CeOP<LVJ==XT|*;XBLf9P3oBEz%@?>na{&N#y9jgu diff --git a/sopds_web_backend/locale/ru/LC_MESSAGES/django.po b/sopds_web_backend/locale/ru/LC_MESSAGES/django.po index 3f0c306..2ab2c87 100644 --- a/sopds_web_backend/locale/ru/LC_MESSAGES/django.po +++ b/sopds_web_backend/locale/ru/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-20 18:56+0300\n" +"POT-Creation-Date: 2017-01-06 21:29+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" @@ -19,6 +19,36 @@ msgstr "" "10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%" "100>=11 && n%100<=14)? 2 : 3);\n" +#: .\sopds_web_backend\templates\admin\base.html:30 +msgid "Welcome," +msgstr "" + +#: .\sopds_web_backend\templates\admin\base.html:35 +#, fuzzy +#| msgid "File size:" +msgid "View site" +msgstr "Размер файла:" + +#: .\sopds_web_backend\templates\admin\base.html:40 +msgid "Documentation" +msgstr "" + +#: .\sopds_web_backend\templates\admin\base.html:44 +#, fuzzy +#| msgid "Enter Password" +msgid "Change password" +msgstr "Введите пароль" + +#: .\sopds_web_backend\templates\admin\base.html:46 +#, fuzzy +#| msgid "Logout" +msgid "Log out" +msgstr "Выход" + +#: .\sopds_web_backend\templates\admin\base.html:56 +msgid "Home" +msgstr "" + #: .\sopds_web_backend\templates\sopds_authors.html:8 #, python-format msgid "Total: %(a_book_count)s books." @@ -110,7 +140,8 @@ msgid "" "Bookshelf is available only SimpleOPDS Catalog mode with activated user " "authorization." msgstr "" -"Книжная полка доступна только в режиме работы SimpleOPDS Catalog со включенной авторизацией пользователей." +"Книжная полка доступна только в режиме работы SimpleOPDS Catalog со " +"включенной авторизацией пользователей." #: .\sopds_web_backend\templates\sopds_footer.html:22 msgid "STATISTICS" -- GitLab