mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-30 14:59:34 +01:00
Merge branch 'i18n' of github.com:ProgVal/Supybot-fr into i18n
This commit is contained in:
commit
7cf5bb7242
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Heral')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -41,31 +43,31 @@ def configure(advanced):
|
|||||||
|
|
||||||
Herald = conf.registerPlugin('Herald')
|
Herald = conf.registerPlugin('Herald')
|
||||||
conf.registerChannelValue(Herald, 'heralding',
|
conf.registerChannelValue(Herald, 'heralding',
|
||||||
registry.Boolean(True, """Determines whether messages will be sent to the
|
registry.Boolean(True, _("""Determines whether messages will be sent to the
|
||||||
channel when a recognized user joins; basically enables or disables the
|
channel when a recognized user joins; basically enables or disables the
|
||||||
plugin."""))
|
plugin.""")))
|
||||||
conf.registerGlobalValue(Herald, 'requireCapability',
|
conf.registerGlobalValue(Herald, 'requireCapability',
|
||||||
registry.String('', """Determines what capability (if any) is required to
|
registry.String('', _("""Determines what capability (if any) is required to
|
||||||
add/change/remove the herald of another user."""))
|
add/change/remove the herald of another user.""")))
|
||||||
conf.registerChannelValue(Herald, 'throttle',
|
conf.registerChannelValue(Herald, 'throttle',
|
||||||
registry.PositiveInteger(600, """Determines the minimum number of seconds
|
registry.PositiveInteger(600, _("""Determines the minimum number of seconds
|
||||||
between heralds."""))
|
between heralds.""")))
|
||||||
conf.registerChannelValue(Herald.throttle, 'afterPart',
|
conf.registerChannelValue(Herald.throttle, 'afterPart',
|
||||||
registry.NonNegativeInteger(0, """Determines the minimum number of seconds
|
registry.NonNegativeInteger(0, _("""Determines the minimum number of seconds
|
||||||
after parting that the bot will not herald the person when he or she
|
after parting that the bot will not herald the person when he or she
|
||||||
rejoins."""))
|
rejoins.""")))
|
||||||
conf.registerChannelValue(Herald.throttle, 'afterSplit',
|
conf.registerChannelValue(Herald.throttle, 'afterSplit',
|
||||||
registry.NonNegativeInteger(60, """Determines the minimum number of seconds
|
registry.NonNegativeInteger(60, _("""Determines the minimum number of seconds
|
||||||
after a netsplit that the bot will not herald the users that split."""))
|
after a netsplit that the bot will not herald the users that split.""")))
|
||||||
conf.registerChannelValue(Herald, 'default',
|
conf.registerChannelValue(Herald, 'default',
|
||||||
registry.String('', """Sets the default herald to use. If a user has a
|
registry.String('', _("""Sets the default herald to use. If a user has a
|
||||||
personal herald specified, that will be used instead. If set to the empty
|
personal herald specified, that will be used instead. If set to the empty
|
||||||
string, the default herald will be disabled."""))
|
string, the default herald will be disabled.""")))
|
||||||
conf.registerChannelValue(Herald.default, 'notice',
|
conf.registerChannelValue(Herald.default, 'notice',
|
||||||
registry.Boolean(True, """Determines whether the default herald will be
|
registry.Boolean(True, _("""Determines whether the default herald will be
|
||||||
sent as a NOTICE instead of a PRIVMSG."""))
|
sent as a NOTICE instead of a PRIVMSG.""")))
|
||||||
conf.registerChannelValue(Herald.default, 'public',
|
conf.registerChannelValue(Herald.default, 'public',
|
||||||
registry.Boolean(False, """Determines whether the default herald will be
|
registry.Boolean(False, _("""Determines whether the default herald will be
|
||||||
sent publicly."""))
|
sent publicly.""")))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
140
plugins/Herald/messages.pot
Normal file
140
plugins/Herald/messages.pot
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:46
|
||||||
|
msgid ""
|
||||||
|
"Determines whether messages will be sent to the\n"
|
||||||
|
" channel when a recognized user joins; basically enables or disables the\n"
|
||||||
|
" plugin."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:50
|
||||||
|
msgid ""
|
||||||
|
"Determines what capability (if any) is required to\n"
|
||||||
|
" add/change/remove the herald of another user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:53
|
||||||
|
msgid ""
|
||||||
|
"Determines the minimum number of seconds\n"
|
||||||
|
" between heralds."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:56
|
||||||
|
msgid ""
|
||||||
|
"Determines the minimum number of seconds\n"
|
||||||
|
" after parting that the bot will not herald the person when he or she\n"
|
||||||
|
" rejoins."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:60
|
||||||
|
msgid ""
|
||||||
|
"Determines the minimum number of seconds\n"
|
||||||
|
" after a netsplit that the bot will not herald the users that split."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:63
|
||||||
|
msgid ""
|
||||||
|
"Sets the default herald to use. If a user has a\n"
|
||||||
|
" personal herald specified, that will be used instead. If set to the empty\n"
|
||||||
|
" string, the default herald will be disabled."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:67
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the default herald will be\n"
|
||||||
|
" sent as a NOTICE instead of a PRIVMSG."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:70
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the default herald will be\n"
|
||||||
|
" sent publicly."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:143
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [--remove|<msg>]\n"
|
||||||
|
"\n"
|
||||||
|
" If <msg> is given, sets the default herald to <msg>. A <msg> of \"\"\n"
|
||||||
|
" will remove the default herald. If <msg> is not given, returns the\n"
|
||||||
|
" current default herald. <channel> is only necessary if the message\n"
|
||||||
|
" isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:162
|
||||||
|
msgid "I do not have a default herald set for %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:170
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<user|nick>]\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the current herald message for <user> (or the user\n"
|
||||||
|
" <nick|hostmask> is currently identified or recognized as). If <user>\n"
|
||||||
|
" is not given, defaults to the user giving the command. <channel>\n"
|
||||||
|
" is only necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:181
|
||||||
|
msgid "I have no herald for %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:201
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] <user|nick> <msg>\n"
|
||||||
|
"\n"
|
||||||
|
" Sets the herald message for <user> (or the user <nick|hostmask> is\n"
|
||||||
|
" currently identified or recognized as) to <msg>. <channel> is only\n"
|
||||||
|
" necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:214
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<user|nick>]\n"
|
||||||
|
"\n"
|
||||||
|
" Removes the herald message set for <user>, or the user\n"
|
||||||
|
" <nick|hostmask> is currently identified or recognized as. If <user>\n"
|
||||||
|
" is not given, defaults to the user giving the command.\n"
|
||||||
|
" <channel> is only necessary if the message isn't sent in the channel\n"
|
||||||
|
" itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:227
|
||||||
|
msgid "I have no herald for that user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:232
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<user|nick>] <regexp>\n"
|
||||||
|
"\n"
|
||||||
|
" Changes the herald message for <user>, or the user <nick|hostmask> is\n"
|
||||||
|
" currently identified or recognized as, according to <regexp>. If\n"
|
||||||
|
" <user> is not given, defaults to the calling user. <channel> is only\n"
|
||||||
|
" necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -40,6 +40,8 @@ import supybot.plugins as plugins
|
|||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
from supybot.utils.structures import TimeoutQueue
|
from supybot.utils.structures import TimeoutQueue
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Heral')
|
||||||
|
|
||||||
filename = conf.supybot.directories.data.dirize('Herald.db')
|
filename = conf.supybot.directories.data.dirize('Herald.db')
|
||||||
|
|
||||||
@ -136,6 +138,7 @@ class Herald(callbacks.Plugin):
|
|||||||
raise KeyError
|
raise KeyError
|
||||||
return id
|
return id
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def default(self, irc, msg, args, channel, optlist, text):
|
def default(self, irc, msg, args, channel, optlist, text):
|
||||||
"""[<channel>] [--remove|<msg>]
|
"""[<channel>] [--remove|<msg>]
|
||||||
|
|
||||||
@ -156,12 +159,13 @@ class Herald(callbacks.Plugin):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
else:
|
else:
|
||||||
resp = self.registryValue('default', channel) or \
|
resp = self.registryValue('default', channel) or \
|
||||||
'I do not have a default herald set for %s.' % channel
|
_('I do not have a default herald set for %s.') % channel
|
||||||
irc.reply(resp)
|
irc.reply(resp)
|
||||||
default = wrap(default, ['channel',
|
default = wrap(default, ['channel',
|
||||||
getopts({'remove': ''}),
|
getopts({'remove': ''}),
|
||||||
additional('text')])
|
additional('text')])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def get(self, irc, msg, args, channel, user):
|
def get(self, irc, msg, args, channel, user):
|
||||||
"""[<channel>] [<user|nick>]
|
"""[<channel>] [<user|nick>]
|
||||||
|
|
||||||
@ -174,7 +178,7 @@ class Herald(callbacks.Plugin):
|
|||||||
herald = self.db[channel, user.id]
|
herald = self.db[channel, user.id]
|
||||||
irc.reply(herald)
|
irc.reply(herald)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error('I have no herald for %s.' % user.name)
|
irc.error(_('I have no herald for %s.') % user.name)
|
||||||
get = wrap(get, ['channel', first('otherUser', 'user')])
|
get = wrap(get, ['channel', first('otherUser', 'user')])
|
||||||
|
|
||||||
def _preCheck(self, irc, msg, user):
|
def _preCheck(self, irc, msg, user):
|
||||||
@ -192,6 +196,7 @@ class Herald(callbacks.Plugin):
|
|||||||
# I chose not to make <user|nick> optional in this command because
|
# I chose not to make <user|nick> optional in this command because
|
||||||
# if it's not a valid username (e.g., if the user tyops and misspells a
|
# if it's not a valid username (e.g., if the user tyops and misspells a
|
||||||
# username), it may be nice not to clobber the user's herald.
|
# username), it may be nice not to clobber the user's herald.
|
||||||
|
@internationalizeDocstring
|
||||||
def add(self, irc, msg, args, channel, user, herald):
|
def add(self, irc, msg, args, channel, user, herald):
|
||||||
"""[<channel>] <user|nick> <msg>
|
"""[<channel>] <user|nick> <msg>
|
||||||
|
|
||||||
@ -204,6 +209,7 @@ class Herald(callbacks.Plugin):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
add = wrap(add, ['channel', 'otherUser', 'text'])
|
add = wrap(add, ['channel', 'otherUser', 'text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def remove(self, irc, msg, args, channel, user):
|
def remove(self, irc, msg, args, channel, user):
|
||||||
"""[<channel>] [<user|nick>]
|
"""[<channel>] [<user|nick>]
|
||||||
|
|
||||||
@ -218,9 +224,10 @@ class Herald(callbacks.Plugin):
|
|||||||
del self.db[channel, user.id]
|
del self.db[channel, user.id]
|
||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error('I have no herald for that user.')
|
irc.error(_('I have no herald for that user.'))
|
||||||
remove = wrap(remove, ['channel', first('otherUser', 'user')])
|
remove = wrap(remove, ['channel', first('otherUser', 'user')])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def change(self, irc, msg, args, channel, user, changer):
|
def change(self, irc, msg, args, channel, user, changer):
|
||||||
"""[<channel>] [<user|nick>] <regexp>
|
"""[<channel>] [<user|nick>] <regexp>
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Internet')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -42,7 +44,7 @@ def configure(advanced):
|
|||||||
Internet = conf.registerPlugin('Internet')
|
Internet = conf.registerPlugin('Internet')
|
||||||
# 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(Internet, 'someConfigVariableName',
|
# conf.registerGlobalValue(Internet, 'someConfigVariableName',
|
||||||
# registry.Boolean(False, """Help for someConfigVariableName."""))
|
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
85
plugins/Internet/messages.pot
Normal file
85
plugins/Internet/messages.pot
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:20+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: plugin.py:43
|
||||||
|
#, docstring
|
||||||
|
msgid "Add the help for \"@help Internet\" here."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:47
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<host|ip>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the ip of <host> or the reverse DNS hostname of <ip>.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:54 plugin.py:61 plugin.py:65
|
||||||
|
msgid "Host not found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:77
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<domain>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns WHOIS information on the registration of <domain>.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:83
|
||||||
|
msgid "domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:112
|
||||||
|
msgid "updated %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:115
|
||||||
|
msgid "registered %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:118
|
||||||
|
msgid "expires %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:138
|
||||||
|
msgid " <registered at %s>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:140
|
||||||
|
msgid " <registered by %s>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:145
|
||||||
|
msgid "%s%s is %L."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:148
|
||||||
|
msgid "I couldn't find such a domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:153
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<ip>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the hexadecimal IP for that IP.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -35,11 +35,14 @@ import supybot.utils as utils
|
|||||||
from supybot.commands import *
|
from supybot.commands import *
|
||||||
from supybot.utils.iter import any
|
from supybot.utils.iter import any
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Internet')
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
class Internet(callbacks.Plugin):
|
class Internet(callbacks.Plugin):
|
||||||
"""Add the help for "@help Internet" here."""
|
"""Add the help for "@help Internet" here."""
|
||||||
threaded = True
|
threaded = True
|
||||||
|
@internationalizeDocstring
|
||||||
def dns(self, irc, msg, args, host):
|
def dns(self, irc, msg, args, host):
|
||||||
"""<host|ip>
|
"""<host|ip>
|
||||||
|
|
||||||
@ -48,18 +51,18 @@ class Internet(callbacks.Plugin):
|
|||||||
if utils.net.isIP(host):
|
if utils.net.isIP(host):
|
||||||
hostname = socket.getfqdn(host)
|
hostname = socket.getfqdn(host)
|
||||||
if hostname == host:
|
if hostname == host:
|
||||||
irc.reply('Host not found.')
|
irc.reply(_('Host not found.'))
|
||||||
else:
|
else:
|
||||||
irc.reply(hostname)
|
irc.reply(hostname)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
ip = socket.gethostbyname(host)
|
ip = socket.gethostbyname(host)
|
||||||
if ip == '64.94.110.11': # Verisign sucks!
|
if ip == '64.94.110.11': # Verisign sucks!
|
||||||
irc.reply('Host not found.')
|
irc.reply(_('Host not found.'))
|
||||||
else:
|
else:
|
||||||
irc.reply(ip)
|
irc.reply(ip)
|
||||||
except socket.error:
|
except socket.error:
|
||||||
irc.reply('Host not found.')
|
irc.reply(_('Host not found.'))
|
||||||
dns = wrap(dns, ['something'])
|
dns = wrap(dns, ['something'])
|
||||||
|
|
||||||
_domain = ['Domain Name', 'Server Name', 'domain']
|
_domain = ['Domain Name', 'Server Name', 'domain']
|
||||||
@ -69,6 +72,7 @@ class Internet(callbacks.Plugin):
|
|||||||
_created = ['Created On', 'Domain Registration Date', 'Creation Date']
|
_created = ['Created On', 'Domain Registration Date', 'Creation Date']
|
||||||
_expires = ['Expiration Date', 'Domain Expiration Date']
|
_expires = ['Expiration Date', 'Domain Expiration Date']
|
||||||
_status = ['Status', 'Domain Status', 'status']
|
_status = ['Status', 'Domain Status', 'status']
|
||||||
|
@internationalizeDocstring
|
||||||
def whois(self, irc, msg, args, domain):
|
def whois(self, irc, msg, args, domain):
|
||||||
"""<domain>
|
"""<domain>
|
||||||
|
|
||||||
@ -76,7 +80,7 @@ class Internet(callbacks.Plugin):
|
|||||||
"""
|
"""
|
||||||
usertld = domain.split('.')[-1]
|
usertld = domain.split('.')[-1]
|
||||||
if '.' not in domain:
|
if '.' not in domain:
|
||||||
irc.errorInvalid('domain')
|
irc.errorInvalid(_('domain'))
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
t = telnetlib.Telnet('%s.whois-servers.net' % usertld, 43)
|
t = telnetlib.Telnet('%s.whois-servers.net' % usertld, 43)
|
||||||
@ -105,13 +109,13 @@ class Internet(callbacks.Plugin):
|
|||||||
registrar = ':'.join(line.split(':')[1:]).strip()
|
registrar = ':'.join(line.split(':')[1:]).strip()
|
||||||
elif not updated and any(line.startswith, self._updated):
|
elif not updated and any(line.startswith, self._updated):
|
||||||
s = ':'.join(line.split(':')[1:]).strip()
|
s = ':'.join(line.split(':')[1:]).strip()
|
||||||
updated = 'updated %s' % s
|
updated = _('updated %s') % s
|
||||||
elif not created and any(line.startswith, self._created):
|
elif not created and any(line.startswith, self._created):
|
||||||
s = ':'.join(line.split(':')[1:]).strip()
|
s = ':'.join(line.split(':')[1:]).strip()
|
||||||
created = 'registered %s' % s
|
created = _('registered %s') % s
|
||||||
elif not expires and any(line.startswith, self._expires):
|
elif not expires and any(line.startswith, self._expires):
|
||||||
s = ':'.join(line.split(':')[1:]).strip()
|
s = ':'.join(line.split(':')[1:]).strip()
|
||||||
expires = 'expires %s' % s
|
expires = _('expires %s') % s
|
||||||
elif not status and any(line.startswith, self._status):
|
elif not status and any(line.startswith, self._status):
|
||||||
status = ':'.join(line.split(':')[1:]).strip().lower()
|
status = ':'.join(line.split(':')[1:]).strip().lower()
|
||||||
if not status:
|
if not status:
|
||||||
@ -131,19 +135,20 @@ class Internet(callbacks.Plugin):
|
|||||||
if not line:
|
if not line:
|
||||||
continue
|
continue
|
||||||
if line.startswith('Email'):
|
if line.startswith('Email'):
|
||||||
url = ' <registered at %s>' % line.split('@')[-1]
|
url = _(' <registered at %s>') % line.split('@')[-1]
|
||||||
elif line.startswith('Registrar Organization:'):
|
elif line.startswith('Registrar Organization:'):
|
||||||
url = ' <registered by %s>' % line.split(':')[1].strip()
|
url = _(' <registered by %s>') % line.split(':')[1].strip()
|
||||||
elif line == 'Not a valid ID pattern':
|
elif line == 'Not a valid ID pattern':
|
||||||
url = ''
|
url = ''
|
||||||
if server and status:
|
if server and status:
|
||||||
info = filter(None, [status, created, updated, expires])
|
info = filter(None, [status, created, updated, expires])
|
||||||
s = format('%s%s is %L.', server, url, info)
|
s = format(_('%s%s is %L.'), server, url, info)
|
||||||
irc.reply(s)
|
irc.reply(s)
|
||||||
else:
|
else:
|
||||||
irc.error('I couldn\'t find such a domain.')
|
irc.error(_('I couldn\'t find such a domain.'))
|
||||||
whois = wrap(whois, ['lowered'])
|
whois = wrap(whois, ['lowered'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def hexip(self, irc, msg, args, ip):
|
def hexip(self, irc, msg, args, ip):
|
||||||
"""<ip>
|
"""<ip>
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Karma')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -41,22 +43,22 @@ def configure(advanced):
|
|||||||
conf.registerPlugin('Karma')
|
conf.registerPlugin('Karma')
|
||||||
|
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'simpleOutput',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'simpleOutput',
|
||||||
registry.Boolean(False, """Determines whether the bot will output shorter
|
registry.Boolean(False, _("""Determines whether the bot will output shorter
|
||||||
versions of the karma output when requesting a single thing's karma."""))
|
versions of the karma output when requesting a single thing's karma.""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'response',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'response',
|
||||||
registry.Boolean(False, """Determines whether the bot will reply with a
|
registry.Boolean(False, _("""Determines whether the bot will reply with a
|
||||||
success message when something's karma is increased or decreased."""))
|
success message when something's karma is increased or decreased.""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'rankingDisplay',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'rankingDisplay',
|
||||||
registry.Integer(3, """Determines how many highest/lowest karma things are
|
registry.Integer(3, _("""Determines how many highest/lowest karma things
|
||||||
shown when karma is called with no arguments."""))
|
are shown when karma is called with no arguments.""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'mostDisplay',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'mostDisplay',
|
||||||
registry.Integer(25, """Determines how many karma things are shown when
|
registry.Integer(25, _("""Determines how many karma things are shown when
|
||||||
the most command is called.'"""))
|
the most command is called.'""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowSelfRating',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowSelfRating',
|
||||||
registry.Boolean(False, """Determines whether users can adjust the karma
|
registry.Boolean(False, _("""Determines whether users can adjust the karma
|
||||||
of their nick."""))
|
of their nick.""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowUnaddressedKarma',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowUnaddressedKarma',
|
||||||
registry.Boolean(False, """Determines whether the bot will
|
registry.Boolean(False, _("""Determines whether the bot will
|
||||||
increase/decrease karma without being addressed."""))
|
increase/decrease karma without being addressed.""")))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
137
plugins/Karma/messages.pot
Normal file
137
plugins/Karma/messages.pot
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:46
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will output shorter\n"
|
||||||
|
" versions of the karma output when requesting a single thing's karma."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:49
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will reply with a\n"
|
||||||
|
" success message when something's karma is increased or decreased."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:52
|
||||||
|
msgid ""
|
||||||
|
"Determines how many highest/lowest karma things\n"
|
||||||
|
" are shown when karma is called with no arguments."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:55
|
||||||
|
msgid ""
|
||||||
|
"Determines how many karma things are shown when\n"
|
||||||
|
" the most command is called.'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:58
|
||||||
|
msgid ""
|
||||||
|
"Determines whether users can adjust the karma\n"
|
||||||
|
" of their nick."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:61
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will\n"
|
||||||
|
" increase/decrease karma without being addressed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:243 plugin.py:251
|
||||||
|
msgid "You're not allowed to adjust your own karma."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:280
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<thing> ...]\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the karma of <thing>. If <thing> is not given, returns the top\n"
|
||||||
|
" N karmas, where N is determined by the config variable\n"
|
||||||
|
" supybot.plugins.Karma.rankingDisplay. If one <thing> is given, returns\n"
|
||||||
|
" the details of its karma; if more than one <thing> is given, returns\n"
|
||||||
|
" the total karma of each of the the things. <channel> is only necessary\n"
|
||||||
|
" if the message isn't sent on the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:293
|
||||||
|
msgid "%s has neutral karma."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:300
|
||||||
|
msgid "Karma for %q has been increased %n and decreased %n for a total karma of %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:315
|
||||||
|
msgid "I didn't know the karma for any of those things."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:325 plugin.py:354
|
||||||
|
msgid "I have no karma for this channel."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:330
|
||||||
|
msgid " You (%s) are ranked %i out of %i."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:334
|
||||||
|
msgid "Highest karma: %L. Lowest karma: %L.%s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:342
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] {increased,decreased,active}\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the most increased, the most decreased, or the most active\n"
|
||||||
|
" (the sum of increased and decreased) karma things. <channel> is only\n"
|
||||||
|
" necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:360
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] <name>\n"
|
||||||
|
"\n"
|
||||||
|
" Resets the karma of <name> to 0.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:370
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] <filename>\n"
|
||||||
|
"\n"
|
||||||
|
" Dumps the Karma database for <channel> to <filename> in the bot's\n"
|
||||||
|
" data directory. <channel> is only necessary if the message isn't sent\n"
|
||||||
|
" in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:382
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] <filename>\n"
|
||||||
|
"\n"
|
||||||
|
" Loads the Karma database for <channel> from <filename> in the bot's\n"
|
||||||
|
" data directory. <channel> is only necessary if the message isn't sent\n"
|
||||||
|
" in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -38,6 +38,8 @@ import supybot.plugins as plugins
|
|||||||
import supybot.ircmsgs as ircmsgs
|
import supybot.ircmsgs as ircmsgs
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Karma')
|
||||||
|
|
||||||
class SqliteKarmaDB(object):
|
class SqliteKarmaDB(object):
|
||||||
def __init__(self, filename):
|
def __init__(self, filename):
|
||||||
@ -238,7 +240,7 @@ class Karma(callbacks.Plugin):
|
|||||||
thing = thing[:-2]
|
thing = thing[:-2]
|
||||||
if ircutils.strEqual(thing, irc.msg.nick) and \
|
if ircutils.strEqual(thing, irc.msg.nick) and \
|
||||||
not self.registryValue('allowSelfRating', channel):
|
not self.registryValue('allowSelfRating', channel):
|
||||||
irc.error('You\'re not allowed to adjust your own karma.')
|
irc.error(_('You\'re not allowed to adjust your own karma.'))
|
||||||
elif thing:
|
elif thing:
|
||||||
self.db.increment(channel, self._normalizeThing(thing))
|
self.db.increment(channel, self._normalizeThing(thing))
|
||||||
self._respond(irc, channel)
|
self._respond(irc, channel)
|
||||||
@ -246,7 +248,7 @@ class Karma(callbacks.Plugin):
|
|||||||
thing = thing[:-2]
|
thing = thing[:-2]
|
||||||
if ircutils.strEqual(thing, irc.msg.nick) and \
|
if ircutils.strEqual(thing, irc.msg.nick) and \
|
||||||
not self.registryValue('allowSelfRating', channel):
|
not self.registryValue('allowSelfRating', channel):
|
||||||
irc.error('You\'re not allowed to adjust your own karma.')
|
irc.error(_('You\'re not allowed to adjust your own karma.'))
|
||||||
elif thing:
|
elif thing:
|
||||||
self.db.decrement(channel, self._normalizeThing(thing))
|
self.db.decrement(channel, self._normalizeThing(thing))
|
||||||
self._respond(irc, channel)
|
self._respond(irc, channel)
|
||||||
@ -273,6 +275,7 @@ class Karma(callbacks.Plugin):
|
|||||||
if thing[-2:] in ('++', '--'):
|
if thing[-2:] in ('++', '--'):
|
||||||
self._doKarma(irc, channel, thing)
|
self._doKarma(irc, channel, thing)
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def karma(self, irc, msg, args, channel, things):
|
def karma(self, irc, msg, args, channel, things):
|
||||||
"""[<channel>] [<thing> ...]
|
"""[<channel>] [<thing> ...]
|
||||||
|
|
||||||
@ -287,15 +290,15 @@ class Karma(callbacks.Plugin):
|
|||||||
name = things[0]
|
name = things[0]
|
||||||
t = self.db.get(channel, name)
|
t = self.db.get(channel, name)
|
||||||
if t is None:
|
if t is None:
|
||||||
irc.reply(format('%s has neutral karma.', name))
|
irc.reply(format(_('%s has neutral karma.'), name))
|
||||||
else:
|
else:
|
||||||
(added, subtracted) = t
|
(added, subtracted) = t
|
||||||
total = added - subtracted
|
total = added - subtracted
|
||||||
if self.registryValue('simpleOutput', channel):
|
if self.registryValue('simpleOutput', channel):
|
||||||
s = format('%s: %i', name, total)
|
s = format('%s: %i', name, total)
|
||||||
else:
|
else:
|
||||||
s = format('Karma for %q has been increased %n and '
|
s = format(_('Karma for %q has been increased %n and '
|
||||||
'decreased %n for a total karma of %s.',
|
'decreased %n for a total karma of %s.'),
|
||||||
name, (added, 'time'), (subtracted, 'time'),
|
name, (added, 'time'), (subtracted, 'time'),
|
||||||
total)
|
total)
|
||||||
irc.reply(s)
|
irc.reply(s)
|
||||||
@ -309,7 +312,8 @@ class Karma(callbacks.Plugin):
|
|||||||
s += neutral
|
s += neutral
|
||||||
irc.reply(s + '.')
|
irc.reply(s + '.')
|
||||||
else:
|
else:
|
||||||
irc.reply('I didn\'t know the karma for any of those things.')
|
irc.reply(_('I didn\'t know the karma for any of those '
|
||||||
|
'things.'))
|
||||||
else: # No name was given. Return the top/bottom N karmas.
|
else: # No name was given. Return the top/bottom N karmas.
|
||||||
limit = self.registryValue('rankingDisplay', channel)
|
limit = self.registryValue('rankingDisplay', channel)
|
||||||
top = self.db.top(channel, limit)
|
top = self.db.top(channel, limit)
|
||||||
@ -318,21 +322,22 @@ class Karma(callbacks.Plugin):
|
|||||||
lowest = [format('%q (%s)', s, t)
|
lowest = [format('%q (%s)', s, t)
|
||||||
for (s, t) in self.db.bottom(channel, limit)]
|
for (s, t) in self.db.bottom(channel, limit)]
|
||||||
if not (highest and lowest):
|
if not (highest and lowest):
|
||||||
irc.error('I have no karma for this channel.')
|
irc.error(_('I have no karma for this channel.'))
|
||||||
return
|
return
|
||||||
rank = self.db.rank(channel, msg.nick)
|
rank = self.db.rank(channel, msg.nick)
|
||||||
if rank is not None:
|
if rank is not None:
|
||||||
total = self.db.size(channel)
|
total = self.db.size(channel)
|
||||||
rankS = format(' You (%s) are ranked %i out of %i.',
|
rankS = format(_(' You (%s) are ranked %i out of %i.'),
|
||||||
msg.nick, rank, total)
|
msg.nick, rank, total)
|
||||||
else:
|
else:
|
||||||
rankS = ''
|
rankS = ''
|
||||||
s = format('Highest karma: %L. Lowest karma: %L.%s',
|
s = format(_('Highest karma: %L. Lowest karma: %L.%s'),
|
||||||
highest, lowest, rankS)
|
highest, lowest, rankS)
|
||||||
irc.reply(s)
|
irc.reply(s)
|
||||||
karma = wrap(karma, ['channel', any('something')])
|
karma = wrap(karma, ['channel', any('something')])
|
||||||
|
|
||||||
_mostAbbrev = utils.abbrev(['increased', 'decreased', 'active'])
|
_mostAbbrev = utils.abbrev(['increased', 'decreased', 'active'])
|
||||||
|
@internationalizeDocstring
|
||||||
def most(self, irc, msg, args, channel, kind):
|
def most(self, irc, msg, args, channel, kind):
|
||||||
"""[<channel>] {increased,decreased,active}
|
"""[<channel>] {increased,decreased,active}
|
||||||
|
|
||||||
@ -346,10 +351,11 @@ class Karma(callbacks.Plugin):
|
|||||||
L = [format('%q: %i', name, i) for (name, i) in L]
|
L = [format('%q: %i', name, i) for (name, i) in L]
|
||||||
irc.reply(format('%L', L))
|
irc.reply(format('%L', L))
|
||||||
else:
|
else:
|
||||||
irc.error('I have no karma for this channel.')
|
irc.error(_('I have no karma for this channel.'))
|
||||||
most = wrap(most, ['channel',
|
most = wrap(most, ['channel',
|
||||||
('literal', ['increased', 'decreased', 'active'])])
|
('literal', ['increased', 'decreased', 'active'])])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def clear(self, irc, msg, args, channel, name):
|
def clear(self, irc, msg, args, channel, name):
|
||||||
"""[<channel>] <name>
|
"""[<channel>] <name>
|
||||||
|
|
||||||
@ -359,6 +365,7 @@ class Karma(callbacks.Plugin):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
clear = wrap(clear, [('checkChannelCapability', 'op'), 'text'])
|
clear = wrap(clear, [('checkChannelCapability', 'op'), 'text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def dump(self, irc, msg, args, channel, filename):
|
def dump(self, irc, msg, args, channel, filename):
|
||||||
"""[<channel>] <filename>
|
"""[<channel>] <filename>
|
||||||
|
|
||||||
@ -370,6 +377,7 @@ class Karma(callbacks.Plugin):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
dump = wrap(dump, [('checkCapability', 'owner'), 'channeldb', 'filename'])
|
dump = wrap(dump, [('checkCapability', 'owner'), 'channeldb', 'filename'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def load(self, irc, msg, args, channel, filename):
|
def load(self, irc, msg, args, channel, filename):
|
||||||
"""[<channel>] <filename>
|
"""[<channel>] <filename>
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Lart')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -42,10 +44,10 @@ def configure(advanced):
|
|||||||
Lart = conf.registerPlugin('Lart')
|
Lart = conf.registerPlugin('Lart')
|
||||||
# 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(Lart, 'someConfigVariableName',
|
# conf.registerGlobalValue(Lart, 'someConfigVariableName',
|
||||||
# registry.Boolean(False, """Help for someConfigVariableName."""))
|
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
||||||
conf.registerChannelValue(Lart, 'showIds',
|
conf.registerChannelValue(Lart, 'showIds',
|
||||||
registry.Boolean(False, """Determines whether the bot will show the ids of
|
registry.Boolean(False, _("""Determines whether the bot will show the ids
|
||||||
a lart when the lart is given."""))
|
of a lart when the lart is given.""")))
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
54
plugins/Lart/messages.pot
Normal file
54
plugins/Lart/messages.pot
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:49
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will show the ids\n"
|
||||||
|
" of a lart when the lart is given."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:48
|
||||||
|
msgid "Larts must contain $who."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:52
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<id>] <who|what> [for <reason>]\n"
|
||||||
|
"\n"
|
||||||
|
" Uses the Luser Attitude Readjustment Tool on <who|what> (for <reason>,\n"
|
||||||
|
" if given). If <id> is given, uses that specific lart. <channel> is\n"
|
||||||
|
" only necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:66
|
||||||
|
msgid "There is no lart with id #%i."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:71
|
||||||
|
msgid "There are no larts in my database for %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:77
|
||||||
|
msgid "trying to dis me"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:85
|
||||||
|
msgid " for "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -32,6 +32,8 @@ import re
|
|||||||
from supybot.commands import *
|
from supybot.commands import *
|
||||||
import supybot.plugins as plugins
|
import supybot.plugins as plugins
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Lart')
|
||||||
|
|
||||||
class Lart(plugins.ChannelIdDatabasePlugin):
|
class Lart(plugins.ChannelIdDatabasePlugin):
|
||||||
_meRe = re.compile(r'\bme\b', re.I)
|
_meRe = re.compile(r'\bme\b', re.I)
|
||||||
@ -43,8 +45,9 @@ class Lart(plugins.ChannelIdDatabasePlugin):
|
|||||||
|
|
||||||
def addValidator(self, irc, text):
|
def addValidator(self, irc, text):
|
||||||
if '$who' not in text:
|
if '$who' not in text:
|
||||||
irc.error('Larts must contain $who.', Raise=True)
|
irc.error(_('Larts must contain $who.'), Raise=True)
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def lart(self, irc, msg, args, channel, id, text):
|
def lart(self, irc, msg, args, channel, id, text):
|
||||||
"""[<channel>] [<id>] <who|what> [for <reason>]
|
"""[<channel>] [<id>] <who|what> [for <reason>]
|
||||||
|
|
||||||
@ -60,18 +63,18 @@ class Lart(plugins.ChannelIdDatabasePlugin):
|
|||||||
try:
|
try:
|
||||||
lart = self.db.get(channel, id)
|
lart = self.db.get(channel, id)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error(format('There is no lart with id #%i.', id))
|
irc.error(format(_('There is no lart with id #%i.'), id))
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
lart = self.db.random(channel)
|
lart = self.db.random(channel)
|
||||||
if not lart:
|
if not lart:
|
||||||
irc.error(format('There are no larts in my database '
|
irc.error(format(_('There are no larts in my database '
|
||||||
'for %s.', channel))
|
'for %s.'), channel))
|
||||||
return
|
return
|
||||||
text = lart.text
|
text = lart.text
|
||||||
if ircutils.strEqual(target, irc.nick):
|
if ircutils.strEqual(target, irc.nick):
|
||||||
target = msg.nick
|
target = msg.nick
|
||||||
reason = self._replaceFirstPerson('trying to dis me', irc.nick)
|
reason = self._replaceFirstPerson(_('trying to dis me'), irc.nick)
|
||||||
else:
|
else:
|
||||||
target = self._replaceFirstPerson(target, msg.nick)
|
target = self._replaceFirstPerson(target, msg.nick)
|
||||||
reason = self._replaceFirstPerson(reason, msg.nick)
|
reason = self._replaceFirstPerson(reason, msg.nick)
|
||||||
@ -79,7 +82,7 @@ class Lart(plugins.ChannelIdDatabasePlugin):
|
|||||||
target = target.rstrip('.')
|
target = target.rstrip('.')
|
||||||
text = text.replace('$who', target)
|
text = text.replace('$who', target)
|
||||||
if reason:
|
if reason:
|
||||||
text += ' for ' + reason
|
text += _(' for ') + reason
|
||||||
if self.registryValue('showIds', channel):
|
if self.registryValue('showIds', channel):
|
||||||
text += format(' (#%i)', lart.id)
|
text += format(' (#%i)', lart.id)
|
||||||
irc.reply(text, action=True)
|
irc.reply(text, action=True)
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Later')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by setup.py to configure this module. Advanced is
|
# This will be called by setup.py to configure this module. Advanced is
|
||||||
@ -40,10 +42,11 @@ def configure(advanced):
|
|||||||
|
|
||||||
Later = conf.registerPlugin('Later')
|
Later = conf.registerPlugin('Later')
|
||||||
conf.registerGlobalValue(Later, 'maximum',
|
conf.registerGlobalValue(Later, 'maximum',
|
||||||
registry.NonNegativeInteger(0, """Determines the maximum number of messages
|
registry.NonNegativeInteger(0, _("""Determines the maximum number of
|
||||||
to be queued for a user. If this value is 0, there is no maximum."""))
|
messages to be queued for a user. If this value is 0, there is no maximum.
|
||||||
|
""")))
|
||||||
conf.registerGlobalValue(Later, 'private',
|
conf.registerGlobalValue(Later, 'private',
|
||||||
registry.Boolean(True, """Determines whether users will be notified in the
|
registry.Boolean(True, _("""Determines whether users will be notified in
|
||||||
first place in which they're seen, or in private."""))
|
the first place in which they're seen, or in private.""")))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
101
plugins/Later/messages.pot
Normal file
101
plugins/Later/messages.pot
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:45
|
||||||
|
msgid ""
|
||||||
|
"Determines the maximum number of\n"
|
||||||
|
" messages to be queued for a user. If this value is 0, there is no maximum.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:49
|
||||||
|
msgid ""
|
||||||
|
"Determines whether users will be notified in\n"
|
||||||
|
" the first place in which they're seen, or in private."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:47
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"Used to do things later; currently, it only allows the sending of\n"
|
||||||
|
" nick-based notes. Do note (haha!) that these notes are *not* private\n"
|
||||||
|
" and don't even pretend to be; if you want such features, consider using the\n"
|
||||||
|
" Note plugin."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:87
|
||||||
|
msgid "just now"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:108
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<nick> <text>\n"
|
||||||
|
"\n"
|
||||||
|
" Tells <nick> <text> the next time <nick> is in seen. <nick> can\n"
|
||||||
|
" contain wildcard characters, and the first matching nick will be\n"
|
||||||
|
" given the note.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:115
|
||||||
|
msgid "I can't send notes to myself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:121
|
||||||
|
msgid "That person's message queue is already full."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:126
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<nick>]\n"
|
||||||
|
"\n"
|
||||||
|
" If <nick> is given, replies with what notes are waiting on <nick>,\n"
|
||||||
|
" otherwise, replies with the nicks that have notes waiting for them.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:137
|
||||||
|
msgid "I have no notes for that nick."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:142
|
||||||
|
msgid "I currently have notes waiting for %L."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:145
|
||||||
|
msgid "I have no notes waiting to be delivered."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:150
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<nick>\n"
|
||||||
|
"\n"
|
||||||
|
" Removes the notes waiting on <nick>.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:159
|
||||||
|
msgid "There were no notes for %r"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:183
|
||||||
|
msgid "Sent %s: <%s> %s"
|
||||||
|
msgstr ""
|
||||||
|
|
@ -38,8 +38,11 @@ from supybot.commands import *
|
|||||||
import supybot.ircmsgs as ircmsgs
|
import supybot.ircmsgs as ircmsgs
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Later')
|
||||||
|
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
class Later(callbacks.Plugin):
|
class Later(callbacks.Plugin):
|
||||||
"""Used to do things later; currently, it only allows the sending of
|
"""Used to do things later; currently, it only allows the sending of
|
||||||
nick-based notes. Do note (haha!) that these notes are *not* private
|
nick-based notes. Do note (haha!) that these notes are *not* private
|
||||||
@ -81,7 +84,7 @@ class Later(callbacks.Plugin):
|
|||||||
try:
|
try:
|
||||||
return utils.timeElapsed(diff, seconds=False) + ' ago'
|
return utils.timeElapsed(diff, seconds=False) + ' ago'
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return 'just now'
|
return _('just now')
|
||||||
|
|
||||||
def _addNote(self, nick, whence, text, at=None, maximum=None):
|
def _addNote(self, nick, whence, text, at=None, maximum=None):
|
||||||
if at is None:
|
if at is None:
|
||||||
@ -100,6 +103,7 @@ class Later(callbacks.Plugin):
|
|||||||
self.wildcards.append(nick)
|
self.wildcards.append(nick)
|
||||||
self._flushNotes()
|
self._flushNotes()
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def tell(self, irc, msg, args, nick, text):
|
def tell(self, irc, msg, args, nick, text):
|
||||||
"""<nick> <text>
|
"""<nick> <text>
|
||||||
|
|
||||||
@ -108,15 +112,16 @@ class Later(callbacks.Plugin):
|
|||||||
given the note.
|
given the note.
|
||||||
"""
|
"""
|
||||||
if ircutils.strEqual(nick, irc.nick):
|
if ircutils.strEqual(nick, irc.nick):
|
||||||
irc.error('I can\'t send notes to myself.')
|
irc.error(_('I can\'t send notes to myself.'))
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
self._addNote(nick, msg.nick, text)
|
self._addNote(nick, msg.nick, text)
|
||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
except ValueError:
|
except ValueError:
|
||||||
irc.error('That person\'s message queue is already full.')
|
irc.error(_('That person\'s message queue is already full.'))
|
||||||
tell = wrap(tell, ['something', 'text'])
|
tell = wrap(tell, ['something', 'text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def notes(self, irc, msg, args, nick):
|
def notes(self, irc, msg, args, nick):
|
||||||
"""[<nick>]
|
"""[<nick>]
|
||||||
|
|
||||||
@ -129,17 +134,18 @@ class Later(callbacks.Plugin):
|
|||||||
for (when, whence, note) in self._notes[nick]]
|
for (when, whence, note) in self._notes[nick]]
|
||||||
irc.reply(format('%L', notes))
|
irc.reply(format('%L', notes))
|
||||||
else:
|
else:
|
||||||
irc.error('I have no notes for that nick.')
|
irc.error(_('I have no notes for that nick.'))
|
||||||
else:
|
else:
|
||||||
nicks = self._notes.keys()
|
nicks = self._notes.keys()
|
||||||
if nicks:
|
if nicks:
|
||||||
utils.sortBy(ircutils.toLower, nicks)
|
utils.sortBy(ircutils.toLower, nicks)
|
||||||
irc.reply(format('I currently have notes waiting for %L.',
|
irc.reply(format(_('I currently have notes waiting for %L.'),
|
||||||
nicks))
|
nicks))
|
||||||
else:
|
else:
|
||||||
irc.error('I have no notes waiting to be delivered.')
|
irc.error(_('I have no notes waiting to be delivered.'))
|
||||||
notes = wrap(notes, [additional('something')])
|
notes = wrap(notes, [additional('something')])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def remove(self, irc, msg, args, nick):
|
def remove(self, irc, msg, args, nick):
|
||||||
"""<nick>
|
"""<nick>
|
||||||
|
|
||||||
@ -150,7 +156,7 @@ class Later(callbacks.Plugin):
|
|||||||
self._flushNotes()
|
self._flushNotes()
|
||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error('There were no notes for %r' % nick)
|
irc.error(_('There were no notes for %r') % nick)
|
||||||
remove = wrap(remove, [('checkCapability', 'admin'), 'something'])
|
remove = wrap(remove, [('checkCapability', 'admin'), 'something'])
|
||||||
|
|
||||||
def doPrivmsg(self, irc, msg):
|
def doPrivmsg(self, irc, msg):
|
||||||
@ -174,7 +180,7 @@ class Later(callbacks.Plugin):
|
|||||||
self._flushNotes()
|
self._flushNotes()
|
||||||
|
|
||||||
def _formatNote(self, when, whence, note):
|
def _formatNote(self, when, whence, note):
|
||||||
return 'Sent %s: <%s> %s' % (self._timestamp(when), whence, note)
|
return _('Sent %s: <%s> %s') % (self._timestamp(when), whence, note)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Limiter')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -41,17 +43,17 @@ def configure(advanced):
|
|||||||
|
|
||||||
Limiter = conf.registerPlugin('Limiter')
|
Limiter = conf.registerPlugin('Limiter')
|
||||||
conf.registerChannelValue(Limiter, 'enable',
|
conf.registerChannelValue(Limiter, 'enable',
|
||||||
registry.Boolean(False, """Determines whether the bot will maintain the
|
registry.Boolean(False, _("""Determines whether the bot will maintain the
|
||||||
channel limit to be slightly above the current number of people in the
|
channel limit to be slightly above the current number of people in the
|
||||||
channel, in order to make clone/drone attacks harder."""))
|
channel, in order to make clone/drone attacks harder.""")))
|
||||||
conf.registerChannelValue(Limiter, 'minimumExcess',
|
conf.registerChannelValue(Limiter, 'minimumExcess',
|
||||||
registry.PositiveInteger(5, """Determines the minimum number of free
|
registry.PositiveInteger(5, _("""Determines the minimum number of free
|
||||||
spots that will be saved when limits are being enforced. This should
|
spots that will be saved when limits are being enforced. This should
|
||||||
always be smaller than supybot.plugins.Limiter.limit.maximumExcess."""))
|
always be smaller than supybot.plugins.Limiter.limit.maximumExcess.""")))
|
||||||
conf.registerChannelValue(Limiter, 'maximumExcess',
|
conf.registerChannelValue(Limiter, 'maximumExcess',
|
||||||
registry.PositiveInteger(10, """Determines the maximum number of free spots
|
registry.PositiveInteger(10, _("""Determines the maximum number of free spots
|
||||||
that will be saved when limits are being enforced. This should always be
|
that will be saved when limits are being enforced. This should always be
|
||||||
larger than supybot.plugins.Limiter.limit.minimumExcess."""))
|
larger than supybot.plugins.Limiter.limit.minimumExcess.""")))
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
50
plugins/Limiter/messages.pot
Normal file
50
plugins/Limiter/messages.pot
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:35+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:46
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will maintain the\n"
|
||||||
|
" channel limit to be slightly above the current number of people in the\n"
|
||||||
|
" channel, in order to make clone/drone attacks harder."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:50
|
||||||
|
msgid ""
|
||||||
|
"Determines the minimum number of free\n"
|
||||||
|
" spots that will be saved when limits are being enforced. This should\n"
|
||||||
|
" always be smaller than supybot.plugins.Limiter.limit.maximumExcess."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:54
|
||||||
|
msgid ""
|
||||||
|
"Determines the maximum number of free spots\n"
|
||||||
|
" that will be saved when limits are being enforced. This should always be\n"
|
||||||
|
" larger than supybot.plugins.Limiter.limit.minimumExcess."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:40
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"In order to use this plugin, its config values need to be properly\n"
|
||||||
|
" setup. supybot.plugins.Limiter.enable needs to be set to True and\n"
|
||||||
|
" supybot.plugins.Limiter.{maximumExcess,minimumExcess} should be set to\n"
|
||||||
|
" values appropriate to your channel (if the defaults aren't satisfactory.\n"
|
||||||
|
" Once these are set, and someone enters/leaves the channel, Supybot will\n"
|
||||||
|
" start setting the proper +l modes.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -32,8 +32,10 @@ from supybot.commands import *
|
|||||||
import supybot.ircmsgs as ircmsgs
|
import supybot.ircmsgs as ircmsgs
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Limiter')
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
class Limiter(callbacks.Plugin):
|
class Limiter(callbacks.Plugin):
|
||||||
"""In order to use this plugin, its config values need to be properly
|
"""In order to use this plugin, its config values need to be properly
|
||||||
setup. supybot.plugins.Limiter.enable needs to be set to True and
|
setup. supybot.plugins.Limiter.enable needs to be set to True and
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Math')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -42,7 +44,7 @@ def configure(advanced):
|
|||||||
Math = conf.registerPlugin('Math')
|
Math = conf.registerPlugin('Math')
|
||||||
# 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(Math, 'someConfigVariableName',
|
# conf.registerGlobalValue(Math, 'someConfigVariableName',
|
||||||
# registry.Boolean(False, """Help for someConfigVariableName."""))
|
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
129
plugins/Math/messages.pot
Normal file
129
plugins/Math/messages.pot
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:35+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: plugin.py:52
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<fromBase> [<toBase>] <number>\n"
|
||||||
|
"\n"
|
||||||
|
" Converts <number> from base <fromBase> to base <toBase>.\n"
|
||||||
|
" If <toBase> is left out, it converts to decimal.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:63
|
||||||
|
msgid "Invalid <number> for base %s: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:69
|
||||||
|
#, docstring
|
||||||
|
msgid "Convert a decimal number to another base; returns a string."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:90
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"Convert a number from any base, 2 through 36, to any other\n"
|
||||||
|
" base, 2 through 36. Returns a string."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:157
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<math expression>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the value of the evaluated <math expression>. The syntax is\n"
|
||||||
|
" Python syntax; the type of arithmetic is floating point. Floating\n"
|
||||||
|
" point arithmetic is used in order to prevent a user from being able to\n"
|
||||||
|
" crash to the bot with something like '10**10**10**10'. One consequence\n"
|
||||||
|
" is that large values such as '10**24' might not be exact.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:166 plugin.py:220
|
||||||
|
msgid "There's really no reason why you should have underscores or brackets in your mathematical expression. Please remove them."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:172 plugin.py:228
|
||||||
|
msgid "You can't use lambda in this command."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:202 plugin.py:236
|
||||||
|
msgid "The answer exceeded %s or so."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:204 plugin.py:238
|
||||||
|
msgid "Something in there wasn't a valid number."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:206 plugin.py:240
|
||||||
|
msgid "%s is not a defined function."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:213
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<math expression>\n"
|
||||||
|
"\n"
|
||||||
|
" This is the same as the calc command except that it allows integer\n"
|
||||||
|
" math, and can thus cause the bot to suck up CPU. Hence it requires\n"
|
||||||
|
" the 'trusted' capability to use.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:250
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<rpn math expression>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the value of an RPN expression.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:275
|
||||||
|
msgid "Not enough arguments for %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:288
|
||||||
|
msgid "%q is not a defined function."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:295
|
||||||
|
msgid "Stack: [%s]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:299
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<number>] <unit> to <other unit>\n"
|
||||||
|
"\n"
|
||||||
|
" Converts from <unit> to <other unit>. If number isn't given, it\n"
|
||||||
|
" defaults to 1. For unit information, see 'units' command.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:314
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
" [<type>]\n"
|
||||||
|
"\n"
|
||||||
|
" With no arguments, returns a list of measurement types, which can be\n"
|
||||||
|
" passed as arguments. When called with a type as an argument, returns\n"
|
||||||
|
" the units of that type.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -39,12 +39,15 @@ import string
|
|||||||
import supybot.utils as utils
|
import supybot.utils as utils
|
||||||
from supybot.commands import *
|
from supybot.commands import *
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Math')
|
||||||
|
|
||||||
convertcore = utils.python.universalImport('local.convertcore')
|
convertcore = utils.python.universalImport('local.convertcore')
|
||||||
|
|
||||||
baseArg = ('int', 'base', lambda i: i <= 36)
|
baseArg = ('int', 'base', lambda i: i <= 36)
|
||||||
|
|
||||||
class Math(callbacks.Plugin):
|
class Math(callbacks.Plugin):
|
||||||
|
@internationalizeDocstring
|
||||||
def base(self, irc, msg, args, frm, to, number):
|
def base(self, irc, msg, args, frm, to, number):
|
||||||
"""<fromBase> [<toBase>] <number>
|
"""<fromBase> [<toBase>] <number>
|
||||||
|
|
||||||
@ -57,7 +60,7 @@ class Math(callbacks.Plugin):
|
|||||||
try:
|
try:
|
||||||
irc.reply(self._convertBaseToBase(number, to, frm))
|
irc.reply(self._convertBaseToBase(number, to, frm))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
irc.error('Invalid <number> for base %s: %s' % (frm, number))
|
irc.error(_('Invalid <number> for base %s: %s') % (frm, number))
|
||||||
base = wrap(base, [('int', 'base', lambda i: 2 <= i <= 36),
|
base = wrap(base, [('int', 'base', lambda i: 2 <= i <= 36),
|
||||||
optional(('int', 'base', lambda i: 2 <= i <= 36), 10),
|
optional(('int', 'base', lambda i: 2 <= i <= 36), 10),
|
||||||
additional('something')])
|
additional('something')])
|
||||||
@ -149,6 +152,7 @@ class Math(callbacks.Plugin):
|
|||||||
# Then we delete all square brackets, underscores, and whitespace, so no
|
# Then we delete all square brackets, underscores, and whitespace, so no
|
||||||
# one can do list comprehensions or call __...__ functions.
|
# one can do list comprehensions or call __...__ functions.
|
||||||
###
|
###
|
||||||
|
@internationalizeDocstring
|
||||||
def calc(self, irc, msg, args, text):
|
def calc(self, irc, msg, args, text):
|
||||||
"""<math expression>
|
"""<math expression>
|
||||||
|
|
||||||
@ -159,13 +163,13 @@ class Math(callbacks.Plugin):
|
|||||||
is that large values such as '10**24' might not be exact.
|
is that large values such as '10**24' might not be exact.
|
||||||
"""
|
"""
|
||||||
if text != text.translate(utils.str.chars, '_[]'):
|
if text != text.translate(utils.str.chars, '_[]'):
|
||||||
irc.error('There\'s really no reason why you should have '
|
irc.error(_('There\'s really no reason why you should have '
|
||||||
'underscores or brackets in your mathematical '
|
'underscores or brackets in your mathematical '
|
||||||
'expression. Please remove them.')
|
'expression. Please remove them.'))
|
||||||
return
|
return
|
||||||
#text = text.translate(utils.str.chars, '_[] \t')
|
#text = text.translate(utils.str.chars, '_[] \t')
|
||||||
if 'lambda' in text:
|
if 'lambda' in text:
|
||||||
irc.error('You can\'t use lambda in this command.')
|
irc.error(_('You can\'t use lambda in this command.'))
|
||||||
return
|
return
|
||||||
text = text.lower()
|
text = text.lower()
|
||||||
def handleMatch(m):
|
def handleMatch(m):
|
||||||
@ -195,15 +199,16 @@ class Math(callbacks.Plugin):
|
|||||||
irc.reply(self._complexToString(x))
|
irc.reply(self._complexToString(x))
|
||||||
except OverflowError:
|
except OverflowError:
|
||||||
maxFloat = math.ldexp(0.9999999999999999, 1024)
|
maxFloat = math.ldexp(0.9999999999999999, 1024)
|
||||||
irc.error('The answer exceeded %s or so.' % maxFloat)
|
irc.error(_('The answer exceeded %s or so.') % maxFloat)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
irc.error('Something in there wasn\'t a valid number.')
|
irc.error(_('Something in there wasn\'t a valid number.'))
|
||||||
except NameError, e:
|
except NameError, e:
|
||||||
irc.error('%s is not a defined function.' % str(e).split()[1])
|
irc.error(_('%s is not a defined function.') % str(e).split()[1])
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
irc.error(str(e))
|
irc.error(str(e))
|
||||||
calc = wrap(calc, ['text'])
|
calc = wrap(calc, ['text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def icalc(self, irc, msg, args, text):
|
def icalc(self, irc, msg, args, text):
|
||||||
"""<math expression>
|
"""<math expression>
|
||||||
|
|
||||||
@ -212,15 +217,15 @@ class Math(callbacks.Plugin):
|
|||||||
the 'trusted' capability to use.
|
the 'trusted' capability to use.
|
||||||
"""
|
"""
|
||||||
if text != text.translate(utils.str.chars, '_[]'):
|
if text != text.translate(utils.str.chars, '_[]'):
|
||||||
irc.error('There\'s really no reason why you should have '
|
irc.error(_('There\'s really no reason why you should have '
|
||||||
'underscores or brackets in your mathematical '
|
'underscores or brackets in your mathematical '
|
||||||
'expression. Please remove them.')
|
'expression. Please remove them.'))
|
||||||
return
|
return
|
||||||
# This removes spaces, too, but we'll leave the removal of _[] for
|
# This removes spaces, too, but we'll leave the removal of _[] for
|
||||||
# safety's sake.
|
# safety's sake.
|
||||||
text = text.translate(utils.str.chars, '_[] \t')
|
text = text.translate(utils.str.chars, '_[] \t')
|
||||||
if 'lambda' in text:
|
if 'lambda' in text:
|
||||||
irc.error('You can\'t use lambda in this command.')
|
irc.error(_('You can\'t use lambda in this command.'))
|
||||||
return
|
return
|
||||||
text = text.replace('lambda', '')
|
text = text.replace('lambda', '')
|
||||||
try:
|
try:
|
||||||
@ -228,11 +233,11 @@ class Math(callbacks.Plugin):
|
|||||||
irc.reply(str(eval(text, self._mathEnv, self._mathEnv)))
|
irc.reply(str(eval(text, self._mathEnv, self._mathEnv)))
|
||||||
except OverflowError:
|
except OverflowError:
|
||||||
maxFloat = math.ldexp(0.9999999999999999, 1024)
|
maxFloat = math.ldexp(0.9999999999999999, 1024)
|
||||||
irc.error('The answer exceeded %s or so.' % maxFloat)
|
irc.error(_('The answer exceeded %s or so.') % maxFloat)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
irc.error('Something in there wasn\'t a valid number.')
|
irc.error(_('Something in there wasn\'t a valid number.'))
|
||||||
except NameError, e:
|
except NameError, e:
|
||||||
irc.error('%s is not a defined function.' % str(e).split()[1])
|
irc.error(_('%s is not a defined function.') % str(e).split()[1])
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
irc.error(utils.exnToString(e))
|
irc.error(utils.exnToString(e))
|
||||||
icalc = wrap(icalc, [('checkCapability', 'trusted'), 'text'])
|
icalc = wrap(icalc, [('checkCapability', 'trusted'), 'text'])
|
||||||
@ -267,7 +272,7 @@ class Math(callbacks.Plugin):
|
|||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
if not called:
|
if not called:
|
||||||
irc.error('Not enough arguments for %s' % arg)
|
irc.error(_('Not enough arguments for %s') % arg)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
stack.append(f)
|
stack.append(f)
|
||||||
@ -280,14 +285,16 @@ class Math(callbacks.Plugin):
|
|||||||
try:
|
try:
|
||||||
stack.append(eval(s, self._mathEnv, self._mathEnv))
|
stack.append(eval(s, self._mathEnv, self._mathEnv))
|
||||||
except SyntaxError:
|
except SyntaxError:
|
||||||
irc.error(format('%q is not a defined function.', arg))
|
irc.error(format(_('%q is not a defined function.'),
|
||||||
|
arg))
|
||||||
return
|
return
|
||||||
if len(stack) == 1:
|
if len(stack) == 1:
|
||||||
irc.reply(str(self._complexToString(complex(stack[0]))))
|
irc.reply(str(self._complexToString(complex(stack[0]))))
|
||||||
else:
|
else:
|
||||||
s = ', '.join(map(self._complexToString, map(complex, stack)))
|
s = ', '.join(map(self._complexToString, map(complex, stack)))
|
||||||
irc.reply('Stack: [%s]' % s)
|
irc.reply(_('Stack: [%s]') % s)
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def convert(self, irc, msg, args, number, unit1, unit2):
|
def convert(self, irc, msg, args, number, unit1, unit2):
|
||||||
"""[<number>] <unit> to <other unit>
|
"""[<number>] <unit> to <other unit>
|
||||||
|
|
||||||
@ -302,6 +309,7 @@ class Math(callbacks.Plugin):
|
|||||||
irc.error(str(ude))
|
irc.error(str(ude))
|
||||||
convert = wrap(convert, [optional('float', 1.0),'something','to','text'])
|
convert = wrap(convert, [optional('float', 1.0),'something','to','text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def units(self, irc, msg, args, type):
|
def units(self, irc, msg, args, type):
|
||||||
""" [<type>]
|
""" [<type>]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user