Mercurial > p > roundup > code
diff locale/roundup.pot @ 6557:8687c096a945
Handle configparser.InterpolationSyntaxError
Under Python 3, an option value with a single % (e.g. this % is a
test) throws
configparser.InterpolationSyntaxError: '%' must be followed by
'%' or '(', found: '%s))'
Added code to capture this, raise a different exception. roundup-admin
handles the error and exits cleanly. Other code shows the traceback.
The new error message reports the file, section and option causing the
problem to allow easier repair.
Also updated roundup translations and added tests.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Mon, 13 Dec 2021 12:48:57 -0500 |
| parents | cbc18a8bc61f |
| children | b0bafbf4fddd |
line wrap: on
line diff
--- a/locale/roundup.pot Sun Dec 12 23:42:44 2021 -0500 +++ b/locale/roundup.pot Mon Dec 13 12:48:57 2021 -0500 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: roundup-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2021-07-12 22:10-0400\n" +"POT-Creation-Date: 2021-12-13 12:39-0500\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" @@ -27,25 +27,25 @@ msgid "You may not retire the admin or anonymous user" msgstr "" -#: ../roundup/admin.py:95 ../roundup/admin.py:1173 ../roundup/admin.py:1228 -#: ../roundup/admin.py:1255 ../roundup/admin.py:95:1173 :1228:1255 +#: ../roundup/admin.py:96 ../roundup/admin.py:1196 ../roundup/admin.py:1251 +#: ../roundup/admin.py:1278 ../roundup/admin.py:96:1196 :1251:1278 #, python-format msgid "no such class \"%(classname)s\"" msgstr "" -#: ../roundup/admin.py:107 +#: ../roundup/admin.py:108 #, python-format msgid "argument \"%(arg)s\" not propname=value" msgstr "" -#: ../roundup/admin.py:120 +#: ../roundup/admin.py:121 #, python-format msgid "" "Problem: %(message)s\n" "\n" msgstr "" -#: ../roundup/admin.py:121 +#: ../roundup/admin.py:122 #, python-format msgid "" "%(message)sUsage: roundup-admin [options] [<command> <arguments>]\n" @@ -73,17 +73,17 @@ " roundup-admin help all -- all available help\n" msgstr "" -#: ../roundup/admin.py:148 +#: ../roundup/admin.py:149 msgid "Commands: " msgstr "" -#: ../roundup/admin.py:155 +#: ../roundup/admin.py:156 msgid "" "Commands may be abbreviated as long as the abbreviation\n" "matches only one command, e.g. l == li == lis == list." msgstr "" -#: ../roundup/admin.py:182 +#: ../roundup/admin.py:183 msgid "" "\n" "All commands (except help) require a tracker specifier. This is just\n" @@ -148,12 +148,12 @@ "Command help:\n" msgstr "" -#: ../roundup/admin.py:245 +#: ../roundup/admin.py:246 #, python-format msgid "%s:" msgstr "" -#: ../roundup/admin.py:250 +#: ../roundup/admin.py:251 msgid "" "Usage: help topic\n" " Give help about topic.\n" @@ -165,20 +165,20 @@ " " msgstr "" -#: ../roundup/admin.py:272 +#: ../roundup/admin.py:273 #, python-format msgid "Sorry, no help for \"%(topic)s\"" msgstr "" -#: ../roundup/admin.py:349 ../roundup/admin.py:405 ../roundup/admin.py:349:405 +#: ../roundup/admin.py:372 ../roundup/admin.py:428 ../roundup/admin.py:372:428 msgid "Templates:" msgstr "" -#: ../roundup/admin.py:352 ../roundup/admin.py:415 ../roundup/admin.py:352:415 +#: ../roundup/admin.py:375 ../roundup/admin.py:438 ../roundup/admin.py:375:438 msgid "Back ends:" msgstr "" -#: ../roundup/admin.py:355 +#: ../roundup/admin.py:378 msgid "" "Usage: install [template [backend [key=val[,key=val]]]]\n" " Install a new Roundup tracker.\n" @@ -204,22 +204,22 @@ " " msgstr "" -#: ../roundup/admin.py:378 ../roundup/admin.py:510 ../roundup/admin.py:583 -#: ../roundup/admin.py:674 ../roundup/admin.py:732 ../roundup/admin.py:816 -#: ../roundup/admin.py:875 ../roundup/admin.py:902 ../roundup/admin.py:929 -#: ../roundup/admin.py:1004 ../roundup/admin.py:1071 ../roundup/admin.py:1157 -#: ../roundup/admin.py:1218 ../roundup/admin.py:1245 ../roundup/admin.py:1281 -#: ../roundup/admin.py:1412 ../roundup/admin.py:1499 ../roundup/admin.py:378:510 -#: :1071 :1157:1218 :1245:1281 :1412:1499 :583:674 :732:816 :875:902 :929:1004 +#: ../roundup/admin.py:401 ../roundup/admin.py:533 ../roundup/admin.py:606 +#: ../roundup/admin.py:697 ../roundup/admin.py:755 ../roundup/admin.py:839 +#: ../roundup/admin.py:898 ../roundup/admin.py:925 ../roundup/admin.py:952 +#: ../roundup/admin.py:1027 ../roundup/admin.py:1094 ../roundup/admin.py:1180 +#: ../roundup/admin.py:1241 ../roundup/admin.py:1268 ../roundup/admin.py:1304 +#: ../roundup/admin.py:1431 ../roundup/admin.py:1518 ../roundup/admin.py:401:533 +#: :1094 :1180:1241 :1268:1304 :1431:1518 :606:697 :755:839 :898:925 :952:1027 msgid "Not enough arguments supplied" msgstr "" -#: ../roundup/admin.py:384 +#: ../roundup/admin.py:407 #, python-format msgid "Instance home parent directory \"%(parent)s\" does not exist" msgstr "" -#: ../roundup/admin.py:393 +#: ../roundup/admin.py:416 #, python-format msgid "" "WARNING: There appears to be a tracker in \"%(tracker_home)s\"!\n" @@ -227,20 +227,20 @@ "Erase it? Y/N: " msgstr "" -#: ../roundup/admin.py:406 +#: ../roundup/admin.py:429 msgid "Select template" msgstr "" -#: ../roundup/admin.py:416 +#: ../roundup/admin.py:439 msgid "Select backend" msgstr "" -#: ../roundup/admin.py:427 +#: ../roundup/admin.py:450 #, python-format msgid "Error in configuration settings: \"%s\"" msgstr "" -#: ../roundup/admin.py:458 +#: ../roundup/admin.py:481 #, python-format msgid "" "\n" @@ -249,11 +249,11 @@ " %(config_file)s" msgstr "" -#: ../roundup/admin.py:468 +#: ../roundup/admin.py:491 msgid " ... at a minimum, you must set following options:" msgstr "" -#: ../roundup/admin.py:473 +#: ../roundup/admin.py:496 #, python-format msgid "" "\n" @@ -269,7 +269,7 @@ "---------------------------------------------------------------------------\n" msgstr "" -#: ../roundup/admin.py:505 +#: ../roundup/admin.py:528 msgid "" "Usage: genconfig <filename>\n" " Generate a new tracker config file (ini style) with default\n" @@ -277,7 +277,7 @@ " " msgstr "" -#: ../roundup/admin.py:520 +#: ../roundup/admin.py:543 msgid "" "Usage: updateconfig <filename>\n" " Generate an updated tracker config file (ini style) in\n" @@ -287,7 +287,7 @@ msgstr "" #. password -#: ../roundup/admin.py:528 +#: ../roundup/admin.py:551 msgid "" "Usage: initialise [adminpw]\n" " Initialise a new Roundup tracker.\n" @@ -298,30 +298,30 @@ " " msgstr "" -#: ../roundup/admin.py:542 +#: ../roundup/admin.py:565 msgid "Admin Password: " msgstr "" -#: ../roundup/admin.py:543 +#: ../roundup/admin.py:566 msgid " Confirm: " msgstr "" -#: ../roundup/admin.py:547 +#: ../roundup/admin.py:570 msgid "Instance home does not exist" msgstr "" -#: ../roundup/admin.py:551 +#: ../roundup/admin.py:574 msgid "Instance has not been installed" msgstr "" -#: ../roundup/admin.py:557 +#: ../roundup/admin.py:580 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 "" -#: ../roundup/admin.py:573 +#: ../roundup/admin.py:596 msgid "" "Usage: get property designator[,designator]*\n" " Get the given property of one or more designator(s).\n" @@ -334,23 +334,23 @@ " " msgstr "" -#: ../roundup/admin.py:616 ../roundup/admin.py:633 ../roundup/admin.py:616:633 +#: ../roundup/admin.py:639 ../roundup/admin.py:656 ../roundup/admin.py:639:656 #, python-format msgid "property %s is not of type Multilink or Link so -d flag does not apply." msgstr "" -#: ../roundup/admin.py:643 ../roundup/admin.py:1175 ../roundup/admin.py:1230 -#: ../roundup/admin.py:643:1175 :1230 +#: ../roundup/admin.py:666 ../roundup/admin.py:1198 ../roundup/admin.py:1253 +#: ../roundup/admin.py:666:1198 :1253 #, python-format msgid "no such %(classname)s node \"%(nodeid)s\"" msgstr "" -#: ../roundup/admin.py:646 +#: ../roundup/admin.py:669 #, python-format msgid "no such %(classname)s property \"%(propname)s\"" msgstr "" -#: ../roundup/admin.py:654 +#: ../roundup/admin.py:677 msgid "" "Usage: set items property=value property=value ...\n" " Set the given properties of one or more items(s).\n" @@ -371,7 +371,7 @@ " " msgstr "" -#: ../roundup/admin.py:722 +#: ../roundup/admin.py:745 msgid "" "Usage: filter classname propname=value ...\n" " Find the nodes of the given class with a given property value.\n" @@ -384,19 +384,19 @@ " " msgstr "" -#: ../roundup/admin.py:764 +#: ../roundup/admin.py:787 #, python-format msgid "Class %(curclassname)s has no property %(pn)s in %(propname)s." msgstr "" -#: ../roundup/admin.py:801 ../roundup/admin.py:862 ../roundup/admin.py:1024 -#: ../roundup/admin.py:1036 ../roundup/admin.py:1091 ../roundup/admin.py:801:862 -#: :1024:1036 :1091 +#: ../roundup/admin.py:824 ../roundup/admin.py:885 ../roundup/admin.py:1047 +#: ../roundup/admin.py:1059 ../roundup/admin.py:1114 ../roundup/admin.py:824:885 +#: :1047:1059 :1114 #, python-format msgid "%(classname)s has no property \"%(propname)s\"" msgstr "" -#: ../roundup/admin.py:808 +#: ../roundup/admin.py:831 msgid "" "Usage: find classname propname=value ...\n" " Find the nodes of the given class with a given link property value.\n" @@ -407,7 +407,7 @@ " " msgstr "" -#: ../roundup/admin.py:869 +#: ../roundup/admin.py:892 msgid "" "Usage: specification classname\n" " Show the properties for a classname.\n" @@ -416,17 +416,17 @@ " " msgstr "" -#: ../roundup/admin.py:885 +#: ../roundup/admin.py:908 #, python-format msgid "%(key)s: %(value)s (key property)\n" msgstr "" -#: ../roundup/admin.py:888 +#: ../roundup/admin.py:911 #, python-format msgid "%(key)s: %(value)s\n" msgstr "" -#: ../roundup/admin.py:891 +#: ../roundup/admin.py:914 msgid "" "Usage: display designator[,designator]*\n" "\n" @@ -440,12 +440,12 @@ " " msgstr "" -#: ../roundup/admin.py:918 +#: ../roundup/admin.py:941 #, python-format msgid "%(key)s: %(value)s" msgstr "" -#: ../roundup/admin.py:921 +#: ../roundup/admin.py:944 msgid "" "Usage: create classname property=value ...\n" " Create a new entry of a given class.\n" @@ -457,31 +457,31 @@ " " msgstr "" -#: ../roundup/admin.py:949 +#: ../roundup/admin.py:972 #, python-format msgid "%(propname)s (Password): " msgstr "" -#: ../roundup/admin.py:952 +#: ../roundup/admin.py:975 #, python-format msgid " %(propname)s (Again): " msgstr "" -#: ../roundup/admin.py:955 +#: ../roundup/admin.py:978 msgid "Sorry, try again..." msgstr "" -#: ../roundup/admin.py:959 +#: ../roundup/admin.py:982 #, python-format msgid "%(propname)s (%(proptype)s): " msgstr "" -#: ../roundup/admin.py:977 +#: ../roundup/admin.py:1000 #, python-format msgid "you must provide the \"%(propname)s\" property." msgstr "" -#: ../roundup/admin.py:989 +#: ../roundup/admin.py:1012 msgid "" "Usage: list classname [property]\n" " List the instances of a class.\n" @@ -497,16 +497,16 @@ " " msgstr "" -#: ../roundup/admin.py:1002 +#: ../roundup/admin.py:1025 msgid "Too many arguments supplied" msgstr "" -#: ../roundup/admin.py:1038 +#: ../roundup/admin.py:1061 #, python-format msgid "%(nodeid)4s: %(value)s" msgstr "" -#: ../roundup/admin.py:1042 +#: ../roundup/admin.py:1065 msgid "" "Usage: table classname [property[,property]*]\n" " List the instances of a class in tabular form.\n" @@ -538,17 +538,17 @@ " " msgstr "" -#: ../roundup/admin.py:1086 +#: ../roundup/admin.py:1109 #, python-format msgid "\"%(spec)s\" not name:width" msgstr "" -#: ../roundup/admin.py:1108 +#: ../roundup/admin.py:1131 #, python-format msgid "\"%(spec)s\" does not have an integer width: \"%(width)s\"" msgstr "" -#: ../roundup/admin.py:1144 +#: ../roundup/admin.py:1167 msgid "" "Usage: history designator [skipquiet]\n" " Show the history entries of a designator.\n" @@ -563,7 +563,7 @@ " " msgstr "" -#: ../roundup/admin.py:1180 +#: ../roundup/admin.py:1203 msgid "" "Usage: commit\n" " Commit changes made to the database during an interactive session.\n" @@ -577,7 +577,7 @@ " " msgstr "" -#: ../roundup/admin.py:1195 +#: ../roundup/admin.py:1218 msgid "" "Usage: rollback\n" " Undo all changes that are pending commit to the database.\n" @@ -589,7 +589,7 @@ " " msgstr "" -#: ../roundup/admin.py:1208 +#: ../roundup/admin.py:1231 msgid "" "Usage: retire designator[,designator]*\n" " Retire the node specified by designator.\n" @@ -602,7 +602,7 @@ " " msgstr "" -#: ../roundup/admin.py:1236 +#: ../roundup/admin.py:1259 msgid "" "Usage: restore designator[,designator]*\n" " Restore the retired node specified by designator.\n" @@ -614,12 +614,12 @@ " " msgstr "" -#: ../roundup/admin.py:1261 +#: ../roundup/admin.py:1284 msgid "no such %(classname)s node \" % (nodeid)s\"" msgstr "" #. grab the directory to export to -#: ../roundup/admin.py:1267 +#: ../roundup/admin.py:1290 msgid "" "Usage: export [[-]class[,class]] export_dir\n" " Export the database to colon-separated-value files.\n" @@ -635,7 +635,7 @@ " " msgstr "" -#: ../roundup/admin.py:1377 +#: ../roundup/admin.py:1396 msgid "" "Usage: exporttables [[-]class[,class]] export_dir\n" " Export the database to colon-separated-value files, excluding the\n" @@ -652,7 +652,7 @@ " " msgstr "" -#: ../roundup/admin.py:1392 +#: ../roundup/admin.py:1411 msgid "" "Usage: import import_dir\n" " Import a database from the directory containing CSV files,\n" @@ -675,7 +675,7 @@ " " msgstr "" -#: ../roundup/admin.py:1474 +#: ../roundup/admin.py:1493 msgid "" "Usage: importtables export_dir\n" "\n" @@ -683,7 +683,7 @@ " " msgstr "" -#: ../roundup/admin.py:1481 +#: ../roundup/admin.py:1500 msgid "" "Usage: pack period | date\n" "\n" @@ -705,11 +705,11 @@ " " msgstr "" -#: ../roundup/admin.py:1509 +#: ../roundup/admin.py:1528 msgid "Invalid format" msgstr "" -#: ../roundup/admin.py:1520 +#: ../roundup/admin.py:1539 msgid "" "Usage: reindex [classname|designator]*\n" " Re-generate a tracker's search indexes.\n" @@ -719,12 +719,12 @@ " " msgstr "" -#: ../roundup/admin.py:1534 +#: ../roundup/admin.py:1553 #, python-format msgid "no such item \"%(designator)s\"" msgstr "" -#: ../roundup/admin.py:1544 +#: ../roundup/admin.py:1563 msgid "" "Usage: security [Role name]\n" "\n" @@ -732,46 +732,46 @@ " " msgstr "" -#: ../roundup/admin.py:1553 +#: ../roundup/admin.py:1572 #, python-format msgid "No such Role \"%(role)s\"\n" msgstr "" -#: ../roundup/admin.py:1559 +#: ../roundup/admin.py:1578 #, python-format msgid "New Web users get the Roles \"%(role)s\"\n" msgstr "" -#: ../roundup/admin.py:1562 +#: ../roundup/admin.py:1581 #, python-format msgid "New Web users get the Role \"%(role)s\"\n" msgstr "" -#: ../roundup/admin.py:1566 +#: ../roundup/admin.py:1585 #, python-format msgid "New Email users get the Roles \"%(role)s\"\n" msgstr "" -#: ../roundup/admin.py:1568 +#: ../roundup/admin.py:1587 #, python-format msgid "New Email users get the Role \"%(role)s\"\n" msgstr "" -#: ../roundup/admin.py:1571 +#: ../roundup/admin.py:1590 #, python-format msgid "Role \"%(name)s\":\n" msgstr "" -#: ../roundup/admin.py:1576 +#: ../roundup/admin.py:1595 msgid " %(description)s (%(name)s for \"%(klass)s\"" msgstr "" -#: ../roundup/admin.py:1576 +#: ../roundup/admin.py:1595 #, python-format msgid " %(description)s (%(name)s for \"%(klass)s\": %(properties)s only)\n" msgstr "" -#: ../roundup/admin.py:1588 +#: ../roundup/admin.py:1607 #, python-format msgid "" "\n" @@ -779,17 +779,17 @@ "\n" msgstr "" -#: ../roundup/admin.py:1591 +#: ../roundup/admin.py:1610 #, python-format msgid " %(description)s (%(name)s for \"%(klass)s\" only)\n" msgstr "" -#: ../roundup/admin.py:1594 +#: ../roundup/admin.py:1613 #, python-format msgid " %(description)s (%(name)s)\n" msgstr "" -#: ../roundup/admin.py:1598 +#: ../roundup/admin.py:1617 msgid "" "Usage: migrate\n" "\n" @@ -813,81 +813,82 @@ " " msgstr "" -#: ../roundup/admin.py:1619 +#: ../roundup/admin.py:1638 msgid "Tracker updated" msgstr "" -#: ../roundup/admin.py:1622 +#: ../roundup/admin.py:1641 msgid "No migration action required" msgstr "" -#: ../roundup/admin.py:1648 +#: ../roundup/admin.py:1667 #, python-format msgid "Unknown command \"%(command)s\" (\"help commands\" for a list)" msgstr "" -#: ../roundup/admin.py:1654 +#: ../roundup/admin.py:1673 #, python-format msgid "Multiple commands match \"%(command)s\": %(list)s" msgstr "" -#: ../roundup/admin.py:1663 +#: ../roundup/admin.py:1682 msgid "Enter tracker home: " msgstr "" -#: ../roundup/admin.py:1672 ../roundup/admin.py:1678 ../roundup/admin.py:1704 -#: ../roundup/admin.py:1672:1678 :1704 +#: ../roundup/admin.py:1691 ../roundup/admin.py:1697 ../roundup/admin.py:1726 +#: ../roundup/admin.py:1691:1697 :1726 #, python-format msgid "Error: %(message)s" msgstr "" -#: ../roundup/admin.py:1686 ../roundup/admin.py:1690 -#: ../roundup/admin.py:1686:1690 +#: ../roundup/admin.py:1705 ../roundup/admin.py:1709 +#: ../roundup/admin.py:1705:1709 #, python-format msgid "Error: Couldn't open tracker: %(message)s" msgstr "" -#: ../roundup/admin.py:1717 +#: ../roundup/admin.py:1739 #, python-format msgid "" "Roundup %s ready for input.\n" "Type \"help\" for help." msgstr "" -#: ../roundup/admin.py:1722 +#: ../roundup/admin.py:1744 msgid "Note: command history and editing not available" msgstr "" -#: ../roundup/admin.py:1726 +#: ../roundup/admin.py:1748 msgid "roundup> " msgstr "" -#: ../roundup/admin.py:1728 +#: ../roundup/admin.py:1750 msgid "exit..." msgstr "" -#: ../roundup/admin.py:1741 +#: ../roundup/admin.py:1763 msgid "There are unsaved changes. Commit them (y/N)? " msgstr "" -#: ../roundup/backends/back_anydbm.py:173 +#: ../roundup/backends/back_anydbm.py:173 ../roundup/backends/back_lmdb.py:251 #: ../roundup/backends/rdbms_common.py:877 #, python-format msgid "Class \"%s\" already defined." msgstr "" -#: ../roundup/backends/back_anydbm.py:234 ../roundup/backends/sessions_dbm.py:55 +#: ../roundup/backends/back_anydbm.py:234 ../roundup/backends/back_lmdb.py:312 +#: ../roundup/backends/sessions_dbm.py:55 msgid "Couldn't identify database type" msgstr "" -#: ../roundup/backends/back_anydbm.py:268 +#: ../roundup/backends/back_anydbm.py:268 ../roundup/backends/back_lmdb.py:346 #, python-format msgid "" "Couldn't open database - the required module '%s' (as dbm.gnu) is not " "available" msgstr "" -#: ../roundup/backends/back_anydbm.py:271 +#: ../roundup/backends/back_anydbm.py:271 ../roundup/backends/back_lmdb.py:349 #, python-format msgid "Couldn't open database - the required module '%s' is not available" msgstr "" @@ -900,14 +901,19 @@ #: ../roundup/backends/back_anydbm.py:1438 #: ../roundup/backends/back_anydbm.py:2063 #: ../roundup/backends/back_anydbm.py:827:840 +#: ../roundup/backends/back_lmdb.py:905 ../roundup/backends/back_lmdb.py:918 +#: ../roundup/backends/back_lmdb.py:1191 ../roundup/backends/back_lmdb.py:1226 +#: ../roundup/backends/back_lmdb.py:1452 ../roundup/backends/back_lmdb.py:1470 +#: ../roundup/backends/back_lmdb.py:1516 ../roundup/backends/back_lmdb.py:2138 +#: ../roundup/backends/back_lmdb.py:905:918 #: ../roundup/backends/rdbms_common.py:1646 #: ../roundup/backends/rdbms_common.py:1893 #: ../roundup/backends/rdbms_common.py:2128 #: ../roundup/backends/rdbms_common.py:2148 #: ../roundup/backends/rdbms_common.py:2201 #: ../roundup/backends/rdbms_common.py:3147 -#: ../roundup/backends/rdbms_common.py:1646:1893 :1113:1148 :1374:1392 :1438 -#: :2063 :2128:2148 :2201:3147 +#: ../roundup/backends/rdbms_common.py:1646:1893 :1113:1148 :1191:1226 +#: :1374:1392 :1438 :1452:1470 :1516:2138 :2063 :2128:2148 :2201 :3147 msgid "Database open read-only" msgstr "" @@ -1174,22 +1180,27 @@ msgid "Logins occurring too fast. Please wait: %s seconds." msgstr "" -#: ../roundup/cgi/actions.py:1369 ../roundup/cgi/actions.py:1373 -#: ../roundup/cgi/actions.py:1369:1373 +#: ../roundup/cgi/actions.py:1357 +#, python-format +msgid "Welcome %(username)s!" +msgstr "" + +#: ../roundup/cgi/actions.py:1377 ../roundup/cgi/actions.py:1381 +#: ../roundup/cgi/actions.py:1377:1381 msgid "Invalid login" msgstr "" -#: ../roundup/cgi/actions.py:1379 +#: ../roundup/cgi/actions.py:1387 msgid "You do not have permission to login" msgstr "" -#: ../roundup/cgi/actions.py:1422 ../roundup/cgi/actions.py:1587 -#: ../roundup/cgi/actions.py:1422:1587 +#: ../roundup/cgi/actions.py:1430 ../roundup/cgi/actions.py:1595 +#: ../roundup/cgi/actions.py:1430:1595 #, python-format msgid "Column \"%(column)s\" not found in %(class)s" msgstr "" -#: ../roundup/cgi/actions.py:1643 +#: ../roundup/cgi/actions.py:1651 #, python-format msgid "You do not have permission to view %(class)s" msgstr "" @@ -1273,160 +1284,167 @@ "</body></html>" msgstr "" -#: ../roundup/cgi/client.py:795 +#: ../roundup/cgi/client.py:837 msgid "Form Error: " msgstr "" -#: ../roundup/cgi/client.py:885 +#: ../roundup/cgi/client.py:927 #, python-format msgid "Unrecognized charset: %r" msgstr "" -#: ../roundup/cgi/client.py:1141 +#: ../roundup/cgi/client.py:1183 msgid "Anonymous users are not allowed to use the web interface" msgstr "" -#: ../roundup/cgi/client.py:1214 +#: ../roundup/cgi/client.py:1256 msgid "Referer header not available." msgstr "" -#: ../roundup/cgi/client.py:1218 +#: ../roundup/cgi/client.py:1260 #, python-format msgid "csrf key used with wrong method from: %s" msgstr "" -#: ../roundup/cgi/client.py:1246 +#: ../roundup/cgi/client.py:1288 #, python-format msgid "csrf header %s required but missing for user%s." msgstr "" -#: ../roundup/cgi/client.py:1247 -#, python-format -msgid "Missing header: %s" -msgstr "" - -#: ../roundup/cgi/client.py:1257 ../roundup/cgi/client.py:1260 -#: ../roundup/cgi/client.py:1257:1260 -#, python-format -msgid "csrf Referer header check failed for user%s. Value=%s" -msgstr "" - -#: ../roundup/cgi/client.py:1258 -#, python-format -msgid "Invalid Referer %s, %s" -msgstr "" - -#: ../roundup/cgi/client.py:1273 ../roundup/cgi/client.py:1276 -#: ../roundup/cgi/client.py:1273:1276 -#, python-format -msgid "csrf Origin header check failed for user%s. Value=%s" -msgstr "" - -#: ../roundup/cgi/client.py:1274 -#, python-format -msgid "Invalid Origin %s" -msgstr "" - -#: ../roundup/cgi/client.py:1288 ../roundup/cgi/client.py:1291 -#: ../roundup/cgi/client.py:1288:1291 -#, python-format -msgid "csrf X-FORWARDED-HOST header check failed for user%s. Value=%s" -msgstr "" - #: ../roundup/cgi/client.py:1289 #, python-format -msgid "Invalid X-FORWARDED-HOST %s" -msgstr "" - -#: ../roundup/cgi/client.py:1308 ../roundup/cgi/client.py:1311 -#: ../roundup/cgi/client.py:1308:1311 +msgid "Missing header: %s" +msgstr "" + +#: ../roundup/cgi/client.py:1299 ../roundup/cgi/client.py:1302 +#: ../roundup/cgi/client.py:1299:1302 +#, python-format +msgid "csrf Referer header check failed for user%s. Value=%s" +msgstr "" + +#: ../roundup/cgi/client.py:1300 #, python-format -msgid "csrf HOST header check failed for user%s. Value=%s" -msgstr "" - -#: ../roundup/cgi/client.py:1309 +msgid "Invalid Referer %s, %s" +msgstr "" + +#: ../roundup/cgi/client.py:1315 ../roundup/cgi/client.py:1318 +#: ../roundup/cgi/client.py:1315:1318 #, python-format -msgid "Invalid HOST %s" -msgstr "" - -#: ../roundup/cgi/client.py:1317 -msgid "Csrf: unable to verify sufficient headers" -msgstr "" - -#: ../roundup/cgi/client.py:1318 -msgid "Unable to verify sufficient headers" +msgid "csrf Origin header check failed for user%s. Value=%s" +msgstr "" + +#: ../roundup/cgi/client.py:1316 +#, python-format +msgid "Invalid Origin %s" +msgstr "" + +#: ../roundup/cgi/client.py:1330 ../roundup/cgi/client.py:1333 +#: ../roundup/cgi/client.py:1330:1333 +#, python-format +msgid "csrf X-FORWARDED-HOST header check failed for user%s. Value=%s" msgstr "" #: ../roundup/cgi/client.py:1331 #, python-format -msgid "csrf X-REQUESTED-WITH xmlrpc required header check failed for user%s." -msgstr "" - -#: ../roundup/cgi/client.py:1332 -msgid "Required Header Missing" -msgstr "" - -#: ../roundup/cgi/client.py:1369 +msgid "Invalid X-FORWARDED-HOST %s" +msgstr "" + +#: ../roundup/cgi/client.py:1350 ../roundup/cgi/client.py:1353 +#: ../roundup/cgi/client.py:1350:1353 #, python-format -msgid "Required csrf field missing for user%s" -msgstr "" - -#: ../roundup/cgi/client.py:1370 ../roundup/cgi/client.py:1422 -#: ../roundup/cgi/client.py:1432 ../roundup/cgi/client.py:1370:1422 :1432 -msgid "" -"We can't validate your session (csrf failure). Re-enter any unsaved data and " -"try again." +msgid "csrf HOST header check failed for user%s. Value=%s" +msgstr "" + +#: ../roundup/cgi/client.py:1351 +#, python-format +msgid "Invalid HOST %s" +msgstr "" + +#: ../roundup/cgi/client.py:1359 +msgid "Csrf: unable to verify sufficient headers" +msgstr "" + +#: ../roundup/cgi/client.py:1360 +msgid "Unable to verify sufficient headers" msgstr "" #: ../roundup/cgi/client.py:1373 #, python-format +msgid "csrf X-REQUESTED-WITH xmlrpc required header check failed for user%s." +msgstr "" + +#: ../roundup/cgi/client.py:1374 +msgid "Required Header Missing" +msgstr "" + +#: ../roundup/cgi/client.py:1411 +#, python-format +msgid "Required csrf field missing for user%s" +msgstr "" + +#: ../roundup/cgi/client.py:1412 ../roundup/cgi/client.py:1464 +#: ../roundup/cgi/client.py:1474 ../roundup/cgi/client.py:1412:1464 :1474 +msgid "" +"We can't validate your session (csrf failure). Re-enter any unsaved data and " +"try again." +msgstr "" + +#: ../roundup/cgi/client.py:1415 +#, python-format msgid "csrf field not supplied by user%s" msgstr "" -#: ../roundup/cgi/client.py:1420 +#: ../roundup/cgi/client.py:1462 #, python-format msgid "" "Csrf mismatch user: current user %s != stored user %s, current session, " "stored session: %s,%s for key %s." msgstr "" -#: ../roundup/cgi/client.py:1425 +#: ../roundup/cgi/client.py:1467 #, python-format msgid "" "logged only: Csrf mismatch user: current user %s != stored user %s, current " "session, stored session: %s,%s for key %s." msgstr "" -#: ../roundup/cgi/client.py:1430 +#: ../roundup/cgi/client.py:1472 #, python-format msgid "" "Csrf mismatch user: current session %s != stored session %s, current user/" "stored user is: %s for key %s." msgstr "" -#: ../roundup/cgi/client.py:1435 +#: ../roundup/cgi/client.py:1477 #, python-format msgid "" "logged only: Csrf mismatch user: current session %s != stored session %s, " "current user/stored user is: %s for key %s." msgstr "" -#: ../roundup/cgi/client.py:1607 +#: ../roundup/cgi/client.py:1649 msgid "You are not allowed to view this file." msgstr "" -#: ../roundup/cgi/client.py:1886 +#: ../roundup/cgi/client.py:1934 #, python-format msgid "%(starttag)sTime elapsed: %(seconds)fs%(endtag)s\n" msgstr "" -#: ../roundup/cgi/client.py:1890 +#: ../roundup/cgi/client.py:1938 #, python-format msgid "" "%(starttag)sCache hits: %(cache_hits)d, misses %(cache_misses)d. Loading " "items: %(get_items)f secs. Filtering: %(filtering)f secs.%(endtag)s\n" msgstr "" +#: ../roundup/cgi/client.py:2428 +#, python-format +msgid "" +"Cache failure: compressed file %(compressed)s is older than its source file " +"%(filename)s" +msgstr "" + #: ../roundup/cgi/form_parser.py:290 #, python-format msgid "link \"%(key)s\" value \"%(entry)s\" not a designator" @@ -1618,7 +1636,14 @@ msgid "Responding to form too quickly." msgstr "" -#: ../roundup/configuration.py:1887 +#: ../roundup/configuration.py:273 +#, python-format +msgid "" +"Error in %(filepath)s with section [%(section)s] at option %(option)s: " +"%(message)s" +msgstr "" + +#: ../roundup/configuration.py:1922 msgid "Valid languages: " msgstr "" @@ -1780,23 +1805,23 @@ msgid "\"%s\" not a node designator" msgstr "" -#: ../roundup/hyperdb.py:1472 ../roundup/hyperdb.py:1480 -#: ../roundup/hyperdb.py:1472:1480 +#: ../roundup/hyperdb.py:1473 ../roundup/hyperdb.py:1481 +#: ../roundup/hyperdb.py:1473:1481 #, python-format msgid "Not a property name: %s" msgstr "" -#: ../roundup/hyperdb.py:1939 +#: ../roundup/hyperdb.py:1940 #, python-format msgid "property %s: %r is not a %s." msgstr "" -#: ../roundup/hyperdb.py:1942 +#: ../roundup/hyperdb.py:1943 #, python-format msgid "you may only enter ID values for property %s" msgstr "" -#: ../roundup/hyperdb.py:1976 +#: ../roundup/hyperdb.py:1977 #, python-format msgid "%r is not a property of %s" msgstr "" @@ -2033,18 +2058,35 @@ msgid "not of form [arg=value,value,...;arg=value,value,...]" msgstr "" -#: ../roundup/rest.py:1883 +#: ../roundup/rest.py:406 +#, python-format +msgid "Method %(m)s not allowed. Allowed: %(a)s" +msgstr "" + +#: ../roundup/rest.py:1102 +#, python-format +msgid "Invalid attribute %s" +msgstr "" + +#: ../roundup/rest.py:2063 #, python-format msgid "Api rate limits exceeded. Please wait: %s seconds." msgstr "" -#: ../roundup/rest.py:1918 +#: ../roundup/rest.py:2098 #, python-format msgid "" "Unable to parse Accept Header. %(error)s. Acceptable types: " "%(acceptable_types)s" msgstr "" +#: ../roundup/rest.py:2220 +#, python-format +msgid "" +"Unrecognized api version: %s. See /rest without specifying api version for " +"supported versions." +msgstr "" + #: ../roundup/roundupdb.py:135 #, python-format msgid "Username '%s' already exists." @@ -2269,52 +2311,52 @@ "<body><h1>Roundup trackers index</h1><ol>\n" msgstr "" -#: ../roundup/scripts/roundup_server.py:508 +#: ../roundup/scripts/roundup_server.py:519 #, python-format msgid "Error: %(type)s: %(value)s" msgstr "" -#: ../roundup/scripts/roundup_server.py:520 +#: ../roundup/scripts/roundup_server.py:531 msgid "WARNING: ignoring \"-g\" argument, not root" msgstr "" -#: ../roundup/scripts/roundup_server.py:526 +#: ../roundup/scripts/roundup_server.py:537 msgid "Can't change groups - no grp module" msgstr "" -#: ../roundup/scripts/roundup_server.py:535 +#: ../roundup/scripts/roundup_server.py:546 #, python-format msgid "Group %(group)s doesn't exist" msgstr "" -#: ../roundup/scripts/roundup_server.py:547 +#: ../roundup/scripts/roundup_server.py:558 msgid "Can't run as root!" msgstr "" -#: ../roundup/scripts/roundup_server.py:550 +#: ../roundup/scripts/roundup_server.py:561 msgid "WARNING: ignoring \"-u\" argument, not root" msgstr "" -#: ../roundup/scripts/roundup_server.py:556 +#: ../roundup/scripts/roundup_server.py:567 msgid "Can't change users - no pwd module" msgstr "" -#: ../roundup/scripts/roundup_server.py:565 +#: ../roundup/scripts/roundup_server.py:576 #, python-format msgid "User %(user)s doesn't exist" msgstr "" -#: ../roundup/scripts/roundup_server.py:755 +#: ../roundup/scripts/roundup_server.py:772 #, python-format msgid "Multiprocess mode \"%s\" is not available, switching to single-process" msgstr "" -#: ../roundup/scripts/roundup_server.py:782 +#: ../roundup/scripts/roundup_server.py:799 #, python-format msgid "Unable to bind to port %s, port already in use." msgstr "" -#: ../roundup/scripts/roundup_server.py:854 +#: ../roundup/scripts/roundup_server.py:871 msgid "" " -c <Command> Windows Service options.\n" " If you want to run the server as a Windows Service, you\n" @@ -2324,7 +2366,7 @@ " specifics." msgstr "" -#: ../roundup/scripts/roundup_server.py:861 +#: ../roundup/scripts/roundup_server.py:878 msgid "" " -u <UID> runs the Roundup web server as this UID\n" " -g <GID> runs the Roundup web server as this GID\n" @@ -2333,9 +2375,10 @@ " specified if -d is used." msgstr "" -#: ../roundup/scripts/roundup_server.py:868 +#: ../roundup/scripts/roundup_server.py:885 #, python-format msgid "" +"\n" "%(message)sUsage: roundup-server [options] [name=tracker home]*\n" "\n" "Options:\n" @@ -2358,6 +2401,9 @@ " -e <fname> PEM file containing SSL key and certificate\n" " -t <mode> multiprocess mode (default: %(mp_def)s).\n" " Allowed values: %(mp_types)s.\n" +" -V <version> set HTTP version (default: HTTP/1.1).\n" +" Allowed values: HTTP/1.0, HTTP/1.1.\n" +"\n" "%(os_part)s\n" "\n" "Long options:\n" @@ -2396,20 +2442,20 @@ " any url-unsafe characters like spaces, as these confuse IE.\n" msgstr "" -#: ../roundup/scripts/roundup_server.py:1041 +#: ../roundup/scripts/roundup_server.py:1061 msgid "Instances must be name=home" msgstr "" -#: ../roundup/scripts/roundup_server.py:1055 +#: ../roundup/scripts/roundup_server.py:1075 #, python-format msgid "Configuration saved to %s" msgstr "" -#: ../roundup/scripts/roundup_server.py:1073 -msgid "Sorry, you can't run the server as a daemon on this Operating System" -msgstr "" - #: ../roundup/scripts/roundup_server.py:1093 +msgid "Sorry, you can't run the server as a daemon on this Operating System" +msgstr "" + +#: ../roundup/scripts/roundup_server.py:1113 #, python-format msgid "Roundup server started on %(HOST)s:%(PORT)s" msgstr "" @@ -2541,6 +2587,7 @@ #: ../share/roundup/templates/classic/html/_generic.help.html:41 #: ../share/roundup/templates/classic/html/help.html:21 #: ../share/roundup/templates/classic/html/issue.index.html:80 +#: ../share/roundup/templates/classic/html/user.index.html:82 #: ../share/roundup/templates/devel/html/_generic.help.html:42 #: ../share/roundup/templates/devel/html/bug.index.html:94 #: ../share/roundup/templates/devel/html/help.html:51 @@ -2557,6 +2604,7 @@ #: ../share/roundup/templates/classic/html/_generic.help.html:53 #: ../share/roundup/templates/classic/html/help.html:28 #: ../share/roundup/templates/classic/html/issue.index.html:88 +#: ../share/roundup/templates/classic/html/user.index.html:90 #: ../share/roundup/templates/devel/html/_generic.help.html:54 #: ../share/roundup/templates/devel/html/bug.index.html:102 #: ../share/roundup/templates/devel/html/help.html:58 @@ -2573,6 +2621,7 @@ #: ../share/roundup/templates/classic/html/_generic.help.html:57 #: ../share/roundup/templates/classic/html/help.html:32 #: ../share/roundup/templates/classic/html/issue.index.html:91 +#: ../share/roundup/templates/classic/html/user.index.html:93 #: ../share/roundup/templates/devel/html/_generic.help.html:58 #: ../share/roundup/templates/devel/html/bug.index.html:105 #: ../share/roundup/templates/devel/html/help.html:62 @@ -3388,6 +3437,7 @@ #: ../share/roundup/templates/classic/html/page.html:40 #: ../share/roundup/templates/classic/html/page.html:92 #: ../share/roundup/templates/classic/html/user.help-search.html:69 +#: ../share/roundup/templates/classic/html/user.index.html:38 #: ../share/roundup/templates/devel/html/bug.search.html:292 #: ../share/roundup/templates/devel/html/page.html:79 #: ../share/roundup/templates/devel/html/page.html:126 @@ -3921,7 +3971,7 @@ msgid "User listing" msgstr "" -#: ../share/roundup/templates/classic/html/user.index.html:19 +#: ../share/roundup/templates/classic/html/user.index.html:48 #: ../share/roundup/templates/devel/html/user.index.html:48 #: ../share/roundup/templates/minimal/html/user.index.html:19 #: ../share/roundup/templates/responsive/html/page.html:180 @@ -3929,13 +3979,13 @@ msgid "Username" msgstr "" -#: ../share/roundup/templates/classic/html/user.index.html:20 +#: ../share/roundup/templates/classic/html/user.index.html:49 #: ../share/roundup/templates/devel/html/user.index.html:49 #: ../share/roundup/templates/responsive/html/user.index.html:50 msgid "Real name" msgstr "" -#: ../share/roundup/templates/classic/html/user.index.html:21 +#: ../share/roundup/templates/classic/html/user.index.html:50 #: ../share/roundup/templates/classic/html/user.register.html:47 #: ../share/roundup/templates/devel/html/user.index.html:50 #: ../share/roundup/templates/devel/html/user.register.html:54 @@ -3944,26 +3994,26 @@ msgid "Organisation" msgstr "" -#: ../share/roundup/templates/classic/html/user.index.html:22 +#: ../share/roundup/templates/classic/html/user.index.html:51 #: ../share/roundup/templates/devel/html/user.index.html:51 #: ../share/roundup/templates/minimal/html/user.index.html:20 #: ../share/roundup/templates/responsive/html/user.index.html:52 msgid "Email address" msgstr "" -#: ../share/roundup/templates/classic/html/user.index.html:23 +#: ../share/roundup/templates/classic/html/user.index.html:52 #: ../share/roundup/templates/devel/html/user.index.html:52 #: ../share/roundup/templates/responsive/html/user.index.html:53 msgid "Phone number" msgstr "" -#: ../share/roundup/templates/classic/html/user.index.html:24 +#: ../share/roundup/templates/classic/html/user.index.html:53 #: ../share/roundup/templates/devel/html/user.index.html:53 #: ../share/roundup/templates/responsive/html/user.index.html:54 msgid "Retire" msgstr "" -#: ../share/roundup/templates/classic/html/user.index.html:43 +#: ../share/roundup/templates/classic/html/user.index.html:72 #: ../share/roundup/templates/devel/html/user.index.html:66 #: ../share/roundup/templates/responsive/html/user.index.html:67 msgid "retire" @@ -4112,67 +4162,67 @@ msgstr "" #: ../share/roundup/templates/classic/initial_data.py:5 -#: ../share/roundup/templates/jinja2/initial_data.py:6 +#: ../share/roundup/templates/jinja2/initial_data.py:4 msgid "critical" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:6 -#: ../share/roundup/templates/jinja2/initial_data.py:7 +#: ../share/roundup/templates/jinja2/initial_data.py:5 msgid "urgent" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:7 -#: ../share/roundup/templates/jinja2/initial_data.py:8 +#: ../share/roundup/templates/jinja2/initial_data.py:6 msgid "bug" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:8 -#: ../share/roundup/templates/jinja2/initial_data.py:9 +#: ../share/roundup/templates/jinja2/initial_data.py:7 msgid "feature" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:9 -#: ../share/roundup/templates/jinja2/initial_data.py:10 +#: ../share/roundup/templates/jinja2/initial_data.py:8 msgid "wish" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:12 -#: ../share/roundup/templates/jinja2/initial_data.py:13 +#: ../share/roundup/templates/jinja2/initial_data.py:11 msgid "unread" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:13 -#: ../share/roundup/templates/jinja2/initial_data.py:14 +#: ../share/roundup/templates/jinja2/initial_data.py:12 msgid "deferred" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:14 -#: ../share/roundup/templates/jinja2/initial_data.py:15 +#: ../share/roundup/templates/jinja2/initial_data.py:13 msgid "chatting" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:15 -#: ../share/roundup/templates/jinja2/initial_data.py:16 +#: ../share/roundup/templates/jinja2/initial_data.py:14 msgid "need-eg" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:16 -#: ../share/roundup/templates/jinja2/initial_data.py:17 +#: ../share/roundup/templates/jinja2/initial_data.py:15 msgid "in-progress" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:17 -#: ../share/roundup/templates/jinja2/initial_data.py:18 +#: ../share/roundup/templates/jinja2/initial_data.py:16 msgid "testing" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:18 -#: ../share/roundup/templates/jinja2/initial_data.py:19 +#: ../share/roundup/templates/jinja2/initial_data.py:17 msgid "done-cbb" msgstr "" #: ../share/roundup/templates/classic/initial_data.py:19 -#: ../share/roundup/templates/jinja2/initial_data.py:20 +#: ../share/roundup/templates/jinja2/initial_data.py:18 msgid "resolved" msgstr ""
