Index: pykota/trunk/po/es/pykota.po
===================================================================
--- pykota/trunk/po/es/pykota.po (revision 3075)
+++ pykota/trunk/po/es/pykota.po (revision 3097)
@@ -63,4 +63,414 @@
 
 #, python-format
+msgid "SIGTERM received, job %s cancelled."
+msgstr "Se�SIGTERM recibida, trabajo %s cancelado."
+
+#, python-format
+msgid "Network error while querying the CUPS server : %s"
+msgstr ""
+
+msgid "You are not allowed to print at this time."
+msgstr ""
+
+msgid "Print job cancelled."
+msgstr ""
+
+msgid "Unlimited"
+msgstr ""
+
+msgid "ON"
+msgstr ""
+
+msgid "OFF"
+msgstr ""
+
+#, python-format
+msgid "Banner generator %s exit code is %s"
+msgstr "El c�o de salida del generador de banners %s es %s"
+
+msgid "Banner won't be printed : maximum number of deny banners reached."
+msgstr ""
+"El banner no se imprimir� se ha alcanzado el m�mo n� de banners "
+"rechazados."
+
+#, python-format
+msgid "Beware : computed job size (%s) != precomputed job size (%s)"
+msgstr ""
+"Cuidado : tama�el trabajo calculado (%s) != tama�el trabajo "
+"precalculado (%s)"
+
+msgid ""
+"The job size will be trusted anyway according to the 'trustjobsize' directive"
+msgstr ""
+"El tama�el trabajo se validar�e todas formas, de acuerdo con la "
+"directiva 'trustjobsize'"
+
+#, python-format
+msgid ""
+"The job size will be trusted because it is inferior to the 'trustjobsize' "
+"directive's limit %s"
+msgstr ""
+"El tama�el trabajo se validar�orque es inferior al l�te de la "
+"directiva 'trustjobsize' %s"
+
+#, python-format
+msgid ""
+"The job size will be modified according to the 'trustjobsize' directive : %s"
+msgstr ""
+"El tama�el trabajo se modificar�e acuerdo con la directiva "
+"'trustjobsize' : %s"
+
+#, python-format
+msgid ""
+"Printer %s not registered in the PyKota system, applying external policy (%"
+"s) for printer %s"
+msgstr ""
+"Impresora %s no registrada en el sistema PyKota, aplicando la pol�ca "
+"externa (%s) para la impresora %s"
+
+#, python-format
+msgid ""
+"User %s not registered in the PyKota system, applying external policy (%s) "
+"for printer %s"
+msgstr ""
+"Usuario %s no registrado en el sistema PyKota, aplicando la pol�ca externa "
+"(%s) para la impresora %s"
+
+#, python-format
+msgid ""
+"User %s doesn't have quota on printer %s in the PyKota system, applying "
+"external policy (%s) for printer %s"
+msgstr ""
+"El usuario %s no posee cuota en la impresora %s bajo el sistema PyKota, "
+"aplicando la pol�ca externa (%s) para la impresora %s"
+
+#, python-format
+msgid ""
+"External policy %s for printer %s produced an error. Job rejected. Please "
+"check PyKota's configuration files."
+msgstr ""
+"La pol�ca externa %s para la impresora %s ha producido un error. Trabajo "
+"rechazado. Por favor, revise los archivos de configuraci�e PyKota."
+
+#, python-format
+msgid ""
+"Printer %s not registered in the PyKota system, applying default policy (%s)"
+msgstr ""
+"Impresora %s no registrada en el sistema PyKota, aplicando la pol�ca por "
+"defecto (%s)"
+
+#, python-format
+msgid ""
+"User %s not registered in the PyKota system, applying default policy (%s) "
+"for printer %s"
+msgstr ""
+"Usuario %s no registrado en el sistema PyKota, aplicando la pol�ca por "
+"defecto (%s) para la impresora %s"
+
+#, python-format
+msgid ""
+"User %s doesn't have quota on printer %s in the PyKota system, applying "
+"default policy (%s)"
+msgstr ""
+"el usuario %s no posee cuota en la impresora %s bajo el sistema PyKota, "
+"aplicando la pol�ca por defecto (%s)"
+
+#, python-format
+msgid ""
+"Printer %s still not registered in the PyKota system, job will be rejected"
+msgstr ""
+"La impresora %s no se ha registrado todav�en el sistema PyKota, se va a "
+"rechazar el trabajo"
+
+#, python-format
+msgid ""
+"User %s still not registered in the PyKota system, job will be rejected on "
+"printer %s"
+msgstr ""
+"El usuario %s no se ha registrado todav�en el sistema PyKota, el trabajo "
+"se va a rechazar en la impresora %s"
+
+#, python-format
+msgid ""
+"User %s still doesn't have quota on printer %s in the PyKota system, job "
+"will be rejected"
+msgstr ""
+"El usuario %s no tiene todav�cuota en la impresora %s bajo el sistema "
+"PyKota, se va a rechazar el trabajo"
+
+msgid "Job is a dupe"
+msgstr ""
+
+msgid "Printing is denied by configuration"
+msgstr ""
+
+#, python-format
+msgid "Duplicate print jobs are not allowed on printer %s."
+msgstr ""
+
+msgid "Subprocess denied printing of a dupe"
+msgstr ""
+
+#, python-format
+msgid "Duplicate print jobs are not allowed on printer %s at this time."
+msgstr ""
+
+msgid "Subprocess allowed printing of a dupe"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"\n"
+"Your system administrator :\n"
+"\n"
+"\t%s - <%s>\n"
+msgstr ""
+
+#, python-format
+msgid "Impossible to connect to SMTP server : %s"
+msgstr "Imposible conectar con el servidor SMTP: %s"
+
+msgid "Print Quota"
+msgstr "Cuota de impresi�
+#, python-format
+msgid "Impossible to send mail to %s, error %s : %s"
+msgstr "Imposible enviar un correo electr�o a %s, error %s : %s"
+
+#, python-format
+msgid "Problem when sending mail : %s"
+msgstr ""
+
+msgid "Job contains no data. Printing is denied."
+msgstr "El trabajo no contiene una fecha. Se deniega la impresi�
+
+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 ""
+
+#, python-format
+msgid "Invalid policy %s for printer %s"
+msgstr "Pol�ca %s inv�da para la impresora %s"
+
+#, python-format
+msgid "Precomputed job size (%s pages) too large for printer %s."
+msgstr ""
+
+#, python-format
+msgid "You are not allowed to print so many pages on printer %s at this time."
+msgstr ""
+
+#, python-format
+msgid "User %s is not allowed to print at this time."
+msgstr ""
+
+msgid "Your account settings forbid you to print at this time."
+msgstr ""
+
+#, python-format
+msgid "Print Quota exceeded for user %s on printer %s"
+msgstr "Cuota de impresi�xcedida para el usuario %s en la impresora %s"
+
+#, python-format
+msgid "Print Quota low for user %s on printer %s"
+msgstr "Cuota de impresi�aja para el usuario %s en la impresora %s"
+
+msgid "Job denied, no accounting will be done."
+msgstr ""
+
+msgid "Job cancelled, no accounting will be done."
+msgstr ""
+
+msgid "Job accounting begins."
+msgstr "Ha comenzado la contabilizaci�ara el trabajo."
+
+msgid "Job denied, no accounting has been done."
+msgstr ""
+
+msgid "Job cancelled, no accounting has been done."
+msgstr ""
+
+msgid "Job accounting ends."
+msgstr "Ha terminado la contabilizaci�ara el trabajo."
+
+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 ""
+"Se ha forzado el tama�el trabajo a 0 debido a que la impresi�st�
+"denegada."
+
+msgid "Job size forced to 0 because printing was cancelled."
+msgstr ""
+
+#, python-format
+msgid "Job size : %i"
+msgstr "Tama�el trabajo : %i"
+
+#, python-format
+msgid "User %s's quota on printer %s won't be modified"
+msgstr ""
+
+#, python-format
+msgid "Updating user %s's quota on printer %s"
+msgstr "Actualizada la cuota del usuario %s en la impresora %s"
+
+msgid "Job added to history."
+msgstr "Se ha a�do el trabajo al historial."
+
+#, 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 ""
+"dumpykota v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"Dumps PyKota database's content.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  dumpykota [options] [filterexpr]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints dumpykota's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -d | --data type     Dumps 'type' datas. Allowed types are :\n"
+"                       \n"
+"                         - history : dumps the jobs history.\n"
+"                         - users : dumps users.\n"
+"                         - groups : dumps user groups.\n"
+"                         - printers : dump printers.\n"
+"                         - upquotas : dump user quotas.\n"
+"                         - gpquotas : dump user groups quotas.\n"
+"                         - payments : dumps user payments.\n"
+"                         - pmembers : dumps printer groups members.\n"
+"                         - 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"
+"                       is MANDATORY.\n"
+"  \n"
+"  -f | --format fmt    Dumps datas in the 'fmt' format. When not specified,\n"
+"                       the format is to dump datas in the csv format (comma\n"
+"                       separated values). All data dumped is between double\n"
+"                       quotes. Allowed formats are :\n"
+"                       \n"
+"                         - csv : separate datas with commas\n"
+"                         - ssv : separate datas with semicolons\n"
+"                         - tsv : separate datas with tabs\n"
+"                         - xml : dump data as XML \n"
+"                         - cups : dump datas in CUPS' page_log format :\n"
+"                                  ONLY AVAILABLE WITH --data history\n"
+"                         \n"
+"  -o | --output fname  All datas will be dumped to the file instead of\n"
+"                       to the standard output. The special '-' filename\n"
+"                       is the default value and means stdout.\n"
+"                       WARNING : existing files are truncated !\n"
+"\n"
+"  -s | --sum           Summarize the selected datas.\n"
+"                           ONLY AVAILABLE WITH --data history or payments\n"
+"\n"
+"  Use the filter expressions to extract only parts of the \n"
+"  datas. Allowed filters are of the form :\n"
+"                \n"
+"         key=value\n"
+"                         \n"
+"  Allowed keys for now are :  \n"
+"                       \n"
+"         username       User's name\n"
+"         groupname      Users group's name\n"
+"         printername    Printer's name\n"
+"         pgroupname     Printers group's name\n"
+"         hostname       Client's hostname\n"
+"         jobid          Job's Id\n"
+"         billingcode    Job's billing code\n"
+"         start          Job's date of printing\n"
+"         end            Job's date of printing\n"
+"         \n"
+"  Dates formatting with 'start' and 'end' filter keys :\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"
+"  Contrary to other PyKota management tools, wildcard characters are not \n"
+"  expanded, so you can't use them.\n"
+"  \n"
+"  NB : not all keys are allowed for each data type, so the result may be \n"
+"  empty if you use a key not available for a particular data type.\n"
+"  \n"
+"Examples :\n"
+"\n"
+"  $ dumpykota --data history --format csv >myfile.csv\n"
+"  \n"
+"  This dumps the history in a comma separated values file, for possible\n"
+"  use in a spreadsheet.\n"
+"  \n"
+"  $ dumpykota --data users --format xml -o users.xml\n"
+"  \n"
+"  Dumps all users datas to the users.xml file.\n"
+"  \n"
+"  $ dumpykota --data history printername=HP2100 username=jerome\n"
+"  \n"
+"  Dumps the job history for user jerome on printer HP2100 only.\n"
+"  \n"
+"  $ dumpykota --data history start=200503 end=20050730234615\n"
+"  \n"
+"  Dumps all jobs printed between March 1st 2005 at midnight and\n"
+"  July 30th 2005 at 23 hours 46 minutes and 15 secondes included.\n"
+msgstr ""
+
+msgid "The -d | --data command line option is mandatory, see help."
+msgstr "La opci�d | --data es obligatoria, vea la ayuda."
+
+#, python-format
 msgid ""
 "edpykota v%(__version__)s (c) %(__years__)s %(__author__)s\n"
@@ -221,7 +631,4 @@
 msgstr ""
 
-msgid "Unlimited"
-msgstr ""
-
 #, python-format
 msgid "Warning banners printed : %s"
@@ -265,7 +672,5 @@
 
 #, 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."
+msgid "No entry matches %s. Please use pkusers to create them first."
 msgstr ""
 
@@ -279,4 +684,112 @@
 msgstr ""
 "Ha de proporcionar nombres de usuarios o grupos en la l�a de comandos"
+
+#, 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 "Impresora %s no encontrada"
+
+#, 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
@@ -408,4 +921,216 @@
 #, 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 ""
+
+msgid "You're not allowed to use this command."
+msgstr "No tiene permiso para utilizar esta orden."
+
+#, 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 ""
+"pkinvoice v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"An invoice generator for PyKota.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pkinvoice [options] [filterexpr]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pkinvoice's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -l | --logo img      Use the image as the invoice'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"
+"  -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"
+"\n"
+"  Use the filter expressions to extract only parts of the \n"
+"  datas. Allowed filters are of the form :\n"
+"                \n"
+"         key=value\n"
+"                         \n"
+"  Allowed keys for now are :  \n"
+"                       \n"
+"         username       User's name\n"
+"         printername    Printer's name\n"
+"         hostname       Client's hostname\n"
+"         jobid          Job's Id\n"
+"         billingcode    Job's billing code\n"
+"         start          Job's date of printing\n"
+"         end            Job's date of printing\n"
+"         \n"
+"  Dates formatting with 'start' and 'end' filter keys :\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"
+"  Contrary to other PyKota management tools, wildcard characters are not \n"
+"  expanded, so you can't use them.\n"
+"  \n"
+"examples :\n"
+"\n"
+"  $ pkinvoice --unit EURO --output /tmp/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 "Edited on"
+msgstr ""
+
+msgid "Number of jobs printed"
+msgstr ""
+
+msgid "Number of pages printed"
+msgstr ""
+
+msgid "Amount due"
+msgstr ""
+
+msgid "Included VAT"
+msgstr ""
+
+msgid "Here's the invoice for your printouts"
+msgstr ""
+
+msgid "Generating invoices"
+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 ""
+
+#, python-format
+msgid "Invalid filter value [%s], see help."
+msgstr ""
+
+#, python-format
+msgid "Invoiced %i users for %i jobs, %i pages and %.3f credits"
+msgstr ""
+
+msgid "Credits"
+msgstr ""
+
+#, python-format
+msgid ""
 "pkmail v%(__version__)s (c) %(__years__)s %(__author__)s\n"
 "\n"
@@ -449,612 +1174,5 @@
 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 "No tiene permiso para utilizar esta orden."
-
-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 "Opci�e duraci�s inv�da"
-
-#, python-format
-msgid "Invalid loop option %s"
-msgstr "Opci�e bucle %s inv�da"
-
-#, python-format
-msgid "Invalid sleep option %s"
-msgstr "Opci�sleep� %s inv�da"
-
-#, python-format
-msgid "Invalid color option %s"
-msgstr "Opci�e color %s inv�da"
-
-#, python-format
-msgid "User %s doesn't exist in PyKota's database"
-msgstr "El usuario %s no existe en la base de datos de PyKota"
-
-#, python-format
-msgid "Pages used on %s : %s"
-msgstr "P�nas utilizadas en %s : %s"
-
-#, python-format
-msgid "PyKota Units left : %.2f"
-msgstr "Unidades restantes de 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 "Impresora %s no encontrada"
-
-#, python-format
-msgid "SIGTERM received, job %s cancelled."
-msgstr "Se�SIGTERM recibida, trabajo %s cancelado."
-
-msgid "You are not allowed to print at this time."
-msgstr ""
-
-msgid "Print job cancelled."
-msgstr ""
-
-#, python-format
-msgid "Banner generator %s exit code is %s"
-msgstr "El c�o de salida del generador de banners %s es %s"
-
-msgid "Banner won't be printed : maximum number of deny banners reached."
-msgstr ""
-"El banner no se imprimir� se ha alcanzado el m�mo n� de banners "
-"rechazados."
-
-#, python-format
-msgid "Beware : computed job size (%s) != precomputed job size (%s)"
-msgstr ""
-"Cuidado : tama�el trabajo calculado (%s) != tama�el trabajo "
-"precalculado (%s)"
-
-msgid ""
-"The job size will be trusted anyway according to the 'trustjobsize' directive"
-msgstr ""
-"El tama�el trabajo se validar�e todas formas, de acuerdo con la "
-"directiva 'trustjobsize'"
-
-#, python-format
-msgid ""
-"The job size will be trusted because it is inferior to the 'trustjobsize' "
-"directive's limit %s"
-msgstr ""
-"El tama�el trabajo se validar�orque es inferior al l�te de la "
-"directiva 'trustjobsize' %s"
-
-#, python-format
-msgid ""
-"The job size will be modified according to the 'trustjobsize' directive : %s"
-msgstr ""
-"El tama�el trabajo se modificar�e acuerdo con la directiva "
-"'trustjobsize' : %s"
-
-#, python-format
-msgid ""
-"Printer %s not registered in the PyKota system, applying external policy (%"
-"s) for printer %s"
-msgstr ""
-"Impresora %s no registrada en el sistema PyKota, aplicando la pol�ca "
-"externa (%s) para la impresora %s"
-
-#, python-format
-msgid ""
-"User %s not registered in the PyKota system, applying external policy (%s) "
-"for printer %s"
-msgstr ""
-"Usuario %s no registrado en el sistema PyKota, aplicando la pol�ca externa "
-"(%s) para la impresora %s"
-
-#, python-format
-msgid ""
-"User %s doesn't have quota on printer %s in the PyKota system, applying "
-"external policy (%s) for printer %s"
-msgstr ""
-"El usuario %s no posee cuota en la impresora %s bajo el sistema PyKota, "
-"aplicando la pol�ca externa (%s) para la impresora %s"
-
-#, python-format
-msgid ""
-"External policy %s for printer %s produced an error. Job rejected. Please "
-"check PyKota's configuration files."
-msgstr ""
-"La pol�ca externa %s para la impresora %s ha producido un error. Trabajo "
-"rechazado. Por favor, revise los archivos de configuraci�e PyKota."
-
-#, python-format
-msgid ""
-"Printer %s not registered in the PyKota system, applying default policy (%s)"
-msgstr ""
-"Impresora %s no registrada en el sistema PyKota, aplicando la pol�ca por "
-"defecto (%s)"
-
-#, python-format
-msgid ""
-"User %s not registered in the PyKota system, applying default policy (%s) "
-"for printer %s"
-msgstr ""
-"Usuario %s no registrado en el sistema PyKota, aplicando la pol�ca por "
-"defecto (%s) para la impresora %s"
-
-#, python-format
-msgid ""
-"User %s doesn't have quota on printer %s in the PyKota system, applying "
-"default policy (%s)"
-msgstr ""
-"el usuario %s no posee cuota en la impresora %s bajo el sistema PyKota, "
-"aplicando la pol�ca por defecto (%s)"
-
-#, python-format
-msgid ""
-"Printer %s still not registered in the PyKota system, job will be rejected"
-msgstr ""
-"La impresora %s no se ha registrado todav�en el sistema PyKota, se va a "
-"rechazar el trabajo"
-
-#, python-format
-msgid ""
-"User %s still not registered in the PyKota system, job will be rejected on "
-"printer %s"
-msgstr ""
-"El usuario %s no se ha registrado todav�en el sistema PyKota, el trabajo "
-"se va a rechazar en la impresora %s"
-
-#, python-format
-msgid ""
-"User %s still doesn't have quota on printer %s in the PyKota system, job "
-"will be rejected"
-msgstr ""
-"El usuario %s no tiene todav�cuota en la impresora %s bajo el sistema "
-"PyKota, se va a rechazar el trabajo"
-
-msgid "Job is a dupe"
-msgstr ""
-
-msgid "Printing is denied by configuration"
-msgstr ""
-
-#, python-format
-msgid "Duplicate print jobs are not allowed on printer %s."
-msgstr ""
-
-msgid "Subprocess denied printing of a dupe"
-msgstr ""
-
-#, python-format
-msgid "Duplicate print jobs are not allowed on printer %s at this time."
-msgstr ""
-
-msgid "Subprocess allowed printing of a dupe"
-msgstr ""
-
-#, python-format
-msgid ""
-"\n"
-"\n"
-"Your system administrator :\n"
-"\n"
-"\t%s - <%s>\n"
-msgstr ""
-
-#, python-format
-msgid "Impossible to connect to SMTP server : %s"
-msgstr "Imposible conectar con el servidor SMTP: %s"
-
-msgid "Print Quota"
-msgstr "Cuota de impresi�
-#, python-format
-msgid "Impossible to send mail to %s, error %s : %s"
-msgstr "Imposible enviar un correo electr�o a %s, error %s : %s"
-
-msgid "Job contains no data. Printing is denied."
-msgstr "El trabajo no contiene una fecha. Se deniega la impresi�
-
-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 ""
-
-#, python-format
-msgid "Invalid policy %s for printer %s"
-msgstr "Pol�ca %s inv�da para la impresora %s"
-
-#, python-format
-msgid "Precomputed job size (%s pages) too large for printer %s."
-msgstr ""
-
-#, python-format
-msgid "You are not allowed to print so many pages on printer %s at this time."
-msgstr ""
-
-#, python-format
-msgid "User %s is not allowed to print at this time."
-msgstr ""
-
-msgid "Your account settings forbid you to print at this time."
-msgstr ""
-
-#, python-format
-msgid "Print Quota exceeded for user %s on printer %s"
-msgstr "Cuota de impresi�xcedida para el usuario %s en la impresora %s"
-
-#, python-format
-msgid "Print Quota low for user %s on printer %s"
-msgstr "Cuota de impresi�aja para el usuario %s en la impresora %s"
-
-msgid "Job denied, no accounting will be done."
-msgstr ""
-
-msgid "Job cancelled, no accounting will be done."
-msgstr ""
-
-msgid "Job accounting begins."
-msgstr "Ha comenzado la contabilizaci�ara el trabajo."
-
-msgid "Job denied, no accounting has been done."
-msgstr ""
-
-msgid "Job cancelled, no accounting has been done."
-msgstr ""
-
-msgid "Job accounting ends."
-msgstr "Ha terminado la contabilizaci�ara el trabajo."
-
-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 ""
-"Se ha forzado el tama�el trabajo a 0 debido a que la impresi�st�
-"denegada."
-
-msgid "Job size forced to 0 because printing was cancelled."
-msgstr ""
-
-#, python-format
-msgid "Job size : %i"
-msgstr "Tama�el trabajo : %i"
-
-#, python-format
-msgid "User %s's quota on printer %s won't be modified"
-msgstr ""
-
-#, python-format
-msgid "Updating user %s's quota on printer %s"
-msgstr "Actualizada la cuota del usuario %s en la impresora %s"
-
-msgid "Job added to history."
-msgstr "Se ha a�do el trabajo al historial."
-
-#, 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"
+msgid "Result of your commands"
 msgstr ""
 
@@ -1203,4 +1321,10 @@
 msgstr ""
 
+#, python-format
+msgid ""
+"Are you sure that PyKotIcon is running and accepting incoming connections on "
+"%s:%s ?"
+msgstr ""
+
 msgid "Connection error"
 msgstr ""
@@ -1209,5 +1333,454 @@
 msgstr ""
 
+msgid "incorrect value for the --noremote command line switch, see help."
+msgstr ""
+
 msgid "some options require arguments, see help."
+msgstr ""
+
+#, python-format
+msgid ""
+"pkprinters v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"A Printers Manager for PyKota.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pkprinters [options] printer1 printer2 printer3 ... printerN\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pkprinters's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -a | --add           Adds printers if they don't exist on the Quota \n"
+"                       Storage Server. If they exist, they are modified\n"
+"                       unless -s|--skipexisting is also used.\n"
+"                       \n"
+"  -d | --delete        Deletes printers from the quota storage.\n"
+"  \n"
+"  -D | --description d Adds a textual description to printers.\n"
+"\n"
+"  -C | --cups          Also modifies the DeviceURI in CUPS' printers.conf\n"
+"\n"
+"  -c | --charge p[,j]  Sets the price per page and per job to charge.\n"
+"                       Job price is optional.\n"
+"                       If both are to be set, separate them with a comma.\n"
+"                       Floating point and negative values are allowed.\n"
+"  \n"
+"  -g | --groups pg1[,pg2...] Adds or Remove the printer(s) to the printer \n"
+"                       groups 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"
+"                       If the --remove option below is not used, the \n"
+"                       default action is to add printers to the specified\n"
+"                       printer groups.\n"
+"                       \n"
+"  -l | --list          List informations about the printer(s) and the\n"
+"                       printers groups it is a member of.\n"
+"                       \n"
+"  -r | --remove        In combination with the --groups option "
+"above,                       \n"
+"                       remove printers from the specified printers groups.\n"
+"                       \n"
+"  -s | --skipexisting  In combination with the --add option above, tells\n"
+"                       pkprinters to not modify existing printers.\n"
+"                       \n"
+"  -m | --maxjobsize s  Sets the maximum job size allowed on the printer\n"
+"                       to s pages.\n"
+"                       \n"
+"  -p | --passthrough   Activate passthrough mode for the printer. In this\n"
+"                       mode, users are allowed to print without any impact\n"
+"                       on their quota or account balance.\n"
+"                       \n"
+"  -n | --nopassthrough Deactivate passthrough mode for the printer.\n"
+"                       Without -p or -n, printers are created in \n"
+"                       normal mode, i.e. no passthrough.\n"
+"  \n"
+"  printer1 through printerN can contain wildcards if the --add option \n"
+"  is not set.\n"
+"  \n"
+"examples :                              \n"
+"\n"
+"  $ pkprinters --add -D \"HP Printer\" --charge 0.05,0.1 hp2100 hp2200 "
+"hp8000\n"
+"  \n"
+"  Will create three printers named hp2100, hp2200 and hp8000.\n"
+"  Their price per page will be set at 0.05 unit, and their price\n"
+"  per job will be set at 0.1 unit. Units are in your own currency,\n"
+"  or whatever you want them to mean.\n"
+"  All of their descriptions will be set to the string \"HP Printer\".\n"
+"  If any of these printers already exists, it will also be modified \n"
+"  unless the -s|--skipexisting command line option is also used.\n"
+"            \n"
+"  $ pkprinters --delete \"*\"\n"
+"  \n"
+"  This will completely delete all printers and associated quota "
+"information,\n"
+"  as well as their job history. USE WITH CARE !\n"
+"  \n"
+"  $ pkprinters --groups Laser,HP \"hp*\"\n"
+"  \n"
+"  This will put all printers which name matches \"hp*\" into printers "
+"groups \n"
+"  Laser and HP, which MUST already exist.\n"
+"  \n"
+"  $ pkprinters --groups LexMark --remove hp2200\n"
+"  \n"
+"  This will remove the hp2200 printer from the LexMark printer group.\n"
+msgstr ""
+
+#, python-format
+msgid "Passthrough mode : %s"
+msgstr ""
+
+#, python-format
+msgid "Routed through PyKota : %s"
+msgstr ""
+
+msgid "YES"
+msgstr ""
+
+msgid "NO"
+msgstr ""
+
+msgid "in"
+msgstr "en"
+
+msgid "Rerouting printers to CUPS"
+msgstr ""
+
+#, python-format
+msgid "Invalid charge amount value %s"
+msgstr "Valor %s inv�do para el importe de carga"
+
+#, python-format
+msgid "Invalid maximum job size value %s"
+msgstr ""
+
+#, python-format
+msgid "Printer %s already exists, skipping."
+msgstr "La impresora %s ya existe, se salta."
+
+#, python-format
+msgid "Printer %s already exists, will be modified."
+msgstr "La impresora %s ya existe, va a ser modificada."
+
+#, python-format
+msgid "Invalid printer name %s"
+msgstr "Nombre de impresora %s inv�do"
+
+msgid "You have to pass printer groups names on the command line"
+msgstr ""
+"Ha de proporcionar nombres de grupos de impresoras en la l�a de comandos"
+
+msgid "You have to pass printer names on the command line"
+msgstr "Ha de proporcionar nombres de impresoras en la l�a de comandos"
+
+#, python-format
+msgid ""
+"pkrefund v%(__version__)s (c) %(__years__)s %(__author__)s\n"
+"\n"
+"Refunds jobs.\n"
+"\n"
+"command line usage :\n"
+"\n"
+"  pkrefund [options] [filterexpr]\n"
+"\n"
+"options :\n"
+"\n"
+"  -v | --version       Prints pkrefund's version number then exits.\n"
+"  -h | --help          Prints this message then exits.\n"
+"  \n"
+"  -f | --force         Doesn't ask for confirmation before refunding jobs.\n"
+"  -r | --reason txt    Sets textual information to explain the refunding.\n"
+"\n"
+"  -l | --logo img      Use the image as the receipt'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"
+"  -n | --number N      Sets the number of the first receipt. This number\n"
+"                       will automatically be incremented for each receipt.\n"
+"\n"
+"  -o | --output f.pdf  Defines the name of the PDF file which will contain\n"
+"                       the receipts. If not set, then no PDF file will\n"
+"                       be created. If set to '-', then --force is assumed,\n"
+"                       and the PDF document is sent to standard output.\n"
+"\n"
+"  -u | --unit u        Defines the name of the unit to use on the receipts.\n"
+"                       The default unit is 'Credits', optionally translated\n"
+"                       to your native language if it is supported by "
+"PyKota.\n"
+"  \n"
+"\n"
+"  Use the filter expressions to extract only parts of the \n"
+"  datas. Allowed filters are of the form :\n"
+"                \n"
+"         key=value\n"
+"                         \n"
+"  Allowed keys for now are :  \n"
+"                       \n"
+"         username       User's name\n"
+"         printername    Printer's name\n"
+"         hostname       Client's hostname\n"
+"         jobid          Job's Id\n"
+"         billingcode    Job's billing code\n"
+"         start          Job's date of printing\n"
+"         end            Job's date of printing\n"
+"         \n"
+"  Dates formatting with 'start' and 'end' filter keys :\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"
+"  Contrary to other PyKota management tools, wildcard characters are not \n"
+"  expanded, so you can't use them.\n"
+"  \n"
+"Examples :\n"
+"\n"
+"  $ pkrefund --output /tmp/receipts.pdf jobid=503\n"
+"  \n"
+"  This will refund all jobs which Id is 503. BEWARE : installing CUPS\n"
+"  afresh will reset the first job id at 1, so you probably want to use\n"
+"  a more precise filter as explained below. A confirmation will\n"
+"  be asked for each job to refund, and a PDF file named /tmp/receipts.pdf\n"
+"  will be created which will contain printable receipts.\n"
+"  \n"
+"  $ pkrefund --reason \"Hardware problem\" jobid=503 start=today-7\n"
+"  \n"
+"  Refunds all jobs which id is 503 but which were printed during the\n"
+"  past week. The reason will be marked as being an hardware problem.\n"
+"  \n"
+"  $ pkrefund --force username=jerome printername=HP2100\n"
+"  \n"
+"  Refunds all jobs printed by user jerome on printer HP2100. No\n"
+"  confirmation will be asked.\n"
+"  \n"
+"  $ pkrefund --force printername=HP2100 start=200602 end=yesterday\n"
+"  \n"
+"  Refunds all jobs printed on printer HP2100 between February 1st 2006\n"
+"  and yesterday. No confirmation will be asked.\n"
+msgstr ""
+
+msgid "Refunding receipt"
+msgstr ""
+
+msgid "Jobs refunded"
+msgstr ""
+
+msgid "Pages refunded"
+msgstr ""
+
+msgid "Amount refunded"
+msgstr ""
+
+msgid "Reason"
+msgstr ""
+
+msgid "Here's the receipt for the refunding of your print jobs"
+msgstr ""
+
+msgid "Generating receipts"
+msgstr ""
+
+msgid ""
+"Refunding for no reason is forbidden. Please use the --reason command line "
+"option."
+msgstr ""
+
+msgid ""
+"The PDF file containing the receipts will be sent to stdout. --force is "
+"assumed."
+msgstr ""
+
+#, python-format
+msgid "Date : %s"
+msgstr ""
+
+#, python-format
+msgid "JobId : %s"
+msgstr ""
+
+#, python-format
+msgid "Username : %s"
+msgstr ""
+
+#, python-format
+msgid "Printername : %s"
+msgstr ""
+
+#, python-format
+msgid "Billing code : %s"
+msgstr ""
+
+#, python-format
+msgid "Pages : %i"
+msgstr ""
+
+#, python-format
+msgid "Credits : %.3f"
+msgstr ""
+
+#, python-format
+msgid "Title : %s"
+msgstr ""
+
+msgid "Refund (Y/N)"
+msgstr ""
+
+msgid "Y"
+msgstr ""
+
+msgid "N"
+msgstr ""
+
+#, python-format
+msgid "Refunded %i users for %i jobs, %i pages and %.3f credits"
+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 "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 ""
 
@@ -1352,4 +1925,8 @@
 
 #, python-format
+msgid "Invalid email address %s"
+msgstr "Direcci�e correo electr�o %s inv�da"
+
+#, python-format
 msgid "There's no %s matching %s"
 msgstr ""
@@ -1392,8 +1969,4 @@
 
 #, python-format
-msgid "Invalid email address %s"
-msgstr "Direcci�e correo electr�o %s inv�da"
-
-#, python-format
 msgid "Unknown group %s"
 msgstr "Grupo %s desconocido"
@@ -1416,4 +1989,83 @@
 
 msgid "You have to pass user groups names on the command line"
+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 "Opci�e duraci�s inv�da"
+
+#, python-format
+msgid "Invalid loop option %s"
+msgstr "Opci�e bucle %s inv�da"
+
+#, python-format
+msgid "Invalid sleep option %s"
+msgstr "Opci�sleep� %s inv�da"
+
+#, python-format
+msgid "Invalid color option %s"
+msgstr "Opci�e color %s inv�da"
+
+#, python-format
+msgid "User %s doesn't exist in PyKota's database"
+msgstr "El usuario %s no existe en la base de datos de PyKota"
+
+#, python-format
+msgid "Pages used on %s : %s"
+msgstr "P�nas utilizadas en %s : %s"
+
+#, python-format
+msgid "PyKota Units left : %.2f"
+msgstr "Unidades restantes de PyKota : %.2f"
+
+msgid "Printing denied."
+msgstr ""
+
+msgid "Printing not limited."
+msgstr ""
+
+msgid "Printing not limited, no accounting."
 msgstr ""
 
@@ -1481,407 +2133,4 @@
 
 #, 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 ""
-"dumpykota v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"Dumps PyKota database's content.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  dumpykota [options] [filterexpr]\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints dumpykota's version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -d | --data type     Dumps 'type' datas. Allowed types are :\n"
-"                       \n"
-"                         - history : dumps the jobs history.\n"
-"                         - users : dumps users.\n"
-"                         - groups : dumps user groups.\n"
-"                         - printers : dump printers.\n"
-"                         - upquotas : dump user quotas.\n"
-"                         - gpquotas : dump user groups quotas.\n"
-"                         - payments : dumps user payments.\n"
-"                         - pmembers : dumps printer groups members.\n"
-"                         - 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"
-"                       is MANDATORY.\n"
-"  \n"
-"  -f | --format fmt    Dumps datas in the 'fmt' format. When not specified,\n"
-"                       the format is to dump datas in the csv format (comma\n"
-"                       separated values). All data dumped is between double\n"
-"                       quotes. Allowed formats are :\n"
-"                       \n"
-"                         - csv : separate datas with commas\n"
-"                         - ssv : separate datas with semicolons\n"
-"                         - tsv : separate datas with tabs\n"
-"                         - xml : dump data as XML \n"
-"                         - cups : dump datas in CUPS' page_log format :\n"
-"                                  ONLY AVAILABLE WITH --data history\n"
-"                         \n"
-"  -o | --output fname  All datas will be dumped to the file instead of\n"
-"                       to the standard output. The special '-' filename\n"
-"                       is the default value and means stdout.\n"
-"                       WARNING : existing files are truncated !\n"
-"\n"
-"  -s | --sum           Summarize the selected datas.\n"
-"                           ONLY AVAILABLE WITH --data history or payments\n"
-"\n"
-"  Use the filter expressions to extract only parts of the \n"
-"  datas. Allowed filters are of the form :\n"
-"                \n"
-"         key=value\n"
-"                         \n"
-"  Allowed keys for now are :  \n"
-"                       \n"
-"         username       User's name\n"
-"         groupname      Users group's name\n"
-"         printername    Printer's name\n"
-"         pgroupname     Printers group's name\n"
-"         hostname       Client's hostname\n"
-"         billingcode    Job's billing code\n"
-"         start          Job's date of printing\n"
-"         end            Job's date of printing\n"
-"         \n"
-"  Contrary to other PyKota management tools, wildcard characters are not \n"
-"  expanded, so you can't use them.\n"
-"  \n"
-"  NB : not all keys are allowed for each data type, so the result may be \n"
-"  empty if you use a key not available for a particular data type.\n"
-"  \n"
-"Examples :\n"
-"\n"
-"  $ dumpykota --data history --format csv >myfile.csv\n"
-"  \n"
-"  This dumps the history in a comma separated values file, for possible\n"
-"  use in a spreadsheet.\n"
-"  \n"
-"  $ dumpykota --data users --format xml -o users.xml\n"
-"  \n"
-"  Dumps all users datas to the users.xml file.\n"
-"  \n"
-"  $ dumpykota --data history printername=HP2100 username=jerome\n"
-"  \n"
-"  Dumps the job history for user jerome on printer HP2100 only.\n"
-"  \n"
-"  $ dumpykota --data history start=200503 end=20050730234615\n"
-"  \n"
-"  Dumps all jobs printed between March 1st 2005 at midnight and\n"
-"  July 30th 2005 at 23 hours 46 minutes and 15 secondes included.\n"
-msgstr ""
-
-msgid "The -d | --data command line option is mandatory, see help."
-msgstr "La opci�d | --data es obligatoria, vea la ayuda."
-
-#, python-format
-msgid ""
-"pkinvoice v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"An invoice generator for PyKota.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  pkinvoice [options] user1 user2 ... userN\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints pkinvoice's version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -l | --logo img      Use the image as the invoice'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"
-"  -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 formatting 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 ""
-
-#, python-format
-msgid ""
-"pkprinters v%(__version__)s (c) %(__years__)s %(__author__)s\n"
-"\n"
-"A Printers Manager for PyKota.\n"
-"\n"
-"command line usage :\n"
-"\n"
-"  pkprinters [options] printer1 printer2 printer3 ... printerN\n"
-"\n"
-"options :\n"
-"\n"
-"  -v | --version       Prints pkprinters's version number then exits.\n"
-"  -h | --help          Prints this message then exits.\n"
-"  \n"
-"  -a | --add           Adds printers if they don't exist on the Quota \n"
-"                       Storage Server. If they exist, they are modified\n"
-"                       unless -s|--skipexisting is also used.\n"
-"                       \n"
-"  -d | --delete        Deletes printers from the quota storage.\n"
-"  \n"
-"  -D | --description d Adds a textual description to printers.\n"
-"\n"
-"  -C | --cups          Also modifies the DeviceURI in CUPS' printers.conf\n"
-"\n"
-"  -c | --charge p[,j]  Sets the price per page and per job to charge.\n"
-"                       Job price is optional.\n"
-"                       If both are to be set, separate them with a comma.\n"
-"                       Floating point and negative values are allowed.\n"
-"  \n"
-"  -g | --groups pg1[,pg2...] Adds or Remove the printer(s) to the printer \n"
-"                       groups 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"
-"                       If the --remove option below is not used, the \n"
-"                       default action is to add printers to the specified\n"
-"                       printer groups.\n"
-"                       \n"
-"  -l | --list          List informations about the printer(s) and the\n"
-"                       printers groups it is a member of.\n"
-"                       \n"
-"  -r | --remove        In combination with the --groups option "
-"above,                       \n"
-"                       remove printers from the specified printers groups.\n"
-"                       \n"
-"  -s | --skipexisting  In combination with the --add option above, tells\n"
-"                       pkprinters to not modify existing printers.\n"
-"                       \n"
-"  -m | --maxjobsize s  Sets the maximum job size allowed on the printer\n"
-"                       to s pages.\n"
-"                       \n"
-"  -p | --passthrough   Activate passthrough mode for the printer. In this\n"
-"                       mode, users are allowed to print without any impact\n"
-"                       on their quota or account balance.\n"
-"                       \n"
-"  -n | --nopassthrough Deactivate passthrough mode for the printer.\n"
-"                       Without -p or -n, printers are created in \n"
-"                       normal mode, i.e. no passthrough.\n"
-"  \n"
-"  printer1 through printerN can contain wildcards if the --add option \n"
-"  is not set.\n"
-"  \n"
-"examples :                              \n"
-"\n"
-"  $ pkprinters --add -D \"HP Printer\" --charge 0.05,0.1 hp2100 hp2200 "
-"hp8000\n"
-"  \n"
-"  Will create three printers named hp2100, hp2200 and hp8000.\n"
-"  Their price per page will be set at 0.05 unit, and their price\n"
-"  per job will be set at 0.1 unit. Units are in your own currency,\n"
-"  or whatever you want them to mean.\n"
-"  All of their descriptions will be set to the string \"HP Printer\".\n"
-"  If any of these printers already exists, it will also be modified \n"
-"  unless the -s|--skipexisting command line option is also used.\n"
-"            \n"
-"  $ pkprinters --delete \"*\"\n"
-"  \n"
-"  This will completely delete all printers and associated quota "
-"information,\n"
-"  as well as their job history. USE WITH CARE !\n"
-"  \n"
-"  $ pkprinters --groups Laser,HP \"hp*\"\n"
-"  \n"
-"  This will put all printers which name matches \"hp*\" into printers "
-"groups \n"
-"  Laser and HP, which MUST already exist.\n"
-"  \n"
-"  $ pkprinters --groups LexMark --remove hp2200\n"
-"  \n"
-"  This will remove the hp2200 printer from the LexMark printer group.\n"
-msgstr ""
-
-#, python-format
-msgid "Passthrough mode : %s"
-msgstr ""
-
-msgid "ON"
-msgstr ""
-
-msgid "OFF"
-msgstr ""
-
-msgid "in"
-msgstr "en"
-
-#, python-format
-msgid "Invalid charge amount value %s"
-msgstr "Valor %s inv�do para el importe de carga"
-
-#, python-format
-msgid "Invalid maximum job size value %s"
-msgstr ""
-
-#, python-format
-msgid "Printer %s already exists, skipping."
-msgstr "La impresora %s ya existe, se salta."
-
-#, python-format
-msgid "Printer %s already exists, will be modified."
-msgstr "La impresora %s ya existe, va a ser modificada."
-
-#, python-format
-msgid "Invalid printer name %s"
-msgstr "Nombre de impresora %s inv�do"
-
-msgid "You have to pass printer groups names on the command line"
-msgstr ""
-"Ha de proporcionar nombres de grupos de impresoras en la l�a de comandos"
-
-msgid "You have to pass printer names on the command line"
-msgstr "Ha de proporcionar nombres de impresoras en la l�a de comandos"
-
-#, python-format
 msgid "Unsupported accounter backend %s"
 msgstr "Backend de contabilidad %s no soportado"
@@ -2012,4 +2261,8 @@
 
 #, python-format
+msgid "Incorrect value %s for the noprintingmaxdelay directive in section %s"
+msgstr ""
+
+#, python-format
 msgid "Option accountbanner in section %s only supports values in %s"
 msgstr "La opci�ccountbanner, en la secci�s, s�soporta los valores %s"
@@ -2075,8 +2328,4 @@
 
 #, python-format
-msgid "Invalid filter value [%s], see help."
-msgstr ""
-
-#, python-format
 msgid "Invalid modifier [%s] for --format command line option, see help."
 msgstr "Modificador [%s] inv�do para la opci�-format, vea la ayuda."
@@ -2147,4 +2396,8 @@
 
 #, python-format
+msgid "Refunded %i pages and %.3f credits by %s (%s) on %s"
+msgstr ""
+
+#, python-format
 msgid "Unsupported quota storage backend %s"
 msgstr "Backend %s de almacenamiento de cuota no soportado"
@@ -2288,4 +2541,8 @@
 "objectClass pykotaGroup %s"
 
+msgid ""
+"Your version of python-mysqldb is too old. Please install a newer release."
+msgstr ""
+
 #, python-format
 msgid "A problem occured while reading printer %s's internal page counter."
@@ -2347,4 +2604,10 @@
 
 #, python-format
+msgid ""
+"Unable to precompute the job's size and ink coverage with the generic PDL "
+"analyzer : %s"
+msgstr ""
+
+#, python-format
 msgid "Problem during connection to %s:%s : %s"
 msgstr "Problema durante la conexi� %s:%s : %s"
@@ -2375,4 +2638,12 @@
 
 #, python-format
+msgid ""
+"SNMP querying stage interrupted. Using latest value seen for internal page "
+"counter (%s) on printer %s."
+msgstr ""
+"Etapa de petici�NMP interrumpida. Utilizando el �o valor visto en el "
+"contador interno de p�nas (%s) en la impresora %s."
+
+#, python-format
 msgid "Network error while doing SNMP queries on printer %s : %s"
 msgstr "Errores de red mientras se hac� peticiones en la impresora %s : %s"
@@ -2389,12 +2660,4 @@
 
 #, python-format
-msgid ""
-"SNMP querying stage interrupted. Using latest value seen for internal page "
-"counter (%s) on printer %s."
-msgstr ""
-"Etapa de petici�NMP interrumpida. Utilizando el �o valor visto en el "
-"contador interno de p�nas (%s) en la impresora %s."
-
-#, python-format
 msgid "Unable to precompute the job's size with the generic PDL analyzer : %s"
 msgstr ""
@@ -2424,4 +2687,107 @@
 "Los totales pueden ser err�s si algunos usuarios son miembros de varios "
 "grupos."
+
+msgid "PyKota Data Dumper"
+msgstr "Volcado de datos de PyKota"
+
+msgid "Dump"
+msgstr "Volcado"
+
+msgid "Please click on the above button"
+msgstr "Pulse sobre el bot�e arriba, por favor"
+
+msgid "Data Type"
+msgstr "Tipo de datos"
+
+msgid "Output Format"
+msgstr "Formato de salida"
+
+msgid "Filter"
+msgstr "Filtro"
+
+msgid "Summarize"
+msgstr ""
+
+msgid "only for payments or history"
+msgstr ""
+
+msgid "PyKota Reports"
+msgstr "Informes de PyKota"
+
+msgid "Report"
+msgstr "Informe"
+
+msgid "Printer"
+msgstr "Impresora"
+
+msgid "User / Group names mask"
+msgstr "M�ara para el nombre de Usuario / Grupo"
+
+msgid "Groups report"
+msgstr "Informes de los grupos"
+
+msgid "Empty"
+msgstr "Vac�
+
+msgid "Action"
+msgstr "Acci�
+msgid "User"
+msgstr "Usuario"
+
+msgid "Hostname"
+msgstr "Hostname"
+
+msgid "JobId"
+msgstr "IdTrabajo"
+
+msgid "Number of pages"
+msgstr ""
+
+msgid "Cost"
+msgstr ""
+
+msgid "Copies"
+msgstr "Copias"
+
+msgid "Number of bytes"
+msgstr ""
+
+msgid "Printer's internal counter"
+msgstr ""
+
+msgid "Options"
+msgstr "Opciones"
+
+msgid "MD5Sum"
+msgstr "SumaMD5"
+
+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 ""
 
 #~ msgid "Impossible to add printer %s"
@@ -2455,63 +2821,4 @@
 #~ msgid "Group %s not found in the PyKota Storage."
 #~ msgstr "Grupo %s no encontrado en el Almac�de PyKota."
-
-#~ msgid "PyKota Data Dumper"
-#~ msgstr "Volcado de datos de PyKota"
-
-#~ msgid "Dump"
-#~ msgstr "Volcado"
-
-#~ msgid "Please click on the above button"
-#~ msgstr "Pulse sobre el bot�e arriba, por favor"
-
-#~ msgid "Data Type"
-#~ msgstr "Tipo de datos"
-
-#~ msgid "Output Format"
-#~ msgstr "Formato de salida"
-
-#~ msgid "Filter"
-#~ msgstr "Filtro"
-
-#~ msgid "PyKota Reports"
-#~ msgstr "Informes de PyKota"
-
-#~ msgid "Report"
-#~ msgstr "Informe"
-
-#~ msgid "Printer"
-#~ msgstr "Impresora"
-
-#~ msgid "User / Group names mask"
-#~ msgstr "M�ara para el nombre de Usuario / Grupo"
-
-#~ msgid "Groups report"
-#~ msgstr "Informes de los grupos"
-
-#~ msgid "Empty"
-#~ msgstr "Vac�
-
-#~ msgid "Action"
-#~ msgstr "Acci�
-#~ msgid "User"
-#~ msgstr "Usuario"
-
-#~ msgid "Hostname"
-#~ msgstr "Hostname"
-
-#~ msgid "JobId"
-#~ msgstr "IdTrabajo"
-
-#~ msgid "Copies"
-#~ msgstr "Copias"
-
-#~ msgid "Options"
-#~ msgstr "Opciones"
-
-#~ msgid "MD5Sum"
-#~ msgstr "SumaMD5"
-
-#~ msgid "Previous page"
-#~ msgstr "P�na anterior"
 
 #~ msgid "Job is a duplicate. Printing is denied."
