Index: pykota/trunk/po/pt_BR/pykota.po
===================================================================
--- pykota/trunk/po/pt_BR/pykota.po (revision 2627)
+++ pykota/trunk/po/pt_BR/pykota.po (revision 2808)
@@ -25,5 +25,5 @@
 "Project-Id-Version: PyKota v1.20\n"
 "Report-Msgid-Bugs-To: alet@librelogiciel.com\n"
-"POT-Creation-Date: 2004-11-25 10:16+0100\n"
+"POT-Creation-Date: 2006-03-26 11:13+0200\n"
 "PO-Revision-Date: 2004-07-21 15:35:00+0100\n"
 "Last-Translator: Jurandy Martins <jurandy@ic.unicamp.br>\n"
@@ -59,4 +59,648 @@
 
 #, python-format
+msgid ""
+"edpykota v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"A Print Quota editor for PyKota.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  edpykota [options] user1 user2 ... userN\n"
+"  \n"
+"  edpykota [options] group1 group2 ... groupN\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints edpykota's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -a | --add           Adds users or groups print quota entries if\n"
+"                       they don't exist in database.\n"
+"                       \n"
+"  -d | --delete        Deletes users or groups print quota entries.\n"
+"                       Users or groups are never deleted, you have\n"
+"                       to use the pkusers command to delete them.\n"
+"                       The history will be purge from all matching\n"
+"                       jobs, unless -g | --groups is used.\n"
+"  \n"
+"  -P | --printer p     Edit quotas on printer p only. Actually p can\n"
+"                       use wildcards characters to select only\n"
+"                       some printers. The default value is *, meaning\n"
+"                       all printers. \n"
+"                       You can specify several names or wildcards, \n"
+"                       by separating them with commas.\n"
+"  \n"
+"  -g | --groups        Edit groups print quota entries instead of \n"
+"                       users print quota entries.\n"
+"                          \n"
+"  -L | --list          Lists users or groups print quota entries.\n"
+"  \n"
+"  -n | --noquota       Sets both soft and hard limits to None for users\n"
+"                       or groups print quota entries.\n"
+"  \n"
+"  -r | --reset         Resets the actual page counter for the user\n"
+"                       or group to zero on the specified printers. \n"
+"                       The life time page counter is kept unchanged.\n"
+"                       \n"
+"  -R | --hardreset     Resets the actual and life time page counters\n"
+"                       for the user or group to zero on the specified \n"
+"                       printers. This is a shortcut for '--used 0'.\n"
+"                       \n"
+"  -s | --skipexisting  In combination with the --add option above, tells\n"
+"                       edpykota to not modify existing print quota entries.\n"
+"                       \n"
+"  -S | --softlimit sl  Sets the quota soft limit to sl "
+"pages.                       \n"
+"  \n"
+"  -H | --hardlimit hl  Sets the quota hard limit to hl pages.\n"
+"  \n"
+"  -I | --increase v    Increase existing Soft and Hard limits by the value\n"
+"                       of v. You can prefix v with + or -, if no sign is\n"
+"                       used, + is assumed.\n"
+"\n"
+"  -U | --used u        Sets the page counters for the user u pages on\n"
+"                       the selected printers. Doesn't work for groups, "
+"since\n"
+"                       their page counters are the sum of all their "
+"members'\n"
+"                       page counters.\n"
+"                       Useful for migrating users from a different system\n"
+"                       where they have already used some pages. Actual\n"
+"                       and Life Time page counters may be increased or "
+"decreased\n"
+"                       if u is prefixed with + or -.\n"
+"                       WARNING : BOTH page counters are modified in all "
+"cases,\n"
+"                       so be careful.\n"
+"                       NB : if u equals '0', then the action taken is\n"
+"                       the same as if --hardreset was used.\n"
+"\n"
+"  user1 through userN and group1 through groupN can use wildcards\n"
+"  if the --add option is not set.\n"
+"  \n"
+"examples :                              \n"
+"\n"
+"  $ edpykota --add john paul george ringo\n"
+"  \n"
+"  This will create print quota entries for users john, paul, george\n"
+"  and ringo on all printers. These print quota entries will have no\n"
+"  limit set.\n"
+"  \n"
+"  $ edpykota --printer lp -S 50 -H 60 jerome\n"
+"  \n"
+"  This will set jerome's print quota on the lp printer to a soft limit\n"
+"  of 50 pages, and a hard limit of 60 pages. Both user jerome and\n"
+"  printer lp have been previously created with the pkusers and pkprinters\n"
+"  commands, respectively.\n"
+"\n"
+"  $ edpykota -g -S 500 -H 550 financial support            \n"
+"  \n"
+"  This will set print quota soft limit to 500 pages and hard limit\n"
+"  to 550 pages for groups financial and support on all printers.\n"
+"  \n"
+"  $ edpykota --reset jerome \"jo*\"\n"
+"  \n"
+"  This will reset jerome's page counter to zero on all printers, as\n"
+"  well as every user whose name begins with 'jo'.\n"
+"  Their life time page counter on each printer will be kept unchanged.\n"
+"  You can also reset the life time page counters by using the\n"
+"  --hardreset | -R command line option.\n"
+"  \n"
+"  $ edpykota --printer hpcolor --noquota jerome\n"
+"  \n"
+"  This will tell PyKota to not limit jerome when printing on the \n"
+"  hpcolor printer. All his jobs will be allowed on this printer, but \n"
+"  accounting of the pages he prints will still be kept.\n"
+"  Print Quotas for jerome on other printers are unchanged.\n"
+"  \n"
+"  $ edpykota --delete --printer \"HP*,XER*\" jerome rachel\n"
+"  \n"
+"  This will delete users jerome and rachel's print quota\n"
+"  entries on all printers which name begin with 'HP' or\n"
+"  'XER'. The jobs printed by these users on these printers\n"
+"  will be deleted from the history.\n"
+msgstr ""
+
+#, python-format
+msgid "You can't set negative limits for %s"
+msgstr ""
+
+msgid "Extracting datas"
+msgstr ""
+
+#, python-format
+msgid "Page counter : %s"
+msgstr ""
+
+#, python-format
+msgid "Lifetime page counter : %s"
+msgstr ""
+
+#, python-format
+msgid "Soft limit : %s"
+msgstr ""
+
+#, python-format
+msgid "Hard limit : %s"
+msgstr ""
+
+#, python-format
+msgid "Date limit : %s"
+msgstr ""
+
+#, python-format
+msgid "Maximum job size : %s"
+msgstr ""
+
+#, python-format
+msgid "%s pages"
+msgstr ""
+
+msgid "Unlimited"
+msgstr ""
+
+#, python-format
+msgid "Warning banners printed : %s"
+msgstr ""
+
+msgid "Deletion"
+msgstr ""
+
+#, python-format
+msgid "Invalid used value %s."
+msgstr ""
+
+#, python-format
+msgid "Invalid increase value %s."
+msgstr ""
+
+#, python-format
+msgid "Invalid softlimit value %s."
+msgstr "Valor incorreto para o limite %s."
+
+#, python-format
+msgid "Invalid hardlimit value %s."
+msgstr "Valor incorreto para o limite Maximo %s."
+
+#, python-format
+msgid "Hard limit %i is less than soft limit %i, values will be exchanged."
+msgstr "Limite maximo %i �enor que o limite %i, os valores ser�invertidos."
+
+#, python-format
+msgid "Undefined hard limit set to soft limit (%s)."
+msgstr ""
+
+#, python-format
+msgid "Undefined soft limit set to hard limit (%s)."
+msgstr ""
+
+msgid "Creation"
+msgstr ""
+
+#, python-format
+msgid ""
+"Impossible to create print quota entries if the user or group object '%s' "
+"doesn't already exist. Please use pkusers to create it first."
+msgstr ""
+
+msgid "Modification"
+msgstr ""
+
+msgid "incompatible options, see help."
+msgstr "O�s incompativeis, veja a ajuda."
+
+msgid "You have to pass user or group names on the command line"
+msgstr "Voce deve informar usuario ou grupo na linha de comando"
+
+#, python-format
+msgid ""
+"pkbanner v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"Generates banners.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pkbanner  [options]  [more info]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pkbanner's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -l | --logo img      Use the image as the banner's logo. The logo will\n"
+"                       be drawn at the center top of the page. The default\n"
+"                       logo is /usr/share/pykota/logos/pykota.jpeg\n"
+"                       \n"
+"  -p | --pagesize sz   Sets sz as the page size. Most well known\n"
+"                       page sizes are recognized, like 'A4' or 'Letter'\n"
+"                       to name a few. The default size is A4.\n"
+"  \n"
+"  -s | --savetoner s   Sets the text luminosity factor to s%%. This can be \n"
+"                       used to save toner. The default value is 0, which\n"
+"                       means that no toner saving will be done.\n"
+"  \n"
+"  -u | --url u         Uses u as an url to be written at the bottom of \n"
+"                       the banner page. The default url is :\n"
+"                       http://www.librelogiciel.com/software/\n"
+"  \n"
+"examples :                              \n"
+"\n"
+"  Using pkbanner directly from the command line is not recommended,\n"
+"  excepted for testing purposes. You should use pkbanner in the\n"
+"  'startingbanner' or 'endingbanner' directives in pykota.conf\n"
+"  \n"
+"    startingbanner: /usr/bin/pkbanner --logo=\"\" --savetoner=75\n"
+"  \n"
+"      With such a setting in pykota.conf, all print jobs will be \n"
+"      prefixed with an A4 banner with no logo, and text luminosity will\n"
+"      be increased by 75%%. The PostScript output will be directly sent\n"
+"      to your printer.\n"
+"      \n"
+"  You'll find more examples in the sample configuration file included    \n"
+"  in PyKota.\n"
+msgstr ""
+
+msgid "Unknown"
+msgstr ""
+
+msgid "Username"
+msgstr ""
+
+msgid "More Info"
+msgstr ""
+
+msgid "Job"
+msgstr ""
+
+msgid "Date"
+msgstr "Data"
+
+msgid "Allowed"
+msgstr ""
+
+msgid "Denied"
+msgstr ""
+
+msgid "Allowed with Warning"
+msgstr ""
+
+msgid "Problem"
+msgstr ""
+
+msgid "Cancelled"
+msgstr ""
+
+msgid "Result"
+msgstr ""
+
+msgid "Title"
+msgstr "T�lo"
+
+msgid "Filename"
+msgstr "Nome do arquivo"
+
+#, python-format
+msgid "Pages printed so far on %s"
+msgstr ""
+
+msgid "Account balance"
+msgstr ""
+
+msgid "Soft Limit"
+msgstr ""
+
+msgid "Hard Limit"
+msgstr ""
+
+msgid "Date Limit"
+msgstr ""
+
+msgid "No Limit"
+msgstr ""
+
+msgid "No Accounting"
+msgstr ""
+
+msgid "Forbidden"
+msgstr ""
+
+msgid "Printing Mode"
+msgstr ""
+
+msgid "Allowed range is (0..99)"
+msgstr ""
+
+#, python-format
+msgid "Invalid 'savetoner' option %s : %s"
+msgstr ""
+
+#, python-format
+msgid "Invalid 'pagesize' option %s, defaulting to A4."
+msgstr ""
+
+#, python-format
+msgid ""
+"pkmail v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"Email gateway for PyKota.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pkmail  [options]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pkmail's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"    \n"
+"  This command is meant to be used from your mail server's aliases file,\n"
+"  as a pipe. It will then accept commands send to it in email messages,\n"
+"  and will send the answer to the command's originator.\n"
+"  \n"
+"  To use this command, create an email alias in /etc/aliases with\n"
+"  the following format :\n"
+"  \n"
+"    pykotacmd: \"|/usr/bin/pkmail\"\n"
+"    \n"
+"  Then run the 'newaliases' command to regenerate the aliases database.\n"
+"  \n"
+"  You can now send commands by email to 'pykotacmd@yourdomain.com', with\n"
+"  the command in the subject.\n"
+"  \n"
+"  List of supported commands :\n"
+"  \n"
+"        report [username]\n"
+"  \n"
+"  NB : For pkmail to work correctly, you may have to put the 'mail'\n"
+"  system user in the 'pykota' system group to ensure this user can\n"
+"  read the /etc/pykota/pykotadmin.conf file, and restart your\n"
+"  mail server (e.g. /etc/init.d/exim restart). It is strongly advised\n"
+"  that you think at least twice before doing this though.\n"
+"  \n"
+"  Use at your own risk !\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"pkturnkey v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"A turn key tool for PyKota. When launched, this command will initialize\n"
+"PyKota's database with all existing print queues and some or all users.\n"
+"For now, no prices or limits are set, so printing is fully accounted\n"
+"for, but not limited. That's why you'll probably want to also use\n"
+"edpykota once the database has been initialized.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pkturnkey [options] [printqueues names]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pkturnkey version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -c | --doconf        Give hints about what to put into pykota.conf\n"
+"  \n"
+"  -d | --dousers       Manages users accounts as well.\n"
+"  \n"
+"  -D | --dogroups      Manages users groups as well.\n"
+"                       Implies -d | --dousers.\n"
+"  \n"
+"  -e | --emptygroups   Includes empty groups.\n"
+"  \n"
+"  -f | --force         Modifies the database instead of printing what\n"
+"                       it would do.\n"
+"                       \n"
+"  -u | --uidmin uid    Only adds users whose uid is greater than or equal "
+"to\n"
+"                       uid. You can pass an username there as well, and its\n"
+"                       uid will be used automatically.\n"
+"                       If not set, 0 will be used automatically.\n"
+"                       Implies -d | --dousers.\n"
+"                       \n"
+"  -U | --uidmax uid    Only adds users whose uid is lesser than or equal to\n"
+"                       uid. You can pass an username there as well, and its\n"
+"                       uid will be used automatically.\n"
+"                       If not set, a large value will be used "
+"automatically.\n"
+"                       Implies -d | --dousers.\n"
+"\n"
+"  -g | --gidmin gid    Only adds groups whose gid is greater than or equal "
+"to\n"
+"                       gid. You can pass a groupname there as well, and its\n"
+"                       gid will be used automatically.\n"
+"                       If not set, 0 will be used automatically.\n"
+"                       Implies -D | --dogroups.\n"
+"                       \n"
+"  -G | --gidmax gid    Only adds groups whose gid is lesser than or equal "
+"to\n"
+"                       gid. You can pass a groupname there as well, and its\n"
+"                       gid will be used automatically.\n"
+"                       If not set, a large value will be used "
+"automatically.\n"
+"                       Implies -D | --dogroups.\n"
+"\n"
+"examples :                              \n"
+"\n"
+"  $ pkturnkey --dousers --uidmin jerome\n"
+"\n"
+"  Will simulate the initialization of PyKota's database will all existing\n"
+"  printers and print accounts for all users whose uid is greater than\n"
+"  or equal to jerome's one. Won't manage any users group.\n"
+"  \n"
+"  To REALLY initialize the database instead of simulating it, please\n"
+"  use the -f | --force command line switch.\n"
+"  \n"
+"  You can limit the initialization to only a subset of the existing\n"
+"  printers, by passing their names at the end of the command line.\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"Printer %s is not managed by PyKota yet. Please modify printers.conf and "
+"restart CUPS."
+msgstr ""
+
+msgid "You're not allowed to use this command."
+msgstr ""
+
+msgid "Please be patient..."
+msgstr ""
+
+msgid "Don't worry, the database WILL NOT BE MODIFIED."
+msgstr ""
+
+msgid "Please WORRY NOW, the database WILL BE MODIFIED."
+msgstr ""
+
+msgid "System users will have a print account as well !"
+msgstr ""
+
+#, python-format
+msgid "Unknown username %s : %s"
+msgstr ""
+
+msgid "System groups will have a print account as well !"
+msgstr ""
+
+#, python-format
+msgid "Unknown groupname %s : %s"
+msgstr ""
+
+msgid "Simulation terminated."
+msgstr ""
+
+msgid "Database initialized !"
+msgstr ""
+
+msgid "The --uidmin or --uidmax command line option implies --dousers as well."
+msgstr ""
+
+msgid ""
+"The --gidmin or --gidmax command line option implies --dogroups as well."
+msgstr ""
+
+msgid "The --dogroups command line option implies --dousers as well."
+msgstr ""
+
+#, python-format
+msgid ""
+"pykosd v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"An OSD quota monitor for PyKota.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pykosd [options]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pykosd's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -c | --color #rrggbb Sets the color to use for display as an hexadecimal\n"
+"                       triplet, for example #FF0000 is 100%% red.\n"
+"                       Defaults to 100%% green (#00FF00).\n"
+"                       \n"
+"  -d | --duration d    Sets the duration of the display in seconds. \n"
+"                       Defaults to 3 seconds.\n"
+"                       \n"
+"  -f | --font f        Sets the font to use for "
+"display.                      \n"
+"                       Defaults to the Python OSD library's default.\n"
+"  \n"
+"  -l | --loop n        Sets the number of times the info will be displayed.\n"
+"                       Defaults to 0, which means loop forever.\n"
+"                       \n"
+"  -s | --sleep s       Sets the sleeping duration between two displays \n"
+"                       in seconds. Defaults to 180 seconds (3 minutes).\n"
+"                       \n"
+"  \n"
+"examples :                              \n"
+"\n"
+"  $ pykosd -s 60 --loop 5\n"
+"  \n"
+"  Will launch pykosd. Display will be refreshed every 60 seconds,\n"
+"  and will last for 3 seconds (the default) each time. After five\n"
+"  iterations, the program will exit.\n"
+msgstr ""
+
+#, python-format
+msgid "Invalid duration option %s"
+msgstr "Op� %s inv�da para dura�"
+
+#, python-format
+msgid "Invalid loop option %s"
+msgstr "Op� %s inv�da para loop (la�"
+
+#, python-format
+msgid "Invalid sleep option %s"
+msgstr "Op� %s inv�da para sleep (sono)"
+
+#, python-format
+msgid "Invalid color option %s"
+msgstr "Op� %s inv�da para color (cor)"
+
+#, python-format
+msgid "User %s doesn't exist in PyKota's database"
+msgstr "Usu�o %s n�existe na base de dados do Pykota"
+
+#, python-format
+msgid "Pages used on %s : %s"
+msgstr "P�nas usadas em %s : %s"
+
+#, python-format
+msgid "PyKota Units left : %.2f"
+msgstr "Unidades restantes do PyKota : %.2f"
+
+msgid "Printing denied."
+msgstr ""
+
+msgid "Printing not limited."
+msgstr ""
+
+msgid "Printing not limited, no accounting."
+msgstr ""
+
+#, python-format
+msgid ""
+"repykota v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"Generates print quota reports.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  repykota [options] \n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints repykota's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -u | --users         Generates a report on users quota, this is \n"
+"                       the default.\n"
+"  \n"
+"  -g | --groups        Generates a report on group quota instead of users.\n"
+"  \n"
+"  -i | --ingroups g1[,g2...]  Only lists users who are members of these\n"
+"                              groups. Reserved to PyKota Administrators.\n"
+"  \n"
+"  -P | --printer p     Report quotas on this printer only. Actually p can\n"
+"                       use wildcards characters to select only\n"
+"                       some printers. The default value is *, meaning\n"
+"                       all printers.\n"
+"                       You can specify several names or wildcards, \n"
+"                       by separating them with commas.\n"
+"  \n"
+"examples :                              \n"
+"\n"
+"  $ repykota --printer lp\n"
+"  \n"
+"  This will print the quota status for all users who use the lp printer.\n"
+"\n"
+"  $ repykota \n"
+"  \n"
+"  This will print the quota status for all users on all printers.\n"
+"  \n"
+"  $ repykota --printer \"laser*,*pson\" jerome \"jo*\"\n"
+"  \n"
+"  This will print the quota status for user jerome and all users\n"
+"  whose name begins with \"jo\" on all printers which name begins\n"
+"  with \"laser\" or ends with \"pson\".\n"
+"  \n"
+"  If launched by an user who is not a PyKota administrator, additionnal\n"
+"  arguments representing users or groups names are ignored, and only the\n"
+"  current user/group is reported.\n"
+msgstr ""
+
+msgid "Option --ingroups is reserved to PyKota Administrators."
+msgstr ""
+
+#, python-format
+msgid "There's no printer matching %s"
+msgstr "Impressora %s n�encontrada"
+
+#, python-format
 msgid "SIGTERM received, job %s cancelled."
 msgstr "SIGTERM recebida, trabalho %s reiniciado."
@@ -65,8 +709,6 @@
 msgstr ""
 
-#, python-format
-msgid "Unable to precompute the job's size with the generic PDL analyzer : %s"
-msgstr ""
-"Imposs�l calcular tamanho da tarefa usando analisador gen�o de PDL : %s"
+msgid "Print job cancelled."
+msgstr ""
 
 #, python-format
@@ -216,4 +858,16 @@
 msgstr "Tarefa n�cont�nenhum dado. Impress�negada"
 
+msgid "Error in external policy script. Printing is denied."
+msgstr ""
+
+#, python-format
+msgid ""
+"Still no print quota entry for user %s on printer %s after external policy. "
+"Printing is denied."
+msgstr ""
+
+msgid "Printing is denied by printer policy."
+msgstr ""
+
 msgid "Job allowed by printer policy. No accounting will be done."
 msgstr ""
@@ -249,4 +903,7 @@
 msgstr ""
 
+msgid "Job cancelled, no accounting will be done."
+msgstr ""
+
 msgid "Job accounting begins."
 msgstr "In�o da contagem da tarefa."
@@ -255,10 +912,24 @@
 msgstr ""
 
+msgid "Job cancelled, no accounting has been done."
+msgstr ""
+
 msgid "Job accounting ends."
 msgstr "Fim da contagem da tarefa."
 
+msgid ""
+"Job size forced to 0 because the real CUPS backend failed. No accounting "
+"will be done."
+msgstr ""
+
+msgid "The real CUPS backend failed, but the job will be accounted for anyway."
+msgstr ""
+
 msgid "Job size forced to 0 because printing is denied."
 msgstr "Tamanho da tarefa zerado porque a impress�foi negada"
 
+msgid "Job size forced to 0 because printing was cancelled."
+msgstr ""
+
 #, python-format
 msgid "Job size : %i"
@@ -278,4 +949,545 @@
 #, python-format
 msgid "Billing code %s was updated."
+msgstr ""
+
+#, python-format
+msgid "Incorrect value for the 'onbackenderror' directive in section [%s]"
+msgstr ""
+
+#, python-format
+msgid "The real backend produced an error, we will try again in %s seconds."
+msgstr ""
+
+#, python-format
+msgid "Job %s interrupted by the administrator !"
+msgstr ""
+
+#, python-format
+msgid ""
+"pkbcodes v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"A billing codes Manager for PyKota.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pkbcodes [options] code1 code2 code3 ... codeN\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pkbcodes version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -a | --add           Adds billing codes if they don't exist in PyKota's\n"
+"                       database. If they exist, they are modified\n"
+"                       unless -s|--skipexisting is also used.\n"
+"\n"
+"  -d | --delete        Deletes billing codes from PyKota's database.\n"
+"                       NB : the history entries with this billing code\n"
+"                       are not deleted, voluntarily.\n"
+"\n"
+"  -D | --description d Adds a textual description to billing codes.\n"
+"\n"
+"  -l | --list          List informations about the billing codes.\n"
+"\n"
+"  -r | --reset         Resets the billing codes' balance and page counters\n"
+"                       to 0.\n"
+"\n"
+"  -s | --skipexisting  In combination with the --add option above, tells\n"
+"                       pkbcodes to not modify existing billing codes.\n"
+"\n"
+"  code1 through codeN can contain wildcards if the --add option\n"
+"  is not set.\n"
+"\n"
+"examples :                              \n"
+"\n"
+"  $ pkbcodes --add -D \"My project\" myproj\n"
+"\n"
+"  Will create the myproj billing code with \"My project\"\n"
+"  as the description.\n"
+"\n"
+"  $ pkbcodes --delete \"*\"\n"
+"\n"
+"  This will completely delete all the billing codes, but without\n"
+"  removing any matching job from the history. USE WITH CARE ANYWAY !\n"
+"  \n"
+"  $ pkbcodes --list \"my*\"\n"
+"  \n"
+"  This will list all billing codes which name begins with 'my'.\n"
+msgstr ""
+
+#, python-format
+msgid "There's no billingcode matching %s"
+msgstr ""
+
+msgid "pages"
+msgstr ""
+
+msgid "and"
+msgstr ""
+
+msgid "credits"
+msgstr ""
+
+#, python-format
+msgid "Billing code [%s] already exists, skipping."
+msgstr ""
+
+#, python-format
+msgid "Billing code [%s] already exists, will be modified."
+msgstr ""
+
+msgid "You have to pass billing codes on the command line"
+msgstr ""
+
+#, python-format
+msgid ""
+"pknotify v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"Notifies or ask questions to end users who launched the PyKotIcon "
+"application.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pknotify  [options]  [arguments]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version             Prints pkbanner's version number then exits.\n"
+"  -h | --help                Prints this message then exits.\n"
+"  \n"
+"  -d | --destination h[:p]   Sets the destination hostname and optional\n"
+"                             port onto which contact the remote PyKotIcon\n"
+"                             application. This option is mandatory.\n"
+"                             When not specified, the port defaults to 7654.\n"
+"                             \n"
+"  -a | --ask                 Tells pknotify to ask something to the end\n"
+"                             user. Then pknotify will output the result.\n"
+"                       \n"
+"  -C | --checkauth           When --ask is used and both an 'username' and "
+"a\n"
+"                             'password' are asked to the end user, then\n"
+"                             pknotify will try to authenticate the user\n"
+"                             through PAM. If authentified, this program\n"
+"                             will print \"AUTH=YES\", else \"AUTH=NO\".\n"
+"                             If a field is missing, \"AUTH=IMPOSSIBLE\" "
+"will\n"
+"                             be printed. If the user is authenticated, then\n"
+"                             \"USERNAME=xxxx\" will be printed as well.\n"
+"                             \n"
+"  -c | --confirm             Tells pknotify to ask for either a "
+"confirmation                       \n"
+"                             or abortion.\n"
+"                             \n"
+"  -D | --denyafter N         With --checkauth above, makes pknotify "
+"loop                           \n"
+"                             up to N times if the password is incorrect.\n"
+"                             After having reached the limit, \"DENY\" will\n"
+"                             be printed, which effectively rejects the job.\n"
+"                             The default value of N is 1, meaning the job\n"
+"                             is denied after the first unsuccessful try.\n"
+"                             \n"
+"  -n | --notify              Tells pknotify to send an informational "
+"message\n"
+"                             message to the end user.\n"
+"                             \n"
+"  -q | --quit                Tells pknotify to send a message asking the\n"
+"                             PyKotIcon application to exit. This option can\n"
+"                             be combined with the other ones to make "
+"PyKotIcon\n"
+"                             exit after having sent the answer from the "
+"dialog.\n"
+"                             \n"
+"  -t | --timeout T           Tells pknotify to ignore the end user's answer "
+"if\n"
+"                             it comes pas T seconds after the dialog box "
+"being\n"
+"                             opened. The default value is 0 seconds, which \n"
+"                             tells pknotify to wait indefinitely.\n"
+"                             Use this option to avoid having an user who\n"
+"                             leaved his computer stall a whole print queue.\n"
+"                             \n"
+"  You MUST specify either --ask, --confirm, --notify or --quit.\n"
+"\n"
+"  arguments :             \n"
+"  \n"
+"    -a | --ask : Several arguments are accepted, or the form\n"
+"                 \"label:varname:defaultvalue\". The result will\n"
+"                 be printed to stdout in the following format :\n"
+"                 VAR1NAME=VAR1VALUE\n"
+"                 VAR2NAME=VAR2VALUE\n"
+"                 ...\n"
+"                 If the dialog was cancelled, nothing will be\n"
+"                 printed. If one of the varname is 'password'\n"
+"                 then this field is asked as a password (you won't\n"
+"                 see what you type in), and is NOT printed. Although\n"
+"                 it is not printed, it will be used to check if\n"
+"                 authentication is valid if you specify --checkauth.\n"
+"                 \n"
+"    -c | --confirm : A single argument is expected, representing the\n"
+"                     message to display. If the dialog is confirmed\n"
+"                     then pknotify will print OK, else CANCEL.\n"
+"                     \n"
+"    -n | --notify : A single argument is expected, representing "
+"the                 \n"
+"                    message to display. In this case pknotify will\n"
+"                    always print OK.\n"
+"                    \n"
+"examples :                    \n"
+"\n"
+"  pknotify -d client:7654 --confirm \"This job costs :\n"
+"10 credits !\"\n"
+"  \n"
+"  Would display the cost of a print job and asks for confirmation.\n"
+"  \n"
+"  pknotify --destination $PYKOTAJOBORIGINATINGHOSTNAME:7654 \\\n"
+"           --checkauth --ask \"Your name:username:\" \"Your password:"
+"password:\"\n"
+"           \n"
+"  Asks an username and password, and checks if they are valid.         \n"
+"  NB : The PYKOTAJOBORIGINATINGHOSTNAME environment variable is\n"
+"  only set if you launch pknotify from cupspykota through a directive\n"
+"  in ~pykota/pykota.conf\n"
+"  \n"
+"  The TCP port you'll use must be reachable on the client from the\n"
+"  print server.\n"
+msgstr ""
+
+msgid "You MUST install PyPAM for this functionnality to work !"
+msgstr ""
+
+#, python-format
+msgid "Authentication error for user %s : %s"
+msgstr ""
+
+#, python-format
+msgid "Internal error : can't authenticate user %s"
+msgstr ""
+
+#, python-format
+msgid "Password correct for user %s"
+msgstr ""
+
+#, python-format
+msgid ""
+"The end user at %s:%i didn't answer within %i seconds. The print job will be "
+"cancelled."
+msgstr ""
+
+msgid "Connection error"
+msgstr ""
+
+msgid "some options are mandatory, see help."
+msgstr ""
+
+msgid "some options require arguments, see help."
+msgstr ""
+
+#, python-format
+msgid ""
+"pkusers v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"An Users and Groups Manager for PyKota.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pkusers [options] user1 user2 user3 ... userN\n"
+"  \n"
+"or :  \n"
+"\n"
+"  pkusers --groups [options] group1 group2 group3 ... groupN\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pkusers's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -a | --add           Adds users if they don't exist on the database.\n"
+"                       If they exist, they are modified unless\n"
+"                       -s|--skipexisting is also used.\n"
+"                       \n"
+"  -d | --delete        Deletes users from the quota storage.\n"
+"  \n"
+"  -D | --description d Adds a textual description to users or groups.\n"
+"                       \n"
+"  -g | --groups        Edit users groups instead of users.\n"
+"                          \n"
+"  -o | --overcharge f  Sets the overcharging factor applied to the user \n"
+"                       when computing the cost of a print job. Positive or \n"
+"                       negative floating point values are allowed,\n"
+"                       this allows you to do some really creative\n"
+"                       things like giving money to an user whenever\n"
+"                       he prints. The number of pages in a print job\n"
+"                       is not modified by this coefficient, only the\n"
+"                       cost of the job for a particular user.\n"
+"                       Only users have such a coefficient.\n"
+"  \n"
+"  -i | --ingroups g1[,g2...]  Puts the users into each of the groups\n"
+"                              listed, separated by commas. The groups\n"
+"                              must already exist in the Quota Storage.\n"
+"                       \n"
+"  -L | --list          Lists users or groups.\n"
+"  \n"
+"  -l | --limitby l     Choose if the user/group is limited in "
+"printing                     \n"
+"                       by its account balance or by its page quota.\n"
+"                       The default value is 'quota'. Allowed values\n"
+"                       are 'quota' 'balance' 'noquota' 'noprint' \n"
+"                       and 'nochange' :\n"
+"                       \n"
+"                         - quota : limit by number of pages per printer.\n"
+"                         - balance : limit by number of credits in account.\n"
+"                         - noquota : no limit, accounting still done.\n"
+"                         - nochange : no limit, accounting not done. \n"
+"                         - noprint : printing is denied. \n"
+"                       NB : nochange and noprint are not supported for "
+"groups.\n"
+"                       \n"
+"  -b | --balance b     Sets the user's account balance to "
+"b.                     \n"
+"                       Account balance may be increase or decreased\n"
+"                       if b is prefixed with + or -.\n"
+"                       WARNING : when decreasing account balance,\n"
+"                       the total paid so far by the user is decreased\n"
+"                       too.\n"
+"                       Groups don't have a real balance, but the\n"
+"                       sum of their users' account balance.\n"
+"                       \n"
+"  -C | --comment txt   Defines some informational text to be associated\n"
+"                       with a change to an user's account balance.\n"
+"                       Only meaningful if -b | --balance is also used.\n"
+"                       \n"
+"                       \n"
+"  -r | --remove        In combination with the --ingroups option "
+"above,                       \n"
+"                       remove users from the specified users groups.\n"
+"                       \n"
+"  -s | --skipexisting  In combination with the --add option above, tells\n"
+"                       pkusers to not modify existing users.\n"
+"                       \n"
+"  user1 through userN and group1 through groupN can use wildcards\n"
+"  if the --add option is not set.\n"
+"  \n"
+"examples :                              \n"
+"\n"
+"  $ pkusers --add john paul george ringo/ringo@example.com\n"
+"  \n"
+"  This will add users john, paul, george and ringo to the quota\n"
+"  database. User ringo's email address will also be set to \n"
+"  'ringo@example.com'\n"
+"  \n"
+"  $ pkusers --ingroups coders,it jerome\n"
+"  \n"
+"  User jerome is put into the groups \"coders\" and \"it\" which must\n"
+"  already exist in the quota database.\n"
+"            \n"
+"  $ pkusers --limitby balance jerome\n"
+"  \n"
+"  This will tell PyKota to limit jerome by his account's balance\n"
+"  when printing.\n"
+"  \n"
+"  $ pkusers --balance +10.0 --comment \"He paid with his blood !\" jerome\n"
+"  \n"
+"  This will increase jerome's account balance by 10.0 (in your\n"
+"  own currency). You can decrease the account balance with a\n"
+"  dash prefix, and set it to a fixed amount with no prefix.\n"
+"  A comment will be stored for this balance change.\n"
+"  \n"
+"  $ pkusers --delete jerome rachel\n"
+"  \n"
+"  This will completely delete jerome and rachel from the quota\n"
+"  database. All their quotas and jobs will be deleted too.\n"
+"  \n"
+"  $ pkusers --overcharge 2.5 poorstudent\n"
+"  \n"
+"  This will overcharge the poorstudent user by a factor of 2.5.\n"
+"  \n"
+"  $ pkusers --overcharge -1 jerome\n"
+"  \n"
+"  User jerome will actually earn money whenever he prints.\n"
+"  \n"
+"  $ pkusers --overcharge 0 boss\n"
+"  \n"
+"  User boss can print at will, it won't cost him anything because the\n"
+"  cost of each print job will be multiplied by zero before charging\n"
+"  his account.\n"
+msgstr ""
+
+#, python-format
+msgid "There's no %s matching %s"
+msgstr ""
+
+#, python-format
+msgid "Limited by : %s"
+msgstr ""
+
+#, python-format
+msgid "Account balance : %.2f"
+msgstr ""
+
+#, python-format
+msgid "Total paid so far : %.2f"
+msgstr ""
+
+#, python-format
+msgid "Overcharging factor : %.2f"
+msgstr ""
+
+#, python-format
+msgid "Group balance : %.2f"
+msgstr ""
+
+#, python-format
+msgid "Invalid limitby value %s"
+msgstr "Valor do limitby %s inv�do"
+
+#, python-format
+msgid "Invalid overcharge value %s"
+msgstr ""
+
+#, python-format
+msgid "Invalid balance value %s"
+msgstr "Valor da media %s inv�do"
+
+#, python-format
+msgid "There's no users group matching %s"
+msgstr ""
+
+#, python-format
+msgid "Invalid email address %s"
+msgstr "Endere�email inv�do"
+
+#, python-format
+msgid "Unknown group %s"
+msgstr ""
+
+#, python-format
+msgid "Unknown user %s"
+msgstr ""
+
+#, python-format
+msgid "%s %s already exists, skipping."
+msgstr ""
+
+#, python-format
+msgid "%s %s already exists, will be modified."
+msgstr ""
+
+#, python-format
+msgid "Invalid name %s"
+msgstr ""
+
+msgid "You have to pass user groups names on the command line"
+msgstr ""
+
+#, python-format
+msgid ""
+"pykotme v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"Gives print quotes to users.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pykotme  [options]  [files]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pykotme's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -P | --printer p     Gives a quote for this printer only. Actually p can\n"
+"                       use wildcards characters to select only\n"
+"                       some printers. The default value is *, meaning\n"
+"                       all printers.\n"
+"                       You can specify several names or wildcards, \n"
+"                       by separating them with commas.\n"
+"  \n"
+"examples :                              \n"
+"\n"
+"  $ pykotme --printer apple file1.ps file2.ps\n"
+"  \n"
+"  This will give a print quote to the current user. The quote will show\n"
+"  the price and size of a job consisting in file1.ps and file2.ps \n"
+"  which would be sent to the apple printer.\n"
+"  \n"
+"  $ pykotme --printer apple,hplaser <file1.ps\n"
+"  \n"
+"  This will give a print quote to the current user. The quote will show\n"
+"  the price and size of a job consisting in file1.ps as read from\n"
+"  standard input, which would be sent to the apple or hplaser\n"
+"  printer.\n"
+"\n"
+"  $ pykotme \n"
+"  \n"
+"  This will give a quote for a job consisting of what is on standard \n"
+"  input. The quote will list the job size, and the price the job\n"
+"  would cost on each printer.\n"
+msgstr ""
+
+#, python-format
+msgid "Your account balance : %.2f"
+msgstr "Balan�de sua conta : %.2f"
+
+#, python-format
+msgid "Job size : %i pages"
+msgstr "Tamanho do JOB : %i p�nas"
+
+#, python-format
+msgid "Cost on printer %s : %.2f"
+msgstr "Custo da impresora %s : %.2f"
+
+msgid "won't be charged, printer is in passthrough mode"
+msgstr ""
+
+msgid "won't be charged, your account is immutable"
+msgstr ""
+
+#, python-format
+msgid ""
+"warnpykota v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"Sends mail to users over print quota.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  warnpykota  [options]  [names]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints warnpykota's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -u | --users         Warns users over their print quota, this is the \n"
+"                       default.\n"
+"  \n"
+"  -g | --groups        Warns users whose groups quota are over limit.\n"
+"  \n"
+"  -P | --printer p     Verify quotas on this printer only. Actually p can\n"
+"                       use wildcards characters to select only\n"
+"                       some printers. The default value is *, meaning\n"
+"                       all printers.\n"
+"                       You can specify several names or wildcards, \n"
+"                       by separating them with commas.\n"
+"  \n"
+"examples :                              \n"
+"\n"
+"  $ warnpykota --printer lp\n"
+"  \n"
+"  This will warn all users of the lp printer who have exceeded their\n"
+"  print quota.\n"
+"\n"
+"  $ warnpykota \n"
+"  \n"
+"  This will warn all users  who have exceeded their print quota on\n"
+"  any printer.\n"
+"\n"
+"  $ warnpykota --groups --printer \"laserjet*\" \"dev*\"\n"
+"  \n"
+"  This will warn all users of groups which names begins with \"dev\" and\n"
+"  who have exceeded their print quota on any printer which name begins \n"
+"  with \"laserjet\"\n"
+"  \n"
+"  If launched by an user who is not a PyKota administrator, additionnal\n"
+"  arguments representing users or groups names are ignored, and only the\n"
+"  current user/group is reported.\n"
 msgstr ""
 
@@ -307,4 +1519,6 @@
 "                         - umembers : dumps user groups members.\n"
 "                         - billingcodes : dumps billing codes.\n"
+"                         - all : dumps all PyKota datas. The output format\n"
+"                                 is always XML in this case.\n"
 "                         \n"
 "                       NB : the -d | --data command line option   \n"
@@ -319,5 +1533,5 @@
 "                         - ssv : separate datas with semicolons\n"
 "                         - tsv : separate datas with tabs\n"
-"                         - xml : dump data as XML\n"
+"                         - xml : dump data as XML \n"
 "                         - cups : dump datas in CUPS' page_log format :\n"
 "                                  ONLY AVAILABLE WITH --data history\n"
@@ -379,456 +1593,15 @@
 #, python-format
 msgid ""
-"edpykota v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"A Print Quota editor for PyKota.\n"
+"pkinvoice v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"An invoice generator for PyKota.\n"
 "\n"
 "command line usage :\n"
 "\n"
-"  edpykota [options] user1 user2 ... userN\n"
-"  \n"
-"  edpykota [options] group1 group2 ... groupN\n"
+"  pkinvoice [options] user1 user2 ... userN\n"
 "\n"
 "options :\n"
 "\n"
 "  -v | --version       Prints edpykota's version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -a | --add           Adds users and/or printers if they don't \n"
-"                       exist on the Quota Storage Server.\n"
-"                       \n"
-"  -d | --delete        Deletes users/groups from the quota storage.\n"
-"                       Printers are never deleted.\n"
-"                       \n"
-"  -c | --charge p[,j]  Sets the price per page and per job to charge\n"
-"                       for a particular printer. Job price is optional.\n"
-"                       If both are to be set, separate them with a comma.\n"
-"                       Floating point values are allowed.\n"
-"                       \n"
-"  -o | --overcharge f  Sets the overcharging factor applied to the user \n"
-"                       when computing the cost of a print job. Positive or \n"
-"                       negative floating point values are allowed,\n"
-"                       this allows you to do some really creative\n"
-"                       things like giving money to an user whenever\n"
-"                       he prints. The number of pages in a print job\n"
-"                       is not modified by this coefficient, only the\n"
-"                       cost of the job for a particular user.\n"
-"                       Only users have a coefficient.\n"
-"  \n"
-"  -i | --ingroups g1[,g2...]  Puts the users into each of the groups\n"
-"                              listed, separated by commas. The groups\n"
-"                              must already exist in the Quota Storage.\n"
-"  \n"
-"  -u | --users         Edit users print quotas, this is the default.\n"
-"  \n"
-"  -P | --printer p     Edit quotas on printer p only. Actually p can\n"
-"                       use wildcards characters to select only\n"
-"                       some printers. The default value is *, meaning\n"
-"                       all printers. \n"
-"                       You can specify several names or wildcards, \n"
-"                       by separating them with commas.\n"
-"  \n"
-"  -G | --pgroups pg1[,pg2...] Adds the printer(s) to the printer groups\n"
-"                       pg1, pg2, etc... which must already exist.\n"
-"                       A printer group is just like a normal printer,\n"
-"                       only that it is usually unknown from the printing\n"
-"                       system. Create printer groups exactly the same\n"
-"                       way that you create printers, then add other \n"
-"                       printers to them with this option.\n"
-"                       Accounting is done on a printer and on all\n"
-"                       the printer groups it belongs to, quota checking\n"
-"                       is done on a printer and on all the printer groups\n"
-"                       it belongs to.\n"
-"  \n"
-"  -g | --groups        Edit users groups print quotas instead of users.\n"
-"                          \n"
-"  -p | --prototype u|g Uses user u or group g as a prototype to set\n"
-"                       print quotas\n"
-"                       \n"
-"  -n | --noquota       Sets both soft and hard limits to None for a\n"
-"                       particular print quota entry.\n"
-"                       This is NOT the same as --limitby noquota\n"
-"                       which acts on ALL print quota entries for a\n"
-"                       particular user.\n"
-"  \n"
-"  -r | --reset         Resets the actual page counter for the user\n"
-"                       or group to zero on the specified printers. \n"
-"                       The life time page counter is kept unchanged.\n"
-"                       \n"
-"  -R | --hardreset     Resets the actual and life time page counters\n"
-"                       for the user or group to zero on the specified \n"
-"                       printers. This is a shortcut for '--used 0'.\n"
-"                       \n"
-"  -l | --limitby l     Choose if the user/group is limited in "
-"printing                     \n"
-"                       by its account balance or by its page quota.\n"
-"                       The default value is 'quota'. Allowed values\n"
-"                       are 'quota' 'balance' 'noquota' 'noprint' \n"
-"                       and 'nochange' :\n"
-"                       \n"
-"                         - quota : limit by number of pages per printer.\n"
-"                         - balance : limit by number of credits in account.\n"
-"                         - noquota : no limit, accounting still done.\n"
-"                         - nochange : no limit, accounting not done. \n"
-"                         - noprint : printing is denied. \n"
-"                       NB : nochange and noprint are not supported for "
-"groups.\n"
-"                       \n"
-"  -b | --balance b     Sets the user's account balance to "
-"b.                     \n"
-"                       Account balance may be increase or decreased\n"
-"                       if b is prefixed with + or -.\n"
-"                       WARNING : when decreasing account balance,\n"
-"                       the total paid so far by the user is decreased\n"
-"                       too.\n"
-"                       Groups don't have a real balance, but the\n"
-"                       sum of their users' account balance.\n"
-"                       \n"
-"  -C | --comment txt   Defines some informational text to be associated\n"
-"                       with a change to an user's account balance.\n"
-"                       Only meaningful if -b | --balance is also used.\n"
-"                       \n"
-"  -S | --softlimit sl  Sets the quota soft limit to sl "
-"pages.                       \n"
-"  \n"
-"  -H | --hardlimit hl  Sets the quota hard limit to hl pages.\n"
-"  \n"
-"  -I | --increase v    Increase both Soft and Hard limits by the value\n"
-"                       of v. You can prefix v with + or -, if no sign is\n"
-"                       used, + is assumed.\n"
-"\n"
-"  -U | --used usage    Sets the pagecounters for the user to usage pages;\n"
-"                       useful for migrating users from a different system\n"
-"                       where they have already used some pages. Actual\n"
-"                       and Life Time page counters may be increased or "
-"decreased\n"
-"                       if usage is prefixed with + or -.\n"
-"                       WARNING : BOTH page counters are modified in all "
-"cases,\n"
-"                       so be careful.\n"
-"                       NB : if 'usage' equals '0', then the action taken is\n"
-"                       the same as if --hardreset was used.\n"
-"\n"
-"  user1 through userN and group1 through groupN can use wildcards\n"
-"  if the --add option is not set.\n"
-"  \n"
-"examples :                              \n"
-"\n"
-"  $ edpykota --add -p jerome john paul george ringo/ringo@example.com\n"
-"  \n"
-"  This will add users john, paul, george and ringo to the quota\n"
-"  database, and set their print quotas to the same values than user \n"
-"  jerome. User jerome must already exist.\n"
-"  User ringo's email address will also be set to 'ringo@example.com'\n"
-"  \n"
-"  $ edpykota --printer lp -S 50 -H 60 jerome\n"
-"  \n"
-"  This will set jerome's print quota on the lp printer to a soft limit\n"
-"  of 50 pages, and a hard limit of 60 pages. If either user jerome or\n"
-"  printer lp doesn't exist on the Quota Storage Server then nothing is "
-"done.\n"
-"\n"
-"  $ edpykota --add --printer lp --ingroups coders,it -S 50 -H 60 jerome\n"
-"  \n"
-"  Same as above, but if either user jerome or printer lp doesn't exist \n"
-"  on the Quota Storage Server they are automatically added. Also\n"
-"  user jerome is put into the groups \"coders\" and \"it\" which must\n"
-"  already exist in the Quota Storage.\n"
-"            \n"
-"  $ edpykota -g -S 500 -H 550 financial support            \n"
-"  \n"
-"  This will set print quota soft limit to 500 pages and hard limit\n"
-"  to 550 pages for groups financial and support on all printers.\n"
-"  \n"
-"  $ edpykota --reset jerome \"jo*\"\n"
-"  \n"
-"  This will reset jerome's page counter to zero on all printers, as\n"
-"  well as every user whose name begins with 'jo'.\n"
-"  Their life time page counter on each printer will be kept unchanged.\n"
-"  You can also reset the life time page counters by using the\n"
-"  --hardreset | -R command line option.\n"
-"  \n"
-"  $ edpykota --printer hpcolor --noquota jerome\n"
-"  \n"
-"  This will tell PyKota to not limit jerome when printing on the \n"
-"  hpcolor printer. All his jobs will be allowed on this printer, but \n"
-"  accounting of the pages he prints will still be kept.\n"
-"  Print Quotas for jerome on other printers are unchanged.\n"
-"  \n"
-"  $ edpykota --limitby balance jerome\n"
-"  \n"
-"  This will tell PyKota to limit jerome by his account's balance\n"
-"  when printing.\n"
-"  \n"
-"  $ edpykota --balance +10.0 jerome\n"
-"  \n"
-"  This will increase jerome's account balance by 10.0 (in your\n"
-"  own currency). You can decrease the account balance with a\n"
-"  dash prefix, and set it to a fixed amount with no prefix.\n"
-"  \n"
-"  $ edpykota --delete jerome rachel\n"
-"  \n"
-"  This will completely delete jerome and rachel from the Quota Storage\n"
-"  database. All their quotas and jobs will be deleted too.\n"
-"  \n"
-"  $ edpykota --printer lp --charge 0.1\n"
-"  \n"
-"  This will set the page price for printer lp to 0.1. Job price\n"
-"  will not be changed.\n"
-"  \n"
-"  $ edpykota --printer hplj1,hplj2 --pgroups Laser,HP\n"
-"  \n"
-"  This will put printers hplj1 and hplj2 in printers groups Laser and HP.\n"
-"  When printing either on hplj1 or hplj2, print quota will also be \n"
-"  checked and accounted for on virtual printers Laser and HP.\n"
-"  \n"
-"  $ edpykota --overcharge 2.5 poorstudent\n"
-"  \n"
-"  This will overcharge the poorstudent user by a factor of 2.5.\n"
-"  \n"
-"  $ edpykota --overcharge -1 jerome\n"
-"  \n"
-"  User jerome will actually earn money whenever he prints.\n"
-"  \n"
-"  $ edpykota --overcharge 0 boss\n"
-"  \n"
-"  User boss can print at will, it won't cost him anything because the\n"
-"  cost of each print job will be multiplied by zero before charging\n"
-"  his account.\n"
-msgstr ""
-
-msgid "You're not allowed to use this command."
-msgstr ""
-
-#, python-format
-msgid "Invalid limitby value %s"
-msgstr "Valor do limitby %s inv�do"
-
-#, python-format
-msgid "Invalid used value %s."
-msgstr ""
-
-#, python-format
-msgid "Invalid increase value %s."
-msgstr ""
-
-#, python-format
-msgid "Invalid softlimit value %s."
-msgstr "Valor incorreto para o limite %s."
-
-#, python-format
-msgid "Invalid hardlimit value %s."
-msgstr "Valor incorreto para o limite Maximo %s."
-
-#, python-format
-msgid "Hard limit %i is less than soft limit %i, values will be exchanged."
-msgstr "Limite maximo %i �enor que o limite %i, os valores ser�invertidos."
-
-#, python-format
-msgid "Invalid overcharge value %s"
-msgstr ""
-
-#, python-format
-msgid "Invalid balance value %s"
-msgstr "Valor da media %s inv�do"
-
-#, python-format
-msgid "Invalid charge amount value %s"
-msgstr "Valor de carga: %s inv�do"
-
-#, python-format
-msgid "Impossible to add printer %s"
-msgstr "Imposivel adicionar impressora %s"
-
-#, python-format
-msgid "Invalid printer name %s"
-msgstr "Nome de impressora %s inv�do"
-
-#, python-format
-msgid "There's no printer matching %s"
-msgstr "Impressora %s n�encontrada"
-
-msgid "You have to pass user or group names on the command line"
-msgstr "Voce deve informar usuario ou grupo na linha de comando"
-
-#, python-format
-msgid "Prototype object %s not found in Quota Storage."
-msgstr "Objeto Prototipo %s n�encontrado no banco de dados."
-
-#, python-format
-msgid "Prototype %s not found in Quota Storage for printer %s."
-msgstr "Prototipo %s n�encontrado no banco dedados para a impressora %s."
-
-#, python-format
-msgid "Undefined hard limit set to soft limit (%s) on printer %s."
-msgstr ""
-"O limite maximo invalido, configurando o limite minimo (%s) na impressora %s."
-
-#, python-format
-msgid "Undefined soft limit set to hard limit (%s) on printer %s."
-msgstr "Limite indefinido, configurando a l�te maximo (%s) na impressora %s."
-
-#, python-format
-msgid "Invalid email address %s"
-msgstr "Endere�email inv�do"
-
-#, python-format
-msgid "Unknown group %s"
-msgstr ""
-
-#, python-format
-msgid "Unknown user %s"
-msgstr ""
-
-#, python-format
-msgid "Invalid group name %s"
-msgstr "O nome do grupo %s �nv�do"
-
-#, python-format
-msgid "Invalid user name %s"
-msgstr "O nome de usuario %s �nv�do"
-
-#, python-format
-msgid "Quota not found for object %s on printer %s."
-msgstr "Quota n�encontrada para o objeto %s para a impressora %s."
-
-#, python-format
-msgid "You can't increase limits by %s when no limit is set."
-msgstr ""
-
-msgid "You can't set negative limits."
-msgstr ""
-
-#, python-format
-msgid "Group %s not found in the PyKota Storage."
-msgstr "Grupo %s n�encontrado no banco de dados."
-
-#, python-format
-msgid "Nonexistent user %s or missing print quota entry."
-msgstr ""
-
-#, python-format
-msgid "Nonexistent group %s or missing print quota entry."
-msgstr ""
-
-msgid "incompatible options, see help."
-msgstr "O�s incompativeis, veja a ajuda."
-
-#, python-format
-msgid ""
-"repykota v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"Generates print quota reports.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  repykota [options] \n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints repykota's version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -u | --users         Generates a report on users quota, this is \n"
-"                       the default.\n"
-"  \n"
-"  -g | --groups        Generates a report on group quota instead of users.\n"
-"  \n"
-"  -i | --ingroups g1[,g2...]  Only lists users who are members of these\n"
-"                              groups. Reserved to PyKota Administrators.\n"
-"  \n"
-"  -P | --printer p     Report quotas on this printer only. Actually p can\n"
-"                       use wildcards characters to select only\n"
-"                       some printers. The default value is *, meaning\n"
-"                       all printers.\n"
-"                       You can specify several names or wildcards, \n"
-"                       by separating them with commas.\n"
-"  \n"
-"examples :                              \n"
-"\n"
-"  $ repykota --printer lp\n"
-"  \n"
-"  This will print the quota status for all users who use the lp printer.\n"
-"\n"
-"  $ repykota \n"
-"  \n"
-"  This will print the quota status for all users on all printers.\n"
-"  \n"
-"  $ repykota --printer \"laser*,*pson\" jerome \"jo*\"\n"
-"  \n"
-"  This will print the quota status for user jerome and all users\n"
-"  whose name begins with \"jo\" on all printers which name begins\n"
-"  with \"laser\" or ends with \"pson\".\n"
-"  \n"
-"  If launched by an user who is not a PyKota administrator, additionnal\n"
-"  arguments representing users or groups names are ignored, and only the\n"
-"  current user/group is reported.\n"
-msgstr ""
-
-msgid "Option --ingroups is reserved to PyKota Administrators."
-msgstr ""
-
-#, python-format
-msgid ""
-"warnpykota v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"Sends mail to users over print quota.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  warnpykota  [options]  [names]\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints warnpykota's version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -u | --users         Warns users over their print quota, this is the \n"
-"                       default.\n"
-"  \n"
-"  -g | --groups        Warns users whose groups quota are over limit.\n"
-"  \n"
-"  -P | --printer p     Verify quotas on this printer only. Actually p can\n"
-"                       use wildcards characters to select only\n"
-"                       some printers. The default value is *, meaning\n"
-"                       all printers.\n"
-"                       You can specify several names or wildcards, \n"
-"                       by separating them with commas.\n"
-"  \n"
-"examples :                              \n"
-"\n"
-"  $ warnpykota --printer lp\n"
-"  \n"
-"  This will warn all users of the lp printer who have exceeded their\n"
-"  print quota.\n"
-"\n"
-"  $ warnpykota \n"
-"  \n"
-"  This will warn all users  who have exceeded their print quota on\n"
-"  any printer.\n"
-"\n"
-"  $ warnpykota --groups --printer \"laserjet*\" \"dev*\"\n"
-"  \n"
-"  This will warn all users of groups which names begins with \"dev\" and\n"
-"  who have exceeded their print quota on any printer which name begins \n"
-"  with \"laserjet\"\n"
-"  \n"
-"  If launched by an user who is not a PyKota administrator, additionnal\n"
-"  arguments representing users or groups names are ignored, and only the\n"
-"  current user/group is reported.\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"pkbanner v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"Generates banners.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  pkbanner  [options]  [more info]\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints pkbanner's version number then exits.\n"
 "  -h | --help          Prints this message then exits.\n"
 "  \n"
@@ -840,212 +1613,95 @@
 "                       page sizes are recognized, like 'A4' or 'Letter'\n"
 "                       to name a few. The default size is A4.\n"
-"  \n"
-"  -s | --savetoner s   Sets the text luminosity factor to s%%. This can be \n"
-"                       used to save toner. The default value is 0, which\n"
-"                       means that no toner saving will be done.\n"
-"  \n"
-"  -u | --url u         Uses u as an url to be written at the bottom of \n"
-"                       the banner page. The default url is :\n"
-"                       http://www.librelogiciel.com/software/\n"
-"  \n"
-"examples :                              \n"
-"\n"
-"  Using pkbanner directly from the command line is not recommended,\n"
-"  excepted for testing purposes. You should use pkbanner in the\n"
-"  'startingbanner' or 'endingbanner' directives in pykota.conf\n"
-"  \n"
-"    startingbanner: /usr/bin/pkbanner --logo=\"\" --savetoner=75\n"
-"  \n"
-"      With such a setting in pykota.conf, all print jobs will be \n"
-"      prefixed with an A4 banner with no logo, and text luminosity will\n"
-"      be increased by 75%%. The PostScript output will be directly sent\n"
-"      to your printer.\n"
-"      \n"
-"  You'll find more examples in the sample configuration file included    \n"
-"  in PyKota.\n"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "Username"
-msgstr ""
-
-msgid "More Info"
-msgstr ""
-
-msgid "Job"
-msgstr ""
-
-msgid "Date"
-msgstr "Data"
-
-msgid "Allowed"
-msgstr ""
-
-msgid "Denied"
-msgstr ""
-
-msgid "Allowed with Warning"
-msgstr ""
-
-msgid "Result"
-msgstr ""
-
-msgid "Title"
-msgstr "T�lo"
-
-msgid "Filename"
-msgstr "Nome do arquivo"
-
-#, python-format
-msgid "Pages printed so far on %s"
-msgstr ""
-
-msgid "Account balance"
-msgstr ""
-
-msgid "Soft Limit"
-msgstr ""
-
-msgid "Hard Limit"
-msgstr ""
-
-msgid "Date Limit"
-msgstr ""
-
-msgid "Allowed range is (0..99)"
-msgstr ""
-
-#, python-format
-msgid "Invalid 'savetoner' option %s : %s"
-msgstr ""
-
-#, python-format
-msgid "Invalid 'pagesize' option %s, defaulting to A4."
-msgstr ""
-
-#, python-format
-msgid ""
-"pkbcodes v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"A billing codes Manager for PyKota.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  pkbcodes [options] code1 code2 code3 ... codeN\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints pkbcodes version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -a | --add           Adds billing codes if they don't exist in PyKota's\n"
-"                       database. If they exist, they are modified\n"
-"                       unless -s|--skipexisting is also used.\n"
-"\n"
-"  -d | --delete        Deletes billing codes from PyKota's database.\n"
-"                       NB : the history entries with this billing code\n"
-"                       are not deleted, voluntarily.\n"
-"\n"
-"  -D | --description d Adds a textual description to billing codes.\n"
-"\n"
-"  -l | --list          List informations about the billing codes.\n"
-"\n"
-"  -r | --reset         Resets the billing codes' balance and page counters\n"
-"                       to 0.\n"
-"\n"
-"  -s | --skipexisting  In combination with the --add option above, tells\n"
-"                       pkbcodes to not modify existing billing codes.\n"
-"\n"
-"  code1 through codeN can contain wildcards if the --add option\n"
-"  is not set.\n"
-"\n"
-"examples :                              \n"
-"\n"
-"  $ pkbcodes --add -D \"My project\" myproj\n"
-"\n"
-"  Will create the myproj billing code with \"My project\"\n"
-"  as the description.\n"
-"\n"
-"  $ pkbcodes --delete \"*\"\n"
-"\n"
-"  This will completely delete all the billing codes, but without\n"
-"  removing any matching job from the history. USE WITH CARE ANYWAY !\n"
-"  \n"
-"  $ pkbcodes --list \"my*\"\n"
-"  \n"
-"  This will list all billing codes which name begins with 'my'.\n"
-msgstr ""
-
-#, python-format
-msgid "Billing code [%s] already exists, skipping."
-msgstr ""
-
-#, python-format
-msgid "Billing code [%s] already exists, will be modified."
-msgstr ""
-
-#, python-format
-msgid "Impossible to add billingcode %s"
-msgstr ""
-
-#, python-format
-msgid "There's no billingcode matching %s"
-msgstr ""
-
-msgid "pages"
-msgstr ""
-
-msgid "and"
-msgstr ""
-
-msgid "credits"
-msgstr ""
-
-msgid "You have to pass billing codes on the command line"
-msgstr ""
-
-#, python-format
-msgid ""
-"pkmail v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"Email gateway for PyKota.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  pkmail  [options]\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints pkmail's version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"    \n"
-"  This command is meant to be used from your mail server's aliases file,\n"
-"  as a pipe. It will then accept commands send to it in email messages,\n"
-"  and will send the answer to the command's originator.\n"
-"  \n"
-"  To use this command, create an email alias in /etc/aliases with\n"
-"  the following format :\n"
-"  \n"
-"    pykotacmd: \"|/usr/bin/pkmail\"\n"
-"    \n"
-"  Then run the 'newaliases' command to regenerate the aliases database.\n"
-"  \n"
-"  You can now send commands by email to 'pykotacmd@yourdomain.com', with\n"
-"  the command in the subject.\n"
-"  \n"
-"  List of supported commands :\n"
-"  \n"
-"        report [username]\n"
-"  \n"
-"  NB : For pkmail to work correctly, you may have to put the 'mail'\n"
-"  system user in the 'pykota' system group to ensure this user can\n"
-"  read the /etc/pykota/pykotadmin.conf file, and restart your\n"
-"  mail server (e.g. /etc/init.d/exim restart). It is strongly advised\n"
-"  that you think at least twice before doing this though.\n"
-"  \n"
-"  Use at your own risk !\n"
+"                       \n"
+"  -n | --number N      Sets the number of the first invoice. This number\n"
+"                       will automatically be incremented for each invoice.\n"
+"                       \n"
+"  -o | --output f.pdf  Defines the name of the invoice file which will\n"
+"                       be generated as a PDF document. If not set or\n"
+"                       set to '-', the PDF document is sent to standard\n"
+"                       output. \n"
+"                       \n"
+"  -u | --unit u        Defines the name of the unit to use on the "
+"invoice.                       \n"
+"                       The default unit is 'Credits', optionally translated\n"
+"                       to your native language if it is supported by "
+"PyKota.\n"
+"  \n"
+"  -V | --vat p         Sets the percent value of the applicable VAT to be\n"
+"                       exposed. The default is 0.0, meaning no VAT\n"
+"                       information will be included.\n"
+"                       \n"
+"  -s | --start date    Sets the starting date for the print jobs invoiced.\n"
+"  \n"
+"  -e | --end date      Sets the ending date for the print jobs invoiced.\n"
+"                       \n"
+"  user1 through userN can use wildcards if needed. If no user argument is\n"
+"  used, a wildcard of '*' is assumed, meaning include all users.\n"
+"  \n"
+"  Dates formating with --start and --end :\n"
+"  \n"
+"    YYYY : year boundaries\n"
+"    YYYYMM : month boundaries\n"
+"    YYYYMMDD : day boundaries\n"
+"    YYYYMMDDhh : hour boundaries\n"
+"    YYYYMMDDhhmm : minute boundaries\n"
+"    YYYYMMDDhhmmss : second boundaries\n"
+"    yesterday[+-NbDays] : yesterday more or less N days (e.g. : yesterday-"
+"15)\n"
+"    today[+-NbDays] : today more or less N days (e.g. : today-15)\n"
+"    tomorrow[+-NbDays] : tomorrow more or less N days (e.g. : tomorrow-15)\n"
+"    now[+-NbDays] : now more or less N days (e.g. now-15)\n"
+"\n"
+"  'now' and 'today' are not exactly the same since today represents the "
+"first\n"
+"  or last second of the day depending on if it's used in a start= or end=\n"
+"  date expression. The utility to be able to specify dates in the future is\n"
+"  a question which remains to be answered :-)\n"
+"                                        \n"
+"examples :                       \n"
+"\n"
+"  $ pkinvoice --unit EURO --output invoices.pdf --start=now-30\n"
+"  \n"
+"  Will generate a PDF document containing invoices for all users\n"
+"  who have spent some credits last month. Invoices will be done in\n"
+"  EURO.  No VAT information will be included.\n"
+msgstr ""
+
+msgid "Invoice"
+msgstr ""
+
+msgid "Since"
+msgstr ""
+
+msgid "Until"
+msgstr ""
+
+msgid "Edited on"
+msgstr ""
+
+msgid "Number of pages printed"
+msgstr ""
+
+msgid "Amount due"
+msgstr ""
+
+msgid "Included VAT"
+msgstr ""
+
+msgid "Here's the invoice for your printouts"
+msgstr ""
+
+#, python-format
+msgid "Incorrect value '%s' for the --vat command line option"
+msgstr ""
+
+#, python-format
+msgid "Incorrect value '%s' for the --number command line option"
+msgstr ""
+
+msgid "Generating invoices"
+msgstr ""
+
+msgid "Credits"
 msgstr ""
 
@@ -1148,4 +1804,21 @@
 
 #, python-format
+msgid "Passthrough mode : %s"
+msgstr ""
+
+msgid "ON"
+msgstr ""
+
+msgid "OFF"
+msgstr ""
+
+msgid "in"
+msgstr "em"
+
+#, python-format
+msgid "Invalid charge amount value %s"
+msgstr "Valor de carga: %s inv�do"
+
+#, python-format
 msgid "Invalid maximum job size value %s"
 msgstr ""
@@ -1159,27 +1832,7 @@
 msgstr "Impressora %s j�xiste. Ser�eita uma modifica�."
 
-msgid "in"
-msgstr "em"
-
-#, python-format
-msgid "Passthrough mode : %s"
-msgstr ""
-
-msgid "ON"
-msgstr ""
-
-msgid "OFF"
-msgstr ""
-
-#, python-format
-msgid "Maximum job size : %s"
-msgstr ""
-
-#, python-format
-msgid "%s pages"
-msgstr ""
-
-msgid "Unlimited"
-msgstr ""
+#, python-format
+msgid "Invalid printer name %s"
+msgstr "Nome de impressora %s inv�do"
 
 msgid "You have to pass printer groups names on the command line"
@@ -1191,357 +1844,4 @@
 
 #, python-format
-msgid ""
-"pkturnkey v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"A turn key tool for PyKota. When launched, this command will initialize\n"
-"PyKota's database with all existing print queues and some or all users.\n"
-"For now, no prices or limits are set, so printing is fully accounted\n"
-"for, but not limited. That's why you'll probably want to also use\n"
-"edpykota once the database has been initialized.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  pkturnkey [options] [printqueues names]\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints pkturnkey version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -c | --doconf        Give hints about what to put into pykota.conf\n"
-"  \n"
-"  -d | --dousers       Manages users accounts as well.\n"
-"  \n"
-"  -D | --dogroups      Manages users groups as well.\n"
-"                       Implies -d | --dousers.\n"
-"  \n"
-"  -e | --emptygroups   Includes empty groups.\n"
-"  \n"
-"  -f | --force         Modifies the database instead of printing what\n"
-"                       it would do.\n"
-"                       \n"
-"  -u | --uidmin uid    Only adds users whose uid is greater than or equal "
-"to\n"
-"                       uid. You can pass an username there as well, and its\n"
-"                       uid will be used automatically.\n"
-"                       If not set, 0 will be used automatically.\n"
-"                       Implies -d | --dousers.\n"
-"                       \n"
-"  -U | --uidmax uid    Only adds users whose uid is lesser than or equal to\n"
-"                       uid. You can pass an username there as well, and its\n"
-"                       uid will be used automatically.\n"
-"                       If not set, a large value will be used "
-"automatically.\n"
-"                       Implies -d | --dousers.\n"
-"\n"
-"  -g | --gidmin gid    Only adds groups whose gid is greater than or equal "
-"to\n"
-"                       gid. You can pass a groupname there as well, and its\n"
-"                       gid will be used automatically.\n"
-"                       If not set, 0 will be used automatically.\n"
-"                       Implies -D | --dogroups.\n"
-"                       \n"
-"  -G | --gidmax gid    Only adds groups whose gid is lesser than or equal "
-"to\n"
-"                       gid. You can pass a groupname there as well, and its\n"
-"                       gid will be used automatically.\n"
-"                       If not set, a large value will be used "
-"automatically.\n"
-"                       Implies -D | --dogroups.\n"
-"\n"
-"examples :                              \n"
-"\n"
-"  $ pkturnkey --dousers --uidmin jerome\n"
-"\n"
-"  Will simulate the initialization of PyKota's database will all existing\n"
-"  printers and print accounts for all users whose uid is greater than\n"
-"  or equal to jerome's one. Won't manage any users group.\n"
-"  \n"
-"  To REALLY initialize the database instead of simulating it, please\n"
-"  use the -f | --force command line switch.\n"
-"  \n"
-"  You can limit the initialization to only a subset of the existing\n"
-"  printers, by passing their names at the end of the command line.\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"Printer %s is not managed by PyKota yet. Please modify printers.conf and "
-"restart CUPS."
-msgstr ""
-
-msgid "Please be patient..."
-msgstr ""
-
-msgid "Don't worry, the database WILL NOT BE MODIFIED."
-msgstr ""
-
-msgid "Please WORRY NOW, the database WILL BE MODIFIED."
-msgstr ""
-
-msgid "System users will have a print account as well !"
-msgstr ""
-
-#, python-format
-msgid "Unknown username %s : %s"
-msgstr ""
-
-msgid "System groups will have a print account as well !"
-msgstr ""
-
-#, python-format
-msgid "Unknown groupname %s : %s"
-msgstr ""
-
-msgid "Simulation terminated."
-msgstr ""
-
-msgid "Database initialized !"
-msgstr ""
-
-msgid "The --uidmin or --uidmax command line option implies --dousers as well."
-msgstr ""
-
-msgid ""
-"The --gidmin or --gidmax command line option implies --dogroups as well."
-msgstr ""
-
-msgid "The --dogroups command line option implies --dousers as well."
-msgstr ""
-
-#, python-format
-msgid ""
-"pykosd v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"An OSD quota monitor for PyKota.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  pykosd [options]\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints pykosd's version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -c | --color #rrggbb Sets the color to use for display as an hexadecimal\n"
-"                       triplet, for example #FF0000 is 100%% red.\n"
-"                       Defaults to 100%% green (#00FF00).\n"
-"                       \n"
-"  -d | --duration d    Sets the duration of the display in seconds. \n"
-"                       Defaults to 3 seconds.\n"
-"                       \n"
-"  -f | --font f        Sets the font to use for "
-"display.                      \n"
-"                       Defaults to the Python OSD library's default.\n"
-"  \n"
-"  -l | --loop n        Sets the number of times the info will be displayed.\n"
-"                       Defaults to 0, which means loop forever.\n"
-"                       \n"
-"  -s | --sleep s       Sets the sleeping duration between two displays \n"
-"                       in seconds. Defaults to 180 seconds (3 minutes).\n"
-"                       \n"
-"  \n"
-"examples :                              \n"
-"\n"
-"  $ pykosd -s 60 --loop 5\n"
-"  \n"
-"  Will launch pykosd. Display will be refreshed every 60 seconds,\n"
-"  and will last for 3 seconds (the default) each time. After five\n"
-"  iterations, the program will exit.\n"
-msgstr ""
-
-#, python-format
-msgid "Invalid duration option %s"
-msgstr "Op� %s inv�da para dura�"
-
-#, python-format
-msgid "Invalid loop option %s"
-msgstr "Op� %s inv�da para loop (la�"
-
-#, python-format
-msgid "Invalid sleep option %s"
-msgstr "Op� %s inv�da para sleep (sono)"
-
-#, python-format
-msgid "Invalid color option %s"
-msgstr "Op� %s inv�da para color (cor)"
-
-#, python-format
-msgid "User %s doesn't exist in PyKota's database"
-msgstr "Usu�o %s n�existe na base de dados do Pykota"
-
-#, python-format
-msgid "Pages used on %s : %s"
-msgstr "P�nas usadas em %s : %s"
-
-#, python-format
-msgid "PyKota Units left : %.2f"
-msgstr "Unidades restantes do PyKota : %.2f"
-
-#, python-format
-msgid ""
-"pykotme v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"Gives print quotes to users.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  pykotme  [options]  [files]\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints pykotme's version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -P | --printer p     Gives a quote for this printer only. Actually p can\n"
-"                       use wildcards characters to select only\n"
-"                       some printers. The default value is *, meaning\n"
-"                       all printers.\n"
-"                       You can specify several names or wildcards, \n"
-"                       by separating them with commas.\n"
-"  \n"
-"examples :                              \n"
-"\n"
-"  $ pykotme --printer apple file1.ps file2.ps\n"
-"  \n"
-"  This will give a print quote to the current user. The quote will show\n"
-"  the price and size of a job consisting in file1.ps and file2.ps \n"
-"  which would be sent to the apple printer.\n"
-"  \n"
-"  $ pykotme --printer apple,hplaser <file1.ps\n"
-"  \n"
-"  This will give a print quote to the current user. The quote will show\n"
-"  the price and size of a job consisting in file1.ps as read from\n"
-"  standard input, which would be sent to the apple or hplaser\n"
-"  printer.\n"
-"\n"
-"  $ pykotme \n"
-"  \n"
-"  This will give a quote for a job consisting of what is on standard \n"
-"  input. The quote will list the job size, and the price the job\n"
-"  would cost on each printer.\n"
-msgstr ""
-
-#, python-format
-msgid "Your account balance : %.2f"
-msgstr "Balan�de sua conta : %.2f"
-
-#, python-format
-msgid "Job size : %i pages"
-msgstr "Tamanho do JOB : %i p�nas"
-
-#, python-format
-msgid "Cost on printer %s : %.2f"
-msgstr "Custo da impresora %s : %.2f"
-
-msgid "PyKota Data Dumper"
-msgstr ""
-
-msgid "Dump"
-msgstr ""
-
-msgid "Please click on the above button"
-msgstr ""
-
-msgid "Data Type"
-msgstr ""
-
-msgid "Output Format"
-msgstr ""
-
-msgid "Filter"
-msgstr ""
-
-msgid "Summarize"
-msgstr ""
-
-msgid "only for payments or history"
-msgstr ""
-
-msgid "PyKota Reports"
-msgstr "Relat� do Pykota"
-
-msgid "Report"
-msgstr "Relat�"
-
-msgid "Printer"
-msgstr "Impressora"
-
-msgid "User / Group names mask"
-msgstr "M�ara de nomes para Usu�os / Grupos"
-
-msgid "Groups report"
-msgstr "Relat� de Grupos"
-
-msgid "History"
-msgstr "Hist�o"
-
-msgid "Empty"
-msgstr "Vazio"
-
-msgid "Action"
-msgstr "A�"
-
-msgid "User"
-msgstr "Usu�o"
-
-msgid "Hostname"
-msgstr "Nome do computador"
-
-msgid "JobId"
-msgstr "Id da Tarefa"
-
-msgid "Number of pages"
-msgstr ""
-
-msgid "Cost"
-msgstr ""
-
-msgid "Copies"
-msgstr "C�s"
-
-msgid "Number of bytes"
-msgstr ""
-
-msgid "Printer's internal counter"
-msgstr ""
-
-msgid "Options"
-msgstr "Op�s"
-
-msgid "MD5Sum"
-msgstr ""
-
-msgid "Billing code"
-msgstr ""
-
-msgid "Precomputed number of pages"
-msgstr ""
-
-msgid "Precomputed cost"
-msgstr ""
-
-msgid "Pages details"
-msgstr ""
-
-msgid "(not supported yet)"
-msgstr ""
-
-msgid "Previous page"
-msgstr "P�na anterior"
-
-msgid "PyKota Quotes"
-msgstr ""
-
-msgid "Quote"
-msgstr ""
-
-msgid ""
-"The exact cost of a print job can only be determined for a particular user. "
-"Please retry while logged-in."
-msgstr ""
-
-#, python-format
 msgid "Unsupported accounter backend %s"
 msgstr "Accounter Backend %s n�suportado"
@@ -1574,4 +1874,12 @@
 
 #, python-format
+msgid "Invalid preaccounter %s for printer %s"
+msgstr ""
+
+#, python-format
+msgid "Option preaccounter in section %s only supports values in %s"
+msgstr ""
+
+#, python-format
 msgid "Invalid accounter %s for printer %s"
 msgstr "Contador de p�nas %s inv�do, para a impressora %s"
@@ -1594,4 +1902,10 @@
 
 #, python-format
+msgid ""
+"Option onbackenderror in section %s only supports values 'charge', "
+"'nocharge', and 'retry:num:delay'"
+msgstr ""
+
+#, python-format
 msgid "Option onaccountererror in section %s only supports values in %s"
 msgstr ""
@@ -1620,4 +1934,8 @@
 msgid "Invalid poor man's threshold %s"
 msgstr "Valor 'poor man' %s inv�do"
+
+#, python-format
+msgid "Invalid balancezero value %s"
+msgstr ""
 
 msgid ""
@@ -1648,4 +1966,8 @@
 
 #, python-format
+msgid "Incorrect value %s for the duplicatesdelay directive in section %s"
+msgstr ""
+
+#, python-format
 msgid "Option accountbanner in section %s only supports values in %s"
 msgstr ""
@@ -1655,4 +1977,7 @@
 msgstr ""
 
+msgid "History"
+msgstr "Hist�o"
+
 msgid "Users"
 msgstr ""
@@ -1682,4 +2007,7 @@
 msgstr ""
 
+msgid "All"
+msgstr ""
+
 msgid "Comma Separated Values"
 msgstr ""
@@ -1698,9 +2026,14 @@
 
 #, python-format
+msgid "Invalid modifier [%s] for --data command line option, see help."
+msgstr ""
+
+msgid ""
+"Dumping all PyKota's datas forces format to XML, and disables --sum and "
+"filters."
+msgstr ""
+
+#, python-format
 msgid "Invalid filter value [%s], see help."
-msgstr ""
-
-#, python-format
-msgid "Invalid modifier [%s] for --data command line option, see help."
 msgstr ""
 
@@ -1771,4 +2104,13 @@
 msgstr "o banco de dados: %s  n�suportado"
 
+msgid "Done"
+msgstr ""
+
+msgid "Average speed"
+msgstr ""
+
+msgid "entries per second"
+msgstr ""
+
 #, python-format
 msgid "Strange problem with uid(%s) : %s"
@@ -1844,118 +2186,4 @@
 msgid "Print Quota Low"
 msgstr "Quota de impress�baixa"
-
-#, python-format
-msgid "A problem occured while reading printer %s's internal page counter."
-msgstr ""
-
-#, python-format
-msgid "Retrieving printer %s's page counter from database instead."
-msgstr ""
-
-#, python-format
-msgid ""
-"Couldn't retrieve printer %s's internal page counter either before or after "
-"printing."
-msgstr ""
-
-#, python-format
-msgid "Job's size forced to 1 page for printer %s."
-msgstr ""
-
-#, python-format
-msgid "No previous job in database for printer %s."
-msgstr ""
-
-#, python-format
-msgid "Inconsistent values for printer %s's internal page counter."
-msgstr ""
-
-#, python-format
-msgid "Unknown printer address in HARDWARE(%s) for printer %s"
-msgstr "Endere�invalido em  HARDWARE(%s) para a impressora %s"
-
-#, python-format
-msgid "Launching HARDWARE(%s)..."
-msgstr "Tentando identifica� f�ca(%s)..."
-
-#, python-format
-msgid "SIGTERM was sent to hardware accounter %s (pid: %s)"
-msgstr "Sinal SIGTERM enviado para contador f�co %s (pid : %s)"
-
-#, python-format
-msgid "Line [%s] skipped in accounter's output. Trying again..."
-msgstr ""
-
-#, python-format
-msgid "Hardware accounter %s exit code is %s"
-msgstr ""
-
-#, python-format
-msgid "Unable to query printer %s via HARDWARE(%s)"
-msgstr "Imposive consultar a impressora %s via HARDWARE(%s)"
-
-#, python-format
-msgid "Problem during connection to %s:%s : %s"
-msgstr ""
-
-#, python-format
-msgid "Problem while sending PJL query to %s:%s : %s"
-msgstr ""
-
-#, python-format
-msgid "Problem while receiving PJL answer from %s:%s : %s"
-msgstr ""
-
-#, python-format
-msgid "Waiting for printer %s to be printing..."
-msgstr ""
-
-#, python-format
-msgid "Waiting for printer %s's idle status to stabilize..."
-msgstr ""
-
-#, python-format
-msgid ""
-"PJL querying stage interrupted. Using latest value seen for internal page "
-"counter (%s) on printer %s."
-msgstr ""
-
-#, python-format
-msgid "Network error while doing SNMP queries on printer %s : %s"
-msgstr ""
-
-#, python-format
-msgid "SNMP message decoding error for printer %s : %s"
-msgstr ""
-
-#, python-format
-msgid "Problem encountered while doing SNMP queries on printer %s : %s"
-msgstr ""
-
-#, python-format
-msgid ""
-"SNMP querying stage interrupted. Using latest value seen for internal page "
-"counter (%s) on printer %s."
-msgstr ""
-
-#, python-format
-msgid "Launching SOFTWARE(%s)..."
-msgstr "Tentando identifica� l�a (%s)..."
-
-#, python-format
-msgid "Unable to compute job size with accounter %s"
-msgstr "Impossivel calcular o tamanho do trabalho com o contador %s"
-
-#, python-format
-msgid "Problem while waiting for software accounter pid %s to exit : %s"
-msgstr "Problema ao aguardar encerramento do contador l�o de pid %s : %s"
-
-#, python-format
-msgid "Software accounter %s exit code is %s"
-msgstr "C�o de erro para contador l�o %s : %s"
-
-msgid "Totals may be inaccurate if some users are members of several groups."
-msgstr ""
-"O Total pode n�ser exato se os usuarios forem mebros de varios grupos."
 
 #, python-format
@@ -2011,39 +2239,191 @@
 "pykotaGroup %s"
 
-msgid "ALLOW"
-msgstr ""
-
-msgid "WARN"
-msgstr ""
-
-msgid "DENY"
-msgstr ""
-
-msgid "won't be charged, printer is in passthrough mode"
-msgstr ""
-
-msgid "won't be charged, your account is immutable"
-msgstr ""
-
-msgid "Printing denied."
-msgstr ""
-
-msgid "Printing not limited."
-msgstr ""
-
-msgid "Printing not limited, no accounting."
-msgstr ""
-
-msgid "No Accounting"
-msgstr ""
-
-msgid "No Limit"
-msgstr ""
-
-msgid "Forbidden"
-msgstr ""
-
-msgid "Printing Mode"
-msgstr ""
+#, python-format
+msgid "A problem occured while reading printer %s's internal page counter."
+msgstr ""
+
+#, python-format
+msgid "Retrieving printer %s's page counter from database instead."
+msgstr ""
+
+#, python-format
+msgid ""
+"Couldn't retrieve printer %s's internal page counter either before or after "
+"printing."
+msgstr ""
+
+#, python-format
+msgid "Job's size forced to 1 page for printer %s."
+msgstr ""
+
+#, python-format
+msgid "No previous job in database for printer %s."
+msgstr ""
+
+#, python-format
+msgid "Inconsistent values for printer %s's internal page counter."
+msgstr ""
+
+#, python-format
+msgid "Unknown printer address in HARDWARE(%s) for printer %s"
+msgstr "Endere�invalido em  HARDWARE(%s) para a impressora %s"
+
+#, python-format
+msgid "Launching HARDWARE(%s)..."
+msgstr "Tentando identifica� f�ca(%s)..."
+
+#, python-format
+msgid "SIGTERM was sent to hardware accounter %s (pid: %s)"
+msgstr "Sinal SIGTERM enviado para contador f�co %s (pid : %s)"
+
+#, python-format
+msgid "Line [%s] skipped in accounter's output. Trying again..."
+msgstr ""
+
+#, python-format
+msgid "Hardware accounter %s exit code is %s"
+msgstr ""
+
+#, python-format
+msgid "Unable to query printer %s via HARDWARE(%s)"
+msgstr "Imposive consultar a impressora %s via HARDWARE(%s)"
+
+#, python-format
+msgid "Problem during connection to %s:%s : %s"
+msgstr ""
+
+#, python-format
+msgid "Problem while sending PJL query to %s:%s : %s"
+msgstr ""
+
+#, python-format
+msgid "Problem while receiving PJL answer from %s:%s : %s"
+msgstr ""
+
+#, python-format
+msgid "Waiting for printer %s to be printing..."
+msgstr ""
+
+#, python-format
+msgid "Waiting for printer %s's idle status to stabilize..."
+msgstr ""
+
+#, python-format
+msgid ""
+"PJL querying stage interrupted. Using latest value seen for internal page "
+"counter (%s) on printer %s."
+msgstr ""
+
+#, python-format
+msgid "Network error while doing SNMP queries on printer %s : %s"
+msgstr ""
+
+#, python-format
+msgid "SNMP message decoding error for printer %s : %s"
+msgstr ""
+
+#, python-format
+msgid "Problem encountered while doing SNMP queries on printer %s : %s"
+msgstr ""
+
+#, python-format
+msgid ""
+"SNMP querying stage interrupted. Using latest value seen for internal page "
+"counter (%s) on printer %s."
+msgstr ""
+
+#, python-format
+msgid "Unable to precompute the job's size with the generic PDL analyzer : %s"
+msgstr ""
+"Imposs�l calcular tamanho da tarefa usando analisador gen�o de PDL : %s"
+
+#, python-format
+msgid "Launching SOFTWARE(%s)..."
+msgstr "Tentando identifica� l�a (%s)..."
+
+#, python-format
+msgid "Unable to compute job size with accounter %s"
+msgstr "Impossivel calcular o tamanho do trabalho com o contador %s"
+
+#, python-format
+msgid "Problem while waiting for software accounter pid %s to exit : %s"
+msgstr "Problema ao aguardar encerramento do contador l�o de pid %s : %s"
+
+#, python-format
+msgid "Software accounter %s exit code is %s"
+msgstr "C�o de erro para contador l�o %s : %s"
+
+msgid "Totals may be inaccurate if some users are members of several groups."
+msgstr ""
+"O Total pode n�ser exato se os usuarios forem mebros de varios grupos."
+
+#~ msgid "Impossible to add printer %s"
+#~ msgstr "Imposivel adicionar impressora %s"
+
+#~ msgid "Prototype object %s not found in Quota Storage."
+#~ msgstr "Objeto Prototipo %s n�encontrado no banco de dados."
+
+#~ msgid "Prototype %s not found in Quota Storage for printer %s."
+#~ msgstr "Prototipo %s n�encontrado no banco dedados para a impressora %s."
+
+#~ msgid "Undefined hard limit set to soft limit (%s) on printer %s."
+#~ msgstr ""
+#~ "O limite maximo invalido, configurando o limite minimo (%s) na impressora "
+#~ "%s."
+
+#~ msgid "Undefined soft limit set to hard limit (%s) on printer %s."
+#~ msgstr ""
+#~ "Limite indefinido, configurando a l�te maximo (%s) na impressora %s."
+
+#~ msgid "Invalid group name %s"
+#~ msgstr "O nome do grupo %s �nv�do"
+
+#~ msgid "Invalid user name %s"
+#~ msgstr "O nome de usuario %s �nv�do"
+
+#~ msgid "Quota not found for object %s on printer %s."
+#~ msgstr "Quota n�encontrada para o objeto %s para a impressora %s."
+
+#~ msgid "Group %s not found in the PyKota Storage."
+#~ msgstr "Grupo %s n�encontrado no banco de dados."
+
+#~ msgid "PyKota Reports"
+#~ msgstr "Relat� do Pykota"
+
+#~ msgid "Report"
+#~ msgstr "Relat�"
+
+#~ msgid "Printer"
+#~ msgstr "Impressora"
+
+#~ msgid "User / Group names mask"
+#~ msgstr "M�ara de nomes para Usu�os / Grupos"
+
+#~ msgid "Groups report"
+#~ msgstr "Relat� de Grupos"
+
+#~ msgid "Empty"
+#~ msgstr "Vazio"
+
+#~ msgid "Action"
+#~ msgstr "A�"
+
+#~ msgid "User"
+#~ msgstr "Usu�o"
+
+#~ msgid "Hostname"
+#~ msgstr "Nome do computador"
+
+#~ msgid "JobId"
+#~ msgstr "Id da Tarefa"
+
+#~ msgid "Copies"
+#~ msgstr "C�s"
+
+#~ msgid "Options"
+#~ msgstr "Op�s"
+
+#~ msgid "Previous page"
+#~ msgstr "P�na anterior"
 
 #~ msgid "File number %s unregistered twice from polling object, ignored."
