diff locale/roundup.pot @ 7203:12a3cd86668f

auto update 'password_pbkdf2_default_rounds' " If the current value for password_pbkdf2_default_rounds is the old default value of 10000, updateconfig will use the new default value when writing the new config. If the curreny value for password_pbkdf2_default_rounds is less than the new default the user will be told to update the value. New translation strings added. Updates to upgrading.txt doc.
author John Rouillard <rouilj@ieee.org>
date Wed, 01 Mar 2023 10:51:37 -0500
parents c9a02c670e69
children ccb0e566e0be
line wrap: on
line diff
--- a/locale/roundup.pot	Wed Mar 01 10:43:54 2023 -0500
+++ b/locale/roundup.pot	Wed Mar 01 10:51:37 2023 -0500
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Roundup 2.2.0\n"
 "Report-Msgid-Bugs-To: roundup-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2022-11-23 22:28-0500\n"
+"POT-Creation-Date: 2023-03-01 10:35-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"
@@ -23,29 +23,29 @@
 msgid "You do not have permission to retire or restore the %(classname)s class."
 msgstr ""
 
-#: ../roundup/actions.py:64 ../roundup/cgi/actions.py:240
+#: ../roundup/actions.py:65 ../roundup/cgi/actions.py:240
 msgid "You may not retire the admin or anonymous user"
 msgstr ""
 
-#: ../roundup/admin.py:106 ../roundup/admin.py:1259 ../roundup/admin.py:1314
-#: ../roundup/admin.py:1341 ../roundup/admin.py:106:1259 :1314:1341
+#: ../roundup/admin.py:112 ../roundup/admin.py:1295 ../roundup/admin.py:1350
+#: ../roundup/admin.py:1377 ../roundup/admin.py:112:1295 :1350:1377
 #, python-format
 msgid "no such class \"%(classname)s\""
 msgstr ""
 
-#: ../roundup/admin.py:118
+#: ../roundup/admin.py:124
 #, python-format
 msgid "argument \"%(arg)s\" not propname=value"
 msgstr ""
 
-#: ../roundup/admin.py:131
+#: ../roundup/admin.py:137
 #, python-format
 msgid ""
 "Problem: %(message)s\n"
 "\n"
 msgstr ""
 
-#: ../roundup/admin.py:132
+#: ../roundup/admin.py:138
 #, 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:159
+#: ../roundup/admin.py:165
 msgid "Commands: "
 msgstr ""
 
-#: ../roundup/admin.py:166
+#: ../roundup/admin.py:172
 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:195
+#: ../roundup/admin.py:201
 msgid ""
 "\n"
 "All commands (except help) require a tracker specifier. This is just\n"
@@ -133,7 +133,7 @@
 " . ROUNDUP_LOGIN environment variable\n"
 " . the -u command-line option\n"
 "If either the name or password is not supplied, they are obtained from the\n"
-"command-line.\n"
+"command-line. (See admin guide before using -u.)\n"
 "\n"
 "Date format examples:\n"
 "  \"2000-04-17.03:45\" means <Date 2000-04-17.08:45:00>\n"
@@ -148,12 +148,12 @@
 "Command help:\n"
 msgstr ""
 
-#: ../roundup/admin.py:258
+#: ../roundup/admin.py:264
 #, python-format
 msgid "%s:"
 msgstr ""
 
-#: ../roundup/admin.py:265
+#: ../roundup/admin.py:271
 msgid ""
 "Usage: help topic\n"
 "        Give help about topic.\n"
@@ -165,20 +165,20 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:287
+#: ../roundup/admin.py:293
 #, python-format
 msgid "Sorry, no help for \"%(topic)s\""
 msgstr ""
 
-#: ../roundup/admin.py:402 ../roundup/admin.py:458 ../roundup/admin.py:402:458
+#: ../roundup/admin.py:408 ../roundup/admin.py:464 ../roundup/admin.py:408:464
 msgid "Templates:"
 msgstr ""
 
-#: ../roundup/admin.py:405 ../roundup/admin.py:468 ../roundup/admin.py:405:468
+#: ../roundup/admin.py:411 ../roundup/admin.py:474 ../roundup/admin.py:411:474
 msgid "Back ends:"
 msgstr ""
 
-#: ../roundup/admin.py:408
+#: ../roundup/admin.py:414
 msgid ""
 "Usage: install [template [backend [key=val[,key=val]]]]\n"
 "        Install a new Roundup tracker.\n"
@@ -204,22 +204,22 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:431 ../roundup/admin.py:562 ../roundup/admin.py:635
-#: ../roundup/admin.py:728 ../roundup/admin.py:786 ../roundup/admin.py:872
-#: ../roundup/admin.py:931 ../roundup/admin.py:958 ../roundup/admin.py:985
-#: ../roundup/admin.py:1062 ../roundup/admin.py:1157 ../roundup/admin.py:1243
-#: ../roundup/admin.py:1304 ../roundup/admin.py:1331 ../roundup/admin.py:1367
-#: ../roundup/admin.py:1495 ../roundup/admin.py:1579 ../roundup/admin.py:431:562
-#: :1157 :1243:1304 :1331:1367 :1495:1579 :635:728 :786:872 :931:958 :985:1062
+#: ../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:437
+#: ../roundup/admin.py:443
 #, python-format
 msgid "Instance home parent directory \"%(parent)s\" does not exist"
 msgstr ""
 
-#: ../roundup/admin.py:446
+#: ../roundup/admin.py:452
 #, 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:459
+#: ../roundup/admin.py:465
 msgid "Select template"
 msgstr ""
 
-#: ../roundup/admin.py:469
+#: ../roundup/admin.py:475
 msgid "Select backend"
 msgstr ""
 
-#: ../roundup/admin.py:480
+#: ../roundup/admin.py:486
 #, python-format
 msgid "Error in configuration settings: \"%s\""
 msgstr ""
 
-#: ../roundup/admin.py:511
+#: ../roundup/admin.py:517
 #, python-format
 msgid ""
 "\n"
@@ -249,11 +249,11 @@
 "   %(config_file)s"
 msgstr ""
 
-#: ../roundup/admin.py:521
+#: ../roundup/admin.py:527
 msgid " ... at a minimum, you must set following options:"
 msgstr ""
 
-#: ../roundup/admin.py:526
+#: ../roundup/admin.py:532
 #, python-format
 msgid ""
 "\n"
@@ -269,7 +269,7 @@
 "---------------------------------------------------------------------------\n"
 msgstr ""
 
-#: ../roundup/admin.py:557
+#: ../roundup/admin.py:563
 msgid ""
 "Usage: genconfig <filename>\n"
 "        Generate a new tracker config file (ini style) with default\n"
@@ -277,7 +277,22 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:572
+#: ../roundup/admin.py:581
+#, 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:593
+#, python-format
+msgid ""
+"Update 'password_pbkdf2_default_rounds'to a number equal to or larger\n"
+"than %s."
+msgstr ""
+
+#: ../roundup/admin.py:604
 msgid ""
 "Usage: updateconfig <filename>\n"
 "        Generate an updated tracker config file (ini style) in\n"
@@ -287,7 +302,7 @@
 msgstr ""
 
 #. password
-#: ../roundup/admin.py:580
+#: ../roundup/admin.py:612
 msgid ""
 "Usage: initialise [adminpw]\n"
 "        Initialise a new Roundup tracker.\n"
@@ -298,30 +313,30 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:594
+#: ../roundup/admin.py:626
 msgid "Admin Password: "
 msgstr ""
 
-#: ../roundup/admin.py:595
+#: ../roundup/admin.py:627
 msgid "       Confirm: "
 msgstr ""
 
-#: ../roundup/admin.py:599
+#: ../roundup/admin.py:631
 msgid "Instance home does not exist"
 msgstr ""
 
-#: ../roundup/admin.py:603
+#: ../roundup/admin.py:635
 msgid "Instance has not been installed"
 msgstr ""
 
-#: ../roundup/admin.py:609
+#: ../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 ""
 
-#: ../roundup/admin.py:625
+#: ../roundup/admin.py:661
 msgid ""
 "Usage: get property designator[,designator]*\n"
 "        Get the given property of one or more designator(s).\n"
@@ -334,23 +349,23 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:669 ../roundup/admin.py:687 ../roundup/admin.py:669:687
+#: ../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 ""
 
-#: ../roundup/admin.py:697 ../roundup/admin.py:1261 ../roundup/admin.py:1316
-#: ../roundup/admin.py:697:1261 :1316
+#: ../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 ""
 
-#: ../roundup/admin.py:700
+#: ../roundup/admin.py:736
 #, python-format
 msgid "no such %(classname)s property \"%(propname)s\""
 msgstr ""
 
-#: ../roundup/admin.py:708
+#: ../roundup/admin.py:744
 msgid ""
 "Usage: set items property=value property=value ...\n"
 "        Set the given properties of one or more items(s).\n"
@@ -371,7 +386,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:776
+#: ../roundup/admin.py:812
 msgid ""
 "Usage: filter classname propname=value ...\n"
 "        Find the nodes of the given class with a given property value.\n"
@@ -384,19 +399,19 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:819
+#: ../roundup/admin.py:855
 #, python-format
 msgid "Class %(curclassname)s has no property %(pn)s in %(propname)s."
 msgstr ""
 
-#: ../roundup/admin.py:857 ../roundup/admin.py:918 ../roundup/admin.py:1082
-#: ../roundup/admin.py:1094 ../roundup/admin.py:1177 ../roundup/admin.py:857:918
-#: :1082:1094 :1177
+#: ../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 ""
 
-#: ../roundup/admin.py:864
+#: ../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"
@@ -407,7 +422,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:925
+#: ../roundup/admin.py:961
 msgid ""
 "Usage: specification classname\n"
 "        Show the properties for a classname.\n"
@@ -416,17 +431,17 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:941
+#: ../roundup/admin.py:977
 #, python-format
 msgid "%(key)s: %(value)s (key property)\n"
 msgstr ""
 
-#: ../roundup/admin.py:944
+#: ../roundup/admin.py:980
 #, python-format
 msgid "%(key)s: %(value)s\n"
 msgstr ""
 
-#: ../roundup/admin.py:947
+#: ../roundup/admin.py:983
 msgid ""
 "Usage: display designator[,designator]*\n"
 "\n"
@@ -440,12 +455,12 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:974
+#: ../roundup/admin.py:1010
 #, python-format
 msgid "%(key)s: %(value)s"
 msgstr ""
 
-#: ../roundup/admin.py:977
+#: ../roundup/admin.py:1013
 msgid ""
 "Usage: create classname property=value ...\n"
 "        Create a new entry of a given class.\n"
@@ -457,31 +472,31 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1005
+#: ../roundup/admin.py:1041
 #, python-format
 msgid "%(propname)s (Password): "
 msgstr ""
 
-#: ../roundup/admin.py:1008
+#: ../roundup/admin.py:1044
 #, python-format
 msgid "   %(propname)s (Again): "
 msgstr ""
 
-#: ../roundup/admin.py:1012
+#: ../roundup/admin.py:1048
 msgid "Sorry, try again..."
 msgstr ""
 
-#: ../roundup/admin.py:1016
+#: ../roundup/admin.py:1052
 #, python-format
 msgid "%(propname)s (%(proptype)s): "
 msgstr ""
 
-#: ../roundup/admin.py:1035
+#: ../roundup/admin.py:1071
 #, python-format
 msgid "you must provide the \"%(propname)s\" property."
 msgstr ""
 
-#: ../roundup/admin.py:1047
+#: ../roundup/admin.py:1083
 msgid ""
 "Usage: list classname [property]\n"
 "        List the instances of a class.\n"
@@ -497,16 +512,16 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1060
+#: ../roundup/admin.py:1096
 msgid "Too many arguments supplied"
 msgstr ""
 
-#: ../roundup/admin.py:1096
+#: ../roundup/admin.py:1132
 #, python-format
 msgid "%(nodeid)4s: %(value)s"
 msgstr ""
 
-#: ../roundup/admin.py:1100
+#: ../roundup/admin.py:1136
 msgid ""
 "Usage: templates [trace_search]\n"
 "        List templates and their installed directories.\n"
@@ -516,7 +531,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1128
+#: ../roundup/admin.py:1164
 msgid ""
 "Usage: table classname [property[,property]*]\n"
 "        List the instances of a class in tabular form.\n"
@@ -548,17 +563,17 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1172
+#: ../roundup/admin.py:1208
 #, python-format
 msgid "\"%(spec)s\" not name:width"
 msgstr ""
 
-#: ../roundup/admin.py:1194
-#, python-format
-msgid "\"%(spec)s\" does not have an integer width: \"%(width)s\""
-msgstr ""
-
 #: ../roundup/admin.py:1230
+#, 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"
@@ -573,7 +588,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1266
+#: ../roundup/admin.py:1302
 msgid ""
 "Usage: commit\n"
 "        Commit changes made to the database during an interactive session.\n"
@@ -587,7 +602,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1281
+#: ../roundup/admin.py:1317
 msgid ""
 "Usage: rollback\n"
 "        Undo all changes that are pending commit to the database.\n"
@@ -599,7 +614,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1294
+#: ../roundup/admin.py:1330
 msgid ""
 "Usage: retire designator[,designator]*\n"
 "        Retire the node specified by designator.\n"
@@ -612,7 +627,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1322
+#: ../roundup/admin.py:1358
 msgid ""
 "Usage: restore designator[,designator]*\n"
 "        Restore the retired node specified by designator.\n"
@@ -624,12 +639,12 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1347
+#: ../roundup/admin.py:1383
 msgid "no such %(classname)s node \" % (nodeid)s\""
 msgstr ""
 
 #. grab the directory to export to
-#: ../roundup/admin.py:1353
+#: ../roundup/admin.py:1389
 msgid ""
 "Usage: export [[-]class[,class]] export_dir\n"
 "        Export the database to colon-separated-value files.\n"
@@ -645,7 +660,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1460
+#: ../roundup/admin.py:1496
 msgid ""
 "Usage: exporttables [[-]class[,class]] export_dir\n"
 "        Export the database to colon-separated-value files, excluding the\n"
@@ -662,7 +677,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1475
+#: ../roundup/admin.py:1511
 msgid ""
 "Usage: import import_dir\n"
 "        Import a database from the directory containing CSV files,\n"
@@ -685,7 +700,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1554
+#: ../roundup/admin.py:1590
 msgid ""
 "Usage: importtables export_dir\n"
 "\n"
@@ -693,7 +708,7 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1561
+#: ../roundup/admin.py:1597
 msgid ""
 "Usage: pack period | date\n"
 "\n"
@@ -715,11 +730,11 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1589
+#: ../roundup/admin.py:1625
 msgid "Invalid format"
 msgstr ""
 
-#: ../roundup/admin.py:1602
+#: ../roundup/admin.py:1638
 msgid ""
 "Usage: reindex [classname|designator]*\n"
 "        Re-generate a tracker's search indexes.\n"
@@ -729,12 +744,12 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1616
+#: ../roundup/admin.py:1652
 #, python-format
 msgid "no such item \"%(designator)s\""
 msgstr ""
 
-#: ../roundup/admin.py:1626
+#: ../roundup/admin.py:1662
 msgid ""
 "Usage: security [Role name]\n"
 "\n"
@@ -742,46 +757,46 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1635
+#: ../roundup/admin.py:1671
 #, python-format
 msgid "No such Role \"%(role)s\"\n"
 msgstr ""
 
-#: ../roundup/admin.py:1641
+#: ../roundup/admin.py:1677
 #, python-format
 msgid "New Web users get the Roles \"%(role)s\"\n"
 msgstr ""
 
-#: ../roundup/admin.py:1644
+#: ../roundup/admin.py:1680
 #, python-format
 msgid "New Web users get the Role \"%(role)s\"\n"
 msgstr ""
 
-#: ../roundup/admin.py:1648
+#: ../roundup/admin.py:1684
 #, python-format
 msgid "New Email users get the Roles \"%(role)s\"\n"
 msgstr ""
 
-#: ../roundup/admin.py:1650
+#: ../roundup/admin.py:1686
 #, python-format
 msgid "New Email users get the Role \"%(role)s\"\n"
 msgstr ""
 
-#: ../roundup/admin.py:1653
+#: ../roundup/admin.py:1689
 #, python-format
 msgid "Role \"%(name)s\":\n"
 msgstr ""
 
-#: ../roundup/admin.py:1659
+#: ../roundup/admin.py:1695
 msgid " %(description)s (%(name)s for \"%(klass)s\""
 msgstr ""
 
-#: ../roundup/admin.py:1659
+#: ../roundup/admin.py:1695
 #, python-format
 msgid " %(description)s (%(name)s for \"%(klass)s\": %(properties)s only)\n"
 msgstr ""
 
-#: ../roundup/admin.py:1672
+#: ../roundup/admin.py:1708
 #, python-format
 msgid ""
 "\n"
@@ -789,17 +804,17 @@
 "\n"
 msgstr ""
 
-#: ../roundup/admin.py:1678
+#: ../roundup/admin.py:1714
 #, python-format
 msgid " %(description)s (%(name)s for \"%(klass)s\" only)\n"
 msgstr ""
 
-#: ../roundup/admin.py:1681
+#: ../roundup/admin.py:1717
 #, python-format
 msgid " %(description)s (%(name)s)\n"
 msgstr ""
 
-#: ../roundup/admin.py:1685
+#: ../roundup/admin.py:1721
 msgid ""
 "Usage: migrate\n"
 "\n"
@@ -823,60 +838,56 @@
 "        "
 msgstr ""
 
-#: ../roundup/admin.py:1706
+#: ../roundup/admin.py:1742
 msgid "Tracker updated"
 msgstr ""
 
-#: ../roundup/admin.py:1709
+#: ../roundup/admin.py:1745
 msgid "No migration action required"
 msgstr ""
 
-#: ../roundup/admin.py:1735
+#: ../roundup/admin.py:1771
 #, python-format
 msgid "Unknown command \"%(command)s\" (\"help commands\" for a list)"
 msgstr ""
 
-#: ../roundup/admin.py:1741
+#: ../roundup/admin.py:1777
 #, python-format
 msgid "Multiple commands match \"%(command)s\": %(list)s"
 msgstr ""
 
-#: ../roundup/admin.py:1750
+#: ../roundup/admin.py:1786
 msgid "Enter tracker home: "
 msgstr ""
 
-#: ../roundup/admin.py:1759 ../roundup/admin.py:1765 ../roundup/admin.py:1802
-#: ../roundup/admin.py:1759:1765 :1802
+#: ../roundup/admin.py:1795 ../roundup/admin.py:1801 ../roundup/admin.py:1838
+#: ../roundup/admin.py:1795:1801 :1838
 #, python-format
 msgid "Error: %(message)s"
 msgstr ""
 
-#: ../roundup/admin.py:1775 ../roundup/admin.py:1779
-#: ../roundup/admin.py:1775:1779
+#: ../roundup/admin.py:1811 ../roundup/admin.py:1815
+#: ../roundup/admin.py:1811:1815
 #, python-format
 msgid "Error: Couldn't open tracker: %(message)s"
 msgstr ""
 
-#: ../roundup/admin.py:1815
+#: ../roundup/admin.py:1851
 #, python-format
 msgid ""
 "Roundup %s ready for input.\n"
 "Type \"help\" for help."
 msgstr ""
 
-#: ../roundup/admin.py:1820
+#: ../roundup/admin.py:1856
 msgid "Note: command history and editing not available"
 msgstr ""
 
-#: ../roundup/admin.py:1824
-msgid "roundup> "
-msgstr ""
-
-#: ../roundup/admin.py:1826
+#: ../roundup/admin.py:1862
 msgid "exit..."
 msgstr ""
 
-#: ../roundup/admin.py:1839
+#: ../roundup/admin.py:1875
 msgid "There are unsaved changes. Commit them (y/N)? "
 msgstr ""
 
@@ -982,20 +993,22 @@
 msgid "restored"
 msgstr ""
 
-#: ../roundup/backends/sessions_redis.py:76
-#: ../roundup/backends/sessions_redis.py:95
-#: ../roundup/backends/sessions_redis.py:76:95
+#: ../roundup/backends/sessions_redis.py:78
+#: ../roundup/backends/sessions_redis.py:97
+#: ../roundup/backends/sessions_redis.py:78:97
 #, python-format
 msgid "Key %(key)s not found in %(name)s database."
 msgstr ""
 
-#: ../roundup/backends/sessions_redis.py:191
+#: ../roundup/backends/sessions_redis.py:193
 #, python-format
 msgid "Key %(key)s changed in %(name)s db"
 msgstr ""
 
-#: ../roundup/backends/sessions_redis.py:195
-msgid "Redis set failed afer 3 retries"
+#: ../roundup/backends/sessions_redis.py:203
+#, python-format
+msgid ""
+"Redis set failed after %(retries)d retries for user %(user)s with key %(key)s"
 msgstr ""
 
 #: ../roundup/cgi/actions.py:97
@@ -1295,22 +1308,22 @@
 msgid "Welcome %(username)s!"
 msgstr ""
 
-#: ../roundup/cgi/actions.py:1383 ../roundup/cgi/actions.py:1387
-#: ../roundup/cgi/actions.py:1383:1387
+#: ../roundup/cgi/actions.py:1384 ../roundup/cgi/actions.py:1388
+#: ../roundup/cgi/actions.py:1384:1388
 msgid "Invalid login"
 msgstr ""
 
-#: ../roundup/cgi/actions.py:1393
+#: ../roundup/cgi/actions.py:1394
 msgid "You do not have permission to login"
 msgstr ""
 
-#: ../roundup/cgi/actions.py:1437 ../roundup/cgi/actions.py:1616
-#: ../roundup/cgi/actions.py:1437:1616
+#: ../roundup/cgi/actions.py:1439 ../roundup/cgi/actions.py:1618
+#: ../roundup/cgi/actions.py:1439:1618
 #, python-format
 msgid "Column \"%(column)s\" not found in %(class)s"
 msgstr ""
 
-#: ../roundup/cgi/actions.py:1687
+#: ../roundup/cgi/actions.py:1689
 #, python-format
 msgid "You do not have permission to view %(class)s"
 msgstr ""
@@ -1394,153 +1407,154 @@
 "</body></html>"
 msgstr ""
 
-#: ../roundup/cgi/client.py:651
+#: ../roundup/cgi/client.py:670 ../roundup/cgi/client.py:1570
+#: ../roundup/cgi/client.py:670:1570
+msgid "Required Header Missing"
+msgstr ""
+
+#: ../roundup/cgi/client.py:672
 msgid "Client is not allowed to use Rest Interface."
 msgstr ""
 
-#: ../roundup/cgi/client.py:895
+#: ../roundup/cgi/client.py:921
 msgid "Form Error: "
 msgstr ""
 
-#: ../roundup/cgi/client.py:985
+#: ../roundup/cgi/client.py:1011
 #, python-format
 msgid "Unrecognized charset: %r"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1238 ../roundup/cgi/client.py:2196
-#: ../roundup/cgi/client.py:1238:2196
+#: ../roundup/cgi/client.py:1264 ../roundup/cgi/client.py:2250
+#: ../roundup/cgi/client.py:1264:2250
 msgid "broken form: multiple @action values submitted"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1253
+#: ../roundup/cgi/client.py:1279
 msgid "Anonymous users are not allowed to use the web interface"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1376
+#: ../roundup/cgi/client.py:1430
 msgid "Referer header not available."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1380
+#: ../roundup/cgi/client.py:1434
 #, python-format
 msgid "csrf key used with wrong method from: %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1409
+#: ../roundup/cgi/client.py:1463
 #, python-format
 msgid "csrf header %(header)s required but missing for user%(userid)s."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1413
+#: ../roundup/cgi/client.py:1467
 #, python-format
 msgid "Missing header: %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1421
+#: ../roundup/cgi/client.py:1475
 #, python-format
 msgid "csrf Referer header check failed for user%(userid)s. Value=%(referer)s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1426
+#: ../roundup/cgi/client.py:1480
 #, python-format
 msgid "Invalid Referer: %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1441
+#: ../roundup/cgi/client.py:1495
 #, python-format
 msgid "csrf Origin header check failed for user%(userid)s. Value=%(origin)s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1446
+#: ../roundup/cgi/client.py:1500
 #, python-format
 msgid "Invalid Origin %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1460
+#: ../roundup/cgi/client.py:1514
 #, python-format
 msgid ""
 "csrf X-FORWARDED-HOST header check failed for user%(userid)s. Value=%(host)s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1466
+#: ../roundup/cgi/client.py:1520
 #, python-format
 msgid "Invalid X-FORWARDED-HOST %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1485
+#: ../roundup/cgi/client.py:1539
 #, python-format
 msgid "csrf HOST header check failed for user%(userid)s. Value=%(host)s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1490
+#: ../roundup/cgi/client.py:1544
 #, python-format
 msgid "Invalid HOST %s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1498
+#: ../roundup/cgi/client.py:1552
 msgid "Csrf: unable to verify sufficient headers"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1499
+#: ../roundup/cgi/client.py:1553
 msgid "Unable to verify sufficient headers"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1513
+#: ../roundup/cgi/client.py:1567
 #, python-format
 msgid "csrf X-REQUESTED-WITH xmlrpc required header check failed for user%s."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1516
-msgid "Required Header Missing"
-msgstr ""
-
-#: ../roundup/cgi/client.py:1554
+#: ../roundup/cgi/client.py:1608
 #, python-format
 msgid "Required csrf field missing for user%s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1556 ../roundup/cgi/client.py:1583
-#: ../roundup/cgi/client.py:1600 ../roundup/cgi/client.py:1556:1583 :1600
+#: ../roundup/cgi/client.py:1610 ../roundup/cgi/client.py:1637
+#: ../roundup/cgi/client.py:1654 ../roundup/cgi/client.py:1610:1637 :1654
 msgid ""
 "We can't validate your session (csrf failure). Re-enter any unsaved data and "
 "try again."
 msgstr ""
 
-#: ../roundup/cgi/client.py:1560
+#: ../roundup/cgi/client.py:1614
 #, python-format
 msgid "csrf field not supplied by user%s"
 msgstr ""
 
-#: ../roundup/cgi/client.py:1572
+#: ../roundup/cgi/client.py:1626
 #, 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:1590
+#: ../roundup/cgi/client.py:1644
 #, 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:1784
+#: ../roundup/cgi/client.py:1838
 msgid "You are not allowed to view this file."
 msgstr ""
 
-#: ../roundup/cgi/client.py:2073
+#: ../roundup/cgi/client.py:2127
 #, python-format
 msgid "%(starttag)sTime elapsed: %(seconds)fs%(endtag)s\n"
 msgstr ""
 
-#: ../roundup/cgi/client.py:2077
+#: ../roundup/cgi/client.py:2131
 #, 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:2615
+#: ../roundup/cgi/client.py:2669
 #, python-format
 msgid ""
 "Cache failure: compressed file %(compressed)s is older than its source file "
@@ -1913,28 +1927,28 @@
 msgid "\"%s\" not a node designator"
 msgstr ""
 
-#: ../roundup/hyperdb.py:1492 ../roundup/hyperdb.py:1500
-#: ../roundup/hyperdb.py:1492:1500
+#: ../roundup/hyperdb.py:1493 ../roundup/hyperdb.py:1501
+#: ../roundup/hyperdb.py:1493:1501
 #, python-format
 msgid "Not a property name: %s"
 msgstr ""
 
-#: ../roundup/hyperdb.py:1977
+#: ../roundup/hyperdb.py:1978
 #, python-format
 msgid "property %(property)s: %(value)r is not a %(classname)s."
 msgstr ""
 
-#: ../roundup/hyperdb.py:1983
+#: ../roundup/hyperdb.py:1984
 #, python-format
 msgid "you may only enter ID values for property %s"
 msgstr ""
 
-#: ../roundup/hyperdb.py:2018
+#: ../roundup/hyperdb.py:2019
 #, python-format
 msgid "%(property)r is not a property of %(classname)s"
 msgstr ""
 
-#: ../roundup/init.py:139
+#: ../roundup/init.py:141
 #, python-format
 msgid ""
 "WARNING: directory '%s'\n"
@@ -2154,7 +2168,7 @@
 "  %(errors)s\n"
 msgstr ""
 
-#: ../roundup/mailgw.py:1820
+#: ../roundup/mailgw.py:1821
 #, python-format
 msgid ""
 "\n"
@@ -2177,19 +2191,19 @@
 msgid "Invalid attribute %s"
 msgstr ""
 
-#: ../roundup/rest.py:2078
+#: ../roundup/rest.py:2090
 #, python-format
 msgid "Api rate limits exceeded. Please wait: %s seconds."
 msgstr ""
 
-#: ../roundup/rest.py:2113
+#: ../roundup/rest.py:2125
 #, python-format
 msgid ""
 "Unable to parse Accept Header. %(error)s. Acceptable types: "
 "%(acceptable_types)s"
 msgstr ""
 
-#: ../roundup/rest.py:2262
+#: ../roundup/rest.py:2305
 #, python-format
 msgid ""
 "Unrecognized api version: %s. See /rest without specifying api version for "
@@ -2312,26 +2326,26 @@
 msgid "No tracker templates found in directory %s"
 msgstr ""
 
-#: ../roundup/scripts/roundup_mailgw.py:185
+#: ../roundup/scripts/roundup_mailgw.py:182
 msgid ""
 "\n"
 "Error: The instance home must be specified"
 msgstr ""
 
-#: ../roundup/scripts/roundup_mailgw.py:203
+#: ../roundup/scripts/roundup_mailgw.py:200
 msgid ""
 "\n"
 "Error: not enough source specification information"
 msgstr ""
 
-#: ../roundup/scripts/roundup_mailgw.py:234
+#: ../roundup/scripts/roundup_mailgw.py:231
 #, python-format
 msgid ""
 "\n"
 "Error: %s specification not valid"
 msgstr ""
 
-#: ../roundup/scripts/roundup_mailgw.py:258
+#: ../roundup/scripts/roundup_mailgw.py:254
 msgid ""
 "\n"
 "Error: The source must be either \"mailbox\", \"pop\", \"pops\", \"apop\", "
@@ -2342,64 +2356,64 @@
 msgid "WARNING: generating temporary SSL certificate"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:329
+#: ../roundup/scripts/roundup_server.py:331
 msgid ""
 "<html><head><title>Roundup trackers index</title></head>\n"
 "<body><h1>Roundup trackers index</h1><ol>\n"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:549
+#: ../roundup/scripts/roundup_server.py:551
 #, python-format
 msgid "Error: %(type)s: %(value)s"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:561
+#: ../roundup/scripts/roundup_server.py:563
 msgid "WARNING: ignoring \"-g\" argument, not root"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:567
+#: ../roundup/scripts/roundup_server.py:569
 msgid "Can't change groups - no grp module"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:576
+#: ../roundup/scripts/roundup_server.py:578
 #, python-format
 msgid "Group %(group)s doesn't exist"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:588
+#: ../roundup/scripts/roundup_server.py:590
 msgid "Can't run as root!"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:591
+#: ../roundup/scripts/roundup_server.py:593
 msgid "WARNING: ignoring \"-u\" argument, not root"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:597
+#: ../roundup/scripts/roundup_server.py:599
 msgid "Can't change users - no pwd module"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:606
+#: ../roundup/scripts/roundup_server.py:608
 #, python-format
 msgid "User %(user)s doesn't exist"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:803
+#: ../roundup/scripts/roundup_server.py:805
 #, python-format
 msgid "Multiprocess mode \"%s\" is not available, switching to single-process"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:830
+#: ../roundup/scripts/roundup_server.py:832
 #, python-format
 msgid "Unable to bind to port %s, port already in use."
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:834
+#: ../roundup/scripts/roundup_server.py:836
 #, python-format
 msgid ""
 "Unable to bind to port %(port)s, access not allowed, errno: %(errno)s %(msg)s"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:913
+#: ../roundup/scripts/roundup_server.py:915
 msgid ""
 " -c <Command>  Windows Service options.\n"
 "               If you want to run the server as a Windows Service, you\n"
@@ -2409,7 +2423,7 @@
 "               specifics."
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:920
+#: ../roundup/scripts/roundup_server.py:922
 msgid ""
 " -u <UID>      runs the Roundup web server as this UID\n"
 " -g <GID>      runs the Roundup web server as this GID\n"
@@ -2418,7 +2432,7 @@
 "               specified if -d is used."
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:927
+#: ../roundup/scripts/roundup_server.py:929
 #, python-format
 msgid ""
 "\n"
@@ -2485,20 +2499,20 @@
 "   any url-unsafe characters like spaces, as these confuse IE.\n"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:1103
+#: ../roundup/scripts/roundup_server.py:1105
 msgid "Instances must be name=home"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:1117
+#: ../roundup/scripts/roundup_server.py:1119
 #, python-format
 msgid "Configuration saved to %s"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:1135
+#: ../roundup/scripts/roundup_server.py:1137
 msgid "Sorry, you can't run the server as a daemon on this Operating System"
 msgstr ""
 
-#: ../roundup/scripts/roundup_server.py:1155
+#: ../roundup/scripts/roundup_server.py:1157
 #, python-format
 msgid "Roundup server started on %(HOST)s:%(PORT)s"
 msgstr ""

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