diff locale/ru.po @ 7401:6ebc9f6f5d8e

update locale files
author John Rouillard <rouilj@ieee.org>
date Wed, 24 May 2023 20:35:53 -0400
parents c1227f883177
children 623502678b97
line wrap: on
line diff
--- a/locale/ru.po	Wed May 24 15:05:09 2023 -0400
+++ b/locale/ru.po	Wed May 24 20:35:53 2023 -0400
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Roundup 2.3.0\n"
 "Report-Msgid-Bugs-To: roundup-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2023-03-03 17:28-0500\n"
+"POT-Creation-Date: 2023-05-24 20:34-0400\n"
 "PO-Revision-Date: 2013-10-31 12:21+0100\n"
 "Last-Translator: alexander smishlajev <alex@tycobka.lv>\n"
 "Language-Team: Russian\n"
@@ -29,18 +29,38 @@
 msgid "You may not retire the admin or anonymous user"
 msgstr "Нельзя удалять пользователей admin и anonymous."
 
-#: ../roundup/admin.py:112 ../roundup/admin.py:1295 ../roundup/admin.py:1350
-#: ../roundup/admin.py:1377 ../roundup/admin.py:112:1295 :1350:1377
+#: ../roundup/admin.py:117
+msgid "Have 'display designator' show protected fields: creator. NYI"
+msgstr ""
+
+#: ../roundup/admin.py:120
+msgid "Set indexer to use when running 'reindex' NYI"
+msgstr ""
+
+#: ../roundup/admin.py:123
+msgid "Force reopening of tracker when running each command."
+msgstr ""
+
+#: ../roundup/admin.py:125
+msgid "Show retired items in table, list etc. NYI"
+msgstr ""
+
+#: ../roundup/admin.py:126
+msgid "Enable verbose output: tracing, descriptions..."
+msgstr ""
+
+#: ../roundup/admin.py:138 ../roundup/admin.py:993 ../roundup/admin.py:1601
+#: ../roundup/admin.py:1633 ../roundup/admin.py:138:993 :1601:1633
 #, python-format
 msgid "no such class \"%(classname)s\""
 msgstr "Класс \"%(classname)s\" не существует"
 
-#: ../roundup/admin.py:124
+#: ../roundup/admin.py:150
 #, python-format
 msgid "argument \"%(arg)s\" not propname=value"
 msgstr "аргумент \"%(arg)s\" должен иметь вид имя=значение"
 
-#: ../roundup/admin.py:137
+#: ../roundup/admin.py:163
 #, python-format
 msgid ""
 "Problem: %(message)s\n"
@@ -49,7 +69,7 @@
 "Ошибка: %(message)s\n"
 "\n"
 
-#: ../roundup/admin.py:138
+#: ../roundup/admin.py:164
 #, fuzzy, python-format
 msgid ""
 "%(message)sUsage: roundup-admin [options] [<command> <arguments>]\n"
@@ -98,12 +118,12 @@
 " roundup-admin help <command>             -- справка по команде\n"
 " roundup-admin help all                   -- все справочные сообщения\n"
 
-#: ../roundup/admin.py:165
+#: ../roundup/admin.py:191
 #, fuzzy
 msgid "Commands: "
 msgstr "Команды:"
 
-#: ../roundup/admin.py:172
+#: ../roundup/admin.py:198
 msgid ""
 "Commands may be abbreviated as long as the abbreviation\n"
 "matches only one command, e.g. l == li == lis == list."
@@ -117,7 +137,7 @@
 # но мне это совсем не нравится.
 #
 # что лучше написать вместо "ввести с терминала"?
-#: ../roundup/admin.py:201
+#: ../roundup/admin.py:227
 #, fuzzy
 msgid ""
 "\n"
@@ -249,12 +269,318 @@
 "\n"
 "Справка по командам:\n"
 
-#: ../roundup/admin.py:264
+#: ../roundup/admin.py:290
 #, python-format
 msgid "%s:"
 msgstr ""
 
-#: ../roundup/admin.py:271
+#: ../roundup/admin.py:395 ../roundup/admin.py:1185
+#: ../roundup/admin.py:395:1185
+msgid "Templates:"
+msgstr "Шаблоны:"
+
+#: ../roundup/admin.py:398 ../roundup/admin.py:1195
+#: ../roundup/admin.py:398:1195
+msgid "Back ends:"
+msgstr "Серверы:"
+
+#: ../roundup/admin.py:415
+msgid ""
+"Usage: commit\n"
+"        Commit changes made to the database during an interactive session.\n"
+"\n"
+"        The changes made during an interactive session are not\n"
+"        automatically written to the database - they must be committed\n"
+"        using this command.\n"
+"\n"
+"        One-off commands on the command-line are automatically committed if\n"
+"        they are successful.\n"
+"        "
+msgstr ""
+"Вызов: commit\n"
+"        Сохранить изменения базы данных, сделанные в интерактивном режиме.\n"
+"\n"
+"        Изменения, внесенные в интерактивном режиме, не записываются в базу\n"
+"        данных автоматически.  Они должны быть принудительно сохранены\n"
+"        при помощи этой команды.\n"
+"\n"
+"        Результаты выполнения командной строки записываются в базу данных\n"
+"        автоматически, если при выполнении команды не произошло ошибки.\n"
+"        "
+
+#: ../roundup/admin.py:430
+msgid ""
+"Usage: create classname property=value ...\n"
+"        Create a new entry of a given class.\n"
+"\n"
+"        This creates a new entry of the given class using the property\n"
+"        name=value arguments provided on the command line after the \"create"
+"\"\n"
+"        command.\n"
+"        "
+msgstr ""
+"Вызов: create класс атрибут=значение ...\n"
+"        Создать новый объект указанного класса.\n"
+"\n"
+"        Создает новый объект указанного класса и заполняет атрибуты\n"
+"        этого объекта указанными значениями.\n"
+"        "
+
+#: ../roundup/admin.py:438 ../roundup/admin.py:512 ../roundup/admin.py:545
+#: ../roundup/admin.py:663 ../roundup/admin.py:749 ../roundup/admin.py:807
+#: ../roundup/admin.py:852 ../roundup/admin.py:977 ../roundup/admin.py:1020
+#: ../roundup/admin.py:1158 ../roundup/admin.py:1285 ../roundup/admin.py:1371
+#: ../roundup/admin.py:1482 ../roundup/admin.py:1591 ../roundup/admin.py:1623
+#: ../roundup/admin.py:1738 ../roundup/admin.py:1792 ../roundup/admin.py:1837
+#: ../roundup/admin.py:438:512 :1020:1158:1285 :1371:1482 :1591:1623 :1738:1792
+#: :1837 :545:663 :749:807 :852:977
+msgid "Not enough arguments supplied"
+msgstr "Недостаточно аргументов"
+
+#: ../roundup/admin.py:458
+#, python-format
+msgid "%(propname)s (Password): "
+msgstr " %(propname)s (пароль): "
+
+#: ../roundup/admin.py:461
+#, python-format
+msgid "   %(propname)s (Again): "
+msgstr "%(propname)s (еще раз): "
+
+#: ../roundup/admin.py:465
+msgid "Sorry, try again..."
+msgstr "Пароли не совпали.  Попробуйте еще раз."
+
+#: ../roundup/admin.py:470
+#, python-format
+msgid "%(propname)s (%(proptype)s): "
+msgstr ""
+
+#: ../roundup/admin.py:489
+#, python-format
+msgid "you must provide the \"%(propname)s\" property."
+msgstr "Атрибут \"%(propname)s\" должен быть заполнен."
+
+#: ../roundup/admin.py:501
+#, fuzzy
+msgid ""
+"Usage: display designator[,designator]*\n"
+"\n"
+"        Show the property values for the given node(s).\n"
+"\n"
+"        A designator is a classname and a nodeid concatenated,\n"
+"        eg. bug1, user10, ...\n"
+"\n"
+"        This lists the properties and their associated values\n"
+"        for the given node.\n"
+"        "
+msgstr ""
+"Вызов: display описатель[,описатель]*\n"
+"        Показать значения атрибутов указанных объектов.\n"
+"\n"
+"        Выдает список атрибутов и их значений для объектов,\n"
+"        заданных описателями.\n"
+"        "
+
+#: ../roundup/admin.py:528
+#, python-format
+msgid "%(key)s: %(value)s"
+msgstr ""
+
+#. grab the directory to export to
+#: ../roundup/admin.py:531
+msgid ""
+"Usage: export [[-]class[,class]] export_dir\n"
+"        Export the database to colon-separated-value files.\n"
+"        To exclude the files (e.g. for the msg or file class),\n"
+"        use the exporttables command.\n"
+"\n"
+"        Optionally limit the export to just the named classes\n"
+"        or exclude the named classes, if the 1st argument starts with '-'.\n"
+"\n"
+"        This action exports the current data from the database into\n"
+"        colon-separated-value files that are placed in the nominated\n"
+"        destination directory.\n"
+"        "
+msgstr ""
+"Вызов: export [[-]класс[,класс]] каталог\n"
+"        Экспортировать базу данных в текстовые файлы.\n"
+"\n"
+"        Первый (необязательный) параметр этой команды задает список "
+"классов,\n"
+"        которые нужно экспортировать, или, если он начинается со знака\n"
+"        \"минус\", - список классов, которые нужно исключить из экспорта.\n"
+"        Если список классов не задан, экспортируются все классы базы "
+"данных.\n"
+"\n"
+"        Эта команда экспортирует данные из базы трекера в текстовые файлы\n"
+"        в указанном каталоге.  Для каждого экспортируемого класса создается\n"
+"        отдельный экспортный файл.  Для каждого объекта класса создается\n"
+"        строка экспортного файла.  Значения атрибутов разделяются\n"
+"        двоеточиями.\n"
+"\n"
+"        Команда export копирует в каталог экспорта файлы данных,\n"
+"        расположенные в $TRACKER_HOME/db/files/.  Для экспорта только\n"
+"        таблиц базы данных без дополнительных файлов используйте команду\n"
+"        exporttables.\n"
+"        "
+
+#: ../roundup/admin.py:638
+msgid ""
+"Usage: exporttables [[-]class[,class]] export_dir\n"
+"        Export the database to colon-separated-value files, excluding the\n"
+"        files below $TRACKER_HOME/db/files/ (which can be archived "
+"separately).\n"
+"        To include the files, use the export command.\n"
+"\n"
+"        Optionally limit the export to just the named classes\n"
+"        or exclude the named classes, if the 1st argument starts with '-'.\n"
+"\n"
+"        This action exports the current data from the database into\n"
+"        colon-separated-value files that are placed in the nominated\n"
+"        destination directory.\n"
+"        "
+msgstr ""
+"Вызов: exporttables [[-]класс[,класс]] каталог\n"
+"        Экспортировать содержимое базы данных в текстовые файлы.\n"
+"\n"
+"        Первый (необязательный) параметр этой команды задает список "
+"классов,\n"
+"        которые нужно экспортировать, или, если он начинается со знака\n"
+"        \"минус\", - список классов, которые нужно исключить из экспорта.\n"
+"        Если список классов не задан, экспортируются все классы базы "
+"данных.\n"
+"\n"
+"        Эта команда экспортирует данные из базы трекера в текстовые файлы\n"
+"        в указанном каталоге.  Для каждого экспортируемого класса создается\n"
+"        отдельный экспортный файл.  Для каждого объекта класса создается\n"
+"        строка экспортного файла.  Значения атрибутов разделяются\n"
+"        двоеточиями.\n"
+"\n"
+"        Команда exporttables не копирует в каталог экспорта файлы данных,\n"
+"        расположенные в $TRACKER_HOME/db/files/ (эти файлы можно потом\n"
+"        скопировать отдельно).  Для того чтобы экспортировать базу данных\n"
+"        полностью, используйте команду export.\n"
+"        "
+
+#: ../roundup/admin.py:653
+#, fuzzy
+msgid ""
+"Usage: filter classname propname=value ...\n"
+"        Find the nodes of the given class with a given property value.\n"
+"\n"
+"        Find the nodes of the given class with a given property value.\n"
+"        Multiple values can be specified by separating them with commas.\n"
+"        If property is a string, all values must match. I.E. it's an\n"
+"        'and' operation. If the property is a link/multilink any value\n"
+"        matches. I.E. an 'or' operation.\n"
+"        "
+msgstr ""
+"Вызов: find класс атрибут=значение ...\n"
+"        Найти объекты класса с данным значением ссылочного атрибута.\n"
+"\n"
+"        Найти объекты указанного класса с данным значением ссылочного\n"
+"        атрибута.  Значение может быть идентификатором объекта, на\n"
+"        который ссылается атрибут, или ключом этого объекта.\n"
+"        "
+
+#: ../roundup/admin.py:696
+#, fuzzy, python-format
+msgid "Class %(curclassname)s has no property %(pn)s in %(propname)s."
+msgstr "Класс %(classname)s не имеет атрибута \"%(propname)s\""
+
+#: ../roundup/admin.py:734 ../roundup/admin.py:795 ../roundup/admin.py:1305
+#: ../roundup/admin.py:1317 ../roundup/admin.py:1857
+#: ../roundup/admin.py:734:795 :1305:1317:1857
+#, python-format
+msgid "%(classname)s has no property \"%(propname)s\""
+msgstr "Класс %(classname)s не имеет атрибута \"%(propname)s\""
+
+#: ../roundup/admin.py:741
+msgid ""
+"Usage: find classname propname=value ...\n"
+"        Find the nodes of the given class with a given link property value.\n"
+"\n"
+"        Find the nodes of the given class with a given link property value.\n"
+"        The value may be either the nodeid of the linked node, or its key\n"
+"        value.\n"
+"        "
+msgstr ""
+"Вызов: find класс атрибут=значение ...\n"
+"        Найти объекты класса с данным значением ссылочного атрибута.\n"
+"\n"
+"        Найти объекты указанного класса с данным значением ссылочного\n"
+"        атрибута.  Значение может быть идентификатором объекта, на\n"
+"        который ссылается атрибут, или ключом этого объекта.\n"
+"        "
+
+#: ../roundup/admin.py:802
+#, fuzzy
+msgid ""
+"Usage: genconfig <filename>\n"
+"        Generate a new tracker config file (ini style) with default\n"
+"        values in <filename>.\n"
+"        "
+msgstr ""
+"Вызов: genconfig <имя файла>\n"
+"        Создать новый конфигурационный файл трекера,\n"
+"        используя настройки по умолчанию.\n"
+"        "
+
+#: ../roundup/admin.py:820
+#, python-format
+msgid ""
+"Changing option\n"
+"   'password_pbkdf2_default_rounds'\n"
+"from old default of %(old_number)s to new default of %(new_number)s."
+msgstr ""
+
+#: ../roundup/admin.py:831
+#, python-format
+msgid ""
+"Update 'password_pbkdf2_default_rounds' to a number equal to or larger\n"
+"than %s."
+msgstr ""
+
+#: ../roundup/admin.py:842
+#, fuzzy
+msgid ""
+"Usage: get property designator[,designator]*\n"
+"        Get the given property of one or more designator(s).\n"
+"\n"
+"        A designator is a classname and a nodeid concatenated,\n"
+"        eg. bug1, user10, ...\n"
+"\n"
+"        Retrieves the property value of the nodes specified\n"
+"        by the designators.\n"
+"        "
+msgstr ""
+"Вызов: get атрибут описатель[,описатель]*\n"
+"        Получить значение указанного атрибута одного или нескольких\n"
+"        объектов.\n"
+"\n"
+"        Выдает значение указанного атрибута для всех объектов,\n"
+"        перечисленных в списке описателей.\n"
+"        "
+
+#: ../roundup/admin.py:886 ../roundup/admin.py:904 ../roundup/admin.py:886:904
+#, python-format
+msgid "property %s is not of type Multilink or Link so -d flag does not apply."
+msgstr ""
+"Ключ '-d' неприменим, потому что тип атрибута %s - не Link и не Multilink"
+
+#: ../roundup/admin.py:914 ../roundup/admin.py:995 ../roundup/admin.py:1635
+#: ../roundup/admin.py:914:995:1635
+#, python-format
+msgid "no such %(classname)s node \"%(nodeid)s\""
+msgstr "В классе %(classname)s нет объекта \"%(nodeid)s\""
+
+#: ../roundup/admin.py:917
+#, python-format
+msgid "no such %(classname)s property \"%(propname)s\""
+msgstr "У класса %(classname)s нет атрибута \"%(propname)s\""
+
+#: ../roundup/admin.py:925
 msgid ""
 "Usage: help topic\n"
 "        Give help about topic.\n"
@@ -274,20 +600,125 @@
 "        all       -- все справки\n"
 "        "
 
-#: ../roundup/admin.py:293
+#: ../roundup/admin.py:947
 #, python-format
 msgid "Sorry, no help for \"%(topic)s\""
 msgstr "Ивините, справка \"%(topic)s\" не существует."
 
-#: ../roundup/admin.py:408 ../roundup/admin.py:464 ../roundup/admin.py:408:464
-msgid "Templates:"
-msgstr "Шаблоны:"
-
-#: ../roundup/admin.py:411 ../roundup/admin.py:474 ../roundup/admin.py:411:474
-msgid "Back ends:"
-msgstr "Серверы:"
-
-#: ../roundup/admin.py:414
+#: ../roundup/admin.py:964
+msgid ""
+"Usage: history designator [skipquiet]\n"
+"        Show the history entries of a designator.\n"
+"\n"
+"        A designator is a classname and a nodeid concatenated,\n"
+"        eg. bug1, user10, ...\n"
+"\n"
+"        Lists the journal entries viewable by the user for the\n"
+"        node identified by the designator. If skipquiet is the\n"
+"        second argument, journal entries for quiet properties\n"
+"        are not shown.\n"
+"        "
+msgstr ""
+
+#: ../roundup/admin.py:1000
+msgid ""
+"Usage: import import_dir\n"
+"        Import a database from the directory containing CSV files,\n"
+"        two per class to import.\n"
+"\n"
+"        The files used in the import are:\n"
+"\n"
+"        <class>.csv\n"
+"          This must define the same properties as the class (including\n"
+"          having a \"header\" line with those property names.)\n"
+"        <class>-journals.csv\n"
+"          This defines the journals for the items being imported.\n"
+"\n"
+"        The imported nodes will have the same nodeid as defined in the\n"
+"        import file, thus replacing any existing content.\n"
+"\n"
+"        The new nodes are added to the existing database - if you want to\n"
+"        create a new database using the imported data, then create a new\n"
+"        database (or, tediously, retire all the old data.)\n"
+"        "
+msgstr ""
+"Вызов: import каталог\n"
+"        Импортировать базу данных из каталога, содержащего файлы\n"
+"        в формате CSV (Comma Separated Values), по два файла на класс.\n"
+"\n"
+"        В импорте участвуют следующие файлы:\n"
+"\n"
+"        <класс>.csv\n"
+"          Этот файл должен содержать данные класса (с указанием имен\n"
+"          атрибутов в первой строке.)\n"
+"        <класс>-journals.csv\n"
+"          Содержит протоколы изменений объектов класса.\n"
+"\n"
+"        Импортируемые объекты имеют идентификаторы, указанные в\n"
+"        импортном файле и замещают объекты с такими же идентификаторами,\n"
+"        существующие в базе данных.\n"
+"\n"
+"        Новые объекты добавляются к существующей базе данных.\n"
+"        Если вы хотите заполнить базу только импортируемыми объектами,\n"
+"        вам нужно создать новую базу данных (или, если не лень, удалить\n"
+"        из существующей базы все объекты).\n"
+"        "
+
+#: ../roundup/admin.py:1079
+msgid ""
+"Usage: importtables export_dir\n"
+"\n"
+"        This imports the database tables exported using exporttables.\n"
+"        "
+msgstr ""
+
+#  password
+#. password
+#: ../roundup/admin.py:1086
+msgid ""
+"Usage: initialise [adminpw]\n"
+"        Initialise a new Roundup tracker.\n"
+"\n"
+"        The administrator details will be set at this step.\n"
+"\n"
+"        Execute the tracker's initialisation function dbinit.init()\n"
+"        "
+msgstr ""
+"Вызов: initialise [пароль]\n"
+"        Проинициализировать новый трекер Roundup.\n"
+"\n"
+"        На этом шаге заполняется учетная карточка администратора.\n"
+"\n"
+"        Инициализация трекера делается функцией dbinit.init()\n"
+"        "
+
+#: ../roundup/admin.py:1100
+msgid "Admin Password: "
+msgstr "Пароль администратора: "
+
+#: ../roundup/admin.py:1101
+msgid "       Confirm: "
+msgstr "              Еще раз: "
+
+#: ../roundup/admin.py:1105
+msgid "Instance home does not exist"
+msgstr "Домашний каталог трекера не существует"
+
+#: ../roundup/admin.py:1109
+msgid "Instance has not been installed"
+msgstr "Трекер не установлен"
+
+#: ../roundup/admin.py:1115
+msgid ""
+"WARNING: The database is already initialised!\n"
+"If you re-initialise it, you will lose all the data!\n"
+"Erase it? Y/N: "
+msgstr ""
+"ВНИМАНИЕ: база данных уже была проинициализирована!\n"
+"Повторная инициализация уничтожит все ваши данные!\n"
+"Удалить существующую базу? Y/N: "
+
+#: ../roundup/admin.py:1135
 msgid ""
 "Usage: install [template [backend [key=val[,key=val]]]]\n"
 "        Install a new Roundup tracker.\n"
@@ -339,23 +770,12 @@
 "        См.также \"help initopts\".\n"
 "        "
 
-#: ../roundup/admin.py:437 ../roundup/admin.py:568 ../roundup/admin.py:671
-#: ../roundup/admin.py:764 ../roundup/admin.py:822 ../roundup/admin.py:908
-#: ../roundup/admin.py:967 ../roundup/admin.py:994 ../roundup/admin.py:1021
-#: ../roundup/admin.py:1098 ../roundup/admin.py:1193 ../roundup/admin.py:1279
-#: ../roundup/admin.py:1340 ../roundup/admin.py:1367 ../roundup/admin.py:1403
-#: ../roundup/admin.py:1531 ../roundup/admin.py:1615
-#: ../roundup/admin.py:437:568 :1021:1098:1193 :1279:1340 :1367:1403 :1531:1615
-#: :671:764 :822:908 :967:994
-msgid "Not enough arguments supplied"
-msgstr "Недостаточно аргументов"
-
-#: ../roundup/admin.py:443
+#: ../roundup/admin.py:1164
 #, python-format
 msgid "Instance home parent directory \"%(parent)s\" does not exist"
 msgstr "Каталог \"%(parent)s\" не существует"
 
-#: ../roundup/admin.py:452
+#: ../roundup/admin.py:1173
 #, python-format
 msgid ""
 "WARNING: There appears to be a tracker in \"%(tracker_home)s\"!\n"
@@ -366,22 +786,22 @@
 "Повторная установка уничтожит все ваши данные!\n"
 "Удалить существующий трекер? Y/N: "
 
-#: ../roundup/admin.py:465
+#: ../roundup/admin.py:1186
 #, fuzzy
 msgid "Select template"
 msgstr "Выберите шаблон [classic]: "
 
-#: ../roundup/admin.py:475
+#: ../roundup/admin.py:1196
 #, fuzzy
 msgid "Select backend"
 msgstr "Выберите сервер [anydbm]: "
 
-#: ../roundup/admin.py:486
+#: ../roundup/admin.py:1207
 #, python-format
 msgid "Error in configuration settings: \"%s\""
 msgstr "Ошибка в параметрах конфигурации: \"%s\""
 
-#: ../roundup/admin.py:517
+#: ../roundup/admin.py:1238
 #, python-format
 msgid ""
 "\n"
@@ -394,12 +814,12 @@
 " Теперь вам нужно исправить конфигурационный файл трекера:\n"
 "   %(config_file)s"
 
-#: ../roundup/admin.py:527
+#: ../roundup/admin.py:1248
 msgid " ... at a minimum, you must set following options:"
 msgstr " ... как минимум, вы должны установить настройки:"
 
 # Указано английское название документа
-#: ../roundup/admin.py:532
+#: ../roundup/admin.py:1253
 #, python-format
 msgid ""
 "\n"
@@ -426,136 +846,383 @@
 " После этого вы должны выполнить команду \"roundup-admin initialise\".\n"
 "---------------------------------------------------------------------------\n"
 
-#: ../roundup/admin.py:563
-#, fuzzy
+#: ../roundup/admin.py:1270
+msgid ""
+"Usage: list classname [property]\n"
+"        List the instances of a class.\n"
+"\n"
+"        Lists all instances of the given class. If the property is not\n"
+"        specified, the  \"label\" property is used. The label property is\n"
+"        tried in order: the key, \"name\", \"title\" and then the first\n"
+"        property, alphabetically.\n"
+"\n"
+"        With -c, -S or -s print a list of item id's if no property\n"
+"        specified.  If property specified, print list of that property\n"
+"        for every class instance.\n"
+"        "
+msgstr ""
+"Вызов: list класс [атрибут]\n"
+"        Выдать список объектов класса.\n"
+"\n"
+"        Печатает список всех объектов указанного класса.\n"
+"        Если атрибут не указан, используется \"титульный\" атрибут.\n"
+"        В качестве \"титульного\" атрибута используется первый найденный\n"
+"        из следующих атрибутов: ключ, \"name\", \"title\" или первый\n"
+"        из атрибутов класса в алфавитном порядке.\n"
+"\n"
+"        С ключами -c, -S или -s, если не указано имя атрибута, печатает\n"
+"        список идентификаторов объектов.  Если имя атрибута указано,\n"
+"        выдает список значений этого атрибута.\n"
+"        "
+
+#: ../roundup/admin.py:1283
+msgid "Too many arguments supplied"
+msgstr "Подано слишком много параметров"
+
+#: ../roundup/admin.py:1319
+#, python-format
+msgid "%(nodeid)4s: %(value)s"
+msgstr ""
+
+#: ../roundup/admin.py:1323
 msgid ""
-"Usage: genconfig <filename>\n"
-"        Generate a new tracker config file (ini style) with default\n"
-"        values in <filename>.\n"
+"Usage: migrate\n"
+"\n"
+"        Update a tracker's database to be compatible with the Roundup\n"
+"        codebase.\n"
+"\n"
+"        You should run the \"migrate\" command for your tracker once\n"
+"        you've installed the latest codebase.\n"
+"\n"
+"        Do this before you use the web, command-line or mail interface\n"
+"        and before any users access the tracker.\n"
+"\n"
+"        This command will respond with either \"Tracker updated\" (if\n"
+"        you've not previously run it on an RDBMS backend) or \"No\n"
+"        migration action required\" (if you have run it, or have used\n"
+"        another interface to the tracker, or possibly because you are\n"
+"        using anydbm).\n"
+"\n"
+"        It's safe to run this even if it's not required, so just get\n"
+"        into the habit.\n"
 "        "
 msgstr ""
-"Вызов: genconfig <имя файла>\n"
-"        Создать новый конфигурационный файл трекера,\n"
-"        используя настройки по умолчанию.\n"
+
+#: ../roundup/admin.py:1344
+#, python-format
+msgid "Tracker updated to schema version %s."
+msgstr ""
+
+#: ../roundup/admin.py:1348
+#, python-format
+msgid "No migration action required. At schema version %s."
+msgstr ""
+
+#: ../roundup/admin.py:1353
+msgid ""
+"Usage: pack period | date\n"
+"\n"
+"        Remove journal entries older than a period of time specified or\n"
+"        before a certain date.\n"
+"\n"
+"        A period is specified using the suffixes \"y\", \"m\", and \"d\". "
+"The\n"
+"        suffix \"w\" (for \"week\") means 7 days.\n"
+"\n"
+"              \"3y\" means three years\n"
+"              \"2y 1m\" means two years and one month\n"
+"              \"1m 25d\" means one month and 25 days\n"
+"              \"2w 3d\" means two weeks and three days\n"
+"\n"
+"        Date format is \"YYYY-MM-DD\" eg:\n"
+"            2001-01-01\n"
+"\n"
 "        "
-
-#: ../roundup/admin.py:581
-#, python-format
+msgstr ""
+"Вызов: pack период | дата\n"
+"\n"
+"        Удалить протокольные сообщения, хранящиеся дольше указанного\n"
+"        периода или созданные до указанной даты.\n"
+"\n"
+"        Период задается числами, к которым добавлены буквы \"y\"\n"
+"        (year - год), \"m\" (month - месяц), \"d\" (day - день)\n"
+"        или \"w\" (week - неделя, семь дней).\n"
+"\n"
+"              \"3y\" означает три года\n"
+"              \"2y 1m\" означает два года и один месяц\n"
+"              \"1m 25d\" означает один месяц и 25 дней\n"
+"              \"2w 3d\" означает две недели и три дня\n"
+"\n"
+"        Дата задается в формате \"YYYY-MM-DD\", например:\n"
+"            2001-01-01\n"
+"\n"
+"        "
+
+#: ../roundup/admin.py:1381
+msgid "Invalid format"
+msgstr "Неправильный формат"
+
+#: ../roundup/admin.py:1392
 msgid ""
-"Changing option\n"
-"   'password_pbkdf2_default_rounds'\n"
-"from old default of %(old_number)s to new default of %(new_number)s."
-msgstr ""
-
-#: ../roundup/admin.py:593
-#, python-format
+"Usage: perftest [mode] [arguments]*\n"
+"\n"
+"        Time operations in Roundup. Supported arguments:\n"
+"\n"
+"            [password] [rounds=<integer>] [scheme=<scheme>]\n"
+"\n"
+"        'password' is the default mode.  The tracker's config.ini\n"
+"        setting for 'password_pbkdf2_default_rounds' is the default\n"
+"        value for 'rounds'. On the command line, 'rounds' can include\n"
+"        thousands separator of ',' or '.'.  'scheme' is the default\n"
+"        coded into Roundup. List supported schemes by using 'scheme='.\n"
+"\n"
+"        "
+msgstr ""
+
+#: ../roundup/admin.py:1425
+msgid "Invalid 'rounds'. Must be larger than 999."
+msgstr ""
+
+#: ../roundup/admin.py:1429
+#, python-format
+msgid "Invalid 'rounds'. It must be an integer not: %s"
+msgstr ""
+
+#: ../roundup/admin.py:1456
+msgid "scheme does not support rounds."
+msgstr ""
+
+#: ../roundup/admin.py:1459
+#, python-format
+msgid "Hash time: %(time)0.9f seconds, scheme: %(scheme)s, rounds: %(rounds)s"
+msgstr ""
+
+#: ../roundup/admin.py:1465
 msgid ""
-"Update 'password_pbkdf2_default_rounds' to a number equal to or larger\n"
-"than %s."
-msgstr ""
-
-#: ../roundup/admin.py:604
+"Usage: pragma setting=value | 'list'\n"
+"        Set internal admin settings to a value. E.G.\n"
+"\n"
+"            pragma verbose=True\n"
+"            pragma verbose=yes\n"
+"            pragma verbose=on\n"
+"            pragma verbose=1\n"
+"\n"
+"         will turn on verbose mode for roundup-admin.\n"
+"\n"
+"            pragma list\n"
+"\n"
+"         will show all settings and their current values. If verbose\n"
+"         is enabled hidden settings and descriptions will be shown.\n"
+"        "
+msgstr ""
+
+#: ../roundup/admin.py:1489
+#, python-format
+msgid "Argument must be setting=value, was given: %s."
+msgstr ""
+
+#: ../roundup/admin.py:1492
+msgid "Current settings and values (NYI - not yet implemented):"
+msgstr ""
+
+#: ../roundup/admin.py:1505
+#, fuzzy, python-format
+msgid "Unknown setting %s."
+msgstr "Неизвестное имя пользователя"
+
+#: ../roundup/admin.py:1514
+#, python-format
+msgid "Incorrect value for boolean setting %(setting)s: %(value)s."
+msgstr ""
+
+#: ../roundup/admin.py:1521
+#, python-format
+msgid "Incorrect value for integer setting %(setting)s: %(value)s."
+msgstr ""
+
+#: ../roundup/admin.py:1527
+#, python-format
+msgid "Internal error: pragma can not handle values of type: %s"
+msgstr ""
+
+#: ../roundup/admin.py:1537
 #, fuzzy
 msgid ""
-"Usage: updateconfig <filename>\n"
-"        Generate an updated tracker config file (ini style) in\n"
-"        <filename>. Use current settings from existing roundup\n"
-"        tracker in tracker home.\n"
-"        "
-msgstr ""
-"Вызов: genconfig <имя файла>\n"
-"        Создать новый конфигурационный файл трекера,\n"
-"        используя настройки по умолчанию.\n"
-"        "
-
-#  password
-#. password
-#: ../roundup/admin.py:612
-msgid ""
-"Usage: initialise [adminpw]\n"
-"        Initialise a new Roundup tracker.\n"
-"\n"
-"        The administrator details will be set at this step.\n"
-"\n"
-"        Execute the tracker's initialisation function dbinit.init()\n"
+"Usage: reindex [classname|classname:#-#|designator]*\n"
+"        Re-generate a tracker's search indexes.\n"
+"\n"
+"        This will re-generate the search indexes for a tracker.\n"
+"        This will typically happen automatically.\n"
+"\n"
+"        You can incrementally reindex using an argument like:\n"
+"\n"
+"            reindex issue:23-1000\n"
+"\n"
+"        to reindex issue class items 23-1000. Missing items\n"
+"        are reported but do not stop indexing of the range.\n"
 "        "
 msgstr ""
-"Вызов: initialise [пароль]\n"
-"        Проинициализировать новый трекер Roundup.\n"
-"\n"
-"        На этом шаге заполняется учетная карточка администратора.\n"
-"\n"
-"        Инициализация трекера делается функцией dbinit.init()\n"
+"Вызов: reindex [класс|определитель]*\n"
+"        Переиндексировать базу данных.\n"
+"\n"
+"        Эта команда перестраивает индексы, используемые для поиска в базе\n"
+"        данных.  Обычно построение индексов происходит автоматически.\n"
 "        "
 
-#: ../roundup/admin.py:626
-msgid "Admin Password: "
-msgstr "Пароль администратора: "
-
-#: ../roundup/admin.py:627
-msgid "       Confirm: "
-msgstr "              Еще раз: "
-
-#: ../roundup/admin.py:631
-msgid "Instance home does not exist"
-msgstr "Домашний каталог трекера не существует"
-
-#: ../roundup/admin.py:635
-msgid "Instance has not been installed"
-msgstr "Трекер не установлен"
-
-#: ../roundup/admin.py:641
-msgid ""
-"WARNING: The database is already initialised!\n"
-"If you re-initialise it, you will lose all the data!\n"
-"Erase it? Y/N: "
-msgstr ""
-"ВНИМАНИЕ: база данных уже была проинициализирована!\n"
-"Повторная инициализация уничтожит все ваши данные!\n"
-"Удалить существующую базу? Y/N: "
-
-#: ../roundup/admin.py:661
+#: ../roundup/admin.py:1560
+#, python-format
+msgid "no such item \"%(designator)s\""
+msgstr "объект \"%(designator)s\" не существует"
+
+#: ../roundup/admin.py:1570
+#, fuzzy, python-format
+msgid "no such item \"%(class)s%(id)s\""
+msgstr "объект \"%(designator)s\" не существует"
+
+#: ../roundup/admin.py:1582
 #, fuzzy
 msgid ""
-"Usage: get property designator[,designator]*\n"
-"        Get the given property of one or more designator(s).\n"
+"Usage: restore designator[,designator]*\n"
+"        Restore the retired node specified by designator.\n"
 "\n"
 "        A designator is a classname and a nodeid concatenated,\n"
 "        eg. bug1, user10, ...\n"
 "\n"
-"        Retrieves the property value of the nodes specified\n"
-"        by the designators.\n"
-"        "
-msgstr ""
-"Вызов: get атрибут описатель[,описатель]*\n"
-"        Получить значение указанного атрибута одного или нескольких\n"
-"        объектов.\n"
-"\n"
-"        Выдает значение указанного атрибута для всех объектов,\n"
-"        перечисленных в списке описателей.\n"
+"        The given nodes will become available for users again.\n"
 "        "
-
-#: ../roundup/admin.py:705 ../roundup/admin.py:723 ../roundup/admin.py:705:723
-#, python-format
-msgid "property %s is not of type Multilink or Link so -d flag does not apply."
-msgstr ""
-"Ключ '-d' неприменим, потому что тип атрибута %s - не Link и не Multilink"
-
-#: ../roundup/admin.py:733 ../roundup/admin.py:1297 ../roundup/admin.py:1352
-#: ../roundup/admin.py:733:1297:1352
-#, python-format
-msgid "no such %(classname)s node \"%(nodeid)s\""
+msgstr ""
+"Вызов: restore описатель[,описатель]*\n"
+"        Восстановить удаленные объекты.\n"
+"\n"
+"        С заданных объектов снимается пометка удаления, и этими объектами\n"
+"        можно пользоваться снова.\n"
+"        "
+
+#: ../roundup/admin.py:1607
+#, fuzzy
+msgid "no such %(classname)s node \" % (nodeid)s\""
 msgstr "В классе %(classname)s нет объекта \"%(nodeid)s\""
 
-#: ../roundup/admin.py:736
-#, python-format
-msgid "no such %(classname)s property \"%(propname)s\""
-msgstr "У класса %(classname)s нет атрибута \"%(propname)s\""
-
-#: ../roundup/admin.py:744
+#: ../roundup/admin.py:1613
 #, fuzzy
 msgid ""
-"Usage: set items property=value property=value ...\n"
+"Usage: retire designator[,designator]*\n"
+"        Retire the node specified by designator.\n"
+"\n"
+"        A designator is a classname and a nodeid concatenated,\n"
+"        eg. bug1, user10, ...\n"
+"\n"
+"        This action indicates that a particular node is not to be retrieved\n"
+"        by the list or find commands, and its key value may be re-used.\n"
+"        "
+msgstr ""
+"Вызов: retire описатель[,описатель]*\n"
+"        Удалить указанные объекты.\n"
+"\n"
+"        Эта команда помечает указанные объекты как удаленные.\n"
+"        Удаленные объекты не показываются в списках, выдаваемых\n"
+"        командами list и find, и их ключевые значения могут быть\n"
+"        использованы в других объектах.\n"
+"        "
+
+#: ../roundup/admin.py:1641
+msgid ""
+"Usage: rollback\n"
+"        Undo all changes that are pending commit to the database.\n"
+"\n"
+"        The changes made during an interactive session are not\n"
+"        automatically written to the database - they must be committed\n"
+"        manually. This command undoes all those changes, so a commit\n"
+"        immediately after would make no changes to the database.\n"
+"        "
+msgstr ""
+"Вызов: rollback\n"
+"        Отменить изменения базы данных, сделанные в интерактивном режиме.\n"
+"\n"
+"        Изменения, внесенные в интерактивном режиме, не записываются в базу\n"
+"        данных автоматически.  Они должны быть принудительно сохранены\n"
+"        при помощи команды commit.  Команда rollback отменяет все эти\n"
+"        изменения, так что база данных возвращается в состояние, которое\n"
+"        было в момент последней записи.\n"
+"        "
+
+#: ../roundup/admin.py:1654
+msgid ""
+"Usage: security [Role name]\n"
+"\n"
+"             Display the Permissions available to one or all Roles.\n"
+"             Also validates that any properties defined in a\n"
+"             permission are valid.\n"
+"\n"
+"             Run this after changing your permissions to catch\n"
+"             typos.\n"
+"        "
+msgstr ""
+
+#: ../roundup/admin.py:1668
+#, fuzzy, python-format
+msgid "No such Role \"%(role)s\"\n"
+msgstr "Роль \"%(role)s\" не существует"
+
+#: ../roundup/admin.py:1674
+#, fuzzy, python-format
+msgid "New Web users get the Roles \"%(role)s\"\n"
+msgstr "Новые пользователи web получают роли \"%(role)s\""
+
+#: ../roundup/admin.py:1677
+#, fuzzy, python-format
+msgid "New Web users get the Role \"%(role)s\"\n"
+msgstr "Новые пользователи web получают роль \"%(role)s\""
+
+#: ../roundup/admin.py:1681
+#, fuzzy, python-format
+msgid "New Email users get the Roles \"%(role)s\"\n"
+msgstr "Новые пользователи email получают роли \"%(role)s\""
+
+#: ../roundup/admin.py:1683
+#, fuzzy, python-format
+msgid "New Email users get the Role \"%(role)s\"\n"
+msgstr "Новые пользователи email получают роль \"%(role)s\""
+
+#: ../roundup/admin.py:1686
+#, fuzzy, python-format
+msgid "Role \"%(name)s\":\n"
+msgstr "Роль \"%(name)s\":"
+
+#: ../roundup/admin.py:1692
+#, fuzzy
+msgid " %(description)s (%(name)s for \"%(klass)s\""
+msgstr " %(description)s (%(name)s только для класса \"%(klass)s\")"
+
+#: ../roundup/admin.py:1692
+#, fuzzy, python-format
+msgid " %(description)s (%(name)s for \"%(klass)s\": %(properties)s only)\n"
+msgstr ""
+" %(description)s (%(name)s для класса \"%(klass)s\": только свойства "
+"%(properties)s)"
+
+#: ../roundup/admin.py:1705
+#, python-format
+msgid ""
+"\n"
+"  **Invalid properties for %(class)s: %(props)s\n"
+"\n"
+msgstr ""
+
+#: ../roundup/admin.py:1711
+#, fuzzy, python-format
+msgid " %(description)s (%(name)s for \"%(klass)s\" only)\n"
+msgstr " %(description)s (%(name)s только для класса \"%(klass)s\")"
+
+#: ../roundup/admin.py:1714
+#, fuzzy, python-format
+msgid " %(description)s (%(name)s)\n"
+msgstr " %(description)s (%(name)s только для класса \"%(klass)s\")"
+
+#: ../roundup/admin.py:1718
+#, fuzzy
+msgid ""
+"Usage: set items property=value [property=value ...]\n"
 "        Set the given properties of one or more items(s).\n"
 "\n"
 "        The items are specified as a class or as a comma-separated\n"
@@ -587,58 +1254,7 @@
 "        атрибут.  (Например, \"1,2,3\".)\n"
 "        "
 
-#: ../roundup/admin.py:812
-#, fuzzy
-msgid ""
-"Usage: filter classname propname=value ...\n"
-"        Find the nodes of the given class with a given property value.\n"
-"\n"
-"        Find the nodes of the given class with a given property value.\n"
-"        Multiple values can be specified by separating them with commas.\n"
-"        If property is a string, all values must match. I.E. it's an\n"
-"        'and' operation. If the property is a link/multilink any value\n"
-"        matches. I.E. an 'or' operation.\n"
-"        "
-msgstr ""
-"Вызов: find класс атрибут=значение ...\n"
-"        Найти объекты класса с данным значением ссылочного атрибута.\n"
-"\n"
-"        Найти объекты указанного класса с данным значением ссылочного\n"
-"        атрибута.  Значение может быть идентификатором объекта, на\n"
-"        который ссылается атрибут, или ключом этого объекта.\n"
-"        "
-
-#: ../roundup/admin.py:855
-#, fuzzy, python-format
-msgid "Class %(curclassname)s has no property %(pn)s in %(propname)s."
-msgstr "Класс %(classname)s не имеет атрибута \"%(propname)s\""
-
-#: ../roundup/admin.py:893 ../roundup/admin.py:954 ../roundup/admin.py:1118
-#: ../roundup/admin.py:1130 ../roundup/admin.py:1213
-#: ../roundup/admin.py:893:954 :1118:1130:1213
-#, python-format
-msgid "%(classname)s has no property \"%(propname)s\""
-msgstr "Класс %(classname)s не имеет атрибута \"%(propname)s\""
-
-#: ../roundup/admin.py:900
-msgid ""
-"Usage: find classname propname=value ...\n"
-"        Find the nodes of the given class with a given link property value.\n"
-"\n"
-"        Find the nodes of the given class with a given link property value.\n"
-"        The value may be either the nodeid of the linked node, or its key\n"
-"        value.\n"
-"        "
-msgstr ""
-"Вызов: find класс атрибут=значение ...\n"
-"        Найти объекты класса с данным значением ссылочного атрибута.\n"
-"\n"
-"        Найти объекты указанного класса с данным значением ссылочного\n"
-"        атрибута.  Значение может быть идентификатором объекта, на\n"
-"        который ссылается атрибут, или ключом этого объекта.\n"
-"        "
-
-#: ../roundup/admin.py:961
+#: ../roundup/admin.py:1786
 msgid ""
 "Usage: specification classname\n"
 "        Show the properties for a classname.\n"
@@ -652,133 +1268,17 @@
 "        Выдает список атрибутов указанного класса.\n"
 "        "
 
-#: ../roundup/admin.py:977
+#: ../roundup/admin.py:1802
 #, fuzzy, python-format
 msgid "%(key)s: %(value)s (key property)\n"
 msgstr "%(key)s: %(value)s (ключевой атрибут)"
 
-#: ../roundup/admin.py:980
+#: ../roundup/admin.py:1805
 #, fuzzy, python-format
 msgid "%(key)s: %(value)s\n"
 msgstr "%(key)s: %(value)s (ключевой атрибут)"
 
-#: ../roundup/admin.py:983
-#, fuzzy
-msgid ""
-"Usage: display designator[,designator]*\n"
-"\n"
-"        Show the property values for the given node(s).\n"
-"\n"
-"        A designator is a classname and a nodeid concatenated,\n"
-"        eg. bug1, user10, ...\n"
-"\n"
-"        This lists the properties and their associated values\n"
-"        for the given node.\n"
-"        "
-msgstr ""
-"Вызов: display описатель[,описатель]*\n"
-"        Показать значения атрибутов указанных объектов.\n"
-"\n"
-"        Выдает список атрибутов и их значений для объектов,\n"
-"        заданных описателями.\n"
-"        "
-
-#: ../roundup/admin.py:1010
-#, python-format
-msgid "%(key)s: %(value)s"
-msgstr ""
-
-#: ../roundup/admin.py:1013
-msgid ""
-"Usage: create classname property=value ...\n"
-"        Create a new entry of a given class.\n"
-"\n"
-"        This creates a new entry of the given class using the property\n"
-"        name=value arguments provided on the command line after the \"create"
-"\"\n"
-"        command.\n"
-"        "
-msgstr ""
-"Вызов: create класс атрибут=значение ...\n"
-"        Создать новый объект указанного класса.\n"
-"\n"
-"        Создает новый объект указанного класса и заполняет атрибуты\n"
-"        этого объекта указанными значениями.\n"
-"        "
-
-#: ../roundup/admin.py:1041
-#, python-format
-msgid "%(propname)s (Password): "
-msgstr " %(propname)s (пароль): "
-
-#: ../roundup/admin.py:1044
-#, python-format
-msgid "   %(propname)s (Again): "
-msgstr "%(propname)s (еще раз): "
-
-#: ../roundup/admin.py:1048
-msgid "Sorry, try again..."
-msgstr "Пароли не совпали.  Попробуйте еще раз."
-
-#: ../roundup/admin.py:1052
-#, python-format
-msgid "%(propname)s (%(proptype)s): "
-msgstr ""
-
-#: ../roundup/admin.py:1071
-#, python-format
-msgid "you must provide the \"%(propname)s\" property."
-msgstr "Атрибут \"%(propname)s\" должен быть заполнен."
-
-#: ../roundup/admin.py:1083
-msgid ""
-"Usage: list classname [property]\n"
-"        List the instances of a class.\n"
-"\n"
-"        Lists all instances of the given class. If the property is not\n"
-"        specified, the  \"label\" property is used. The label property is\n"
-"        tried in order: the key, \"name\", \"title\" and then the first\n"
-"        property, alphabetically.\n"
-"\n"
-"        With -c, -S or -s print a list of item id's if no property\n"
-"        specified.  If property specified, print list of that property\n"
-"        for every class instance.\n"
-"        "
-msgstr ""
-"Вызов: list класс [атрибут]\n"
-"        Выдать список объектов класса.\n"
-"\n"
-"        Печатает список всех объектов указанного класса.\n"
-"        Если атрибут не указан, используется \"титульный\" атрибут.\n"
-"        В качестве \"титульного\" атрибута используется первый найденный\n"
-"        из следующих атрибутов: ключ, \"name\", \"title\" или первый\n"
-"        из атрибутов класса в алфавитном порядке.\n"
-"\n"
-"        С ключами -c, -S или -s, если не указано имя атрибута, печатает\n"
-"        список идентификаторов объектов.  Если имя атрибута указано,\n"
-"        выдает список значений этого атрибута.\n"
-"        "
-
-#: ../roundup/admin.py:1096
-msgid "Too many arguments supplied"
-msgstr "Подано слишком много параметров"
-
-#: ../roundup/admin.py:1132
-#, python-format
-msgid "%(nodeid)4s: %(value)s"
-msgstr ""
-
-#: ../roundup/admin.py:1136
-msgid ""
-"Usage: templates [trace_search]\n"
-"        List templates and their installed directories.\n"
-"\n"
-"        With trace_search also list all directories that are\n"
-"        searched for templates.\n"
-"        "
-msgstr ""
-
-#: ../roundup/admin.py:1164
+#: ../roundup/admin.py:1808
 msgid ""
 "Usage: table classname [property[,property]*]\n"
 "        List the instances of a class in tabular form.\n"
@@ -838,485 +1338,69 @@
 "        обрезает значения столбца \"Name\" до четырех символов.\n"
 "        "
 
-#: ../roundup/admin.py:1208
+#: ../roundup/admin.py:1852
 #, python-format
 msgid "\"%(spec)s\" not name:width"
 msgstr "Значение \"%(spec)s\" должно быть задано как имя:ширина"
 
-#: ../roundup/admin.py:1230
+#: ../roundup/admin.py:1874
 #, python-format
 msgid "\"%(spec)s\" does not have an integer width: \"%(width)s\""
 msgstr ""
 
-#: ../roundup/admin.py:1266
-msgid ""
-"Usage: history designator [skipquiet]\n"
-"        Show the history entries of a designator.\n"
-"\n"
-"        A designator is a classname and a nodeid concatenated,\n"
-"        eg. bug1, user10, ...\n"
-"\n"
-"        Lists the journal entries viewable by the user for the\n"
-"        node identified by the designator. If skipquiet is the\n"
-"        second argument, journal entries for quiet properties\n"
-"        are not shown.\n"
-"        "
-msgstr ""
-
-#: ../roundup/admin.py:1302
-msgid ""
-"Usage: commit\n"
-"        Commit changes made to the database during an interactive session.\n"
-"\n"
-"        The changes made during an interactive session are not\n"
-"        automatically written to the database - they must be committed\n"
-"        using this command.\n"
-"\n"
-"        One-off commands on the command-line are automatically committed if\n"
-"        they are successful.\n"
-"        "
-msgstr ""
-"Вызов: commit\n"
-"        Сохранить изменения базы данных, сделанные в интерактивном режиме.\n"
-"\n"
-"        Изменения, внесенные в интерактивном режиме, не записываются в базу\n"
-"        данных автоматически.  Они должны быть принудительно сохранены\n"
-"        при помощи этой команды.\n"
-"\n"
-"        Результаты выполнения командной строки записываются в базу данных\n"
-"        автоматически, если при выполнении команды не произошло ошибки.\n"
-"        "
-
-#: ../roundup/admin.py:1317
+#: ../roundup/admin.py:1910
 msgid ""
-"Usage: rollback\n"
-"        Undo all changes that are pending commit to the database.\n"
-"\n"
-"        The changes made during an interactive session are not\n"
-"        automatically written to the database - they must be committed\n"
-"        manually. This command undoes all those changes, so a commit\n"
-"        immediately after would make no changes to the database.\n"
-"        "
-msgstr ""
-"Вызов: rollback\n"
-"        Отменить изменения базы данных, сделанные в интерактивном режиме.\n"
-"\n"
-"        Изменения, внесенные в интерактивном режиме, не записываются в базу\n"
-"        данных автоматически.  Они должны быть принудительно сохранены\n"
-"        при помощи команды commit.  Команда rollback отменяет все эти\n"
-"        изменения, так что база данных возвращается в состояние, которое\n"
-"        было в момент последней записи.\n"
+"Usage: templates [trace_search]\n"
+"        List templates and their installed directories.\n"
+"\n"
+"        With trace_search also list all directories that are\n"
+"        searched for templates.\n"
 "        "
-
-#: ../roundup/admin.py:1330
-#, fuzzy
-msgid ""
-"Usage: retire designator[,designator]*\n"
-"        Retire the node specified by designator.\n"
-"\n"
-"        A designator is a classname and a nodeid concatenated,\n"
-"        eg. bug1, user10, ...\n"
-"\n"
-"        This action indicates that a particular node is not to be retrieved\n"
-"        by the list or find commands, and its key value may be re-used.\n"
-"        "
-msgstr ""
-"Вызов: retire описатель[,описатель]*\n"
-"        Удалить указанные объекты.\n"
-"\n"
-"        Эта команда помечает указанные объекты как удаленные.\n"
-"        Удаленные объекты не показываются в списках, выдаваемых\n"
-"        командами list и find, и их ключевые значения могут быть\n"
-"        использованы в других объектах.\n"
-"        "
-
-#: ../roundup/admin.py:1358
+msgstr ""
+
+#: ../roundup/admin.py:1938
 #, fuzzy
 msgid ""
-"Usage: restore designator[,designator]*\n"
-"        Restore the retired node specified by designator.\n"
-"\n"
-"        A designator is a classname and a nodeid concatenated,\n"
-"        eg. bug1, user10, ...\n"
-"\n"
-"        The given nodes will become available for users again.\n"
-"        "
-msgstr ""
-"Вызов: restore описатель[,описатель]*\n"
-"        Восстановить удаленные объекты.\n"
-"\n"
-"        С заданных объектов снимается пометка удаления, и этими объектами\n"
-"        можно пользоваться снова.\n"
-"        "
-
-#: ../roundup/admin.py:1383
-#, fuzzy
-msgid "no such %(classname)s node \" % (nodeid)s\""
-msgstr "В классе %(classname)s нет объекта \"%(nodeid)s\""
-
-#. grab the directory to export to
-#: ../roundup/admin.py:1389
-msgid ""
-"Usage: export [[-]class[,class]] export_dir\n"
-"        Export the database to colon-separated-value files.\n"
-"        To exclude the files (e.g. for the msg or file class),\n"
-"        use the exporttables command.\n"
-"\n"
-"        Optionally limit the export to just the named classes\n"
-"        or exclude the named classes, if the 1st argument starts with '-'.\n"
-"\n"
-"        This action exports the current data from the database into\n"
-"        colon-separated-value files that are placed in the nominated\n"
-"        destination directory.\n"
-"        "
-msgstr ""
-"Вызов: export [[-]класс[,класс]] каталог\n"
-"        Экспортировать базу данных в текстовые файлы.\n"
-"\n"
-"        Первый (необязательный) параметр этой команды задает список "
-"классов,\n"
-"        которые нужно экспортировать, или, если он начинается со знака\n"
-"        \"минус\", - список классов, которые нужно исключить из экспорта.\n"
-"        Если список классов не задан, экспортируются все классы базы "
-"данных.\n"
-"\n"
-"        Эта команда экспортирует данные из базы трекера в текстовые файлы\n"
-"        в указанном каталоге.  Для каждого экспортируемого класса создается\n"
-"        отдельный экспортный файл.  Для каждого объекта класса создается\n"
-"        строка экспортного файла.  Значения атрибутов разделяются\n"
-"        двоеточиями.\n"
-"\n"
-"        Команда export копирует в каталог экспорта файлы данных,\n"
-"        расположенные в $TRACKER_HOME/db/files/.  Для экспорта только\n"
-"        таблиц базы данных без дополнительных файлов используйте команду\n"
-"        exporttables.\n"
-"        "
-
-#: ../roundup/admin.py:1496
-msgid ""
-"Usage: exporttables [[-]class[,class]] export_dir\n"
-"        Export the database to colon-separated-value files, excluding the\n"
-"        files below $TRACKER_HOME/db/files/ (which can be archived "
-"separately).\n"
-"        To include the files, use the export command.\n"
-"\n"
-"        Optionally limit the export to just the named classes\n"
-"        or exclude the named classes, if the 1st argument starts with '-'.\n"
-"\n"
-"        This action exports the current data from the database into\n"
-"        colon-separated-value files that are placed in the nominated\n"
-"        destination directory.\n"
+"Usage: updateconfig <filename>\n"
+"        Generate an updated tracker config file (ini style) in\n"
+"        <filename>. Use current settings from existing roundup\n"
+"        tracker in tracker home.\n"
 "        "
 msgstr ""
-"Вызов: exporttables [[-]класс[,класс]] каталог\n"
-"        Экспортировать содержимое базы данных в текстовые файлы.\n"
-"\n"
-"        Первый (необязательный) параметр этой команды задает список "
-"классов,\n"
-"        которые нужно экспортировать, или, если он начинается со знака\n"
-"        \"минус\", - список классов, которые нужно исключить из экспорта.\n"
-"        Если список классов не задан, экспортируются все классы базы "
-"данных.\n"
-"\n"
-"        Эта команда экспортирует данные из базы трекера в текстовые файлы\n"
-"        в указанном каталоге.  Для каждого экспортируемого класса создается\n"
-"        отдельный экспортный файл.  Для каждого объекта класса создается\n"
-"        строка экспортного файла.  Значения атрибутов разделяются\n"
-"        двоеточиями.\n"
-"\n"
-"        Команда exporttables не копирует в каталог экспорта файлы данных,\n"
-"        расположенные в $TRACKER_HOME/db/files/ (эти файлы можно потом\n"
-"        скопировать отдельно).  Для того чтобы экспортировать базу данных\n"
-"        полностью, используйте команду export.\n"
-"        "
-
-#: ../roundup/admin.py:1511
-msgid ""
-"Usage: import import_dir\n"
-"        Import a database from the directory containing CSV files,\n"
-"        two per class to import.\n"
-"\n"
-"        The files used in the import are:\n"
-"\n"
-"        <class>.csv\n"
-"          This must define the same properties as the class (including\n"
-"          having a \"header\" line with those property names.)\n"
-"        <class>-journals.csv\n"
-"          This defines the journals for the items being imported.\n"
-"\n"
-"        The imported nodes will have the same nodeid as defined in the\n"
-"        import file, thus replacing any existing content.\n"
-"\n"
-"        The new nodes are added to the existing database - if you want to\n"
-"        create a new database using the imported data, then create a new\n"
-"        database (or, tediously, retire all the old data.)\n"
-"        "
-msgstr ""
-"Вызов: import каталог\n"
-"        Импортировать базу данных из каталога, содержащего файлы\n"
-"        в формате CSV (Comma Separated Values), по два файла на класс.\n"
-"\n"
-"        В импорте участвуют следующие файлы:\n"
-"\n"
-"        <класс>.csv\n"
-"          Этот файл должен содержать данные класса (с указанием имен\n"
-"          атрибутов в первой строке.)\n"
-"        <класс>-journals.csv\n"
-"          Содержит протоколы изменений объектов класса.\n"
-"\n"
-"        Импортируемые объекты имеют идентификаторы, указанные в\n"
-"        импортном файле и замещают объекты с такими же идентификаторами,\n"
-"        существующие в базе данных.\n"
-"\n"
-"        Новые объекты добавляются к существующей базе данных.\n"
-"        Если вы хотите заполнить базу только импортируемыми объектами,\n"
-"        вам нужно создать новую базу данных (или, если не лень, удалить\n"
-"        из существующей базы все объекты).\n"
-"        "
-
-#: ../roundup/admin.py:1590
-msgid ""
-"Usage: importtables export_dir\n"
-"\n"
-"        This imports the database tables exported using exporttables.\n"
-"        "
-msgstr ""
-
-#: ../roundup/admin.py:1597
-msgid ""
-"Usage: pack period | date\n"
-"\n"
-"        Remove journal entries older than a period of time specified or\n"
-"        before a certain date.\n"
-"\n"
-"        A period is specified using the suffixes \"y\", \"m\", and \"d\". "
-"The\n"
-"        suffix \"w\" (for \"week\") means 7 days.\n"
-"\n"
-"              \"3y\" means three years\n"
-"              \"2y 1m\" means two years and one month\n"
-"              \"1m 25d\" means one month and 25 days\n"
-"              \"2w 3d\" means two weeks and three days\n"
-"\n"
-"        Date format is \"YYYY-MM-DD\" eg:\n"
-"            2001-01-01\n"
-"\n"
+"Вызов: genconfig <имя файла>\n"
+"        Создать новый конфигурационный файл трекера,\n"
+"        используя настройки по умолчанию.\n"
 "        "
-msgstr ""
-"Вызов: pack период | дата\n"
-"\n"
-"        Удалить протокольные сообщения, хранящиеся дольше указанного\n"
-"        периода или созданные до указанной даты.\n"
-"\n"
-"        Период задается числами, к которым добавлены буквы \"y\"\n"
-"        (year - год), \"m\" (month - месяц), \"d\" (day - день)\n"
-"        или \"w\" (week - неделя, семь дней).\n"
-"\n"
-"              \"3y\" означает три года\n"
-"              \"2y 1m\" означает два года и один месяц\n"
-"              \"1m 25d\" означает один месяц и 25 дней\n"
-"              \"2w 3d\" означает две недели и три дня\n"
-"\n"
-"        Дата задается в формате \"YYYY-MM-DD\", например:\n"
-"            2001-01-01\n"
-"\n"
-"        "
-
-#: ../roundup/admin.py:1625
-msgid "Invalid format"
-msgstr "Неправильный формат"
-
-#: ../roundup/admin.py:1638
-msgid ""
-"Usage: reindex [classname|designator]*\n"
-"        Re-generate a tracker's search indexes.\n"
-"\n"
-"        This will re-generate the search indexes for a tracker.\n"
-"        This will typically happen automatically.\n"
-"        "
-msgstr ""
-"Вызов: reindex [класс|определитель]*\n"
-"        Переиндексировать базу данных.\n"
-"\n"
-"        Эта команда перестраивает индексы, используемые для поиска в базе\n"
-"        данных.  Обычно построение индексов происходит автоматически.\n"
-"        "
-
-#: ../roundup/admin.py:1652
-#, python-format
-msgid "no such item \"%(designator)s\""
-msgstr "объект \"%(designator)s\" не существует"
-
-#: ../roundup/admin.py:1662
-#, fuzzy
-msgid ""
-"Usage: security [Role name]\n"
-"\n"
-"             Display the Permissions available to one or all Roles.\n"
-"        "
-msgstr ""
-"Вызов: security [роль]\n"
-"        Показать права, выданные указанной роли или всем существующим\n"
-"        ролям.\n"
-"        "
-
-#: ../roundup/admin.py:1671
-#, fuzzy, python-format
-msgid "No such Role \"%(role)s\"\n"
-msgstr "Роль \"%(role)s\" не существует"
-
-#: ../roundup/admin.py:1677
-#, fuzzy, python-format
-msgid "New Web users get the Roles \"%(role)s\"\n"
-msgstr "Новые пользователи web получают роли \"%(role)s\""
-
-#: ../roundup/admin.py:1680
-#, fuzzy, python-format
-msgid "New Web users get the Role \"%(role)s\"\n"
-msgstr "Новые пользователи web получают роль \"%(role)s\""
-
-#: ../roundup/admin.py:1684
-#, fuzzy, python-format
-msgid "New Email users get the Roles \"%(role)s\"\n"
-msgstr "Новые пользователи email получают роли \"%(role)s\""
-
-#: ../roundup/admin.py:1686
-#, fuzzy, python-format
-msgid "New Email users get the Role \"%(role)s\"\n"
-msgstr "Новые пользователи email получают роль \"%(role)s\""
-
-#: ../roundup/admin.py:1689
-#, fuzzy, python-format
-msgid "Role \"%(name)s\":\n"
-msgstr "Роль \"%(name)s\":"
-
-#: ../roundup/admin.py:1695
-#, fuzzy
-msgid " %(description)s (%(name)s for \"%(klass)s\""
-msgstr " %(description)s (%(name)s только для класса \"%(klass)s\")"
-
-#: ../roundup/admin.py:1695
-#, fuzzy, python-format
-msgid " %(description)s (%(name)s for \"%(klass)s\": %(properties)s only)\n"
-msgstr ""
-" %(description)s (%(name)s для класса \"%(klass)s\": только свойства "
-"%(properties)s)"
-
-#: ../roundup/admin.py:1708
-#, python-format
-msgid ""
-"\n"
-"  **Invalid properties for %(class)s: %(props)s\n"
-"\n"
-msgstr ""
-
-#: ../roundup/admin.py:1714
-#, fuzzy, python-format
-msgid " %(description)s (%(name)s for \"%(klass)s\" only)\n"
-msgstr " %(description)s (%(name)s только для класса \"%(klass)s\")"
-
-#: ../roundup/admin.py:1717
-#, fuzzy, python-format
-msgid " %(description)s (%(name)s)\n"
-msgstr " %(description)s (%(name)s только для класса \"%(klass)s\")"
-
-#: ../roundup/admin.py:1721
-msgid ""
-"Usage: migrate\n"
-"\n"
-"        Update a tracker's database to be compatible with the Roundup\n"
-"        codebase.\n"
-"\n"
-"        You should run the \"migrate\" command for your tracker once\n"
-"        you've installed the latest codebase.\n"
-"\n"
-"        Do this before you use the web, command-line or mail interface\n"
-"        and before any users access the tracker.\n"
-"\n"
-"        This command will respond with either \"Tracker updated\" (if\n"
-"        you've not previously run it on an RDBMS backend) or \"No\n"
-"        migration action required\" (if you have run it, or have used\n"
-"        another interface to the tracker, or possibly because you are\n"
-"        using anydbm).\n"
-"\n"
-"        It's safe to run this even if it's not required, so just get\n"
-"        into the habit.\n"
-"        "
-msgstr ""
-
-#: ../roundup/admin.py:1742
-#, python-format
-msgid "Tracker updated to schema version %s."
-msgstr ""
-
-#: ../roundup/admin.py:1746
-#, python-format
-msgid "No migration action required. At schema version %s."
-msgstr ""
-
-#: ../roundup/admin.py:1751
-msgid ""
-"Usage: perftest [mode] [arguments]*\n"
-"\n"
-"        Time operations in Roundup. Supported arguments:\n"
-"\n"
-"            [password] [rounds=<integer>] [scheme=<scheme>]\n"
-"\n"
-"        'password' is the default mode.  The tracker's config.ini\n"
-"        setting for 'password_pbkdf2_default_rounds' is the default\n"
-"        value for 'rounds'. On the command line, 'rounds' can include\n"
-"        thousands separator of ',' or '.'.  'scheme' is the default\n"
-"        coded into Roundup. List supported schemes by using 'scheme='.\n"
-"\n"
-"        "
-msgstr ""
-
-#: ../roundup/admin.py:1785
-msgid "Invalid 'rounds'. Must be larger than 999."
-msgstr ""
-
-#: ../roundup/admin.py:1789
-#, python-format
-msgid "Invalid 'rounds'. It must be an integer not: %s"
-msgstr ""
-
-#: ../roundup/admin.py:1816
-msgid "scheme does not support rounds."
-msgstr ""
-
-#: ../roundup/admin.py:1819
-#, python-format
-msgid "Hash time: %(time)0.9f seconds, scheme: %(scheme)s, rounds: %(rounds)s"
-msgstr ""
-
-#: ../roundup/admin.py:1847
+
+#: ../roundup/admin.py:1946 ../roundup/cgi/actions.py:886
+#: ../roundup/cgi/actions.py:897 ../roundup/cgi/actions.py:1099
+#: ../roundup/cgi/actions.py:1113 ../roundup/cgi/actions.py:886:897 :1099:1113
+#, python-format
+msgid "Error: %s"
+msgstr "Ошибка: %s"
+
+#: ../roundup/admin.py:1974
 #, python-format
 msgid "Unknown command \"%(command)s\" (\"help commands\" for a list)"
 msgstr ""
 "Команда \"%(command)s\" неизвестна. (\"help commands\" выдает список команд)"
 
-#: ../roundup/admin.py:1853
+#: ../roundup/admin.py:1980
 #, python-format
 msgid "Multiple commands match \"%(command)s\": %(list)s"
 msgstr "\"%(command)s\" соответствует нескольким командам: %(list)s"
 
-#: ../roundup/admin.py:1862
+#: ../roundup/admin.py:1996
 msgid "Enter tracker home: "
 msgstr "Домашний каталог трекера: "
 
-#: ../roundup/admin.py:1871 ../roundup/admin.py:1877 ../roundup/admin.py:1914
-#: ../roundup/admin.py:1871:1877:1914
-#, python-format
-msgid "Error: %(message)s"
-msgstr "Ошибка: %(message)s"
-
-#: ../roundup/admin.py:1887 ../roundup/admin.py:1891
-#: ../roundup/admin.py:1887:1891
+#: ../roundup/admin.py:2023 ../roundup/admin.py:2027
+#: ../roundup/admin.py:2023:2027
 #, python-format
 msgid "Error: Couldn't open tracker: %(message)s"
 msgstr "Ошибка: Трекер не открывается: %(message)s"
 
-#: ../roundup/admin.py:1927
+#: ../roundup/admin.py:2060
 #, python-format
 msgid ""
 "Roundup %s ready for input.\n"
@@ -1325,15 +1409,15 @@
 "Roundup %s к вашим услугам.\n"
 "Введите \"help\" для справки."
 
-#: ../roundup/admin.py:1932
+#: ../roundup/admin.py:2065
 msgid "Note: command history and editing not available"
 msgstr "Примечание: работает редактор и история команд"
 
-#: ../roundup/admin.py:1938
+#: ../roundup/admin.py:2071
 msgid "exit..."
 msgstr "приходите к нам еще..."
 
-#: ../roundup/admin.py:1951
+#: ../roundup/admin.py:2084
 msgid "There are unsaved changes. Commit them (y/N)? "
 msgstr "Ой, тут несохраненные изменения. Записать в базу данных (y/N)? "
 
@@ -1367,7 +1451,7 @@
 #: ../roundup/backends/back_anydbm.py:1422
 #: ../roundup/backends/back_anydbm.py:1440
 #: ../roundup/backends/back_anydbm.py:1487
-#: ../roundup/backends/back_anydbm.py:2117
+#: ../roundup/backends/back_anydbm.py:2113
 #: ../roundup/backends/back_anydbm.py:871:884
 #: ../roundup/backends/rdbms_common.py:1708
 #: ../roundup/backends/rdbms_common.py:1955
@@ -1376,7 +1460,7 @@
 #: ../roundup/backends/rdbms_common.py:2267
 #: ../roundup/backends/rdbms_common.py:3219
 #: ../roundup/backends/rdbms_common.py:1708:1955 :1158:1193 :1422:1440:1487
-#: :2117 :2194:2214 :2267:3219
+#: :2113 :2194:2214 :2267:3219
 msgid "Database open read-only"
 msgstr ""
 
@@ -1625,13 +1709,6 @@
 msgid "Edit Error: %s"
 msgstr "Ошибка редактирования: %s"
 
-#: ../roundup/cgi/actions.py:886 ../roundup/cgi/actions.py:897
-#: ../roundup/cgi/actions.py:1099 ../roundup/cgi/actions.py:1113
-#: ../roundup/cgi/actions.py:886:897 :1099:1113
-#, python-format
-msgid "Error: %s"
-msgstr "Ошибка: %s"
-
 #: ../roundup/cgi/actions.py:931
 msgid ""
 "Invalid One Time Key!\n"
@@ -1890,8 +1967,8 @@
 "Администратору трекера отослано сообщение об ошибке.</p>\n"
 "</body></html>"
 
-#: ../roundup/cgi/client.py:670 ../roundup/cgi/client.py:1570
-#: ../roundup/cgi/client.py:670:1570
+#: ../roundup/cgi/client.py:670 ../roundup/cgi/client.py:1567
+#: ../roundup/cgi/client.py:670:1567
 msgid "Required Header Missing"
 msgstr ""
 
@@ -1900,138 +1977,138 @@
 msgid "Client is not allowed to use Rest Interface."
 msgstr "Анонимным пользователям не разрешено пользоваться веб-интерфейсом."
 
-#: ../roundup/cgi/client.py:921
+#: ../roundup/cgi/client.py:918
 msgid "Form Error: "
 msgstr "Ошибка формы: "
 
-#: ../roundup/cgi/client.py:1011
+#: ../roundup/cgi/client.py:1008
 #, python-format
 msgid "Unrecognized charset: %r"
 msgstr "Кодировка %r не распознана"
 
-#: ../roundup/cgi/client.py:1264 ../roundup/cgi/client.py:2250
-#: ../roundup/cgi/client.py:1264:2250
+#: ../roundup/cgi/client.py:1261 ../roundup/cgi/client.py:2247
+#: ../roundup/cgi/client.py:1261:2247
 msgid "broken form: multiple @action values submitted"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1279
+#: ../roundup/cgi/client.py:1276
 msgid "Anonymous users are not allowed to use the web interface"
 msgstr "Анонимным пользователям не разрешено пользоваться веб-интерфейсом."
 
-#: ../roundup/cgi/client.py:1430
+#: ../roundup/cgi/client.py:1427
 msgid "Referer header not available."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1434
+#: ../roundup/cgi/client.py:1431
 #, python-format
 msgid "csrf key used with wrong method from: %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1463
+#: ../roundup/cgi/client.py:1460
 #, python-format
 msgid "csrf header %(header)s required but missing for user%(userid)s."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1467
+#: ../roundup/cgi/client.py:1464
 #, python-format
 msgid "Missing header: %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1475
+#: ../roundup/cgi/client.py:1472
 #, python-format
 msgid "csrf Referer header check failed for user%(userid)s. Value=%(referer)s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1480
+#: ../roundup/cgi/client.py:1477
 #, fuzzy, python-format
 msgid "Invalid Referer: %s"
 msgstr "Неправильный пароль или имя пользователя."
 
-#: ../roundup/cgi/client.py:1495
+#: ../roundup/cgi/client.py:1492
 #, python-format
 msgid "csrf Origin header check failed for user%(userid)s. Value=%(origin)s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1500
+#: ../roundup/cgi/client.py:1497
 #, fuzzy, python-format
 msgid "Invalid Origin %s"
 msgstr "Неправильный пароль или имя пользователя."
 
-#: ../roundup/cgi/client.py:1514
+#: ../roundup/cgi/client.py:1511
 #, python-format
 msgid ""
 "csrf X-FORWARDED-HOST header check failed for user%(userid)s. Value=%(host)s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1520
+#: ../roundup/cgi/client.py:1517
 #, python-format
 msgid "Invalid X-FORWARDED-HOST %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1539
+#: ../roundup/cgi/client.py:1536
 #, python-format
 msgid "csrf HOST header check failed for user%(userid)s. Value=%(host)s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1544
+#: ../roundup/cgi/client.py:1541
 #, python-format
 msgid "Invalid HOST %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1552
+#: ../roundup/cgi/client.py:1549
 msgid "Csrf: unable to verify sufficient headers"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1553
+#: ../roundup/cgi/client.py:1550
 msgid "Unable to verify sufficient headers"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1567
+#: ../roundup/cgi/client.py:1564
 #, python-format
 msgid "csrf X-REQUESTED-WITH xmlrpc required header check failed for user%s."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1608
+#: ../roundup/cgi/client.py:1605
 #, python-format
 msgid "Required csrf field missing for user%s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1610 ../roundup/cgi/client.py:1637
-#: ../roundup/cgi/client.py:1654 ../roundup/cgi/client.py:1610:1637:1654
+#: ../roundup/cgi/client.py:1607 ../roundup/cgi/client.py:1634
+#: ../roundup/cgi/client.py:1651 ../roundup/cgi/client.py:1607:1634:1651
 msgid ""
 "We can't validate your session (csrf failure). Re-enter any unsaved data and "
 "try again."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1614
+#: ../roundup/cgi/client.py:1611
 #, python-format
 msgid "csrf field not supplied by user%s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1626
+#: ../roundup/cgi/client.py:1623
 #, python-format
 msgid ""
 "Csrf mismatch user: current user %(user)s != stored user %(stored)s, current "
 "session, stored session: %(cur_sess)s,%(stor_sess)s for key %(key)s."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1644
+#: ../roundup/cgi/client.py:1641
 #, python-format
 msgid ""
 "Csrf mismatch user: current session %(curr_sess)s != stored session "
 "%(stor_sess)s, current user/stored user is: %(user)s for key %(key)s."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1838
+#: ../roundup/cgi/client.py:1835
 msgid "You are not allowed to view this file."
 msgstr "У вас нет разрешения на просмотр этого файла."
 
-#: ../roundup/cgi/client.py:2127
+#: ../roundup/cgi/client.py:2124
 #, python-format
 msgid "%(starttag)sTime elapsed: %(seconds)fs%(endtag)s\n"
 msgstr "%(starttag)sЗатраченное время: %(seconds)fs%(endtag)s\n"
 
-#: ../roundup/cgi/client.py:2131
+#: ../roundup/cgi/client.py:2128
 #, python-format
 msgid ""
 "%(starttag)sCache hits: %(cache_hits)d, misses %(cache_misses)d. Loading "
@@ -2041,7 +2118,7 @@
 "%(cache_misses)d. Загрузка объектов: %(get_items)f сек. Фильтрация: "
 "%(filtering)f сек.%(endtag)s\n"
 
-#: ../roundup/cgi/client.py:2669
+#: ../roundup/cgi/client.py:2666
 #, python-format
 msgid ""
 "Cache failure: compressed file %(compressed)s is older than its source file "
@@ -2239,16 +2316,16 @@
 msgid "<option %svalue=\"-1\">- no selection -</option>"
 msgstr "<option %svalue=\"-1\">- не указано -</option>"
 
-#: ../roundup/cgi/timestamp.py:19
+#: ../roundup/cgi/timestamp.py:23
 msgid "Form is corrupted."
 msgstr ""
 
-#: ../roundup/cgi/timestamp.py:28
+#: ../roundup/cgi/timestamp.py:32
 #, python-format
 msgid "Form is corrupted, missing: %s."
 msgstr ""
 
-#: ../roundup/cgi/timestamp.py:30
+#: ../roundup/cgi/timestamp.py:34
 msgid "Responding to form too quickly."
 msgstr ""
 
@@ -2413,54 +2490,54 @@
 msgid "in %s"
 msgstr "через %s"
 
-#: ../roundup/hyperdb.py:119
+#: ../roundup/hyperdb.py:120
 #, fuzzy, python-format
 msgid "property %(property)s: %(errormsg)s"
 msgstr "Ошибка: %s: %s"
 
-#: ../roundup/hyperdb.py:148
+#: ../roundup/hyperdb.py:149
 #, python-format
 msgid "property %(property)s: %(value)r is an invalid date (%(errormsg)s)"
 msgstr ""
 
-#: ../roundup/hyperdb.py:171
+#: ../roundup/hyperdb.py:172
 #, python-format
 msgid ""
 "property %(property)s: %(value)r is an invalid date interval (%(errormsg)s)"
 msgstr ""
 
-#: ../roundup/hyperdb.py:428
+#: ../roundup/hyperdb.py:429
 #, fuzzy, python-format
 msgid "property %(property)s: %(value)r is not a number"
 msgstr "атрибут \"%(propname)s\": значение \"%(value)s\" отсутствует в списке"
 
-#: ../roundup/hyperdb.py:442
+#: ../roundup/hyperdb.py:443
 #, fuzzy, python-format
 msgid "property %(property)s: %(value)r is not an integer"
 msgstr "атрибут \"%(propname)s\": значение \"%(value)s\" отсутствует в списке"
 
-#: ../roundup/hyperdb.py:464
+#: ../roundup/hyperdb.py:465
 #, python-format
 msgid "\"%s\" not a node designator"
 msgstr ""
 
-#: ../roundup/hyperdb.py:1493 ../roundup/hyperdb.py:1501
-#: ../roundup/hyperdb.py:1493:1501
+#: ../roundup/hyperdb.py:1494 ../roundup/hyperdb.py:1502
+#: ../roundup/hyperdb.py:1494:1502
 #, python-format
 msgid "Not a property name: %s"
 msgstr ""
 
-#: ../roundup/hyperdb.py:1978
+#: ../roundup/hyperdb.py:1979
 #, fuzzy, python-format
 msgid "property %(property)s: %(value)r is not a %(classname)s."
 msgstr "атрибут \"%(propname)s\": значение \"%(value)s\" отсутствует в списке"
 
-#: ../roundup/hyperdb.py:1984
+#: ../roundup/hyperdb.py:1985
 #, python-format
 msgid "you may only enter ID values for property %s"
 msgstr ""
 
-#: ../roundup/hyperdb.py:2019
+#: ../roundup/hyperdb.py:2020
 #, python-format
 msgid "%(property)r is not a property of %(classname)s"
 msgstr ""
@@ -2783,116 +2860,116 @@
 msgid "Method %(m)s not allowed. Allowed: %(a)s"
 msgstr ""
 
-#: ../roundup/rest.py:1097
+#: ../roundup/rest.py:1101
 #, fuzzy, python-format
 msgid "Invalid attribute %s"
 msgstr "Неправильный пароль или имя пользователя."
 
-#: ../roundup/rest.py:2090
+#: ../roundup/rest.py:2094
 #, python-format
 msgid "Api rate limits exceeded. Please wait: %s seconds."
 msgstr ""
 
-#: ../roundup/rest.py:2125
+#: ../roundup/rest.py:2129
 #, python-format
 msgid ""
 "Unable to parse Accept Header. %(error)s. Acceptable types: "
 "%(acceptable_types)s"
 msgstr ""
 
-#: ../roundup/rest.py:2305
+#: ../roundup/rest.py:2309
 #, python-format
 msgid ""
 "Unrecognized api version: %s. See /rest without specifying api version for "
 "supported versions."
 msgstr ""
 
-#: ../roundup/roundupdb.py:139
+#: ../roundup/roundupdb.py:140
 #, python-format
 msgid "Username '%s' already exists."
 msgstr ""
 
-#: ../roundup/roundupdb.py:223
+#: ../roundup/roundupdb.py:224
 msgid "files"
 msgstr "файлы"
 
-#: ../roundup/roundupdb.py:223
+#: ../roundup/roundupdb.py:224
 msgid "messages"
 msgstr "сообщения"
 
-#: ../roundup/roundupdb.py:223
+#: ../roundup/roundupdb.py:224
 msgid "nosy"
 msgstr "извещения"
 
-#: ../roundup/roundupdb.py:223
+#: ../roundup/roundupdb.py:224
 msgid "superseder"
 msgstr "замещение"
 
-#: ../roundup/roundupdb.py:223
+#: ../roundup/roundupdb.py:224
 msgid "title"
 msgstr "заглавие"
 
-#: ../roundup/roundupdb.py:224
+#: ../roundup/roundupdb.py:225
 msgid "assignedto"
 msgstr "исполнитель"
 
-#: ../roundup/roundupdb.py:224
+#: ../roundup/roundupdb.py:225
 msgid "keyword"
 msgstr "ключевое слово"
 
-#: ../roundup/roundupdb.py:224
+#: ../roundup/roundupdb.py:225
 msgid "priority"
 msgstr "приоритет"
 
-#: ../roundup/roundupdb.py:224
+#: ../roundup/roundupdb.py:225
 msgid "status"
 msgstr "статус"
 
-#: ../roundup/roundupdb.py:227
+#: ../roundup/roundupdb.py:228
 msgid "activity"
 msgstr "действие"
 
 #. following properties are common for all hyperdb classes
 #. they are listed here to keep things in one place
-#: ../roundup/roundupdb.py:227
+#: ../roundup/roundupdb.py:228
 msgid "actor"
 msgstr "выполнил"
 
-#: ../roundup/roundupdb.py:227
+#: ../roundup/roundupdb.py:228
 msgid "creation"
 msgstr "дата создания"
 
-#: ../roundup/roundupdb.py:227
+#: ../roundup/roundupdb.py:228
 msgid "creator"
 msgstr "автор"
 
-#: ../roundup/roundupdb.py:425
+#: ../roundup/roundupdb.py:426
 #, python-format
 msgid "No key for \"%(adr)s\" in keyring"
 msgstr ""
 
-#: ../roundup/roundupdb.py:503
+#: ../roundup/roundupdb.py:504
 #, python-format
 msgid "New submission from %(authname)s%(authaddr)s:"
 msgstr "Новое поступление от %(authname)s%(authaddr)s:"
 
-#: ../roundup/roundupdb.py:506
+#: ../roundup/roundupdb.py:507
 #, python-format
 msgid "%(authname)s%(authaddr)s added the comment:"
 msgstr "%(authname)s%(authaddr)s добавил замечание:"
 
-#: ../roundup/roundupdb.py:509
+#: ../roundup/roundupdb.py:510
 #, python-format
 msgid "Change by %(authname)s%(authaddr)s:"
 msgstr "Изменение %(authname)s%(authaddr)s:"
 
-#: ../roundup/roundupdb.py:528
+#: ../roundup/roundupdb.py:529
 #, python-format
 msgid "File '%(filename)s' not attached - you can download it from %(link)s."
 msgstr ""
 "Файл '%(filename)s' не вложен - вы можете скачать его по адресу %(link)s."
 
-#: ../roundup/roundupdb.py:903
+#: ../roundup/roundupdb.py:904
 #, python-format
 msgid ""
 "\n"
@@ -2907,12 +2984,12 @@
 "Стало:\n"
 "%(new)s"
 
-#: ../roundup/scripts/roundup_demo.py:49
+#: ../roundup/scripts/roundup_demo.py:156
 #, python-format
 msgid "Enter directory path to create demo tracker [%s]: "
 msgstr "Введите имя каталога для демонстрационного трекера [%s]: "
 
-#: ../roundup/scripts/roundup_demo.py:54
+#: ../roundup/scripts/roundup_demo.py:162
 #, python-format
 msgid ""
 "Enter tracker template to use (one of (%(template_list)s)) "
@@ -3010,23 +3087,23 @@
 msgid "User %(user)s doesn't exist"
 msgstr "Пользователь %(user)s не существует"
 
-#: ../roundup/scripts/roundup_server.py:805
+#: ../roundup/scripts/roundup_server.py:809
 #, python-format
 msgid "Multiprocess mode \"%s\" is not available, switching to single-process"
 msgstr "Режим \"%s\" недоступен, переключаемся в однозадачный режим"
 
-#: ../roundup/scripts/roundup_server.py:832
+#: ../roundup/scripts/roundup_server.py:837
 #, python-format
 msgid "Unable to bind to port %s, port already in use."
 msgstr "Невозможно установить сервер на порту %s, порт уже занят."
 
-#: ../roundup/scripts/roundup_server.py:836
+#: ../roundup/scripts/roundup_server.py:841
 #, fuzzy, python-format
 msgid ""
 "Unable to bind to port %(port)s, access not allowed, errno: %(errno)s %(msg)s"
 msgstr "Невозможно установить сервер на порту %s, порт уже занят."
 
-#: ../roundup/scripts/roundup_server.py:915
+#: ../roundup/scripts/roundup_server.py:920
 msgid ""
 " -c <Command>  Windows Service options.\n"
 "               If you want to run the server as a Windows Service, you\n"
@@ -3043,7 +3120,7 @@
 "               файл протокола.  Команда 'roundup-server -c help'\n"
 "               выдает справку о командной строке сервиса Windows."
 
-#: ../roundup/scripts/roundup_server.py:922
+#: ../roundup/scripts/roundup_server.py:927
 msgid ""
 " -u <UID>      runs the Roundup web server as this UID\n"
 " -g <GID>      runs the Roundup web server as this GID\n"
@@ -3057,7 +3134,7 @@
 "               и запустить сервер в фоновом режиме.  Если указано \"-d\",\n"
 "               файл протокола *обязательно* должен быть задан ключом \"-l\""
 
-#: ../roundup/scripts/roundup_server.py:929
+#: ../roundup/scripts/roundup_server.py:934
 #, fuzzy, python-format
 msgid ""
 "\n"
@@ -3078,6 +3155,8 @@
 " -N            log client machine names instead of IP addresses (much "
 "slower)\n"
 " -i <fname>    set tracker index template\n"
+" -m <children> maximum number of children to spawn in fork multiprocess "
+"mode\n"
 " -s            enable SSL\n"
 " -L            http request logging uses python logging (roundup.http)\n"
 " -e <fname>    PEM file containing SSL key and certificate\n"
@@ -3180,21 +3259,21 @@
 "   не могут использоваться в URL (пробелы, русские буквы и проч.),\n"
 "   потому что такие имена сбивают с толку некоторые браузеры типа IE.\n"
 
-#: ../roundup/scripts/roundup_server.py:1105
+#: ../roundup/scripts/roundup_server.py:1111
 msgid "Instances must be name=home"
 msgstr "Список трекеров должен быть в формате имя=каталог"
 
-#: ../roundup/scripts/roundup_server.py:1119
+#: ../roundup/scripts/roundup_server.py:1125
 #, python-format
 msgid "Configuration saved to %s"
 msgstr "Конфигурация записана в %s"
 
-#: ../roundup/scripts/roundup_server.py:1137
+#: ../roundup/scripts/roundup_server.py:1143
 msgid "Sorry, you can't run the server as a daemon on this Operating System"
 msgstr ""
 "Извините, в этой операционной системе работа в фоновом режиме невозможна"
 
-#: ../roundup/scripts/roundup_server.py:1157
+#: ../roundup/scripts/roundup_server.py:1163
 #, python-format
 msgid "Roundup server started on %(HOST)s:%(PORT)s"
 msgstr "Сервер Roundup готов к работе по адресу %(HOST)s:%(PORT)s"
@@ -5683,6 +5762,21 @@
 msgstr "Пароль"
 
 #, fuzzy
+#~ msgid ""
+#~ "Usage: security [Role name]\n"
+#~ "\n"
+#~ "             Display the Permissions available to one or all Roles.\n"
+#~ "        "
+#~ msgstr ""
+#~ "Вызов: security [роль]\n"
+#~ "        Показать права, выданные указанной роли или всем существующим\n"
+#~ "        ролям.\n"
+#~ "        "
+
+#~ msgid "Error: %(message)s"
+#~ msgstr "Ошибка: %(message)s"
+
+#, fuzzy
 #~ msgid "Tracker updated"
 #~ msgstr "Центр управления заданиями"
 

Roundup Issue Tracker: http://roundup-tracker.org/