MessageParser: internationalization and French localization

This commit is contained in:
Valentin Lorentz 2011-02-26 11:48:21 +01:00
parent 2779b676c2
commit 401725f511
4 changed files with 386 additions and 51 deletions

View File

@ -31,41 +31,42 @@
import supybot.conf as conf import supybot.conf as conf
import supybot.registry as registry import supybot.registry as registry
def configure(advanced): try:
# This will be called by supybot to configure this module. advanced is from supybot.i18n import PluginInternationalization
# a bool that specifies whether the user identified himself as an advanced from supybot.i18n import internationalizeDocstring
# user or not. You should effect your configuration by manipulating the _ = PluginInternationalization('MessageParser')
# registry as appropriate. except:
from supybot.questions import expect, anything, something, yn # This are useless functions that's allow to run the plugin on a bot
conf.registerPlugin('MessageParser', True) # without the i18n plugin
_ = lambda x:x
internationalizeDocstring = lambda x:x
MessageParser = conf.registerPlugin('MessageParser') MessageParser = conf.registerPlugin('MessageParser')
# This is where your configuration variables (if any) should go. For example: # This is where your configuration variables (if any) should go. For example:
# conf.registerGlobalValue(MessageParser, 'someConfigVariableName', # conf.registerGlobalValue(MessageParser, 'someConfigVariableName',
# registry.Boolean(False, """Help for someConfigVariableName.""")) # registry.Boolean(False, """Help for someConfigVariableName."""))
conf.registerChannelValue(MessageParser, 'enable', conf.registerChannelValue(MessageParser, 'enable',
registry.Boolean(True, """Determines whether the registry.Boolean(True, _("""Determines whether the
message parser is enabled. If enabled, will trigger on regexps message parser is enabled. If enabled, will trigger on regexps
added to the regexp db.""")) added to the regexp db.""")))
conf.registerChannelValue(MessageParser, 'keepRankInfo', conf.registerChannelValue(MessageParser, 'keepRankInfo',
registry.Boolean(True, """Determines whether we keep updating the usage registry.Boolean(True, _("""Determines whether we keep updating the usage
count for each regexp, for popularity ranking.""")) count for each regexp, for popularity ranking.""")))
conf.registerChannelValue(MessageParser, 'rankListLength', conf.registerChannelValue(MessageParser, 'rankListLength',
registry.Integer(20, """Determines the number of regexps returned registry.Integer(20, _("""Determines the number of regexps returned
by the triggerrank command.""")) by the triggerrank command.""")))
conf.registerChannelValue(MessageParser, 'requireVacuumCapability', conf.registerChannelValue(MessageParser, 'requireVacuumCapability',
registry.String('admin', """Determines the capability required (if any) to registry.String('admin', _("""Determines the capability required (if any) to
vacuum the database.""")) vacuum the database.""")))
conf.registerChannelValue(MessageParser, 'requireManageCapability', conf.registerChannelValue(MessageParser, 'requireManageCapability',
registry.String('admin; channel,op', registry.String('admin; channel,op', _("""Determines the
"""Determines the
capabilities required (if any) to manage the regexp database, capabilities required (if any) to manage the regexp database,
including add, remove, lock, unlock. Use 'channel,capab' for including add, remove, lock, unlock. Use 'channel,capab' for
channel-level capabilities. channel-level capabilities.
Note that absence of an explicit anticapability means user has Note that absence of an explicit anticapability means user has
capability.""")) capability.""")))
conf.registerChannelValue(MessageParser, 'listSeparator', conf.registerChannelValue(MessageParser, 'listSeparator',
registry.String(', ', """Determines the separator used between rexeps when registry.String(', ', _("""Determines the separator used between rexeps when
shown by the list command.""")) shown by the list command.""")))
# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:

View File

@ -0,0 +1,241 @@
msgid ""
msgstr ""
"Project-Id-Version: Gribble\n"
"POT-Creation-Date: 2011-02-26 11:47+CET\n"
"PO-Revision-Date: \n"
"Last-Translator: Valentin Lorentz <progval@gmail.com>\n"
"Language-Team: Supybot-fr <progval@gmail.com>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Français\n"
"X-Poedit-Country: France\n"
"X-Poedit-SourceCharset: Gribble\n"
#: config.py:49
msgid ""
"Determines whether the\n"
" message parser is enabled. If enabled, will trigger on regexps\n"
" added to the regexp db."
msgstr "Détermine si le parseur de messages est activé. S'il l'est, il réagira aux expressions régulières qui sont dans la base de données d'expressions régulières."
#: config.py:53
msgid ""
"Determines whether we keep updating the usage\n"
" count for each regexp, for popularity ranking."
msgstr "Détermine si on met à jour le compteur d'utilisation de chaque expression régulière, pour un classement de popularité"
#: config.py:56
msgid ""
"Determines the number of regexps returned\n"
" by the triggerrank command."
msgstr "Détermine le nombre d'expressions régulières retournées par la commande triggerrank"
#: config.py:59
msgid ""
"Determines the capability required (if any) to\n"
" vacuum the database."
msgstr "Détermine la capacité requise (s'il y en a une) pour faire un vacuum de la base de données."
#: config.py:62
msgid ""
"Determines the\n"
" capabilities required (if any) to manage the regexp database,\n"
" including add, remove, lock, unlock. Use 'channel,capab' for\n"
" channel-level capabilities.\n"
" Note that absence of an explicit anticapability means user has\n"
" capability."
msgstr "Détermine les capacités requises (s'il y en a) pour gérer la base de données d'expressions régulières, ce qui inclue l'ajout, la suppression, le verrouillage, et le déverrouillage. Utilisez 'canal,capa' pour des permissions par canal. Notez que l'absence de toute anti-capacité explicite signifit que l'utilisateur peut le faire."
#: config.py:69
msgid ""
"Determines the separator used between rexeps when\n"
" shown by the list command."
msgstr "Détermine le séparateur utilisé entre les expressions régulières affichées par la commande list."
#: plugin.py:75
msgid ""
"This plugin can set regexp triggers to activate the bot.\n"
" Use 'add' command to add regexp trigger, 'remove' to remove."
msgstr "Ce plugin peut définir les triggers pour activer le bot. Utilisez la commande 'add' pour ajouter un trigger et 'remove' pour en retirer un."
#: plugin.py:83
msgid "Create the database and connect to it."
msgstr ""
#: plugin.py:106
msgid "Use this to get a database for a specific channel."
msgstr ""
#: plugin.py:129
msgid "Run a command from message, as if command was sent over IRC."
msgstr ""
#: plugin.py:137
msgid ""
"Check if the user has any of the required capabilities to manage\n"
" the regexp database."
msgstr ""
#: plugin.py:179
msgid ""
"[<channel>] <regexp> <action>\n"
"\n"
" Associates <regexp> with <action>. <channel> is only\n"
" necessary if the message isn't sent on the channel\n"
" itself. Action is echoed upon regexp match, with variables $1, $2, \n"
" etc. being interpolated from the regexp match groups."
msgstr ""
"[<canal>] <expression régulière> <action>\n"
"\n"
"Associe l'<expression régulière> à l'<action>. <action> est affiché après la correspondance avec l'<expression régulière>, avec les variables $1, $2, etc, récupérés à partir des groupes de correspondance de l'<expression régulière>.<canal> n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:201
msgid "Invalid python regexp: %s"
msgstr "Expression régulière Python invalide : %s"
#: plugin.py:213
msgid "That trigger is locked."
msgstr "Ce trigger est bloqué."
#: plugin.py:219
msgid ""
"[<channel>] [--id] <regexp>]\n"
"\n"
" Removes the trigger for <regexp> from the triggers database. \n"
" <channel> is only necessary if\n"
" the message isn't sent in the channel itself.\n"
" If option --id specified, will retrieve by regexp id, not content.\n"
" "
msgstr ""
"[<canal>] [--id] <expression régulière>\n"
"\n"
"Supprime le déclencheur pour l'<expression régulière> de la base de données des déclencheurs. Si l'option --id est spécifiée, l'id de l'<expression régulière> sera récupéré, et non le contenu."
#: plugin.py:241
#: plugin.py:271
#: plugin.py:294
#: plugin.py:322
#: plugin.py:352
msgid "There is no such regexp trigger."
msgstr "Cette expression régulière n'existe pas."
#: plugin.py:245
msgid "This regexp trigger is locked."
msgstr "Cette expression régulière est verrouillée"
#: plugin.py:257
msgid ""
"[<channel>] <regexp>\n"
"\n"
" Locks the <regexp> so that it cannot be\n"
" removed or overwritten to. <channel> is only necessary if the message isn't\n"
" sent in the channel itself.\n"
" "
msgstr ""
"[<canal>] <expression régulière>\n"
"\n"
"Verrouille l'<expression régulière>, ce qui fait que l'on ne puisse plus la supprimer ou la modifier. <canal> n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:280
msgid ""
"[<channel>] <regexp>\n"
"\n"
" Unlocks the entry associated with <regexp> so that it can be\n"
" removed or overwritten. <channel> is only necessary if the message isn't\n"
" sent in the channel itself.\n"
" "
msgstr ""
"[<canal>] <expression régulière>\n"
"\n"
"Déverrouille l'<expression régulière>, ce qui fait que l'on peut à nouveau la supprimer ou la modifier. <canal> n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:303
msgid ""
"[<channel>] [--id] <regexp>\n"
"\n"
" Looks up the value of <regexp> in the triggers database.\n"
" <channel> is only necessary if the message isn't sent in the channel \n"
" itself.\n"
" If option --id specified, will retrieve by regexp id, not content.\n"
" "
msgstr ""
"[<canal>] [--id] <expression régulière>\n"
"\n"
"Recherche la valeur de l'<expression régulière> de la base de données des déclencheurs. Si l'option --id est spécifiée, l'id de l'<expression régulière> sera récupéré, et non le contenu."
#: plugin.py:332
msgid ""
"[<channel>] [--id] <regexp>\n"
"\n"
" Display information about <regexp> in the triggers database.\n"
" <channel> is only necessary if the message isn't sent in the channel \n"
" itself.\n"
" If option --id specified, will retrieve by regexp id, not content.\n"
" "
msgstr ""
"[<canal>] [--id] <expression régulière>\n"
"\n"
"Affiche des informations à propos de l'<expression régulière> de la base de données des déclencheurs. Si l'option --id est spécifiée, l'id de l'<expression régulière> sera récupéré, et non le contenu."
#: plugin.py:355
msgid "The regexp id is %d, regexp is \"%s\", and action is \"%s\". It was added by user %s on %s, has been triggered %d times, and is %s."
msgstr "L'id de l'expression régulière est %d, l'expression régulière est \"%s\", et l'action est \"%s\". Elle a été ajoutée par l'utilisateur %s le %s, et a été utilisée %d fois, et est %s"
#: plugin.py:364
msgid "locked"
msgstr "verouillée"
#: plugin.py:364
msgid "not locked"
msgstr "non verrouillée"
#: plugin.py:371
msgid ""
"[<channel>]\n"
"\n"
" Lists regexps present in the triggers database.\n"
" <channel> is only necessary if the message isn't sent in the channel \n"
" itself. Regexp ID listed in paretheses.\n"
" "
msgstr ""
"[<canal>]\n"
"\n"
"Liste les expressions régulières présentes dans la base de données. <canal> n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:384
#: plugin.py:410
msgid "There are no regexp triggers in the database."
msgstr "Il n'y a pas d'expression régulière dans ma base de données."
#: plugin.py:394
msgid ""
"[<channel>]\n"
" \n"
" Returns a list of top-ranked regexps, sorted by usage count \n"
" (rank). The number of regexps returned is set by the \n"
" rankListLength registry value. <channel> is only necessary if the \n"
" message isn't sent in the channel itself.\n"
" "
msgstr ""
"[<canal>]\n"
"\n"
"Retourne une liste des expressions régulières les plus utilisées. Le nombre d'expressions régulières est définie par la variable de registre supybot.plugins.MessageParser.rankListLength. <canal> n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:418
msgid ""
"[<channel>]\n"
" \n"
" Vacuums the database for <channel>.\n"
" See SQLite vacuum doc here: http://www.sqlite.org/lang_vacuum.html\n"
" <channel> is only necessary if the message isn't sent in \n"
" the channel itself.\n"
" First check if user has the required capability specified in plugin \n"
" config requireVacuumCapability.\n"
" "
msgstr ""
"[<canal>]\n"
"\n"
"Fait un vacuum de la base de données pour le <canal>.Lisez la documentation de SQLite sur cette fonctionnalité : http://www.sqlite.org/lang_vacuum.htmlVérifie d'abord si l'utilisateur a bien la permission spécifiée dans la variable de configuration supybot.plugins.requireVacuumCapability<canal> n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2011-02-26 09:49+CET\n" "POT-Creation-Date: 2011-02-26 11:47+CET\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,36 +15,77 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: plugin.py:65 #: config.py:49
msgid ""
"Determines whether the\n"
" message parser is enabled. If enabled, will trigger on regexps\n"
" added to the regexp db."
msgstr ""
#: config.py:53
msgid ""
"Determines whether we keep updating the usage\n"
" count for each regexp, for popularity ranking."
msgstr ""
#: config.py:56
msgid ""
"Determines the number of regexps returned\n"
" by the triggerrank command."
msgstr ""
#: config.py:59
msgid ""
"Determines the capability required (if any) to\n"
" vacuum the database."
msgstr ""
#: config.py:62
msgid ""
"Determines the\n"
" capabilities required (if any) to manage the regexp database,\n"
" including add, remove, lock, unlock. Use 'channel,capab' for\n"
" channel-level capabilities.\n"
" Note that absence of an explicit anticapability means user has\n"
" capability."
msgstr ""
#: config.py:69
msgid ""
"Determines the separator used between rexeps when\n"
" shown by the list command."
msgstr ""
#: plugin.py:75
#, docstring #, docstring
msgid "" msgid ""
"This plugin can set regexp triggers to activate the bot.\n" "This plugin can set regexp triggers to activate the bot.\n"
" Use 'add' command to add regexp trigger, 'remove' to remove." " Use 'add' command to add regexp trigger, 'remove' to remove."
msgstr "" msgstr ""
#: plugin.py:73 #: plugin.py:83
#, docstring #, docstring
msgid "Create the database and connect to it." msgid "Create the database and connect to it."
msgstr "" msgstr ""
#: plugin.py:96 #: plugin.py:106
#, docstring #, docstring
msgid "Use this to get a database for a specific channel." msgid "Use this to get a database for a specific channel."
msgstr "" msgstr ""
#: plugin.py:119 #: plugin.py:129
#, docstring #, docstring
msgid "Run a command from message, as if command was sent over IRC." msgid "Run a command from message, as if command was sent over IRC."
msgstr "" msgstr ""
#: plugin.py:127 #: plugin.py:137
#, docstring #, docstring
msgid "" msgid ""
"Check if the user has any of the required capabilities to manage\n" "Check if the user has any of the required capabilities to manage\n"
" the regexp database." " the regexp database."
msgstr "" msgstr ""
#: plugin.py:168 #: plugin.py:179
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <regexp> <action>\n" "[<channel>] <regexp> <action>\n"
@ -55,7 +96,15 @@ msgid ""
" etc. being interpolated from the regexp match groups." " etc. being interpolated from the regexp match groups."
msgstr "" msgstr ""
#: plugin.py:207 #: plugin.py:201
msgid "Invalid python regexp: %s"
msgstr ""
#: plugin.py:213
msgid "That trigger is locked."
msgstr ""
#: plugin.py:219
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [--id] <regexp>]\n" "[<channel>] [--id] <regexp>]\n"
@ -67,7 +116,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:244 #: plugin.py:241 plugin.py:271 plugin.py:294 plugin.py:322 plugin.py:352
msgid "There is no such regexp trigger."
msgstr ""
#: plugin.py:245
msgid "This regexp trigger is locked."
msgstr ""
#: plugin.py:257
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <regexp>\n" "[<channel>] <regexp>\n"
@ -78,7 +135,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:266 #: plugin.py:280
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <regexp>\n" "[<channel>] <regexp>\n"
@ -89,7 +146,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:288 #: plugin.py:303
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [--id] <regexp>\n" "[<channel>] [--id] <regexp>\n"
@ -101,7 +158,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:316 #: plugin.py:332
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [--id] <regexp>\n" "[<channel>] [--id] <regexp>\n"
@ -113,7 +170,19 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:354 #: plugin.py:355
msgid "The regexp id is %d, regexp is \"%s\", and action is \"%s\". It was added by user %s on %s, has been triggered %d times, and is %s."
msgstr ""
#: plugin.py:364
msgid "locked"
msgstr ""
#: plugin.py:364
msgid "not locked"
msgstr ""
#: plugin.py:371
#, docstring #, docstring
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
@ -124,7 +193,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:376 #: plugin.py:384 plugin.py:410
msgid "There are no regexp triggers in the database."
msgstr ""
#: plugin.py:394
#, docstring #, docstring
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
@ -136,7 +209,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:399 #: plugin.py:418
#, docstring #, docstring
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"

View File

@ -41,6 +41,16 @@ import re
import os import os
import time import time
try:
from supybot.i18n import PluginInternationalization
from supybot.i18n import internationalizeDocstring
_ = PluginInternationalization('MessageParser')
except:
# This are useless functions that's allow to run the plugin on a bot
# without the i18n plugin
_ = lambda x:x
internationalizeDocstring = lambda x:x
#try: #try:
#import sqlite #import sqlite
#except ImportError: #except ImportError:
@ -164,6 +174,7 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
for action in actions: for action in actions:
self._runCommandFunction(irc, msg, action) self._runCommandFunction(irc, msg, action)
@internationalizeDocstring
def add(self, irc, msg, args, channel, regexp, action): def add(self, irc, msg, args, channel, regexp, action):
"""[<channel>] <regexp> <action> """[<channel>] <regexp> <action>
@ -187,7 +198,7 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
try: try:
re.compile(regexp) re.compile(regexp)
except Exception, e: except Exception, e:
irc.error('Invalid python regexp: %s' % (e,)) irc.error(_('Invalid python regexp: %s') % (e,))
return return
if ircdb.users.hasUser(msg.prefix): if ircdb.users.hasUser(msg.prefix):
name = ircdb.users.getUser(msg.prefix).name name = ircdb.users.getUser(msg.prefix).name
@ -199,10 +210,11 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
db.commit() db.commit()
irc.replySuccess() irc.replySuccess()
else: else:
irc.error('That trigger is locked.') irc.error(_('That trigger is locked.'))
return return
add = wrap(add, ['channel', 'something', 'something']) add = wrap(add, ['channel', 'something', 'something'])
@internationalizeDocstring
def remove(self, irc, msg, args, channel, optlist, regexp): def remove(self, irc, msg, args, channel, optlist, regexp):
"""[<channel>] [--id] <regexp>] """[<channel>] [--id] <regexp>]
@ -226,11 +238,11 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
if len(results) != 0: if len(results) != 0:
(id, locked) = map(int, results[0]) (id, locked) = map(int, results[0])
else: else:
irc.error('There is no such regexp trigger.') irc.error(_('There is no such regexp trigger.'))
return return
if locked: if locked:
irc.error('This regexp trigger is locked.') irc.error(_('This regexp trigger is locked.'))
return return
cursor.execute("""DELETE FROM triggers WHERE id=?""", (id,)) cursor.execute("""DELETE FROM triggers WHERE id=?""", (id,))
@ -240,6 +252,7 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
getopts({'id': '',}), getopts({'id': '',}),
'something']) 'something'])
@internationalizeDocstring
def lock(self, irc, msg, args, channel, regexp): def lock(self, irc, msg, args, channel, regexp):
"""[<channel>] <regexp> """[<channel>] <regexp>
@ -255,13 +268,14 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
cursor.execute("SELECT id FROM triggers WHERE regexp=?", (regexp,)) cursor.execute("SELECT id FROM triggers WHERE regexp=?", (regexp,))
results = cursor.fetchall() results = cursor.fetchall()
if len(results) == 0: if len(results) == 0:
irc.error('There is no such regexp trigger.') irc.error(_('There is no such regexp trigger.'))
return return
cursor.execute("UPDATE triggers SET locked=1 WHERE regexp=?", (regexp,)) cursor.execute("UPDATE triggers SET locked=1 WHERE regexp=?", (regexp,))
db.commit() db.commit()
irc.replySuccess() irc.replySuccess()
lock = wrap(lock, ['channel', 'text']) lock = wrap(lock, ['channel', 'text'])
@internationalizeDocstring
def unlock(self, irc, msg, args, channel, regexp): def unlock(self, irc, msg, args, channel, regexp):
"""[<channel>] <regexp> """[<channel>] <regexp>
@ -277,13 +291,14 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
cursor.execute("SELECT id FROM triggers WHERE regexp=?", (regexp,)) cursor.execute("SELECT id FROM triggers WHERE regexp=?", (regexp,))
results = cursor.fetchall() results = cursor.fetchall()
if len(results) == 0: if len(results) == 0:
irc.error('There is no such regexp trigger.') irc.error(_('There is no such regexp trigger.'))
return return
cursor.execute("UPDATE triggers SET locked=0 WHERE regexp=?", (regexp,)) cursor.execute("UPDATE triggers SET locked=0 WHERE regexp=?", (regexp,))
db.commit() db.commit()
irc.replySuccess() irc.replySuccess()
unlock = wrap(unlock, ['channel', 'text']) unlock = wrap(unlock, ['channel', 'text'])
@internationalizeDocstring
def show(self, irc, msg, args, channel, optlist, regexp): def show(self, irc, msg, args, channel, optlist, regexp):
"""[<channel>] [--id] <regexp> """[<channel>] [--id] <regexp>
@ -304,7 +319,7 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
if len(results) != 0: if len(results) != 0:
(regexp, action) = results[0] (regexp, action) = results[0]
else: else:
irc.error('There is no such regexp trigger.') irc.error(_('There is no such regexp trigger.'))
return return
irc.reply("The action for regexp trigger \"%s\" is \"%s\"" % (regexp, action)) irc.reply("The action for regexp trigger \"%s\" is \"%s\"" % (regexp, action))
@ -312,6 +327,7 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
getopts({'id': '',}), getopts({'id': '',}),
'something']) 'something'])
@internationalizeDocstring
def info(self, irc, msg, args, channel, optlist, regexp): def info(self, irc, msg, args, channel, optlist, regexp):
"""[<channel>] [--id] <regexp> """[<channel>] [--id] <regexp>
@ -333,23 +349,24 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
(id, regexp, added_by, added_at, usage_count, (id, regexp, added_by, added_at, usage_count,
action, locked) = results[0] action, locked) = results[0]
else: else:
irc.error('There is no such regexp trigger.') irc.error(_('There is no such regexp trigger.'))
return return
irc.reply("The regexp id is %d, regexp is \"%s\", and action is" irc.reply(_("The regexp id is %d, regexp is \"%s\", and action is"
" \"%s\". It was added by user %s on %s, has been " " \"%s\". It was added by user %s on %s, has been "
"triggered %d times, and is %s." % (id, "triggered %d times, and is %s.") % (id,
regexp, regexp,
action, action,
added_by, added_by,
time.strftime(conf.supybot.reply.format.time(), time.strftime(conf.supybot.reply.format.time(),
time.localtime(int(added_at))), time.localtime(int(added_at))),
usage_count, usage_count,
locked and "locked" or "not locked",)) locked and _("locked") or _("not locked"),))
info = wrap(info, ['channel', info = wrap(info, ['channel',
getopts({'id': '',}), getopts({'id': '',}),
'something']) 'something'])
@internationalizeDocstring
def list(self, irc, msg, args, channel): def list(self, irc, msg, args, channel):
"""[<channel>] """[<channel>]
@ -364,7 +381,7 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
if len(results) != 0: if len(results) != 0:
regexps = results regexps = results
else: else:
irc.reply('There are no regexp triggers in the database.') irc.reply(_('There are no regexp triggers in the database.'))
return return
s = [ "\"%s\" (%d)" % (regexp[0], regexp[1]) for regexp in regexps ] s = [ "\"%s\" (%d)" % (regexp[0], regexp[1]) for regexp in regexps ]
@ -372,6 +389,7 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
irc.reply(separator.join(s)) irc.reply(separator.join(s))
list = wrap(list, ['channel']) list = wrap(list, ['channel'])
@internationalizeDocstring
def rank(self, irc, msg, args, channel): def rank(self, irc, msg, args, channel):
"""[<channel>] """[<channel>]
@ -389,12 +407,13 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
LIMIT ?""", (numregexps,)) LIMIT ?""", (numregexps,))
regexps = cursor.fetchall() regexps = cursor.fetchall()
if len(regexps) == 0: if len(regexps) == 0:
irc.reply('There are no regexp triggers in the database.') irc.reply(_('There are no regexp triggers in the database.'))
return return
s = [ "#%d \"%s\" (%d)" % (i+1, regexp[0], regexp[1]) for i, regexp in enumerate(regexps) ] s = [ "#%d \"%s\" (%d)" % (i+1, regexp[0], regexp[1]) for i, regexp in enumerate(regexps) ]
irc.reply(", ".join(s)) irc.reply(", ".join(s))
rank = wrap(rank, ['channel']) rank = wrap(rank, ['channel'])
@internationalizeDocstring
def vacuum(self, irc, msg, args, channel): def vacuum(self, irc, msg, args, channel):
"""[<channel>] """[<channel>]
@ -415,6 +434,7 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler):
db.commit() db.commit()
irc.replySuccess() irc.replySuccess()
vacuum = wrap(vacuum, ['channel']) vacuum = wrap(vacuum, ['channel'])
MessageParser = internationalizeDocstring(MessageParser)
Class = MessageParser Class = MessageParser