diff --git a/.gitignore b/.gitignore index 9b037013f..2a9f3074e 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ docs/plugins debian/limnoria* debian/python-module-stampdir/ dist/ +push.sh +merge.sh +src/version.py diff --git a/INSTALL b/INSTALL deleted file mode 100644 index f9ef61299..000000000 --- a/INSTALL +++ /dev/null @@ -1,83 +0,0 @@ -Common - - First things first: Supybot *requires* at least Python 2.4. There -ain't no getting around it. You can get it from http://www.python.org/. - - Recommended Software - - PySQLite -- Version 1.x - - Twisted -- Version 1.2.0 or greater - - For more information and help on how to use Supybot, checkout -the documents under docs/ (especially GETTING_STARTED and -CONFIGURATION). - - So what do you do? That depends on which operating system you're -running. We've split this document up to address the different -methods, so find the section for your operating system and continue -from there. - -UNIX/Linux/BSD - - If you're installing Python using your distributor's packages, you may -need a python-dev package installed, too. If you don't have a -'/usr/lib/python2.x/distutils' directory or -'/usr/lib/python2.x/config/Makefile' (assuming '/usr/lib/python2.x' is -where your Python libs are installed), then you will need a python-dev -package. - - After you extract Supybot and cd into the supybot directory just -created, you'll want to run (as root) 'python setup.py install'. This -will install Supybot globally. If you need to install locally for -whatever reason, see the notes at the end of this section. You'll then -have several new programs installed where Python scripts are normally -installed on your system ('/usr/bin' or '/usr/local/bin' are common on -UNIX systems). The two that might be of particular interest to you, the -new user, are 'supybot' and 'supybot-wizard'. The former, 'supybot', is -the script to run an actual bot; the latter, 'supybot-wizard', is an -in-depth wizard that provides a nice user interface for creating a -registry file for your bot. - - Local Install - - You can install Supybot in a local directory by using the '--prefix' - option when running 'setup.py'. E.g., 'python setup.py install - --prefix=$HOME' to install into your home directory. You'll now have - a $HOME/bin directory containing Supybot programs ('supybot', - 'supybot-wizard', etc.) and a $HOME/lib directory containing the - Supybot libraries. It is also recommended that you setup a proper - PYTHONPATH environment variable in your shell's init file. - - bash -- 'export PYTHONPATH=$HOME/lib/python2.x/site-packages' - - (t)csh -- 'setenv PYTHONPATH $HOME/lib/python2.x/site-packages' - -Windows - - **Note**: If you are using an IPV6 connection, you will not be able -to run Supybot under Windows (unless Python has fixed things). Current -versions of Python for Windows are *not* built with IPV6 support. This -isn't expected to be fixed until Python 2.4, at the earliest. - - Now that you have Python installed, open up a command prompt. The -easiest way to do this is to open the run dialog (Programs -> run) and -type "cmd" (for Windows 2000/XP/2003) or "command" (for Windows 9x). In -order to reduce the amount of typing you need to do, I suggest adding -Python's directory to your path. If you installed Python using the -default settings, you would then do the following in the command prompt -(otherwise change the path to match your settings):: - - set PATH=C:\Python2x\;%PATH% - - You should now be able to type 'python' to start the Python -interpreter. Exit by pressing CTRL-Z and then Return. Now that that's -setup, you'll want to cd into the directory that was created when you -unzipped Supybot; I'll assume you unzipped it to 'C:\Supybot' for these -instructions. From 'C:\Supybot', run 'python setup.py install'. This -will install Supybot under 'C:\Python2x\'. You will now have several new -programs installed in 'C:\Python2x\Scripts\'. The two that might be of -particular interest to you, the new user, are 'supybot' and 'supybot-wizard'. -The former, 'supybot', is the script to run an actual bot; the latter, -'supybot-wizard', is an in-depth wizard that provides a nice user interface for -creating a registry file for your bot. diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 000000000..8e1de8b41 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,132 @@ +# Common + +First things first: Supybot *requires* at least Python 2.6. There +isn't any way to get around it. You can get it from [Python homepage]. + +[Python homepage]:http://python.org/ + +# Recommended Software + +[PySQLite] -- Version 2.x + +[Twisted] -- Version 1.2.0 or greater + +[PySQLite]:https://code.google.com/p/pysqlite/ +[Twisted]:http://twistedmatrix.com/trac/ + +For more information and help on how to use Supybot, checkout +the documents under [docs/], especially [GETTING_STARTED] and +[CONFIGURATION] . + +[docs/]:docs/index.rst +[GETTING_STARTED]:docs/GETTING_STARTED +[CONFIGURATION]:docs/CONFIGURATION + +So what do you do? That depends on which operating system you're +running. We've split this document up to address the different +methods, so find the section for your operating system and continue +from there. + +# UNIX/Linux/BSD + +If you're installing Python using your distributor's packages, you may +need a python-dev package installed, too. If you don't have a +'/usr/lib/python2.x/distutils' directory or +'/usr/lib/python2.x/config/Makefile' (assuming '/usr/lib/python2.x' is +where your Python libs are installed), then you will need a python-dev +package. + +First start by git cloning Limnoria and moving to the cloned repository. + +``` +git clone git://github.com/ProgVal/Limnoria.git +cd Limnoria +``` + +The rest depends on do you have root access and do you want to perform global or local install. + +## Global install + +Run + +``` +python setup.py install +``` + +Now you have several new programs installed where Python scripts are normally +installed on your system ('/usr/bin' or '/usr/local/bin' are common on +UNIX systems). The two that might be of particular interest to you, the +new user, are 'supybot' and 'supybot-wizard'. The former, 'supybot', is +the script to run an actual bot; the latter, 'supybot-wizard', is an +in-depth wizard that provides a nice user interface for creating a +registry file for your bot. + +## Local install + +Run + +``` +python setup.py install --user +``` + +and you will have new programs installed in ~/.local/bin. The two that might be of particular interest to you, the +new user, are 'supybot' and 'supybot-wizard'. The former, 'supybot', is +the script to run an actual bot; the latter, 'supybot-wizard', is an +in-depth wizard that provides a nice user interface for creating a +registry file for your bot. + +By default you must run the bot with full path to the binary unless you specify $PATH. + +Run and add the following command to your shellrc, which is usually ~/.bashrc or ~/.zshrc , so you can run the programs without needing to write full paths to the binaries. + +``` +PATH=$HOME/.local:$PATH +``` + +# Upgrading + +To upgrade, return to the cloned Limnoria repository and run: + +``` +git pull +``` + +and then install Limnoria normally. "python setup.py install" doesn't affect config files of the bot any way. + +If you don't have the cloned Limnoria repository, clone it again using the installation instructions. + +# Windows + +**Note**: If you are using an IPV6 connection, you will not be able +to run Supybot under Windows (unless Python has fixed things). Current +versions of Python for Windows are *not* built with IPV6 support. This +isn't expected to be fixed until Python 2.4, at the earliest. + +Now that you have Python installed, open up a command prompt. The +easiest way to do this is to open the run dialog (Programs -> run) and +type "cmd" (for Windows 2000/XP/2003) or "command" (for Windows 9x). In +order to reduce the amount of typing you need to do, I suggest adding +Python's directory to your path. If you installed Python using the +default settings, you would then do the following in the command prompt +(otherwise change the path to match your settings):: + +``` +set PATH=C:\Python2x\;%PATH% +``` + +You should now be able to type 'python' to start the Python +interpreter. Exit by pressing CTRL-Z and then Return. Now that that's +setup, you'll want to cd into the directory that was created when you +unzipped Supybot; I'll assume you unzipped it to 'C:\Supybot' for these +instructions. From 'C:\Supybot', run + +``` +python setup.py install +``` + +This will install Supybot under 'C:\Python2x\'. You will now have several new +programs installed in 'C:\Python2x\Scripts\'. The two that might be of +particular interest to you, the new user, are 'supybot' and 'supybot-wizard'. +The former, 'supybot', is the script to run an actual bot; the latter, +'supybot-wizard', is an in-depth wizard that provides a nice user interface for +creating a registry file for your bot. diff --git a/LICENSE b/LICENSE.md similarity index 100% rename from LICENSE rename to LICENSE.md diff --git a/README b/README deleted file mode 100644 index 23607adc6..000000000 --- a/README +++ /dev/null @@ -1,29 +0,0 @@ -EVERYONE: ---------- -Read LICENSE. It's a 3-clause BSD license, but you should read it -anyway. - -USERS: ------- -If you're upgrading, read RELNOTES. There is also much documentation -at http://supybot.com/ for your perusal. Please read it; we took the -time to write it, you should take the time to read it. - -If you have any trouble, feel free to swing by #supybot on -irc.freenode.net or irc.oftc.net (we have a Supybot there relaying, -so either network works) and ask questions. We'll be happy to help -wherever we can. And by all means, if you find anything hard to -understand or think you know of a better way to do something, -*please* post it on Sourceforge.net so we can improve the bot! - -WINDOWS USERS: --------------- -The wizards (supybot-wizard, supybot-newplugin, and -supybot-adduser) are all installed to your Python directory's -\Scripts. What that *probably* means is that you'll run them like -this: C:\Python2x\python C:\Python2x\Scripts\supybot-wizard - -DEVELOPERS: ------------ -We likewise have tons of developer documentation at -http://supybot.com/ for your learning adventures. Have fun :) diff --git a/README.md b/README.md new file mode 100644 index 000000000..8d68d78c3 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +# EVERYONE: + +Read [LICENSE]. It's a 3-clause BSD license, but you should read it +anyway. + +[LICENSE]:LICENSE.md + +# USERS: + +There is much documentation +at [supybot.fr.cr] and at [Gribble wiki] for your perusal. Please read it; we took the +time to write it, you should take the time to read it. + +[supybot.fr.cr]:http://supybot.fr.cr/doc +[Gribble wiki]:https://sourceforge.net/apps/mediawiki/gribble/index.php?title=Main_Page + +If you have any trouble, feel free to swing by [#supybot and #limnoria](irc://irc.freenode.net/#supybot,#limnoria) on +[irc.freenode.net](irc://irc.freenode.net) or [#supybot](irc://irc.oftc.net/#supybot) at [irc.oftc.net](irc://irc.oftc.net) (we have a Limnoria there relaying, +so either network works) and ask questions. We'll be happy to help +wherever we can. And by all means, if you find anything hard to +understand or think you know of a better way to do something, +*please* post it on [issue tracker] so we can improve the bot! + +[issue tracker]:https://github.com/ProgVal/Limnoria/issues + +# WINDOWS USERS: + +The wizards (supybot-wizard, supybot-newplugin, and +supybot-adduser) are all installed to your Python directory's +\Scripts. What that *probably* means is that you'll run them like +this: + +``` +C:\Python2x\python C:\Python2x\Scripts\supybot-wizard +``` + +# DEVELOPERS: + +We likewise have tons of developer documentation at +[supybot.fr.cr] for your learning adventures. Have fun :) diff --git a/locale/de.po b/locale/de.po new file mode 100644 index 000000000..8159f62a8 --- /dev/null +++ b/locale/de.po @@ -0,0 +1,1135 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-06-25 14:17+CEST\n" +"PO-Revision-Date: 2011-10-28 18:53+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: Germany\n" + +#: ../src/callbacks.py:184 +msgid "Error: " +msgstr "Fehler: " + +#: ../src/callbacks.py:198 +msgid "Error: I tried to send you an empty message." +msgstr "Fehler: Ich habe versucht eine leere Nachricht zu senden." + +#: ../src/callbacks.py:288 +msgid "Missing \"%s\". You may want to quote your arguments with double quotes in order to prevent extra brackets from being evaluated as nested commands." +msgstr "Fehlend \"%s\". Vielleicht solltest du deine Argumente in doppelte Anführungszeichen setzen um zu verhindern das eine Klammern als Verschachtelung gewertet werden." + +#: ../src/callbacks.py:318 +msgid "\"|\" with nothing preceding. I obviously can't do a pipe with nothing before the |." +msgstr "" + +#: ../src/callbacks.py:326 +msgid "Spurious \"%s\". You may want to quote your arguments with double quotes in order to prevent extra brackets from being evaluated as nested commands." +msgstr "" + +#: ../src/callbacks.py:335 +msgid "\"|\" with nothing following. I obviously can't do a pipe with nothing after the |." +msgstr "" + +#: ../src/callbacks.py:519 +msgid "%s is not a valid %s." +msgstr "%s nicht zulässig als %s" + +#: ../src/callbacks.py:521 +msgid "That's not a valid %s." +msgstr "%s nicht zulässig" + +#: ../src/callbacks.py:599 +msgid "You've attempted more nesting than is currently allowed on this bot." +msgstr "Du hast versucht mehr zu Verschachteln wie momentan bei diesem Bot erlaubt ist." + +#: ../src/callbacks.py:778 +msgid "The command %q is available in the %L plugins. Please specify the plugin whose command you wish to call by using its name as a command before %q." +msgstr "Der Befehl %q ist verfügbar in den %L Plugins. Bitte gebe an welches Plugin diesen Befehl ausführen soll, indem du es vor dem Befehl %q angibst." + +#: ../src/callbacks.py:863 +#: ../src/callbacks.py:876 +msgid "(XX more messages)" +msgstr "(XX mehr Nachrichten)" + +#: ../src/callbacks.py:908 +msgid "more message" +msgstr "mehr Nachrichten" + +#: ../src/callbacks.py:910 +msgid "more messages" +msgstr "mehr Nachrichten" + +#: ../src/callbacks.py:1010 +#, fuzzy +msgid "" +"Determines what commands are currently disabled. Such\n" +" commands will not appear in command lists, etc. They will appear not even\n" +" to exist." +msgstr "" +"Legt fest welche Befehle momentan abgeschaltet sind.\n" +" Diese Befehle werden nicht in Befehlslisten, etc... erscheinen.\n" +" Es wird den anschein haben, das diese nicht einmal existieren." + +#: ../src/callbacks.py:1201 +msgid "Invalid arguments for %s." +msgstr "Unzulässige Argumente für %s." + +#: ../src/callbacks.py:1227 +msgid "The %q command has no help." +msgstr "%q hat keine Hilfe." + +#: ../src/commands.py:171 +msgid "integer" +msgstr "Ganzzahl" + +#: ../src/commands.py:182 +msgid "non-integer value" +msgstr "Kein Ganzzahlwert" + +#: ../src/commands.py:193 +msgid "floating point number" +msgstr "Fließkommazahl" + +#: ../src/commands.py:202 +msgid "positive integer" +msgstr "positive Ganzzahl" + +#: ../src/commands.py:206 +msgid "non-negative integer" +msgstr "nicht negative Ganzzahl" + +#: ../src/commands.py:209 +msgid "index" +msgstr "Index" + +#: ../src/commands.py:234 +msgid "number of seconds" +msgstr "eingen Sekunden" + +#: ../src/commands.py:241 +msgid "boolean" +msgstr "Boolean" + +#: ../src/commands.py:255 +msgid "do that" +msgstr "tu dass" + +#: ../src/commands.py:259 +msgid "I'm not even in %s." +msgstr "Ich bin nicht mal in %s." + +#: ../src/commands.py:261 +msgid "I need to be opped to %s." +msgstr "Ich benötige Op zu %s." + +#: ../src/commands.py:278 +msgid "nick or hostmask" +msgstr "Nick oder Hostmaske" + +#: ../src/commands.py:330 +#: ../src/commands.py:333 +msgid "regular expression" +msgstr "Regulärer Ausdruck" + +#: ../src/commands.py:344 +msgid "That nick is too long for this server." +msgstr "Dieser Nick ist zu lang für den Server." + +#: ../src/commands.py:393 +#: ../src/commands.py:412 +msgid "I'm not in %s." +msgstr "Ich bin nicht in %s." + +#: ../src/commands.py:397 +#, fuzzy +msgid "This command may only be given in a channel that I am in." +msgstr "Dieser Befehl kann mir nur in einem Kanal gegeben werden in dem ich bin." + +#: ../src/commands.py:410 +msgid "You must be in %s." +msgstr "Du musst in %s sein." + +#: ../src/commands.py:414 +msgid "channel" +msgstr "Kanal" + +#: ../src/commands.py:421 +msgid "%s is not in %s." +msgstr "%s ist nicht in %s." + +#: ../src/commands.py:455 +#, fuzzy +msgid "You must not give the empty string as an argument." +msgstr "Du darfst keinen leeren String als Argument angeben." + +#: ../src/commands.py:472 +msgid "This message must be sent in a channel." +msgstr "Diese Nachricht muss in einem Kanal gesendet werden." + +#: ../src/commands.py:518 +msgid "http url" +msgstr "HTTP URL" + +#: ../src/commands.py:525 +msgid "command name" +msgstr "Befehlsname" + +#: ../src/commands.py:533 +msgid "ip" +msgstr "IP" + +#: ../src/commands.py:539 +msgid "letter" +msgstr "Buchstabe" + +#: ../src/commands.py:571 +msgid "plugin" +msgstr "Plugin" + +#: ../src/commands.py:579 +msgid "irc color" +msgstr "IRC Farbe" + +#: ../src/conf.py:104 +msgid "" +"Determines whether this plugin is loaded\n" +" bydefault." +msgstr "" +"Legt fest ob das Plugin standardgemäß\n" +" geladen wird" + +#: ../src/conf.py:108 +msgid "" +"Determines whether this plugin is\n" +" publicly visible." +msgstr "" +"Legt fest ob das Plugin öffentlich\n" +" zu sehen ist" + +#: ../src/conf.py:194 +msgid "Determines the bot's default nick." +msgstr "Legt den Standardnick des Bots fest." + +#: ../src/conf.py:197 +#, fuzzy +msgid "" +"Determines what alternative\n" +" nicks will be used if the primary nick (supybot.nick) isn't available. A\n" +" %s in this nick is replaced by the value of supybot.nick when used. If no\n" +" alternates are given, or if all are used, the supybot.nick will be perturbed\n" +" appropriately until an unused nick is found." +msgstr "" +"Legt fest welche alternativ Nicknamen der Bot benutzt, falls der Primärnick (supybot.nick) nicht verfügbar ist.\n" +" Ein %s in diesem Nicknamen wird durch den Wert von supybot.nick ersetzt. Falls kein alternativ Nickname angegeben wird oder alle bereits vergeben sind, wird supybot.nick verändert bis ein unbenuzter Nickname gefunden wurde." + +#: ../src/conf.py:204 +msgid "" +"Determines the bot's ident string, if the server\n" +" doesn't provide one by default." +msgstr "Legt die Ident Zeichenkette des Bots fest, falls der Server keine vergibt." + +#: ../src/conf.py:215 +msgid "" +"Determines the user the bot sends to the server.\n" +" A standard user using the current version of the bot will be generated if\n" +" this is left empty." +msgstr "Legt den User fest den der Bot an den Server sendet. Er wird die momentane Version des Bots als User benutzen, falls diese Variable leer bleibt." + +#: ../src/conf.py:223 +msgid "Determines what networks the bot will connect to." +msgstr "Legt fest zu welchen Netzwerken der Bot sich verbindet." + +#: ../src/conf.py:264 +msgid "" +"Determines what password will be used on %s. Yes, we know that\n" +" technically passwords are server-specific and not network-specific,\n" +" but this is the best we can do right now." +msgstr "Legt fest welches Passwort für %s genutzt wird. Ja wir wissen das Passwörter nicht Netzwerk spezifisch sondern Server spezifisch sind , aber das ist das beste was wir momentan anbieten können." + +#: ../src/conf.py:268 +msgid "" +"Determines what servers the bot will connect to for %s. Each will\n" +" be tried in order, wrapping back to the first when the cycle is\n" +" completed." +msgstr "Legt fest zu welchem Server der Bot für %s verbindet. Jeder Server wird in der Reihenfolge probiert, falls der letzte Server erreicht ist, wird wieder beim Ersten angefangen." + +#: ../src/conf.py:272 +msgid "Determines what channels the bot will join only on %s." +msgstr "Legt fest welche Kanäle der Bot nur bei %s betritt." + +#: ../src/conf.py:275 +#, fuzzy +msgid "" +"Determines whether the bot will attempt to connect with SSL\n" +" sockets to %s." +msgstr "Legt fest ob der Bot versuchen soll per SSL Sockets zu %s zu verbinden." + +#: ../src/conf.py:278 +msgid "" +"Determines what key (if any) will be used to join the\n" +" channel." +msgstr "Legt den Schlüssel fest, den der Bot benutzt um einen Kanal zu betreten (falls vorhanden)." + +#: ../src/conf.py:298 +msgid "" +"Determines how timestamps\n" +" printed for human reading should be formatted. Refer to the Python\n" +" documentation for the time module to see valid formatting characters for\n" +" time formats." +msgstr "" + +#: ../src/conf.py:312 +msgid "" +"Determines whether elapsed times will be given\n" +" as \"1 day, 2 hours, 3 minutes, and 15 seconds\" or as \"1d 2h 3m 15s\"." +msgstr "Legt fest wie die vergangene Zeit angeben wird, als \"1 Tag, 2 Stunden, 3 Minuten und 15 Sekunden\" oder als \"1d 2h 3m 15s\"" + +#: ../src/conf.py:322 +msgid "" +"Determines the absolute maximum length of\n" +" the bot's reply -- no reply will be passed through the bot with a length\n" +" greater than this." +msgstr "" + +#: ../src/conf.py:327 +msgid "" +"Determines whether the bot will break up long\n" +" messages into chunks and allow users to use the 'more' command to get the\n" +" remaining chunks." +msgstr "" + +#: ../src/conf.py:332 +msgid "" +"Determines what the maximum number of\n" +" chunks (for use with the 'more' command) will be." +msgstr "Legt die maximal Anzahl an Teilen fest (für die Nutzung mit dem 'more' Befehl)" + +#: ../src/conf.py:336 +msgid "" +"Determines how long individual chunks\n" +" will be. If set to 0, uses our super-tweaked,\n" +" get-the-most-out-of-an-individual-message default." +msgstr "" + +#: ../src/conf.py:341 +msgid "" +"Determines how many mores will be sent\n" +" instantly (i.e., without the use of the more command, immediately when\n" +" they are formed). Defaults to 1, which means that a more command will be\n" +" required for all but the first chunk." +msgstr "" + +#: ../src/conf.py:347 +msgid "" +"Determines whether the bot will send\n" +" multi-message replies in a single message or in multiple messages. For\n" +" safety purposes (so the bot is less likely to flood) it will normally send\n" +" everything in a single message, using mores if necessary." +msgstr "" + +#: ../src/conf.py:353 +msgid "" +"Determines whether the bot will reply with an\n" +" error message when it is addressed but not given a valid command. If this\n" +" value is False, the bot will remain silent, as long as no other plugins\n" +" override the normal behavior." +msgstr "" + +#: ../src/conf.py:360 +msgid "" +"Determines whether error messages that result\n" +" from bugs in the bot will show a detailed error message (the uncaught\n" +" exception) or a generic error message." +msgstr "" + +#: ../src/conf.py:364 +msgid "" +"Determines whether the bot will send error\n" +" messages to users in private. You might want to do this in order to keep\n" +" channel traffic to minimum. This can be used in combination with\n" +" supybot.reply.error.withNotice." +msgstr "" + +#: ../src/conf.py:369 +msgid "" +"Determines whether the bot will send error\n" +" messages to users via NOTICE instead of PRIVMSG. You might want to do this\n" +" so users can ignore NOTICEs from the bot and not have to see error\n" +" messages; or you might want to use it in combination with\n" +" supybot.reply.errorInPrivate so private errors don't open a query window\n" +" in most IRC clients." +msgstr "" + +#: ../src/conf.py:376 +msgid "" +"Determines whether the bot will send an error\n" +" message to users who attempt to call a command for which they do not have\n" +" the necessary capability. You may wish to make this True if you don't want\n" +" users to understand the underlying security system preventing them from\n" +" running certain commands." +msgstr "" + +#: ../src/conf.py:383 +msgid "" +"Determines whether the bot will reply\n" +" privatelywhen replying in a channel, rather than replying to the whole\n" +" channel." +msgstr "" + +#: ../src/conf.py:388 +msgid "" +"Determines whether the bot will reply with a\n" +" notice when replying in a channel, rather than replying with a privmsg as\n" +" normal." +msgstr "" + +#: ../src/conf.py:394 +msgid "" +"Determines whether the bot will reply with a\n" +" notice when it is sending a private message, in order not to open a /query\n" +" window in clients. This can be overridden by individual users via the user\n" +" configuration variable reply.withNoticeWhenPrivate." +msgstr "" + +#: ../src/conf.py:400 +msgid "" +"Determines whether the bot will always prefix\n" +" theuser's nick to its reply to that user's command." +msgstr "" + +#: ../src/conf.py:404 +msgid "" +"Determines whether the bot should attempt to\n" +" reply to all messages even if they don't address it (either via its nick\n" +" or a prefix character). If you set this to True, you almost certainly want\n" +" to set supybot.reply.whenNotCommand to False." +msgstr "" + +#: ../src/conf.py:410 +msgid "" +"Determines whether the bot will allow you to\n" +" send channel-related commands outside of that channel. Sometimes people\n" +" find it confusing if a channel-related command (like Filter.outfilter)\n" +" changes the behavior of the channel but was sent outside the channel\n" +" itself." +msgstr "" + +#: ../src/conf.py:417 +msgid "" +"Determines whether the bot will unidentify\n" +" someone when that person changes his or her nick. Setting this to True\n" +" will cause the bot to track such changes. It defaults to False for a\n" +" little greater security." +msgstr "" + +#: ../src/conf.py:423 +msgid "" +"Determines whether the bot will always join a\n" +" channel when it's invited. If this value is False, the bot will only join\n" +" a channel if the user inviting it has the 'admin' capability (or if it's\n" +" explicitly told to join the channel using the Admin.join command)" +msgstr "" + +#: ../src/conf.py:429 +msgid "" +"Supybot normally replies with the full help\n" +" whenever a user misuses a command. If this value is set to True, the bot\n" +" will only reply with the syntax of the command (the first line of the\n" +" help) rather than the full help." +msgstr "" + +#: ../src/conf.py:443 +msgid "" +"Determines what prefix characters the bot will\n" +" reply to. A prefix character is a single character that the bot will use\n" +" to determine what messages are addressed to it; when there are no prefix\n" +" characters set, it just uses its nick. Each character in this string is\n" +" interpreted individually; you can have multiple prefix chars\n" +" simultaneously, and if any one of them is used as a prefix the bot will\n" +" assume it is being addressed." +msgstr "" + +#: ../src/conf.py:452 +msgid "" +"Determines what strings the\n" +" bot will reply to when they are at the beginning of the message. Whereas\n" +" prefix.chars can only be one character (although there can be many of\n" +" them), this variable is a space-separated list of strings, so you can\n" +" set something like '@@ ??' and the bot will reply when a message is\n" +" prefixed by either @@ or ??." +msgstr "" + +#: ../src/conf.py:459 +msgid "" +"Determines whether the bot will reply when\n" +" people address it by its nick, rather than with a prefix character." +msgstr "" + +#: ../src/conf.py:462 +msgid "" +"Determines whether the bot will reply when\n" +" people address it by its nick at the end of the message, rather than at\n" +" the beginning." +msgstr "" + +#: ../src/conf.py:466 +msgid "" +"Determines what extra nicks\n" +" the bot will always respond to when addressed by, even if its current nick\n" +" is something else." +msgstr "" + +#: ../src/conf.py:476 +msgid "The operation succeeded." +msgstr "Anweisung erfolgreich." + +#: ../src/conf.py:477 +msgid "" +"Determines what message the bot replies with when a command succeeded.\n" +" If this configuration variable is empty, no success message will be\n" +" sent." +msgstr "Legt fest mit welcher Nachricht der Bot antwortet, wenn ein Befehl erfolgreich war. Falls diese Konfigurationsvariable leer ist wird keine Erfolgsmeldung gesendet." + +#: ../src/conf.py:482 +msgid "" +"An error has occurred and has been logged.\n" +" Please contact this bot's administrator for more information." +msgstr "" +"Ein Fehler ist aufgetreten und wurde gelogged.\n" +" Bitte kontaktiere den Botadministartor für mehr Informationen." + +#: ../src/conf.py:483 +msgid "" +"\n" +" Determines what error message the bot gives when it wants to be\n" +" ambiguous." +msgstr "" + +#: ../src/conf.py:488 +msgid "" +"An error has occurred and has been logged.\n" +" Check the logs for more informations." +msgstr "" +"Ein Fehler ist augetreten und wurde protokolliert.\n" +" Überprüfe die Protokolldateien." + +#: ../src/conf.py:489 +msgid "" +"Determines what error\n" +" message the bot gives to the owner when it wants to be ambiguous." +msgstr "" + +#: ../src/conf.py:493 +msgid "" +"Your hostmask doesn't match or your password\n" +" is wrong." +msgstr "" +"Deine Hostmaske passt nicht oder dein Passwort\n" +" ist falsch." + +#: ../src/conf.py:494 +msgid "" +"Determines what message the bot replies with when\n" +" someonetries to use a command that requires being identified or having a\n" +" password and neither credential is correct." +msgstr "" + +#: ../src/conf.py:500 +msgid "" +"I can't find %s in my user\n" +" database. If you didn't give a user name, then I might not know what your\n" +" user is, and you'll need to identify before this command might work." +msgstr "Ich konnte %s nicht in meiner Benutzerdatenbank finden. Falls du keinen Benutzernamen angegeben hast, weiß ich vielleicht nicht wer du bist unnd du mich dich identifizieren bevor dieser Befehl funktioniert." + +#: ../src/conf.py:503 +msgid "" +"Determines what error message the bot replies with when someone tries\n" +" to accessing some information on a user the bot doesn't know about." +msgstr "" + +#: ../src/conf.py:507 +msgid "" +"You must be registered to use this command.\n" +" If you are already registered, you must either identify (using the identify\n" +" command) or add a hostmask matching your current hostmask (using the\n" +" \"hostmask add\" command)." +msgstr "Du musst registiert sein um diesen Befehl benutzen zu können. Wenn du bereits registriert bist musst du dich identifizieren (durch den identify Befehl) oder eine Hostmaske hinzufügen die zu deiner momentanen Hostmaske passt (durch den \"hostmask add\" Befehl)." + +#: ../src/conf.py:510 +msgid "" +"Determines what error message the bot\n" +" replies with when someone tries to do something that requires them to be\n" +" registered but they're not currently recognized." +msgstr "" + +#: ../src/conf.py:515 +msgid "" +"You don't have the %s capability. If you\n" +" think that you should have this capability, be sure that you are identified\n" +" before trying again. The 'whoami' command can tell you if you're\n" +" identified." +msgstr "Du hast die %s Fähigkeit nicht. Falls du denkst du solltest diese haben, sei dir sicher das du identifiziert bist, bevor du es erneurt versuchst. Der Befehl 'whoami' kann dir sagen ob du identifiziert bist." + +#: ../src/conf.py:518 +msgid "" +"Determines what error message is given when the bot\n" +" is telling someone they aren't cool enough to use the command they tried to\n" +" use." +msgstr "" + +#: ../src/conf.py:523 +msgid "" +"You're missing some capability you need.\n" +" This could be because you actually possess the anti-capability for the\n" +" capability that's required of you, or because the channel provides that\n" +" anti-capability by default, or because the global capabilities include\n" +" that anti-capability. Or, it could be because the channel or\n" +" supybot.capabilities.default is set to False, meaning that no commands are\n" +" allowed unless explicitly in your capabilities. Either way, you can't do\n" +" what you want to do." +msgstr "" + +#: ../src/conf.py:531 +msgid "" +"Determines what generic error message is given when the bot is telling\n" +" someone that they aren't cool enough to use the command they tried to use,\n" +" and the author of the code calling errorNoCapability didn't provide an\n" +" explicit capability for whatever reason." +msgstr "" + +#: ../src/conf.py:537 +#, fuzzy +msgid "" +"That operation cannot be done in a\n" +" channel." +msgstr "Diese Anweisung kann nicht in einem Kanal gegeben werden." + +#: ../src/conf.py:538 +msgid "" +"Determines what error messages the bot sends to people\n" +" who try to do things in a channel that really should be done in\n" +" private." +msgstr "" + +#: ../src/conf.py:543 +msgid "" +"This may be a bug. If you think it is,\n" +" please file a bug report at\n" +" ." +msgstr "Das könnte ein Programmierfehler sein. Falls du das denkst, melden diesen Fehler bitte bei ." + +#: ../src/conf.py:546 +msgid "" +"Determines what message the bot sends when it thinks you've\n" +" encountered a bug that the developers don't know about." +msgstr "" + +#: ../src/conf.py:553 +msgid "" +"A floating point number of seconds to throttle\n" +" snarfed URLs, in order to prevent loops between two bots snarfing the same\n" +" URLs and having the snarfed URL in the output of the snarf message." +msgstr "" + +#: ../src/conf.py:558 +msgid "" +"Determines the number of seconds\n" +" between running the upkeep function that flushes (commits) open databases,\n" +" collects garbage, and records some useful statistics at the debugging\n" +" level." +msgstr "" + +#: ../src/conf.py:564 +msgid "" +"Determines whether the bot will periodically\n" +" flush data and configuration files to disk. Generally, the only time\n" +" you'll want to set this to False is when you want to modify those\n" +" configuration files by hand and don't want the bot to flush its current\n" +" version over your modifications. Do note that if you change this to False\n" +" inside the bot, your changes won't be flushed. To make this change\n" +" permanent, you must edit the registry yourself." +msgstr "" + +#: ../src/conf.py:589 +msgid "" +"Determines what characters are valid for quoting\n" +" arguments to commands in order to prevent them from being tokenized.\n" +" " +msgstr "" + +#: ../src/conf.py:596 +msgid "" +"Determines whether the bot will allow nested\n" +" commands, which rule. You definitely should keep this on." +msgstr "" + +#: ../src/conf.py:599 +msgid "" +"Determines what the maximum number of\n" +" nested commands will be; users will receive an error if they attempt\n" +" commands more nested than this." +msgstr "" + +#: ../src/conf.py:607 +msgid "" +"Supybot allows you to specify what brackets are\n" +" used for your nested commands. Valid sets of brackets include [], <>, and\n" +" {} (). [] has strong historical motivation, as well as being the brackets\n" +" that don't require shift. <> or () might be slightly superior because they\n" +" cannot occur in a nick. If this string is empty, nested commands will\n" +" not be allowed in this channel." +msgstr "" + +#: ../src/conf.py:614 +msgid "" +"Supybot allows nested commands. Enabling this\n" +" option will allow nested commands with a syntax similar to UNIX pipes, for\n" +" example: 'bot: foo | bar'." +msgstr "Supybot erlaubt verschachtelte Befehle. Wenn man diese Option aktiviert wird der Bot verschachtelte Befehle erlauben, mit einer Syntax die ähnlich ist wie UNIX Pipes, zum Beispiel 'bot: foo | bar'." + +#: ../src/conf.py:619 +msgid "" +"Determines what commands have default\n" +" plugins set, and which plugins are set to be the default for each of those\n" +" commands." +msgstr "" + +#: ../src/conf.py:625 +msgid "" +"Determines what plugins automatically get precedence over all\n" +" other plugins when selecting a default plugin for a command. By\n" +" default, this includes the standard loaded plugins. You probably\n" +" shouldn't change this if you don't know what you're doing; if you do\n" +" know what you're doing, then also know that this set is\n" +" case-sensitive." +msgstr "" + +#: ../src/conf.py:640 +msgid "" +"Determines whether the bot will defend itself\n" +" against command-flooding." +msgstr "" + +#: ../src/conf.py:643 +msgid "" +"Determines how many commands users are\n" +" allowed per minute. If a user sends more than this many commands in any\n" +" 60 second period, he or she will be ignored for\n" +" supybot.abuse.flood.command.punishment seconds." +msgstr "" + +#: ../src/conf.py:648 +msgid "" +"Determines how many seconds the bot\n" +" will ignore users who flood it with commands." +msgstr "" + +#: ../src/conf.py:652 +msgid "" +"Determines whether the bot will defend itself\n" +" against invalid command-flooding." +msgstr "" + +#: ../src/conf.py:655 +msgid "" +"Determines how many invalid commands users\n" +" are allowed per minute. If a user sends more than this many invalid\n" +" commands in any 60 second period, he or she will be ignored for\n" +" supybot.abuse.flood.command.invalid.punishment seconds. Typically, this\n" +" value is lower than supybot.abuse.flood.command.maximum, since it's far\n" +" less likely (and far more annoying) for users to flood with invalid\n" +" commands than for them to flood with valid commands." +msgstr "" + +#: ../src/conf.py:663 +msgid "" +"Determines how many seconds the bot\n" +" will ignore users who flood it with invalid commands. Typically, this\n" +" value is higher than supybot.abuse.flood.command.punishment, since it's far\n" +" less likely (and far more annoying) for users to flood witih invalid\n" +" commands than for them to flood with valid commands." +msgstr "" + +#: ../src/conf.py:669 +msgid "" +"Determines whether the bot will notify people\n" +" that they're being ignored for invalid command flooding." +msgstr "" + +#: ../src/conf.py:678 +msgid "" +"Determines the default length of time a\n" +" driver should block waiting for input." +msgstr "" + +#: ../src/conf.py:685 +msgid "" +"Determines what driver module the bot\n" +" will use. Socket, a simple driver based on timeout sockets, is used by\n" +" default because it's simple and stable. Twisted is very stable and simple,\n" +" and if you've got Twisted installed, is probably your best bet." +msgstr "" + +#: ../src/conf.py:691 +msgid "" +"Determines the maximum time the bot will\n" +" wait before attempting to reconnect to an IRC server. The bot may, of\n" +" course, reconnect earlier if possible." +msgstr "" + +#: ../src/conf.py:740 +msgid "" +"Determines what directory configuration data is\n" +" put into." +msgstr "Legt fest in welchem Verzeichnis Konfigurationsdaten gespeichert werden." + +#: ../src/conf.py:743 +msgid "Determines what directory data is put into." +msgstr "Legt fest in welchem Verzeichnis Daten gespeichert werden." + +#: ../src/conf.py:745 +msgid "" +"Determines what directory backup data is put\n" +" into." +msgstr "Legt fest in welchem Verzeichnis Sicherungskopien gespeichert werden." + +#: ../src/conf.py:748 +msgid "" +"Determines what directory temporary files\n" +" are put into." +msgstr "Legt fest in welchem Verzeichnis temporäre Dateien gespeichert werden." + +#: ../src/conf.py:755 +msgid "" +"Determines what directories\n" +" the bot will look for plugins in. Accepts a comma-separated list of\n" +" strings.\n" +" This means that to add another directory, you can nest the former value and\n" +" add a new one. E.g. you can say: bot: 'config supybot.directories.plugins\n" +" [config supybot.directories.plugins], newPluginDirectory'." +msgstr "" + +#: ../src/conf.py:763 +msgid "" +"Determines what plugins will\n" +" be loaded." +msgstr "Legt fest welche Plugins geladen werden." + +#: ../src/conf.py:766 +msgid "" +"Determines whether the bot will always load\n" +" important plugins (Admin, Channel, Config, Misc, Owner, and User)\n" +" regardless of what their configured state is. Generally, if these plugins\n" +" are configured not to load, you didn't do it on purpose, and you still\n" +" want them to load. Users who don't want to load these plugins are smart\n" +" enough to change the value of this variable appropriately :)" +msgstr "" + +#: ../src/conf.py:793 +msgid "" +"Determines what databases are available for use. If this\n" +" value is not configured (that is, if its value is empty) then sane defaults\n" +" will be provided." +msgstr "" + +#: ../src/conf.py:799 +msgid "" +"Determines what filename will be used\n" +" for the users database. This file will go into the directory specified by\n" +" the supybot.directories.conf variable." +msgstr "" + +#: ../src/conf.py:803 +msgid "" +"Determines how long it takes identification to\n" +" time out. If the value is less than or equal to zero, identification never\n" +" times out." +msgstr "" + +#: ../src/conf.py:807 +msgid "" +"Determines whether the bot will allow users to\n" +" unregister their users. This can wreak havoc with already-existing\n" +" databases, so by default we don't allow it. Enable this at your own risk.\n" +" (Do also note that this does not prevent the owner of the bot from using\n" +" the unregister command.)\n" +" " +msgstr "" + +#: ../src/conf.py:816 +msgid "" +"Determines what filename will be used\n" +" for the ignores database. This file will go into the directory specified\n" +" by the supybot.directories.conf variable." +msgstr "" + +#: ../src/conf.py:822 +msgid "" +"Determines what filename will be used\n" +" for the channels database. This file will go into the directory specified\n" +" by the supybot.directories.conf variable." +msgstr "" + +#: ../src/conf.py:852 +msgid "" +"Determines whether database-based plugins that\n" +" can be channel-specific will be so. This can be overridden by individual\n" +" channels. Do note that the bot needs to be restarted immediately after\n" +" changing this variable or your db plugins may not work for your channel;\n" +" also note that you may wish to set\n" +" supybot.databases.plugins.channelSpecific.link appropriately if you wish\n" +" to share a certain channel's databases globally." +msgstr "" + +#: ../src/conf.py:860 +msgid "" +"Determines what channel global\n" +" (non-channel-specific) databases will be considered a part of. This is\n" +" helpful if you've been running channel-specific for awhile and want to turn\n" +" the databases for your primary channel into global databases. If\n" +" supybot.databases.plugins.channelSpecific.link.allow prevents linking, the\n" +" current channel will be used. Do note that the bot needs to be restarted\n" +" immediately after changing this variable or your db plugins may not work\n" +" for your channel." +msgstr "" + +#: ../src/conf.py:869 +msgid "" +"Determines whether another channel's global\n" +" (non-channel-specific) databases will be allowed to link to this channel's\n" +" databases. Do note that the bot needs to be restarted immediately after\n" +" changing this variable or your db plugins may not work for your channel.\n" +" " +msgstr "" + +#: ../src/conf.py:886 +msgid "" +"Determines\n" +" whether CDB databases will be allowed as a database implementation." +msgstr "" + +#: ../src/conf.py:889 +msgid "" +"Determines how often CDB databases will have\n" +" their modifications flushed to disk. When the number of modified records\n" +" is greater than this fraction of the total number of records, the database\n" +" will be entirely flushed to disk." +msgstr "" + +#: ../src/conf.py:974 +msgid "" +"Determines what will be used as the\n" +" default banmask style." +msgstr "Legt fest was als Standard Banmaskenstil verwendet wird." + +#: ../src/conf.py:978 +msgid "" +"Determines whether the bot will strictly follow\n" +" the RFC; currently this only affects what strings are considered to be\n" +" nicks. If you're using a server or a network that requires you to message\n" +" a nick such as services@this.network.server then you you should set this to\n" +" False." +msgstr "" + +#: ../src/conf.py:985 +msgid "" +"Determines what user modes the bot will request\n" +" from the server when it first connects. Many people might choose +i; some\n" +" networks allow +x, which indicates to the auth services on those networks\n" +" that you should be given a fake host." +msgstr "" + +#: ../src/conf.py:991 +msgid "" +"Determines what vhost the bot will bind to before\n" +" connecting to the IRC server." +msgstr "" + +#: ../src/conf.py:995 +msgid "" +"Determines how many old messages the bot will\n" +" keep around in its history. Changing this variable will not take effect\n" +" until the bot is restarted." +msgstr "" + +#: ../src/conf.py:1000 +msgid "" +"A floating point number of seconds to throttle\n" +" queued messages -- that is, messages will not be sent faster than once per\n" +" throttleTime seconds." +msgstr "" + +#: ../src/conf.py:1005 +msgid "" +"Determines whether the bot will send PINGs to\n" +" the server it's connected to in order to keep the connection alive and\n" +" discover earlier when it breaks. Really, this option only exists for\n" +" debugging purposes: you always should make it True unless you're testing\n" +" some strange server issues." +msgstr "" + +#: ../src/conf.py:1012 +msgid "" +"Determines the number of seconds between sending\n" +" pings to the server, if pings are being sent to the server." +msgstr "" + +#: ../src/conf.py:1017 +msgid "" +"Determines whether the bot will refuse\n" +" duplicate messages to be queued for delivery to the server. This is a\n" +" safety mechanism put in place to prevent plugins from sending the same\n" +" message multiple times; most of the time it doesn't matter, unless you're\n" +" doing certain kinds of plugin hacking." +msgstr "" + +#: ../src/conf.py:1025 +msgid "" +"Determines how many seconds must elapse between\n" +" JOINs sent to the server." +msgstr "Legt fest wieviel Zeit, zwischen den JOINs die an den Server gesendet werden, vergehen muss." + +#: ../src/conf.py:1033 +msgid "" +"Determines how many bytes the bot will\n" +" 'peek' at when looking through a URL for a doctype or title or something\n" +" similar. It'll give up after it reads this many bytes, even if it hasn't\n" +" found what it was looking for." +msgstr "" + +#: ../src/conf.py:1039 +msgid "" +"Determines what proxy all HTTP requests should go\n" +" through. The value should be of the form 'host:port'." +msgstr "" + +#: ../src/conf.py:1059 +msgid "Determines what host the HTTP server will bind." +msgstr "Legt fest an welchen host sich der HTTP Server bindet." + +#: ../src/conf.py:1061 +msgid "" +"Determines what port the HTTP server will\n" +" bind." +msgstr "Legt den Port fest an den der HTTP Server bindet." + +#: ../src/conf.py:1064 +msgid "" +"Defines whether the server will stay alive if\n" +" no plugin is using it. This also means that the server will start even\n" +" if it is not used." +msgstr "" +"Legt fest ob der Server gestartet bleiben soll, wenn\n" +" kein Plugin ihn benutzt. Das bedeutet außerdem das der Server startet\n" +" obwohl er nicht benutzt wird." + +#: ../src/conf.py:1073 +msgid "" +"Determines whether the bot will ignore\n" +" unregistered users by default. Of course, that'll make it particularly\n" +" hard for those users to register or identify with the bot, but that's your\n" +" problem to solve." +msgstr "" + +#: ../src/conf.py:1080 +msgid "" +"A string that is the external IP of the bot. If this is the\n" +" empty string, the bot will attempt to find out its IP dynamically (though\n" +" sometimes that doesn't work, hence this variable)." +msgstr "" + +#: ../src/conf.py:1094 +msgid "" +"Determines what the default timeout for socket\n" +" objects will be. This means that *all* sockets will timeout when this many\n" +" seconds has gone by (unless otherwise modified by the author of the code\n" +" that uses the sockets)." +msgstr "" + +#: ../src/conf.py:1100 +msgid "" +"Determines what file the bot should write its PID\n" +" (Process ID) to, so you can kill it more easily. If it's left unset (as is\n" +" the default) then no PID file will be written. A restart is required for\n" +" changes to this variable to take effect." +msgstr "" + +#: ../src/conf.py:1110 +msgid "" +"Determines whether the bot will automatically\n" +" thread all commands." +msgstr "Legt fest ob der Bot automatisch alles als Befehl behandeln soll." + +#: ../src/conf.py:1113 +msgid "" +"Determines whether the bot will automatically\n" +" flush all flushers *very* often. Useful for debugging when you don't know\n" +" what's breaking or when, but think that it might be logged." +msgstr "" + +#: ../src/questions.py:60 +msgid "Sorry, that response was not an option." +msgstr "Entschuldigung, diese Antwort war keine Option." + +#: ../src/questions.py:106 +msgid "Sorry, you must enter a value." +msgstr "Entschuldigung du musst einen Wert angeben." + +#: ../src/questions.py:126 +msgid "Enter password: " +msgstr "Passwort eingeben:" + +#: ../src/questions.py:128 +msgid "Re-enter password: " +msgstr "Passwort erneut eingeben:" + +#: ../src/questions.py:141 +msgid "Passwords don't match." +msgstr "Passwörter stimmen nicht überein" + +#: ../src/utils/httpserver.py:129 +#, fuzzy +msgid "" +"\n" +" This is a default response of the Supybot HTTP server. If you see this\n" +" message, it probably means you are developping a plugin, and you have\n" +" neither overriden this message or defined an handler for this query." +msgstr "" +"\n" +" Das ist eine Standardantwort eines Supybot HTTP Servers.\n" +" Wenn du diese Nachricht siehst, heißt das womöglich das du ein Plugin\n" +" entwickelst und das weder diese Nachricht übersüringst oder einen Handler für diese Anfrage definiert hast." + +#: ../src/utils/httpserver.py:150 +msgid "" +"\n" +" I am a pretty clever IRC bot, but I suck at serving Web pages, particulary\n" +" if I don't know what to serve.\n" +" What I'm saying is you just triggered a 404 Not Found, and I am not\n" +" trained to help you in such a case." +msgstr "" + +#: ../src/utils/httpserver.py:167 +#, fuzzy +msgid "Request not handled." +msgstr "Anfrage nicht behandelt." + +#: ../src/utils/httpserver.py:171 +msgid "Supybot Web server index" +msgstr "Supybot Web Server Index" + +#: ../src/utils/httpserver.py:174 +msgid "Here is a list of the plugins that have a Web interface:" +msgstr "Das ist eine Liste der Plugins die ein Webinterface haben:" + +#: ../src/utils/httpserver.py:183 +msgid "No plugins available." +msgstr "Keine Plugins verfügbar" + diff --git a/locale/fi.po b/locale/fi.po new file mode 100644 index 000000000..fea2c510f --- /dev/null +++ b/locale/fi.po @@ -0,0 +1,1779 @@ +# Limnoria +# Copyright (C) 2011 Limnoria +# Mika Suomalainen , 2011, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2012-04-17 12:51+EEST\n" +"PO-Revision-Date: 2012-04-17 13:40+0300\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: Finnish <>\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: src/callbacks.py:184 +msgid "Error: " +msgstr "Virhe: " + +#: src/callbacks.py:198 +msgid "Error: I tried to send you an empty message." +msgstr "Virhe: Yritin lähettää sinulle tyhjän viestin." + +#: src/callbacks.py:288 +msgid "" +"Missing \"%s\". You may want to quote your arguments with double quotes in " +"order to prevent extra brackets from being evaluated as nested commands." +msgstr "" +"Puttuva \"%s\". Voit tahtoa laittaa parametrisi kaksiin lainausmerkkeihin " +"estääksesi ylimääräisiä hakasulkuja tulemasta tulkituiksi sisäkkäisiksi " +"komennoiksi." + +#: src/callbacks.py:318 +msgid "" +"\"|\" with nothing preceding. I obviously can't do a pipe with nothing " +"before the |." +msgstr "" +"\"|\" ennen mitään. En ilmiselvästi voi putkittaa tyhjyyttä ilman mitään " +"ennen |-merkkiä." + +#: src/callbacks.py:326 +msgid "" +"Spurious \"%s\". You may want to quote your arguments with double quotes in " +"order to prevent extra brackets from being evaluated as nested commands." +msgstr "" +"Pettävää \"%s\". Voit tahtoa laittaa parametrisi kaksiin lainausmerkkeihin " +"estääksesiylimääräisiä hakasulkuja tulemasta tulkituiksi sisäkkäisiksi " +"komennoiksi." + +#: src/callbacks.py:335 +msgid "" +"\"|\" with nothing following. I obviously can't do a pipe with nothing " +"after the |." +msgstr "" +"\"|\" ilman mitään sen perässä. En ilmeisesti voi putkittaa tyhjyyttä |:n " +"jälkeen." + +#: src/callbacks.py:519 +msgid "%s is not a valid %s." +msgstr "%s ei ole kelvollinen %s." + +#: src/callbacks.py:521 +msgid "That's not a valid %s." +msgstr "Tuo ei ole kelvollinen %s." + +#: src/callbacks.py:599 +msgid "You've attempted more nesting than is currently allowed on this bot." +msgstr "" +"Yritit enempiä sisäkkäisiä komentoja, kuin on tällä hetkellä sallittu tässä " +"botissa." + +#: src/callbacks.py:778 +msgid "" +"The command %q is available in the %L plugins. Please specify the plugin " +"whose command you wish to call by using its name as a command before %q." +msgstr "" +"Komento %q on saatavilla %L lisäosissa. Ole hyvä ja määritä minkä lisäosan " +"komentoa tahdot kutsua laittamalla sen nimi komentoon ennen %q:ta." + +#: src/callbacks.py:864 src/callbacks.py:877 +msgid "(XX more messages)" +msgstr "(XX viestiä jatkoa)" + +#: src/callbacks.py:909 +msgid "more message" +msgstr "viesti jatkoa" + +#: src/callbacks.py:911 +msgid "more messages" +msgstr "viestejä jatkoa" + +#: src/callbacks.py:1028 +msgid "" +"Determines what commands are currently disabled. Such\n" +" commands will not appear in command lists, etc. They will appear not " +"even\n" +" to exist." +msgstr "" +"Määrittää mitkä komennon ovat tällä hetkellä pois käytöstä. Sellaiset\n" +" komennot eivät ilmesty komento listoissa, jne. Ne eivät näytä edes\n" +" olevan olemassa." + +#: src/callbacks.py:1224 +msgid "Invalid arguments for %s." +msgstr "Virheelliset parametrit kohteelle %s." + +#: src/callbacks.py:1250 +msgid "The %q command has no help." +msgstr "Komennolla %q ei ole ohjetta." + +#: src/commands.py:228 +msgid "integer" +msgstr "kokonaisluku" + +#: src/commands.py:239 +msgid "non-integer value" +msgstr "ei-kokonaisluku arvo" + +#: src/commands.py:250 +msgid "floating point number" +msgstr "liukuluku numero" + +#: src/commands.py:259 +msgid "positive integer" +msgstr "positiivinen kokonaisluku" + +#: src/commands.py:263 +msgid "non-negative integer" +msgstr "ei-negatiivinen kokonaisluku" + +#: src/commands.py:266 +msgid "index" +msgstr "indeksi" + +#: src/commands.py:291 +msgid "number of seconds" +msgstr "määrä sekunteja" + +#: src/commands.py:298 +msgid "boolean" +msgstr "boolean" + +#: src/commands.py:312 src/commands.py:320 src/commands.py:328 +#: src/commands.py:336 +msgid "do that" +msgstr "tee se" + +#: src/commands.py:316 src/commands.py:324 src/commands.py:332 +#: src/commands.py:340 +msgid "I'm not even in %s." +msgstr "En edes ole kanavalla %s." + +#: src/commands.py:318 +msgid "I need to be voiced to %s." +msgstr "Minulla täytyy olla ääni tehdäkseni %s." + +#: src/commands.py:326 +msgid "I need to be halfopped to %s." +msgstr "" +"Minulla täytyy olla puolikanavaoperaattorin valtuudet voidakseni tehdä %s." + +#: src/commands.py:334 +msgid "I need to be opped to %s." +msgstr "Minun täytyy olla opattuna, jotta voin %s." + +#: src/commands.py:344 +msgid "I need to be at least halfopped to %s." +msgstr "" +"Minulla täytyy olla vähintään puolioperaattorin oikeudet voidakseni tehdä %s" + +#: src/commands.py:362 +msgid "nick or hostmask" +msgstr "nimimerkki tai hostmask" + +#: src/commands.py:414 src/commands.py:417 +msgid "regular expression" +msgstr "säännöllinen lauseke" + +#: src/commands.py:428 +msgid "That nick is too long for this server." +msgstr "Tuo nimimerkki on liian pitkä tälle palvelimelle." + +#: src/commands.py:477 src/commands.py:496 +msgid "I'm not in %s." +msgstr "En ole kanavalla %s." + +#: src/commands.py:481 +msgid "This command may only be given in a channel that I am in." +msgstr "Tämä komento voidaan antaa vain kanavalla, jolla minä olen." + +#: src/commands.py:494 +msgid "You must be in %s." +msgstr "Sinun täytyy olla kanavalla %s." + +#: src/commands.py:498 +msgid "channel" +msgstr "kanava" + +#: src/commands.py:505 +msgid "%s is not in %s." +msgstr "%s ei ole kanavalla %s." + +#: src/commands.py:539 +msgid "You must not give the empty string as an argument." +msgstr "Et voi antaa tyhjää merkkiketjua parametriksi." + +#: src/commands.py:556 +msgid "This message must be sent in a channel." +msgstr "Tämä viesti täytyy lähettää kanavalla." + +#: src/commands.py:602 +msgid "http url" +msgstr "http URL-osoite" + +#: src/commands.py:609 +msgid "command name" +msgstr "komennon nimi" + +#: src/commands.py:617 +msgid "ip" +msgstr "IP" + +#: src/commands.py:623 +msgid "letter" +msgstr "kirjain" + +#: src/commands.py:655 +msgid "plugin" +msgstr "lisä-osa" + +#: src/commands.py:663 +msgid "irc color" +msgstr "irc väri" + +#: src/conf.py:104 +msgid "" +"Determines whether this plugin is loaded\n" +" by default." +msgstr "Määrittää ladataanko tämä lisäosa oletuksena." + +#: src/conf.py:108 +msgid "" +"Determines whether this plugin is\n" +" publicly visible." +msgstr "" +"Määrittää onko tämä lisäosa\n" +" julkisesti näkyvillä." + +#: src/conf.py:202 +msgid "Determines the bot's default nick." +msgstr "Määrittää botin oletus nimimerkin." + +#: src/conf.py:205 +msgid "" +"Determines what alternative\n" +" nicks will be used if the primary nick (supybot.nick) isn't available. " +"A\n" +" %s in this nick is replaced by the value of supybot.nick when used. If " +"no\n" +" alternates are given, or if all are used, the supybot.nick will be " +"perturbed\n" +" appropriately until an unused nick is found." +msgstr "" +"Määrittää mitä vaihtoehtoisia nimimerkkejä käytetään, jos\n" +" ensisijainen nimimerkki (supybot.nick) ei ole saatavilla. \n" +" %s tässä nimimerkissä korvataa asetusarvolla supybot.nick, kun sitä " +"käytetään. Jos\n" +" vaihtoehtoja ei anneta, tai jos kaikki ovat käytössä, supybot.nick " +"tehdään levottomaksi, \n" +" kunnes käyttämätön nimimerkki löydetään." + +#: src/conf.py:212 +msgid "" +"Determines the bot's ident string, if the server\n" +" doesn't provide one by default." +msgstr "" +"Määrittää botin ident merkkiketjun, mikäli käyttäjä\n" +" ei tarjoa yhtä oletuksena." + +#: src/conf.py:223 +msgid "" +"Determines the user the bot sends to the server.\n" +" A standard user using the current version of the bot will be generated " +"if\n" +" this is left empty." +msgstr "" +"Määrittää minkä user:in (oikean nimen) botti lähettää palvelimelle.\n" +" Perus user-merkkiketju luodaan botin nykyisestä versiosta, mikäli\n" +" tämä on jätetty tyhjäksi." + +#: src/conf.py:231 +msgid "Determines what networks the bot will connect to." +msgstr "Määrittää mihin verkkoihin botti muodostaa yhdeyden." + +#: src/conf.py:273 +msgid "" +"Determines what password will be used on %s. Yes, we know that\n" +" technically passwords are server-specific and not network-specific,\n" +" but this is the best we can do right now." +msgstr "" +"Määrittää mitä salasanaa käytetään verkossa %s. Kyllä, me tiedämme, että \n" +" tietyille palvelimille, eivätkä tietyille verkoille, mutta\n" +" tämä on paras johon pystymme juuri nyt." + +#: src/conf.py:277 +msgid "" +"Determines what servers the bot will connect to for %s. Each will\n" +" be tried in order, wrapping back to the first when the cycle is\n" +" completed." +msgstr "" +"Määrittää mille palvelimille botti muodostaa yhteyden yhdistääkseen verkkoon " +"%s. Jokaista \n" +" yritetään järjestyksessä, palaten takaisin ensinmäiseen, kun kierros " +"on\n" +" suoritettu." + +#: src/conf.py:281 +msgid "Determines what channels the bot will join only on %s." +msgstr "Määrittää mille kanaville botti liittyy vain verkossa %s." + +#: src/conf.py:284 +msgid "" +"Determines whether the bot will attempt to connect with SSL\n" +" sockets to %s." +msgstr "" +"Määrittää yrittääkö botti yhdistää SSL\n" +" solmuilla verkkoon %s." + +#: src/conf.py:287 +msgid "" +"Determines what key (if any) will be used to join the\n" +" channel." +msgstr "" +"Määrittää mitä salasanaa (jos mitään) käytetään kanavalle\n" +" liittymisessä." + +#: src/conf.py:289 +msgid "" +"Determines\n" +" what nick the bot will use on this network. If empty, defaults to\n" +" supybot.nick." +msgstr "" +"Määrittää mitä nimimerkkiä botti käyttää tässä verkossa. Jos tämä on tyhjä, " +"niin se on\n" +" oletuksena supybot.nick" + +#: src/conf.py:294 +msgid "" +"Determines what SASL username will be used on %s. This should\n" +" be the bot's account name. Due to the way SASL works, you can't use\n" +" any grouped nick." +msgstr "" +"Määrittää mitä SASL käyttäjätunnusta käytetään verkossa %s. Tämän pitäisi " +"olla botin\n" +" käyttäjätunnus. Johtuen SASLin toimintatavasta, mitään ryhmitettyä " +"nimimerkkiä ei\n" +" voida käyttää." + +#: src/conf.py:298 +msgid "Determines what SASL password will be used on %s." +msgstr "Määrittää mitä SASL salasanaa käytetään verkossa %s." + +#: src/conf.py:318 +msgid "" +"Determines how timestamps\n" +" printed for human reading should be formatted. Refer to the Python\n" +" documentation for the time module to see valid formatting characters " +"for\n" +" time formats." +msgstr "" +"Määrittää, kuinka aikaleimat, jotka on tarkoitettu ihmisten luettaviksi\n" +" pitäisi muotoilla. Katso Pythonin dokumentaatiota\n" +" aika moduulille nähdäksesi kelvolliset muotoilumerkit \n" +" ajan muodoille." + +#: src/conf.py:332 +msgid "" +"Determines whether elapsed times will be given\n" +" as \"1 day, 2 hours, 3 minutes, and 15 seconds\" or as \"1d 2h 3m 15s\"." +msgstr "" +"Määrittää näytetäänkö kulunut aika muodossa\n" +" \"1 päivä, 2 tuntia, 3 minuuttia, ja 15 sekuntia\" vai \"1d 2h 3m 15s\"." + +#: src/conf.py:342 +msgid "" +"Determines the absolute maximum length of\n" +" the bot's reply -- no reply will be passed through the bot with a " +"length\n" +" greater than this." +msgstr "" +"Määrittää botin vastauksen lopullisen enimmäis pituuden\n" +" -- yksikään vastaus, joka on suurempi, kuin tämä\n" +" ei mene botin läpi." + +#: src/conf.py:347 +msgid "" +"Determines whether the bot will break up long\n" +" messages into chunks and allow users to use the 'more' command to get " +"the\n" +" remaining chunks." +msgstr "" +"Määrittää hajottaako botti pitkät viestit\n" +" paloihin ja sallii käyttäjien käyttää 'more' komentoa\n" +" saadakseen jäljelläolevat palat." + +#: src/conf.py:352 +msgid "" +"Determines what the maximum number of\n" +" chunks (for use with the 'more' command) will be." +msgstr "" +"Määrittää maksimimäärän\n" +" paloja (käytettäväksi 'more' komennon) kanssa." + +#: src/conf.py:356 +msgid "" +"Determines how long individual chunks\n" +" will be. If set to 0, uses our super-tweaked,\n" +" get-the-most-out-of-an-individual-message default." +msgstr "" +"Määrittää, kuinka pitkiä yksittäiset palat tulevat\n" +" olemaan. Jos tämä on asetettu arvoon 0, tämä käyttää meidän\n" +" super-muokattua-saa-suurin-osa-ulos-yksittäisestä-viestistä oletusta." + +#: src/conf.py:361 +msgid "" +"Determines how many mores will be sent\n" +" instantly (i.e., without the use of the more command, immediately when\n" +" they are formed). Defaults to 1, which means that a more command will " +"be\n" +" required for all but the first chunk." +msgstr "" +"Määrittää, kuinka monta \"more\"a lähetetään heti \n" +" (esim., ilman \"more\" command käyttöä, heti, kun ne ovat " +"muodostettuja. \n" +" On oletuksena 1, joka tarkoittaa, että \"more\" komentoa vaaditaan " +"kaikille muille, paitsi\n" +" ensinmäiselle palalle." + +#: src/conf.py:367 +msgid "" +"Determines whether the bot will send\n" +" multi-message replies in a single message or in multiple messages. For\n" +" safety purposes (so the bot is less likely to flood) it will normally " +"send\n" +" everything in a single message, using mores if necessary." +msgstr "" +"Määrittää lähettääkö botti monen viestin vastaukset yhdessä viestissä vai " +"monissa viesteissä. \n" +" Turvallisuus syistä (jotta botti tulvii epätodennäköisemmin) \n" +" se yleensä lähettää kaikki yhdessä viestissä, käyttäen \n" +" \"more\"ja, jos tarpeen." + +#: src/conf.py:373 +msgid "" +"Determines whether the bot will reply with an\n" +" error message when it is addressed but not given a valid command. If " +"this\n" +" value is False, the bot will remain silent, as long as no other plugins\n" +" override the normal behavior." +msgstr "" +"Määrittää vastaako botti virheilmoituksella, kun sille puhutaan, mutta " +"annetaan viallinen \n" +" komento. Jos tämä arvo on False, \n" +" botti pysyy hiljaisena, mikäli muita lisäosia, jotka ohittavat \n" +" tämän käytöksen ei ole." + +#: src/conf.py:380 +msgid "" +"Determines whether error messages that result\n" +" from bugs in the bot will show a detailed error message (the uncaught\n" +" exception) or a generic error message." +msgstr "" +"Määrittää näyttävätkö virheilmoitukset bugeista botissa tarkan " +"virheilmoituksen \n" +" (selittämätön poikkeus )\n" +" vai tavallisen virheilmoituksen." + +#: src/conf.py:384 +msgid "" +"Determines whether the bot will send error\n" +" messages to users in private. You might want to do this in order to " +"keep\n" +" channel traffic to minimum. This can be used in combination with\n" +" supybot.reply.error.withNotice." +msgstr "" +"Määrittää lähettääkö botti virheilmoitukset käyttäjille yksityisesti. \n" +" Voit haluta tehdä tämän, pitääksesi kanavan ruuhkan mahdollisimman " +"alhaisena. \n" +" Tämä voidaan yhdistää asetusarvon \n" +" supybot.reply.error.withNotice kanssa." + +#: src/conf.py:389 +msgid "" +"Determines whether the bot will send error\n" +" messages to users via NOTICE instead of PRIVMSG. You might want to do " +"this\n" +" so users can ignore NOTICEs from the bot and not have to see error\n" +" messages; or you might want to use it in combination with\n" +" supybot.reply.errorInPrivate so private errors don't open a query " +"window\n" +" in most IRC clients." +msgstr "" +"Määrittää lähettääkö botti virheilmoitukset käyttäjille käyttäen \n" +" NOTICEa PRIVMSG:een sijaan. Voit tahtoa tehdä tämän, jotta käyttäjät " +"voivat \n" +" jättää NOTICEt botilta huomioimatta ja heidän ei tarvitse nähdä " +"virheilmoituksia; \n" +" tai voit haluta yhdistää tämän asetusarvon\n" +" supybot.reply.errorInPrivate kanssa, jotta virheilmoitukset eivät avaa " +"yksityiskeskustelu ikkunaa \n" +" enimmissä IRC-asiakasohjelmissa." + +#: src/conf.py:396 +msgid "" +"Determines whether the bot will send an error\n" +" message to users who attempt to call a command for which they do not " +"have\n" +" the necessary capability. You may wish to make this True if you don't " +"want\n" +" users to understand the underlying security system preventing them from\n" +" running certain commands." +msgstr "" +"Määrittää lähettääkö botti virheilmoituksen käyttäjille, jotka \n" +" yrittävät kutsua komennon, johon heillä ei ole valtuuksia. \n" +" Tämä voidaan tahtoa asettaa arvoon True jos käyttäjien ei tahdota \n" +" ymmärtävän piilossa olevaa turvallisuusjärjestelmää, joka estää heitä " +"suorittamasta \n" +" tiettyjä komentoja." + +#: src/conf.py:403 +msgid "" +"Determines whether the bot will reply\n" +" privatelywhen replying in a channel, rather than replying to the whole\n" +" channel." +msgstr "" +"Määrittää vastaako botti yksityisesti, kun vastaa \n" +" kanavalla mielummin, kuin vastaa koko \n" +" kanavalle." + +#: src/conf.py:408 +msgid "" +"Determines whether the bot will reply with a\n" +" notice when replying in a channel, rather than replying with a privmsg " +"as\n" +" normal." +msgstr "" +"Määrittää vastaako botti huomautuksella, kun se vastaa kanavalla\n" +" mielummin kuin PRIVMSG:llä, jolla se vastaa \n" +" tavallisesti." + +#: src/conf.py:414 +msgid "" +"Determines whether the bot will reply with a\n" +" notice when it is sending a private message, in order not to open a /" +"query\n" +" window in clients. This can be overridden by individual users via the " +"user\n" +" configuration variable reply.withNoticeWhenPrivate." +msgstr "" +"Määrittää vastaako botti huomautuksella, kun se lähettää yksityisviestejä\n" +" välttääkseen /query ikkunan avaamista asiakasohjelmissa. \n" +" Yksittäiset käyttäjät voivat ohittaa tämän asetusarvolla \n" +" reply.withNoticeWhenPrivate." + +#: src/conf.py:420 +msgid "" +"Determines whether the bot will always prefix\n" +" theuser's nick to its reply to that user's command." +msgstr "" +"Määrittää aloittaako botti rivin sen käyttäjän nimimerkillä, joka antoi \n" +" komennon." + +#: src/conf.py:424 +msgid "" +"Determines whether the bot should attempt to\n" +" reply to all messages even if they don't address it (either via its " +"nick\n" +" or a prefix character). If you set this to True, you almost certainly " +"want\n" +" to set supybot.reply.whenNotCommand to False." +msgstr "" +"Määrittää pitäisikö botin yrittää vastata kaikkiin viesteihin, vaikka ne " +"eivät\n" +" olisi tarkoitettuja sille (joko nimimerkillä tai\n" +" sen etuliitemerkillä. Jos tämä asetetaan arvoon True,\n" +" supybot.reply.whenNotCommand tahdotaan asettaa Falseksi." + +#: src/conf.py:430 +msgid "" +"Determines whether the bot will allow you to\n" +" send channel-related commands outside of that channel. Sometimes " +"people\n" +" find it confusing if a channel-related command (like Filter.outfilter)\n" +" changes the behavior of the channel but was sent outside the channel\n" +" itself." +msgstr "" +"Määrittää salliiko botti kanavaan liittyvien komentojen lähettämisen\n" +" kyseisen kanavan ulkopuolella. Joskus ihmisten mielestä on hämmentävää, " +"mikäli\n" +" kanavaan liittyvä komento (kuten Filter.outfilter), muuttaa botin\n" +" käyttäytymistä kanavalla, mutta komento lähetettiin kanavan itsensä \n" +" ulkopuolella." + +#: src/conf.py:437 +msgid "" +"Determines whether the bot will unidentify\n" +" someone when that person changes his or her nick. Setting this to True\n" +" will cause the bot to track such changes. It defaults to False for a\n" +" little greater security." +msgstr "" +"Määrittää kirjaako botti ulos käyttäjän, mikäli tuo käyttäjä vaihtaa " +"nimimerkkiään.\n" +" Tämän asettaminen arvoon True asettaa botin seuraamaan sellaisia " +"mmuutoksia. Se\n" +" on oletuksena False hiukan paremman turvallisuuden vuoksi." + +#: src/conf.py:443 +msgid "" +"Determines whether the bot will always join a\n" +" channel when it's invited. If this value is False, the bot will only " +"join\n" +" a channel if the user inviting it has the 'admin' capability (or if " +"it's\n" +" explicitly told to join the channel using the Admin.join command)" +msgstr "" +"Määrittää liittyykö botti aina kanavalle, kun se kutsutaan.\n" +" Jos tämä arvo on False, botti liittyy kanavalle vain, jos käyttäjällä, " +"joka kutsuu sen on 'admin' valtuus (tai jos se on käsketty liittymään " +"kanavalle käyttämällä Admin.join komentoa)." + +#: src/conf.py:449 +msgid "" +"Supybot normally replies with the full help\n" +" whenever a user misuses a command. If this value is set to True, the " +"bot\n" +" will only reply with the syntax of the command (the first line of the\n" +" help) rather than the full help." +msgstr "" +"Supybot vastaa tavallisesti täydellä ohjeteksillä, kun käyttäjä " +"väärinkäyttää komentoa. Mikäli tämä on asetettu arvoon \"True\", botti " +"vastaa vain komennon syntaksilla (ensinmäinen rivi ohjetekstiä) ennemmin, " +"kuin täydellä ohjetekstillä." + +#: src/conf.py:463 +msgid "" +"Determines what prefix characters the bot will\n" +" reply to. A prefix character is a single character that the bot will " +"use\n" +" to determine what messages are addressed to it; when there are no " +"prefix\n" +" characters set, it just uses its nick. Each character in this string " +"is\n" +" interpreted individually; you can have multiple prefix chars\n" +" simultaneously, and if any one of them is used as a prefix the bot will\n" +" assume it is being addressed." +msgstr "" +"Määrittää mihin etuliitemerkkeihin botti vastaa.\n" +" Etuliitemerkki on yksi merkki, jota botti käyttää määrittääkseen ovatko " +"viestit osoitettuja sille; kun etuliitemerkkiä ei ole asetettu, se käyttää " +"vain nimimerkkiään. Jokainen merkki tässä merkkiketjussa tulkitaan erikseen; " +"etuliitemerkkijä voidaan käyttää monia samanaikaisesti, ja jos yhtäkään " +"niistä käyetään etuliitemerkkinä, botti olettaa, että viesti on osoitettu " +"sille." + +#: src/conf.py:472 +msgid "" +"Determines what strings the\n" +" bot will reply to when they are at the beginning of the message. " +"Whereas\n" +" prefix.chars can only be one character (although there can be many of\n" +" them), this variable is a space-separated list of strings, so you can\n" +" set something like '@@ ??' and the bot will reply when a message is\n" +" prefixed by either @@ or ??." +msgstr "" +"Määrittää mihin merkkiketjuihin botti vastaa, kun ne ovat rivin alussa.\n" +"Kun prefix.chars voi olla vain yhden merkin pituinen (vaikka niitä voikin " +"olla \n" +"monia), tämä asetusarvo on välilyönneillä eroiteltu lista, joten voit " +"asettaa sen \n" +"joksikin, kuten '@@ ??' ja botti vastaa, kun viestissä on etuliiteenä joko " +"@@ tai ??." + +#: src/conf.py:479 +msgid "" +"Determines whether the bot will reply when\n" +" people address it by its nick, rather than with a prefix character." +msgstr "" +"Määrittää vastaako botti, kun ihmiset osoittavat sitä \n" +" nimimerkillä, mielummin kuin aloitusmerkillä." + +#: src/conf.py:482 +msgid "" +"Determines whether the bot will reply when\n" +" people address it by its nick at the end of the message, rather than at\n" +" the beginning." +msgstr "" +"Määrittää vastaako botti, kun \n" +" ihmiset osoittavat viestinsä sille, kun sen nimimerkki on lopussa, " +"eikä \n" +" alussa." + +#: src/conf.py:486 +msgid "" +"Determines what extra nicks\n" +" the bot will always respond to when addressed by, even if its current " +"nick\n" +" is something else." +msgstr "" +"Määrittää mille nimimerkeille osoitetuille viesteille botti \n" +" vastaa aina, jopa jos sen nykyinen nimimerkki on jokin \n" +" muu." + +#: src/conf.py:496 +msgid "The operation succeeded." +msgstr "Tehtävä suoritettu onnistuneesti." + +#: src/conf.py:497 +msgid "" +"Determines what message the bot replies with when a command succeeded.\n" +" If this configuration variable is empty, no success message will be\n" +" sent." +msgstr "" +"Määrittää millä viestillä botti vastaa, kun komento on onnistunut.\n" +" Jos tämä asetusarvo on tyhjä, onnistumisviestejä ei lähetetä." + +#: src/conf.py:502 +msgid "" +"An error has occurred and has been logged.\n" +" Please contact this bot's administrator for more information." +msgstr "" +"Virhe on tapahtunut ja tallennettu lokiin.\n" +" Ole hyvä ja ota yhteyttä tämän botin ylläpitäjään saadaksesi lisätietoja." + +# Google Kääntäjän mukaan "ambiguos" tarkoittaa epäselvää, mutta miksi botti haluaisi olla epäselvä? +#: src/conf.py:503 +#, fuzzy +msgid "" +"\n" +" Determines what error message the bot gives when it wants to be\n" +" ambiguous." +msgstr "" +"\n" +" Määrittää, minkä virheilmoituksen botti antaa, kun se tahtoo olla " +"epäselvä." + +#: src/conf.py:508 +msgid "" +"An error has occurred and has been logged.\n" +" Check the logs for more informations." +msgstr "" +"Virhe on tapahtunut ja tallennettu lokiin.\n" +" Tarkista lokit saadaksesi lisätietoja." + +# Miksi botti tahtoisi olevansa epäselvä? Google Kääntäjä... +#: src/conf.py:509 +#, fuzzy +msgid "" +"Determines what error\n" +" message the bot gives to the owner when it wants to be ambiguous." +msgstr "" +"Määrittää, minkä virheilmoituksen botti antaa omistajalleen tahtoessaan olla " +"epäselvä." + +# Pitäisikö "hostmask" kääntää "isäntänaamioksi" vai pitää kuten se on? +#: src/conf.py:513 +msgid "" +"Your hostmask doesn't match or your password\n" +" is wrong." +msgstr "Hostmask ei täsmää tai salasana on väärä." + +#: src/conf.py:514 +msgid "" +"Determines what message the bot replies with when\n" +" someone tries to use a command that requires being identified or having " +"a\n" +" password and neither credential is correct." +msgstr "" +"Määrittää millä viestillä botti vastaa, kun joku yrittää antaa komennon, " +"joka vaatii tunnistautumista, ja kumpikaan vaatimus ei ole täytetty." + +#: src/conf.py:520 +msgid "" +"I can't find %s in my user\n" +" database. If you didn't give a user name, then I might not know what " +"your\n" +" user is, and you'll need to identify before this command might work." +msgstr "" +"En voi löytää käyttäjää %s käyttäjätietokannastani. Mikäli käyttäjänimeä ei " +"annettu,\n" +" en ehkä tiedä kuka etsimäsi käyttäjä on, ja sinun täytyy tunnistautua ennen " +"kuin tämä\n" +" komento saattaa toimia." + +#: src/conf.py:523 +msgid "" +"Determines what error message the bot replies with when someone tries\n" +" to accessing some information on a user the bot doesn't know about." +msgstr "" +"Määrittää millä virheilmoituksella botti vastaa, kun joku yrittää päästä " +"tietoihin käyttäjästä, jota ei ole olemassakaan." + +#: src/conf.py:527 +msgid "" +"You must be registered to use this command.\n" +" If you are already registered, you must either identify (using the " +"identify\n" +" command) or add a hostmask matching your current hostmask (using the\n" +" \"hostmask add\" command)." +msgstr "" +"Tätä komentoa käyttääkseen on oltava rekisteröitynt.\n" +" Mikäli olet jo rekisteröitynyt, tunnistaudu (käyttämällä identify komentoa) " +"tai lisää\n" +" hostmask, joka täsmää nykyiseen hostmaskiisi (käyttämällä \"hostmask add\" " +"komentoa)." + +#: src/conf.py:530 +msgid "" +"Determines what error message the bot\n" +" replies with when someone tries to do something that requires them to " +"be\n" +" registered but they're not currently recognized." +msgstr "" +"Määrittää millä virheilmoituksella botti vastaa, kun joku yrittää käyttää " +"komentoa,\n" +" joka vaatii hänen olevan rekisteröitynyt, mutta häntä ei ole tällä " +"hetkellä\n" +" tunnistettu." + +# Tämän pitäisi mahdollisesti olla passiivissa, mutta en ole varma miten tämä pitäisi olla passiivissa. Merkitsen sen epäselväksi. +#: src/conf.py:535 +#, fuzzy +msgid "" +"You don't have the %s capability. If you\n" +" think that you should have this capability, be sure that you are " +"identified\n" +" before trying again. The 'whoami' command can tell you if you're\n" +" identified." +msgstr "" +"Sinulla ei ole valtuutta %s. Mikäli uskot, että sinulla pitäisi olla tämä " +"valtuus,\n" +" varmista että olet tunnistautunut ennen kuin yrität uudelleen. Komento " +"'whoami' voi\n" +" kertoa sinulle oletko tunnistautunut." + +#: src/conf.py:538 +msgid "" +"Determines what error message is given when the bot\n" +" is telling someone they aren't cool enough to use the command they tried " +"to\n" +" use." +msgstr "" +"Määrittää mikä virheilmoitus annetaan, kun botti kertoo jollekin, ettei hän " +"ole\n" +" riittävän kuuli käyttääkseen komentoa, jota hän yritti käyttää." + +#: src/conf.py:543 +msgid "" +"You're missing some capability you need.\n" +" This could be because you actually possess the anti-capability for the\n" +" capability that's required of you, or because the channel provides that\n" +" anti-capability by default, or because the global capabilities include\n" +" that anti-capability. Or, it could be because the channel or\n" +" supybot.capabilities.default is set to False, meaning that no commands " +"are\n" +" allowed unless explicitly in your capabilities. Either way, you can't " +"do\n" +" what you want to do." +msgstr "" +"Jokin valtuus, jota tarvitaan puuttuu.\n" +" Tämä voi johtua siitä, että vaaditulla valtuudella on antivaltuus, tai " +"koska kanava\n" +" tarjoaa antivaltuuden oletuksena. Tai se voi johtua siitä, että kanava tai\n" +" supybot.capabilities.default on asetettu arvoon False, tarkoittaen ettei " +"komentoja\n" +" sallita, ellei niitä ole erikseen sallittu. Miten vain, et voi tehdä sitä, " +"mitä tahdot\n" +" tehdä." + +#: src/conf.py:551 +msgid "" +"Determines what generic error message is given when the bot is telling\n" +" someone that they aren't cool enough to use the command they tried to " +"use,\n" +" and the author of the code calling errorNoCapability didn't provide an\n" +" explicit capability for whatever reason." +msgstr "" +"Määrittää mikä geneerinen virheilmoitus annetaan, kun botti kertoo jollekin, " +"ettei\n" +" hän ole tarpeeksi kuuli käyttääkseen komentoa, jota yritti käyttää ja " +"koodin, joka\n" +" kutsuu errorNoCapability koodin ei tarjonnut tarkkaa valtuutta ihansama " +"mistä syystä." + +#: src/conf.py:557 +msgid "" +"That operation cannot be done in a\n" +" channel." +msgstr "Tätä tehtävää ei voida suorittaa kanavalla." + +#: src/conf.py:558 +msgid "" +"Determines what error messages the bot sends to people\n" +" who try to do things in a channel that really should be done in\n" +" private." +msgstr "" +"Määrittää virheilmoituksen, jonka botti lähettää ihmisille, ketkä yrittävät " +"tehdä\n" +" asioita, jotka todella pitäisi tehdä yksityisesti, kanavalla." + +#: src/conf.py:563 +msgid "" +"This may be a bug. If you think it is,\n" +" please file a bug report at\n" +" ." +msgstr "" +"Tämä voi olla bugi. Mikäli uskotaan niin, raportoidaan bugi osoitteessa\n" +" . Bugiraportit kirjoitetaan " +"englanniksi." + +#: src/conf.py:566 +msgid "" +"Determines what message the bot sends when it thinks you've\n" +" encountered a bug that the developers don't know about." +msgstr "" +"Määrittää minkä viestin botti lähettää uskoessaan, että on kohdattu bugi, " +"josta\n" +" kehittäjät eivät ole tietoisia." + +#: src/conf.py:573 +msgid "" +"A floating point number of seconds to throttle\n" +" snarfed URLs, in order to prevent loops between two bots snarfing the " +"same\n" +" URLs and having the snarfed URL in the output of the snarf message." +msgstr "" +"Liukuluku numero sekunteja, joilla jarrutetaan kaapattuja URL ositteita, " +"jotta estetään\n" +" toistot kahden botin välillä, jotka sisältävät saman URL-osoitteen " +"ulostulevassa\n" +" kaappausviestissä." + +#: src/conf.py:578 +msgid "" +"Determines the number of seconds\n" +" between running the upkeep function that flushes (commits) open " +"databases,\n" +" collects garbage, and records some useful statistics at the debugging\n" +" level." +msgstr "" +"Määrittää sekuntimäärän, joka on ylläpito toiminnon, joka tallentaa avoimet " +"tietokannat\n" +" , kerää jätteet ja tallentaa hyödyllisiä tilastotietoja debuggaus tasolle, " +"välissä." + +#: src/conf.py:584 +msgid "" +"Determines whether the bot will periodically\n" +" flush data and configuration files to disk. Generally, the only time\n" +" you'll want to set this to False is when you want to modify those\n" +" configuration files by hand and don't want the bot to flush its current\n" +" version over your modifications. Do note that if you change this to " +"False\n" +" inside the bot, your changes won't be flushed. To make this change\n" +" permanent, you must edit the registry yourself." +msgstr "" +"Määrittää kirjoittaako botti säännöllisesti asetustiedostot levylle. Yleensä " +"ainut\n" +" tapaus, jossa tämä tahdotaan asettaa arvoon False on kun kyseisiä " +"asetustiedostoja\n" +" tahdotaan muokata käsin, eikä botin tahdota tallentavan nykyistä versiotaan " +"omien\n" +" muokkaustesi päälle. Huomaa, että mikäli vaihdat tämän arvoon False botin " +"sisällä,\n" +" muutoksiasi ei tallenneta. Tehdäksesi tämän muutoksen pysyväksi, rekisteriä " +"täytyy\n" +" muokata itse." + +# Google Kääntäjä ei tiedä mitä "tokenized" tarkoittaa. En tiedä minäkään. +#: src/conf.py:609 +#, fuzzy +msgid "" +"Determines what characters are valid for quoting\n" +" arguments to commands in order to prevent them from being tokenized.\n" +" " +msgstr "" +"Määrittää mitkä merkit ovat kelvollisia parametrien lainaamiseen, jotta " +"estetään niitä\n" +" tulemasta tokenisoiduiksi " + +#: src/conf.py:616 +msgid "" +"Determines whether the bot will allow nested\n" +" commands, which rule. You definitely should keep this on." +msgstr "" +"Määrittää salliiko botti sisäkkäisten komentojen käytön, jotka ovat " +"parhaita. Tämä\n" +" täytyy varmasti pitää käytössä." + +#: src/conf.py:619 +msgid "" +"Determines what the maximum number of\n" +" nested commands will be; users will receive an error if they attempt\n" +" commands more nested than this." +msgstr "" +"Määrittää mikä on enimmäinen sallittu määrä sisäkkäisiä komentoja; " +"käyttäjät\n" +" vastaanottavat virheilmoituksen yrittäessään käyttää useampia sisäkkäisiä " +"komentoja,\n" +" kuin tämä arvo sallii." + +#: src/conf.py:627 +msgid "" +"Supybot allows you to specify what brackets are\n" +" used for your nested commands. Valid sets of brackets include [], <>, " +"and\n" +" {} (). [] has strong historical motivation, as well as being the " +"brackets\n" +" that don't require shift. <> or () might be slightly superior because " +"they\n" +" cannot occur in a nick. If this string is empty, nested commands will\n" +" not be allowed in this channel." +msgstr "" +"Supybot sallii sinun määrittää millaisia sulkuja käytetään sisäkkäisille " +"komennoille.\n" +" Kelvollinen sarja sulkuja sisältää merkit [], <> ja {} (). []:lla on vahva\n" +" historiallinen motivaatio, kuten myös suluilla, jotka eivät vaadi \"vaihto" +"\"-näppäimen\n" +" käyttöä. <> tai () voivat olla huomattavasti parempia, koska ne eivät voi " +"olla\n" +" nimimerkeissä. Jos tämä merkkiketju on tyhjä, sisäkkäisiä komentoja ei " +"sallita tällä\n" +" kanavalla." + +#: src/conf.py:634 +msgid "" +"Supybot allows nested commands. Enabling this\n" +" option will allow nested commands with a syntax similar to UNIX pipes, " +"for\n" +" example: 'bot: foo | bar'." +msgstr "" +"Supybot sallii sisäkkäiset komennot. Tämän asetuksen käyttöönottaminen " +"sallii\n" +" sisäkkäisten komentojen käyttämisen samanlaisella syntaksilla, kuin UNIX " +"putket,\n" +" esimerkiksi 'botti: foo | bar'." + +#: src/conf.py:639 +msgid "" +"Determines what commands have default\n" +" plugins set, and which plugins are set to be the default for each of " +"those\n" +" commands." +msgstr "" +"Määrittää millä komennoilla on oletuslisäosa määritettynä, ja mitkä lisäosat " +"on\n" +" määritetty olemann oletuksia kaikille noille komennoille." + +#: src/conf.py:645 +msgid "" +"Determines what plugins automatically get precedence over all\n" +" other plugins when selecting a default plugin for a command. By\n" +" default, this includes the standard loaded plugins. You probably\n" +" shouldn't change this if you don't know what you're doing; if you " +"do\n" +" know what you're doing, then also know that this set is\n" +" case-sensitive." +msgstr "" +"Määrittää mitkä lisäosat saavat automaattisesti suosion yli käikkien muiden " +"lisäosien,\n" +" kun valitaan oletuslisäosaa komennolle. Oletuksena tämä sisältää kaikki " +"perus lisäosat\n" +", jotka ovat käytössä. Tätä ei pitäisi muuttaa, ellei olla täysin varmoja " +"mitä tehdään;\n" +" jos tiedetään mitä ollaan tekemisessä, tiedetään myös, että tässä " +"asetusarvossa\n" +" kirjainkoolla on merkitystä." + +#: src/conf.py:660 +msgid "" +"Determines whether the bot will defend itself\n" +" against command-flooding." +msgstr "Määrittää puolustaako botti itseään komento tulvimista vastaan." + +#: src/conf.py:663 +msgid "" +"Determines how many commands users are\n" +" allowed per minute. If a user sends more than this many commands in " +"any\n" +" 60 second period, he or she will be ignored for\n" +" supybot.abuse.flood.command.punishment seconds." +msgstr "" +"Määrittää kuinka monta komentoa käyttäjien on sallittua suorittaa " +"minuutissa. Jos\n" +" käyttäjä lähettää enemmän, kuin tämän verran komentoja missä tahansa 60 " +"sekuntin\n" +" jaksossa, hänet jätetään huomioitta sekunteiksi, jotka on määritetty " +"asetusarvossa\n" +" supybot.abuse.flood.command.punishment." + +#: src/conf.py:668 +msgid "" +"Determines how many seconds the bot\n" +" will ignore users who flood it with commands." +msgstr "" +"Määrittää kuinka moneksi sekuntiksi botti jättää käyttäjät, jotka tulvivat " +"sitä\n" +" komennoilla, botti jättää huomioimatta." + +#: src/conf.py:672 +msgid "" +"Determines whether the bot will defend itself\n" +" against invalid command-flooding." +msgstr "" +"Määrittää puolustaako botti itseään \n" +" viallisten komentojen tulvaa vastaan." + +#: src/conf.py:675 +msgid "" +"Determines how many invalid commands users\n" +" are allowed per minute. If a user sends more than this many invalid\n" +" commands in any 60 second period, he or she will be ignored for\n" +" supybot.abuse.flood.command.invalid.punishment seconds. Typically, " +"this\n" +" value is lower than supybot.abuse.flood.command.maximum, since it's far\n" +" less likely (and far more annoying) for users to flood with invalid\n" +" commands than for them to flood with valid commands." +msgstr "" +"Määrittää kuinka monta virheellistä komentoa käyttäjät voivat antaa " +"minuutissa. Jos\n" +" käyttäjä lähettää näin monta komentoa millä tahansa minuutin jaksolla, " +"hänet jätetään\n" +" huomioitta sekunti määräksi, joka on määritetty asetusarvossa\n" +" supybot.abuse.flood.command.invalid.punishment. Tyypillisesti tämä arvo on " +"alhaisempi,\n" +" kuin supybot.abuse.flood.command.maximum, koska on erittäin vähemmän " +"todennäköistä (ja\n" +" paljon ärsyttävämpää) käyttäjille tulvia virheellisillä komennoilla, kuin " +"heille\n" +" tulvia kelvollisilla komennoilla." + +#: src/conf.py:683 +msgid "" +"Determines how many seconds the bot\n" +" will ignore users who flood it with invalid commands. Typically, this\n" +" value is higher than supybot.abuse.flood.command.punishment, since it's " +"far\n" +" less likely (and far more annoying) for users to flood with invalid\n" +" commands than for them to flood with valid commands." +msgstr "" +"Määrittää, kuinka moneksi sekuntiksi botti jättää huomioitta käyttäjät, " +"jotka tulvivat\n" +" sitä virheellisillä komennoilla. Tyypillisesti tämä arvo on korkeampi, " +"kuin\n" +" supybot.abuse.flood.punishment, koska on paljon vähemmän todennäköistä (ja " +"paljon\n" +" ärsyttävämpää) käyttäjille tulvia virheellisillä komennoilla, kuin heille " +"tulvia\n" +" kelvollisilla komennoilla." + +#: src/conf.py:689 +msgid "" +"Determines whether the bot will notify people\n" +" that they're being ignored for invalid command flooding." +msgstr "" +"Määrittää huomauttaako bitti ihmisiä siitä, että heidän olemassa olostaan ei " +"välitetä, jos \n" +" heidän olemassa olostaan ei välitetä viallisten komentojen tulvan takia." + +# Mitäköhän tämä tarkoittaa? +#: src/conf.py:698 +#, fuzzy +msgid "" +"Determines the default length of time a\n" +" driver should block waiting for input." +msgstr "" +"Määrittää, oletus ajanjakson, joka ajurin pitäisi estää odottaen sisääntuloa." + +#: src/conf.py:705 +msgid "" +"Determines what driver module the bot\n" +" will use. Socket, a simple driver based on timeout sockets, is used by\n" +" default because it's simple and stable. Twisted is very stable and " +"simple,\n" +" and if you've got Twisted installed, is probably your best bet." +msgstr "" +"Määrittää mitä ajurimoduulia botti käyttää. Socket, yksinkertainen ajuri, " +"joka perustuu\n" +" aikakatkaisu sokkeleihin, on käytössä oletuksena, koska se on " +"yksinkertainen ja vakaa.\n" +" Twisted on erittäin vakaa ja yksinkertainen, ja jos Twisted on asennettuna, " +"se on\n" +" luultavasti paras vaihtoehto." + +#: src/conf.py:711 +msgid "" +"Determines the maximum time the bot will\n" +" wait before attempting to reconnect to an IRC server. The bot may, of\n" +" course, reconnect earlier if possible." +msgstr "" +"Määrittää maksimi ajan, jonka botti odottaa, ennen kuin yrittää yhdistää " +"uudelleen\n" +" IRC palvelimeen. Botti voi tietysti yhdistää palvelimeen uudelleen " +"aikaisemminkin,\n" +" mikäli se on mahdollista." + +#: src/conf.py:760 +msgid "" +"Determines what directory configuration data is\n" +" put into." +msgstr "Määrittää mihin hakemistoon asetustiedostot laitetaan." + +#: src/conf.py:763 +msgid "Determines what directory data is put into." +msgstr "Määrittää mihin hakemistoon data laitetaan." + +#: src/conf.py:765 +msgid "" +"Determines what directory backup data is put\n" +" into. Set it to /dev/null to disable backup (it is a special value,\n" +" so it also works on Windows and systems without /dev/null)." +msgstr "" +"Määrittää mihin hakemistoon varmuuskopio tiedot laitetaan. Tämä asetetaan " +"arvoon\n" +" /dev/null, mikäli tahdotaan poistaa varmuuskopioiden ottaminen käytöstä (se " +"on\n" +" erityisarvo, joten se toimi myös Windowsilla ja käyttöjärjestelmillä,\n" +" joilla ei ole hakemistoa /dev/null)." + +#: src/conf.py:769 +msgid "" +"Determines what directory temporary files\n" +" are put into." +msgstr "Määrittää mihin hakemistoon väliaikaistiedostot laitetaan." + +#: src/conf.py:776 +msgid "" +"Determines what directories\n" +" the bot will look for plugins in. Accepts a comma-separated list of\n" +" strings.\n" +" This means that to add another directory, you can nest the former value " +"and\n" +" add a new one. E.g. you can say: bot: 'config supybot.directories." +"plugins\n" +" [config supybot.directories.plugins], newPluginDirectory'." +msgstr "" +"Määrittää mistä hakemistoista botti etsii lisäosia. Hyväksyy pilkuilla " +"eristetyn listan\n" +" merkkiketjuista. Tämä tarkoittaa, että voit lisätä toisen hakemiston. Voit " +"sisäistää\n" +" aiemman arvon ja lisätä uuden. Esimerkiksi voit sanoa: botti:\n" +" 'config supybot.directories.plugins [config supybot.directories.plugins],\n" +" UusiLisäosaHakemisto." + +#: src/conf.py:784 +msgid "" +"Determines what plugins will\n" +" be loaded." +msgstr "Määrittää mitkä lisäosat ladataan." + +#: src/conf.py:787 +msgid "" +"Determines whether the bot will always load\n" +" important plugins (Admin, Channel, Config, Misc, Owner, and User)\n" +" regardless of what their configured state is. Generally, if these " +"plugins\n" +" are configured not to load, you didn't do it on purpose, and you still\n" +" want them to load. Users who don't want to load these plugins are " +"smart\n" +" enough to change the value of this variable appropriately :)" +msgstr "" +"Määrittää lataako botti aina tärkeäy lisäosat (Admin, Channel, Config, Misc, " +"Owner ja\n" +" User) riippumatta, mikä niiden määritetty tila on. Yleensä, mikäli nämä " +"lisäosat on\n" +" määritetty olemaan latautumatta, sitä ei tahdottu tehdä tarkoituksella ja " +"niiden\n" +" tahdotaan silti latautuvan. Käyttäjät, jotka eivät tahdo ladata näitä " +"lisäosia ovat\n" +" tarpeeksi teräviä vaihtaakseen tätä asetusarvoa sopivasti :)" + +#: src/conf.py:814 +msgid "" +"Determines what databases are available for use. If this\n" +" value is not configured (that is, if its value is empty) then sane " +"defaults\n" +" will be provided." +msgstr "" +"Määrittää mitkä tietokannat ovat käytettävissä. Mikäli tätä arvoa ei ole " +"määritetty,\n" +" (se tarkottaa, että sen arvo on tyhjä) niin järkevät oletukset tarjotaan." + +#: src/conf.py:820 +msgid "" +"Determines what filename will be used\n" +" for the users database. This file will go into the directory specified " +"by\n" +" the supybot.directories.conf variable." +msgstr "" +"Määrittää mitä nimeä käytetään tiedostolle, jota käytetään " +"käyttäjätietokantana. Tämä\n" +" tiedosto menee hakemistoon, jonka määrittää asetusarvo supybot.directories." +"conf." + +#: src/conf.py:824 +msgid "" +"Determines how long it takes identification to\n" +" time out. If the value is less than or equal to zero, identification " +"never\n" +" times out." +msgstr "" +"Määrittää kuinka pitkän ajan tunnistautuminen on voimassa. Mikäli tänä arvo " +"on vähemmän\n" +" tai yhtäsuuri kuin nolla, tunnistautuminen ei ikinä vanhene." + +#: src/conf.py:828 +msgid "" +"Determines whether the bot will allow users to\n" +" unregister their users. This can wreak havoc with already-existing\n" +" databases, so by default we don't allow it. Enable this at your own " +"risk.\n" +" (Do also note that this does not prevent the owner of the bot from " +"using\n" +" the unregister command.)\n" +" " +msgstr "" +"Määrittää salliiko botti käyttäjien poistaa tunnuksensa botista. Tämä voi " +"aiheuttaa\n" +" kaaosta tietokannoilla, jotka ovat jo olemassa, joten oletuksena me emme " +"salli sitä.\n" +" Tämä asetusarvo otetaan käyttöön omalla vastuulla. (Huomaa, ettei tämä " +"asetusarvo estä\n" +" botin omistajaa käyttänästä \"unregister\" komentoa.)" + +#: src/conf.py:837 +msgid "" +"Determines what filename will be used\n" +" for the ignores database. This file will go into the directory " +"specified\n" +" by the supybot.directories.conf variable." +msgstr "" +"Määrittää nimen tiedostolle, jota käytetään huomioitta jättämisen seurannan\n" +" tietokantana. Tämä tiedosto laitetaan hakemistoon, jonka määrittää " +"asetusarvo\n" +" supybot.directories.conf." + +#: src/conf.py:843 +msgid "" +"Determines what filename will be used\n" +" for the channels database. This file will go into the directory " +"specified\n" +" by the supybot.directories.conf variable." +msgstr "" +"Määrittää nimen tiedostolle, jota käytetään kanavatietokantana. Tämä " +"tiedosto laitetaan\n" +" hakemistoon, joka määritetään asetusarvolla supybot.directories.conf." + +#: src/conf.py:873 +msgid "" +"Determines whether database-based plugins that\n" +" can be channel-specific will be so. This can be overridden by " +"individual\n" +" channels. Do note that the bot needs to be restarted immediately after\n" +" changing this variable or your db plugins may not work for your " +"channel;\n" +" also note that you may wish to set\n" +" supybot.databases.plugins.channelSpecific.link appropriately if you " +"wish\n" +" to share a certain channel's databases globally." +msgstr "" +"Määrittää ovatko tietokanta-pohjaiset lisäosat, jotka voivat olla " +"kanavakohtaisia,\n" +" kanavakohtaisia. Yksittäiset kanavat voivat ohittaa tämän. Huomaa, että " +"botti täytyy\n" +" käynnistää uudelleen välittömästi, kun tätä asetusarvoa on muutettu tai " +"muuten\n" +" tietokanta-pohjaiset lisäosat eivät välttämättä toimi kanavalla; huomaa " +"myös, että\n" +" supybot.databases-plugins.channelSpecific.link voidaan myös tahtoa asettaa " +"sopivaksi,\n" +" mikäli tietyn kanavan tietokannat, tahdotaan jakaa globaalisti." + +#: src/conf.py:881 +msgid "" +"Determines what channel global\n" +" (non-channel-specific) databases will be considered a part of. This is\n" +" helpful if you've been running channel-specific for awhile and want to " +"turn\n" +" the databases for your primary channel into global databases. If\n" +" supybot.databases.plugins.channelSpecific.link.allow prevents linking, " +"the\n" +" current channel will be used. Do note that the bot needs to be " +"restarted\n" +" immediately after changing this variable or your db plugins may not " +"work\n" +" for your channel." +msgstr "" +"Määrittää mihin kanavaan kuuluviksi globaalit (eivät kanavakohtaiset) " +"tietokannat\n" +" määritetään kuuluviksi. Tämä on avuliasta, mikäli kanavakohtaisia " +"tietokantoja on\n" +" käytetty pitkän aikaa ja ensisijaisen kanavan tietokannat tahdotaan " +"muuttaa\n" +" globaaleiksi tietokannoiksi. Jos supybot.databases.plugins.channelSpecific." +"link.allow\n" +" estää linkittämisen, nykyistä kanavaa käytetään. Huomaa, että botti täytyy " +"käynnistää\n" +" uudelleen välittömästi tämän asetusarvon muuttamisen jälkeen tai tietokanta " +"lisäosat\n" +" eivät välttämättä toimi kanavalla." + +#: src/conf.py:890 +msgid "" +"Determines whether another channel's global\n" +" (non-channel-specific) databases will be allowed to link to this " +"channel's\n" +" databases. Do note that the bot needs to be restarted immediately " +"after\n" +" changing this variable or your db plugins may not work for your " +"channel.\n" +" " +msgstr "" +"Määrittää onko toisen kanavan globaaleiden (ei kanavakohtaisten) " +"tietokantojen\n" +" sallittua linkittyä tämän kanavan tietokantoihin. Huomaa, että botti täytyy " +"käynnistää\n" +" uudelleen välittömästi tämän asetusarvon muuttamisen jälkeen tai tietokanta " +"lisäosat\n" +" eivät välttämättä toimi kanavalla." + +#: src/conf.py:907 +msgid "" +"Determines\n" +" whether CDB databases will be allowed as a database implementation." +msgstr "" +"Määrittää sallitaanko CDB tietokantojen käyttö tietokantaimplementaationa." + +#: src/conf.py:910 +msgid "" +"Determines how often CDB databases will have\n" +" their modifications flushed to disk. When the number of modified " +"records\n" +" is greater than this fraction of the total number of records, the " +"database\n" +" will be entirely flushed to disk." +msgstr "" +"Määrittää, kuinka usein DDB lisäosat tallentavat muutoksensa levylle. Kun " +"muokattujen\n" +" tallenteiden määrä on suurempi kuin tämä murto-osa tallenteiden " +"yhteismäärästä,\n" +" tietokanta tallennetaan levylle kokonaan." + +#: src/conf.py:998 +msgid "" +"Determines what will be used as the\n" +" default banmask style." +msgstr "Määrittää mitä käytetään oletus porttikiellon anto tyylinä." + +#: src/conf.py:1002 +msgid "" +"Determines whether the bot will strictly follow\n" +" the RFC; currently this only affects what strings are considered to be\n" +" nicks. If you're using a server or a network that requires you to " +"message\n" +" a nick such as services@this.network.server then you you should set this " +"to\n" +" False." +msgstr "" +"Määrittää noudattaako botti tiukasti RFC standardeja; tällä hetkellä tämä " +"vaikuttaa\n" +" siihen mitten merkkiketjujen uskotaan olevan nimimerkkejä. Jos käytät " +"palvelinta, tai\n" +" verkkoa, joka vaatii viestien lähetyksen nimimerkille, kuten esimerkiksi\n" +" services@tämän.verkon.palvelin, niin tämä pitäisi asettaa arvoon \"False\"." + +#: src/conf.py:1009 +msgid "" +"Determines what user modes the bot will request\n" +" from the server when it first connects. Many people might choose +i; " +"some\n" +" networks allow +x, which indicates to the auth services on those " +"networks\n" +" that you should be given a fake host." +msgstr "" +"Määrittää mitä käyttäjätiloja botti pyytää palvelimelta, kun se muodostaa " +"yhteyden.\n" +" Monet ihmiset saattavat valita tilan +i; jotkut verkot sallivat tilan +x, " +"joka\n" +" ilmaisee tuon verkon tunnistautumispalveluille, että käyttäjälle pitäisi " +"antaa\n" +" väärennetty isäntä." + +#: src/conf.py:1015 +msgid "" +"Determines what vhost the bot will bind to before\n" +" connecting to the IRC server." +msgstr "" +"Määrittää mihin vhostiin botti sitoutuu, ennen kuin ottaa yhdeyden IRC " +"palvelimeen." + +#: src/conf.py:1019 +msgid "" +"Determines how many old messages the bot will\n" +" keep around in its history. Changing this variable will not take " +"effect\n" +" until the bot is restarted." +msgstr "" +"Määrittää kuinka vanhoja viestejä botti pitää historiassaan. Tämän " +"asetusarvon\n" +" muuttaminen ei vaikuta ennen uudelleenkäynnistystä." + +#: src/conf.py:1024 +#, fuzzy +msgid "" +"A floating point number of seconds to throttle\n" +" queued messages -- that is, messages will not be sent faster than once " +"per\n" +" throttleTime seconds." +msgstr "" +"Liukuluku sekunteja, joilla jarrutetaan jonossa olevia viestejä. -- Tämä " +"estää viestejä\n" +" tulemasta lähetetyiksi nopeammin kuin kerran throttleTime sekunteja." + +#: src/conf.py:1029 +msgid "" +"Determines whether the bot will send PINGs to\n" +" the server it's connected to in order to keep the connection alive and\n" +" discover earlier when it breaks. Really, this option only exists for\n" +" debugging purposes: you always should make it True unless you're " +"testing\n" +" some strange server issues." +msgstr "" +"Määrittää lähettääkö botti PINGejä palvelimelle, johon se on muodostanut " +"yhdeyden\n" +" pitääkseen yhdeyden elossa ja saadakseen tietää aiemmin, jos se hajoaa. " +"Oikeasti, tämä\n" +" asetus on olemassa vain debuggaus tarkoituksia varten: tämä pitäisi aina " +"olla \"True\",\n" +" mikäli et kokeile omituisia palvelinongelmia." + +#: src/conf.py:1036 +msgid "" +"Determines the number of seconds between sending\n" +" pings to the server, if pings are being sent to the server." +msgstr "" +"Määrittää määrän sekunteja palvelimelle lähetettävien pingien välissä, jos " +"pingejä\n" +" lähetetään palvelimelle." + +#: src/conf.py:1041 +msgid "" +"Determines whether the bot will refuse\n" +" duplicated messages to be queued for delivery to the server. This is a\n" +" safety mechanism put in place to prevent plugins from sending the same\n" +" message multiple times; most of the time it doesn't matter, unless " +"you're\n" +" doing certain kinds of plugin hacking." +msgstr "" +"Määrittää kieltäytyykö botti pistämästä viestien kaksoiskappaleita jonoon " +"palvelimelle\n" +" toimitettaviksi. Tämä on turvallisuusmekanismi, joka on asetettu estämään " +"lisäosia\n" +" lähettämästä samaa viestiä palvelimelle monia kertoja; yleensä sillä ei ole " +"merkitystä\n" +" mikäli et ole tekemässä lisäosien hakkerointia." + +#: src/conf.py:1049 +msgid "" +"Determines how many seconds must elapse between\n" +" JOINs sent to the server." +msgstr "" +"Määrittää, kuinka monta sekuntia täytyy kulua palvelimelle lähetettyjen \n" +" JOINien välissä." + +#: src/conf.py:1057 +msgid "" +"Determines how many bytes the bot will\n" +" 'peek' at when looking through a URL for a doctype or title or " +"something\n" +" similar. It'll give up after it reads this many bytes, even if it " +"hasn't\n" +" found what it was looking for." +msgstr "" +"Määrittää kuinka monta bittiä botti \"kurkistaa\" katsoessaan URL:än läpi " +"etsien doctypeä\n" +" tai otsikkoa tai jotakin sinnepäin. Se luovuttaa kun on lukenut tämän " +"määrän bittejä,\n" +" vaikka ei löytäisikään etsimäänsä." + +#: src/conf.py:1063 +msgid "" +"Determines what proxy all HTTP requests should go\n" +" through. The value should be of the form 'host:port'." +msgstr "" +"Määrittää minkä välityspalvelimen läpi kaikkien HTTP pyyntöjen pitäisi " +"mennä. \n" +" Arvon pitäisi olla muodossa 'isäntä:portti'." + +#: src/conf.py:1083 +msgid "Determines what host the HTTP server will bind." +msgstr "Määrittää mihin isäntään HTTP palvelin sitoutuu.." + +#: src/conf.py:1085 +msgid "" +"Determines what port the HTTP server will\n" +" bind." +msgstr "" +"Määrittää mihin porttiin HTTP palvelin \n" +" sitoutuu." + +#: src/conf.py:1088 +msgid "" +"Determines whether the server will stay\n" +" alive if no plugin is using it. This also means that the server will\n" +" start even if it is not used." +msgstr "" +"Määrittää pysyykö palvelin elossa, vaikka yksikään \n" +" lisäosa ei käytä sitä. Tämä tarkoittaa, että palvelin käynnistyy myös, " +"mikäli sitä \n" +" ei käytetä." + +#: src/conf.py:1092 +msgid "" +"Determines the content of the robots.txt file,\n" +" served on the server to search engine." +msgstr "" +"Määrittää robots.txt tiedoston sisällön, joka laitetaan palvelimelle " +"annettavaksi\n" +" hakukoneille." + +#: src/conf.py:1100 +msgid "" +"Determines whether the bot will ignore\n" +" unregistered users by default. Of course, that'll make it particularly\n" +" hard for those users to register or identify with the bot, but that's " +"your\n" +" problem to solve." +msgstr "" +"Määrittää jättääkö botti rekisteröimättömät käyttäjät huomioitta oletuksena. " +"Tietysti,\n" +" se tekee rekisteröitymisen tai tunnistautumisen botin kanssa erityisen " +"hankalaksi,\n" +" mutta se on sinun ongelmasi. " + +#: src/conf.py:1107 +msgid "" +"A string that is the external IP of the bot. If this is the\n" +" empty string, the bot will attempt to find out its IP dynamically " +"(though\n" +" sometimes that doesn't work, hence this variable)." +msgstr "" +"Merkkiketju, joka on botin ulkoinen IP osoite. Jos tämä on\n" +" tyhjä merkkiketju, botti yrittää löytää IP osoiteensa dynaamisesti " +"(vaikko\n" +" joskus se ei toimi, siksi tämä asetusarvo)." + +#: src/conf.py:1121 +msgid "" +"Determines what the default timeout for socket\n" +" objects will be. This means that *all* sockets will timeout when this " +"many\n" +" seconds has gone by (unless otherwise modified by the author of the " +"code\n" +" that uses the sockets)." +msgstr "" +"Määrittää mikä on oletus aikakatkaisuaika solmuobjekteille. Se takoittaa, " +"että *kaikki*\n" +" solmut tekevät aikakatkaisun, kun nämä sekuntit olevat kuluneet (paitsi jos " +"solmuja\n" +" käyttävän koodin kirjoittaja on erikseen muokannut tätä)." + +#: src/conf.py:1127 +msgid "" +"Determines what file the bot should write its PID\n" +" (Process ID) to, so you can kill it more easily. If it's left unset (as " +"is\n" +" the default) then no PID file will be written. A restart is required " +"for\n" +" changes to this variable to take effect." +msgstr "" +"Määrittää mihin tiedostoon botin pitäisi kirjoittaa PIDinsä \n" +" (Prosessi ID:n), jotta voit tappaa sen helpommin. Jos jätetty tyhjäksi " +"(kuten se on \n" +" oletuksena) niin silloin PID tiedostoa ei kirjoiteta. Uudelleen " +"käynnistys on vaadittu\n" +" tämän asetusarvon muutosten vaikutuksen aikaansaamiseksi." + +#: src/conf.py:1137 +msgid "" +"Determines whether the bot will automatically\n" +" thread all commands." +msgstr "" +"Määrittää ketjuttaako botti kaikki\n" +" komennot." + +#: src/conf.py:1140 +msgid "" +"Determines whether the bot will automatically\n" +" flush all flushers *very* often. Useful for debugging when you don't " +"know\n" +" what's breaking or when, but think that it might be logged." +msgstr "" +"Määrittää kuinka usein botti tallentaa automaattisesti\n" +" kaikki puskurit *erittäin* usein. Hyödyllinen bugien korjaamiseen, kun " +"et tiedä\n" +" mikä hajoaa ja milloin, mutta uskot, että se saattaa tallentua lokiin." + +#: src/httpserver.py:131 +msgid "" +"\n" +" This is a default response of the Supybot HTTP server. If you see this\n" +" message, it probably means you are developing a plugin, and you have\n" +" neither overriden this message or defined an handler for this query." +msgstr "" +"\n" +"Tämä on Supybotin HTTP-palvelimen oletusvastaus. Jos näet tämän viestin, se " +"luultavasti\n" +" tarkoittaa, että lisäosaa kehitetään, eikä tätä viestiä ole ohitettu eikä " +"tälle\n" +" pyynnölle ole määritetty käsittelijää." + +#: src/httpserver.py:152 +msgid "" +"\n" +" I am a pretty clever IRC bot, but I suck at serving Web pages, " +"particulary\n" +" if I don't know what to serve.\n" +" What I'm saying is you just triggered a 404 Not Found, and I am not\n" +" trained to help you in such a case." +msgstr "" +"\n" +" Olen aika älykäs IRC botti, mutta olen huono verkkosivujen " +"tarjoamisessa, erityisesti, jos en\n" +" tiedä mitä minun pitäisi tarjota.\n" +" Mitä minä olen kertomassa on vain, että laukaisit 404 sivua ei löydy " +"virheen, ja minua ei ole koulutettu\n" +" auttamaan sinua sellaisessa tapauksessa." + +#: src/httpserver.py:169 +msgid "Request not handled." +msgstr "Pyyntöä ei hyväksytty." + +#: src/httpserver.py:173 +msgid "Supybot Web server index" +msgstr "Supybot verkkopalvelin indeksi." + +#: src/httpserver.py:176 +msgid "Here is a list of the plugins that have a Web interface:" +msgstr "Tässä on lista lisäosista, joilla on verkko käyttöliittymä:" + +#: src/httpserver.py:185 +msgid "No plugins available." +msgstr "Ei lisäosia saatavilla." + +#: src/httpserver.py:199 +msgid "Request not handled" +msgstr "Pyyntöä ei käsitelty." + +#: src/questions.py:60 +msgid "Sorry, that response was not an option." +msgstr "Anteeksi, mutta tuo vastaus ei ollut vaihtoehto." + +#: src/questions.py:106 +msgid "Sorry, you must enter a value." +msgstr "Anteeksi, mutta sinun täytyy antaa arvo." + +#: src/questions.py:126 +msgid "Enter password: " +msgstr "Anna salasana: " + +#: src/questions.py:128 +msgid "Re-enter password: " +msgstr "Anna salasana uudelleen: " + +#: src/questions.py:141 +msgid "Passwords don't match." +msgstr "Salasanat eivät täsmää." diff --git a/locale/fr.po b/locale/fr.po index 0df628b0d..f70eee635 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -1,10 +1,11 @@ +# Valentin Lorentz , 2012. msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-06-25 14:17+CEST\n" -"PO-Revision-Date: \n" -"Last-Translator: Valentin Lorentz \n" -"Language-Team: Supybot-fr \n" +"POT-Creation-Date: 2012-04-23 19:24+CEST\n" +"PO-Revision-Date: 2012-04-27 18:10+0200\n" +"Last-Translator: Valentin Lorentz \n" +"Language-Team: French \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,1098 +13,1634 @@ msgstr "" "X-Poedit-Language: Français\n" "X-Poedit-Country: France\n" "X-Poedit-SourceCharset: ASCII\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ../src/callbacks.py:184 +#: src/callbacks.py:184 msgid "Error: " msgstr "Erreur : " -#: ../src/callbacks.py:198 +#: src/callbacks.py:198 msgid "Error: I tried to send you an empty message." msgstr "Erreur : J'ai essayé de vous envoyer un message vide." -#: ../src/callbacks.py:288 -msgid "Missing \"%s\". You may want to quote your arguments with double quotes in order to prevent extra brackets from being evaluated as nested commands." -msgstr "\"%s\" manquant. Vous devriez encadrer vos arguments par des guillements pour éviter que les crochets ne soient évalués comme étant des commandes imbriquées." +#: src/callbacks.py:288 +msgid "" +"Missing \"%s\". You may want to quote your arguments with double quotes in " +"order to prevent extra brackets from being evaluated as nested commands." +msgstr "" +"\"%s\" manquant. Vous devriez encadrer vos arguments par des guillements " +"pour éviter que les crochets ne soient évalués comme étant des commandes " +"imbriquées." -#: ../src/callbacks.py:318 -msgid "\"|\" with nothing preceding. I obviously can't do a pipe with nothing before the |." -msgstr "\"|\" avec rien ne le précédant. Je ne peux évidtemment pas faire un pipe avec rien avant le |." +#: src/callbacks.py:318 +msgid "" +"\"|\" with nothing preceding. I obviously can't do a pipe with nothing " +"before the |." +msgstr "" +"\"|\" avec rien ne le précédant. Je ne peux évidtemment pas faire un pipe " +"avec rien avant le |." -#: ../src/callbacks.py:326 -msgid "Spurious \"%s\". You may want to quote your arguments with double quotes in order to prevent extra brackets from being evaluated as nested commands." -msgstr "\"%s\" en trop. Vous devriez encadrer vos arguments par des guillements pour éviter que les crochets ne soient évalués comme étant des commandes imbriquées." +#: src/callbacks.py:326 +msgid "" +"Spurious \"%s\". You may want to quote your arguments with double quotes in " +"order to prevent extra brackets from being evaluated as nested commands." +msgstr "" +"\"%s\" en trop. Vous devriez encadrer vos arguments par des guillements pour " +"éviter que les crochets ne soient évalués comme étant des commandes " +"imbriquées." -#: ../src/callbacks.py:335 -msgid "\"|\" with nothing following. I obviously can't do a pipe with nothing after the |." -msgstr "\"|\" avec rien ne le suivant. Je ne peux évidtemment pas faire un pipe avec rien après le |." +#: src/callbacks.py:335 +msgid "" +"\"|\" with nothing following. I obviously can't do a pipe with nothing " +"after the |." +msgstr "" +"\"|\" avec rien ne le suivant. Je ne peux évidtemment pas faire un pipe avec " +"rien après le |." -#: ../src/callbacks.py:519 +#: src/callbacks.py:519 msgid "%s is not a valid %s." msgstr "%s n'est pas du type '%s'." -#: ../src/callbacks.py:521 +#: src/callbacks.py:521 msgid "That's not a valid %s." msgstr "Ce n'est pas un %s valide." -#: ../src/callbacks.py:599 +#: src/callbacks.py:599 msgid "You've attempted more nesting than is currently allowed on this bot." -msgstr "Vous avez essayé de faire plus d'imbrication que ce qui est actuellement autorisé sur ce bot." +msgstr "" +"Vous avez essayé de faire plus d'imbrication que ce qui est actuellement " +"autorisé sur ce bot." -#: ../src/callbacks.py:778 -msgid "The command %q is available in the %L plugins. Please specify the plugin whose command you wish to call by using its name as a command before %q." -msgstr "La commande %q est disponible dans les plugins %L. Veuillez spécifier dans quel plugin se trouve la commande que vous souhaitez appeler, en ajoutant le nom du plugin avant %q." +#: src/callbacks.py:778 +msgid "" +"The command %q is available in the %L plugins. Please specify the plugin " +"whose command you wish to call by using its name as a command before %q." +msgstr "" +"La commande %q est disponible dans les plugins %L. Veuillez spécifier dans " +"quel plugin se trouve la commande que vous souhaitez appeler, en ajoutant le " +"nom du plugin avant %q." -#: ../src/callbacks.py:863 -#: ../src/callbacks.py:876 +#: src/callbacks.py:864 src/callbacks.py:877 msgid "(XX more messages)" msgstr "(XX messages supplémentaires)" -#: ../src/callbacks.py:908 +#: src/callbacks.py:909 msgid "more message" msgstr "message supplémentaire" -#: ../src/callbacks.py:910 +#: src/callbacks.py:911 msgid "more messages" msgstr "messages supplémentaires" -#: ../src/callbacks.py:1010 +#: src/callbacks.py:1028 msgid "" "Determines what commands are currently disabled. Such\n" -" commands will not appear in command lists, etc. They will appear not even\n" +" commands will not appear in command lists, etc. They will appear not " +"even\n" " to exist." -msgstr "Détermine quelles commandes sont actuellement désactivées. De telles commandes n'apparaitront pas dans la liste des commandes, etc. Ça sera comme si elles n'existaient pas." +msgstr "" +"Détermine quelles commandes sont actuellement désactivées. De telles " +"commandes n'apparaitront pas dans la liste des commandes, etc. Ça sera comme " +"si elles n'existaient pas." -#: ../src/callbacks.py:1201 +#: src/callbacks.py:1224 msgid "Invalid arguments for %s." msgstr "Argument invalide pour %s" -#: ../src/callbacks.py:1227 +#: src/callbacks.py:1250 msgid "The %q command has no help." msgstr "La commande %q n'a pas d'aide." -#: ../src/commands.py:171 +#: src/commands.py:228 msgid "integer" msgstr "entier" -#: ../src/commands.py:182 +#: src/commands.py:239 msgid "non-integer value" msgstr "valeur non entière" -#: ../src/commands.py:193 +#: src/commands.py:250 msgid "floating point number" msgstr "nombre à virgule flottante" -#: ../src/commands.py:202 +#: src/commands.py:259 msgid "positive integer" msgstr "entier positif" -#: ../src/commands.py:206 +#: src/commands.py:263 msgid "non-negative integer" msgstr "entier non négatif" -#: ../src/commands.py:209 +#: src/commands.py:266 msgid "index" msgstr "index" -#: ../src/commands.py:234 +#: src/commands.py:291 msgid "number of seconds" msgstr "nombre de secondes" -#: ../src/commands.py:241 +#: src/commands.py:298 msgid "boolean" msgstr "booléen" -#: ../src/commands.py:255 +#: src/commands.py:312 src/commands.py:320 src/commands.py:328 +#: src/commands.py:336 msgid "do that" msgstr "faire ça" -#: ../src/commands.py:259 +#: src/commands.py:316 src/commands.py:324 src/commands.py:332 +#: src/commands.py:340 msgid "I'm not even in %s." msgstr "Je ne suis pas sur %s." -#: ../src/commands.py:261 +#: src/commands.py:318 +msgid "I need to be voiced to %s." +msgstr "Je doit être voicé pour %s" + +#: src/commands.py:326 +msgid "I need to be halfopped to %s." +msgstr "Je doit être halfop pour %s" + +#: src/commands.py:334 msgid "I need to be opped to %s." msgstr "Je doit être opé pour %s" -#: ../src/commands.py:278 +#: src/commands.py:344 +msgid "I need to be at least halfopped to %s." +msgstr "Je doit être au moins halfop pour %s" + +#: src/commands.py:362 msgid "nick or hostmask" msgstr "nick ou masque d'hôte" -#: ../src/commands.py:330 -#: ../src/commands.py:333 +#: src/commands.py:414 src/commands.py:417 msgid "regular expression" msgstr "expression régulière" -#: ../src/commands.py:344 +#: src/commands.py:428 msgid "That nick is too long for this server." msgstr "Ce nick est trop long pour ce serveur." -#: ../src/commands.py:393 -#: ../src/commands.py:412 +#: src/commands.py:477 src/commands.py:496 msgid "I'm not in %s." msgstr "Je ne suis pas sur %s" -#: ../src/commands.py:397 +#: src/commands.py:481 msgid "This command may only be given in a channel that I am in." -msgstr "Cette commande ne peut être donnée que sur un canal sur lequel je suis." +msgstr "" +"Cette commande ne peut être donnée que sur un canal sur lequel je suis." -#: ../src/commands.py:410 +#: src/commands.py:494 msgid "You must be in %s." msgstr "Vous devez être sur %s" -#: ../src/commands.py:414 +#: src/commands.py:498 msgid "channel" msgstr "canal" -#: ../src/commands.py:421 +#: src/commands.py:505 msgid "%s is not in %s." msgstr "%s n'est pas sur %s" -#: ../src/commands.py:455 +#: src/commands.py:539 msgid "You must not give the empty string as an argument." msgstr "Vous ne pouvez me donner une chaîne vide comme argument." -#: ../src/commands.py:472 +#: src/commands.py:556 msgid "This message must be sent in a channel." msgstr "Ce message doit être envoyé sur un canal." -#: ../src/commands.py:518 +#: src/commands.py:602 msgid "http url" msgstr "URL HTTP" -#: ../src/commands.py:525 +#: src/commands.py:609 msgid "command name" msgstr "nom de commande" -#: ../src/commands.py:533 +#: src/commands.py:617 msgid "ip" msgstr "IP" -#: ../src/commands.py:539 +#: src/commands.py:623 msgid "letter" msgstr "lettre" -#: ../src/commands.py:571 +#: src/commands.py:655 msgid "plugin" msgstr "plugin" -#: ../src/commands.py:579 +#: src/commands.py:663 msgid "irc color" msgstr "couleur IRC" -#: ../src/conf.py:104 +#: src/conf.py:104 msgid "" "Determines whether this plugin is loaded\n" -" bydefault." +" by default." msgstr "Détermine si ce plugin est chargé par défaut." -#: ../src/conf.py:108 +#: src/conf.py:108 msgid "" "Determines whether this plugin is\n" " publicly visible." msgstr "Détermine si ce plugin est visible publiquement" -#: ../src/conf.py:194 +#: src/conf.py:202 msgid "Determines the bot's default nick." msgstr "Détermine le nick par défaut du bot." -#: ../src/conf.py:197 +#: src/conf.py:205 msgid "" "Determines what alternative\n" -" nicks will be used if the primary nick (supybot.nick) isn't available. A\n" -" %s in this nick is replaced by the value of supybot.nick when used. If no\n" -" alternates are given, or if all are used, the supybot.nick will be perturbed\n" +" nicks will be used if the primary nick (supybot.nick) isn't available. " +"A\n" +" %s in this nick is replaced by the value of supybot.nick when used. If " +"no\n" +" alternates are given, or if all are used, the supybot.nick will be " +"perturbed\n" " appropriately until an unused nick is found." -msgstr "Détermine quels nicks alternatifs peuvent être utilisés si le nick principal (supybot.nick) n'est pas disponible. Un %s dans ce nick est remplacé par la valeur de supybot.nick. Si aucune alternative n'est donnée, ou si elles sont toutes déjà utilisées, supybot.nick sera modifié jusqu'à ce qu'un nick non utilisé soit trouvé." +msgstr "" +"Détermine quels nicks alternatifs peuvent être utilisés si le nick " +"principal (supybot.nick) n'est pas disponible. Un %s dans ce nick est " +"remplacé par la valeur de supybot.nick. Si aucune alternative n'est " +"donnée, ou si elles sont toutes déjà utilisées, supybot.nick sera modifié " +"jusqu'à ce qu'un nick non utilisé soit trouvé." -#: ../src/conf.py:204 +#: src/conf.py:212 msgid "" "Determines the bot's ident string, if the server\n" " doesn't provide one by default." -msgstr "Détermine l'ident du bot (ce qui précède le @ dans le masque d'hôte), si le serveur n'en fourni par une par défaut." +msgstr "" +"Détermine l'ident du bot (ce qui précède le @ dans le masque d'hôte), si " +"le serveur n'en fourni par une par défaut." -#: ../src/conf.py:215 +#: src/conf.py:223 msgid "" "Determines the user the bot sends to the server.\n" -" A standard user using the current version of the bot will be generated if\n" +" A standard user using the current version of the bot will be generated " +"if\n" " this is left empty." -msgstr "Détermine le nom réel que le bot envoie au serveur (aussi appelé nom d'utilisateur ; il peut contenir des caractères spéciaux et n'est pas obligatoirement unique). Un nom standard contenant la version actuelle du bot sera généré si vous laisser cette variable vide." +msgstr "" +"Détermine le nom réel que le bot envoie au serveur (aussi appelé nom " +"d'utilisateur ; il peut contenir des caractères spéciaux et n'est pas " +"obligatoirement unique). Un nom standard contenant la version actuelle du " +"bot sera généré si vous laisser cette variable vide." -#: ../src/conf.py:223 +#: src/conf.py:231 msgid "Determines what networks the bot will connect to." msgstr "Détermine à quels réseaux le bot se connecte." -#: ../src/conf.py:264 +#: src/conf.py:273 msgid "" "Determines what password will be used on %s. Yes, we know that\n" " technically passwords are server-specific and not network-specific,\n" " but this is the best we can do right now." -msgstr "Détermine quel mot de passe sera utilisé sur %s. Oui, nous savons que les mots de passe sont en fait spécifiques aux serveurs et non et réseaux, mais nous pensons que c'est mieux comme ça." +msgstr "" +"Détermine quel mot de passe sera utilisé sur %s. Oui, nous savons que " +"les mots de passe sont en fait spécifiques aux serveurs et non et " +"réseaux, mais nous pensons que c'est mieux comme ça." -#: ../src/conf.py:268 +#: src/conf.py:277 msgid "" "Determines what servers the bot will connect to for %s. Each will\n" " be tried in order, wrapping back to the first when the cycle is\n" " completed." -msgstr "Détermine à quels serveurs le bot se connectera pour %s. La connexion se fera d'abord au premier serveur, puis au second si la première est raté, etc. Une fois arrivé à la fin, on recommence du début." +msgstr "" +"Détermine à quels serveurs le bot se connectera pour %s. La connexion " +"se fera d'abord au premier serveur, puis au second si la première est " +"raté, etc. Une fois arrivé à la fin, on recommence du début." -#: ../src/conf.py:272 +#: src/conf.py:281 msgid "Determines what channels the bot will join only on %s." msgstr "Détermine quels canaux le bot rejoindra sur ce réseau %s." -#: ../src/conf.py:275 +#: src/conf.py:284 msgid "" "Determines whether the bot will attempt to connect with SSL\n" " sockets to %s." -msgstr "Détermine si le bot tentera de se connecter avec des sockets SSL à %s." +msgstr "" +"Détermine si le bot tentera de se connecter avec des sockets SSL à %s." -#: ../src/conf.py:278 +#: src/conf.py:287 msgid "" "Determines what key (if any) will be used to join the\n" " channel." -msgstr "Détermine quelle clef (s'il y en a) sera utilisée pour rejoindre le canal." +msgstr "" +"Détermine quelle clef (s'il y en a) sera utilisée pour rejoindre le " +"canal." -#: ../src/conf.py:298 +#: src/conf.py:289 +msgid "" +"Determines\n" +" what nick the bot will use on this network. If empty, defaults to\n" +" supybot.nick." +msgstr "" +"Détermine quel nick le bot utilisera sur ce réseau. Si cette variable de " +"configuration est vide, le nick par défaut sera pris dans supybot.nick." + +#: src/conf.py:294 +msgid "" +"Determines what SASL username will be used on %s. This should\n" +" be the bot's account name. Due to the way SASL works, you can't use\n" +" any grouped nick." +msgstr "" +"Détermine quel nom d'utilisateur SASL sera utilisé sur %s. Ce doit être le " +"nom du compte du bot. À cause de la façon dont SASL fonctionne, vous ne " +"pouvez pas utiliser un nick groupé." + +#: src/conf.py:298 +msgid "Determines what SASL password will be used on %s." +msgstr "Détermine quel mot de passe SASL sera utilisé sur %s." + +#: src/conf.py:318 msgid "" "Determines how timestamps\n" " printed for human reading should be formatted. Refer to the Python\n" -" documentation for the time module to see valid formatting characters for\n" +" documentation for the time module to see valid formatting characters " +"for\n" " time formats." -msgstr "Détermine quels timestamps sont affichés pour être lus par des humaines. Référez-vous à la documentation Python sur le module time pour plus d'information sur les formats valides." +msgstr "" +"Détermine quels timestamps sont affichés pour être lus par des humaines. " +"Référez-vous à la documentation Python sur le module time pour plus " +"d'information sur les formats valides." -#: ../src/conf.py:312 +#: src/conf.py:332 msgid "" "Determines whether elapsed times will be given\n" " as \"1 day, 2 hours, 3 minutes, and 15 seconds\" or as \"1d 2h 3m 15s\"." -msgstr "Détermine si un utilise des temps plus courts, c'est à dire par exemple \"1d 2h 3m 15s\" au lieu de \"1 day, 2 hours, 3 minutes, and 15 seconds\"." +msgstr "" +"Détermine si un utilise des temps plus courts, c'est à dire par exemple " +"\"1d 2h 3m 15s\" au lieu de \"1 day, 2 hours, 3 minutes, and 15 seconds" +"\"." -#: ../src/conf.py:322 +#: src/conf.py:342 msgid "" "Determines the absolute maximum length of\n" -" the bot's reply -- no reply will be passed through the bot with a length\n" +" the bot's reply -- no reply will be passed through the bot with a " +"length\n" " greater than this." -msgstr "Détermine la longueur maximum absolue des réponses du bot ; le bot n'enverra aucune réponse qui dépassera ce nombre." +msgstr "" +"Détermine la longueur maximum absolue des réponses du bot ; le bot " +"n'enverra aucune réponse qui dépassera ce nombre." -#: ../src/conf.py:327 +#: src/conf.py:347 msgid "" "Determines whether the bot will break up long\n" -" messages into chunks and allow users to use the 'more' command to get the\n" +" messages into chunks and allow users to use the 'more' command to get " +"the\n" " remaining chunks." -msgstr "Détermine si le bot séparera les longs messages en morceaux et permettra aux utilisateurs d'utiliser la commande 'more' pour récupérer les morceaux restants." +msgstr "" +"Détermine si le bot séparera les longs messages en morceaux et permettra " +"aux utilisateurs d'utiliser la commande 'more' pour récupérer les " +"morceaux restants." -#: ../src/conf.py:332 +#: src/conf.py:352 msgid "" "Determines what the maximum number of\n" " chunks (for use with the 'more' command) will be." -msgstr "Détermine quel est le nombre maximum de morceaux (que l'on récupère avec la commande 'more')." +msgstr "" +"Détermine quel est le nombre maximum de morceaux (que l'on récupère avec " +"la commande 'more')." -#: ../src/conf.py:336 +#: src/conf.py:356 msgid "" "Determines how long individual chunks\n" " will be. If set to 0, uses our super-tweaked,\n" " get-the-most-out-of-an-individual-message default." -msgstr "Détermine quelle est la longueur maximale des morceaux. Définir cette variable à 0 permet d'utiliser notre super algorithme pour optimiser cette longueur en fonction des paramètres du serveur." +msgstr "" +"Détermine quelle est la longueur maximale des morceaux. Définir cette " +"variable à 0 permet d'utiliser notre super algorithme pour optimiser " +"cette longueur en fonction des paramètres du serveur." -#: ../src/conf.py:341 +#: src/conf.py:361 msgid "" "Determines how many mores will be sent\n" " instantly (i.e., without the use of the more command, immediately when\n" -" they are formed). Defaults to 1, which means that a more command will be\n" +" they are formed). Defaults to 1, which means that a more command will " +"be\n" " required for all but the first chunk." -msgstr "Détermine combien de 'more's sont envoyés immédiatement (c'est à dire, avant l'utilisation de la commande 'more', juste après que l'utilisateur ait envoyé la commande. Par défaut, cela vaut 1, ce qui signifie que seul le premier morceau est envoyé. Avant l'appel de 'more'." +msgstr "" +"Détermine combien de 'more's sont envoyés immédiatement (c'est à dire, " +"avant l'utilisation de la commande 'more', juste après que l'utilisateur " +"ait envoyé la commande. Par défaut, cela vaut 1, ce qui signifie que seul " +"le premier morceau est envoyé. Avant l'appel de 'more'." -#: ../src/conf.py:347 +#: src/conf.py:367 msgid "" "Determines whether the bot will send\n" " multi-message replies in a single message or in multiple messages. For\n" -" safety purposes (so the bot is less likely to flood) it will normally send\n" +" safety purposes (so the bot is less likely to flood) it will normally " +"send\n" " everything in a single message, using mores if necessary." -msgstr "Détermine si le bot enverra des réponses multi-messages dans un seul message ou dans plusieurs. Pour des raisons de sécurité (le bot est moins susceptible de flooder), il envoie tout dans un seul message, et les utilisateurs peuvent utiliser 'more' si nécessaire." +msgstr "" +"Détermine si le bot enverra des réponses multi-messages dans un seul " +"message ou dans plusieurs. Pour des raisons de sécurité (le bot est moins " +"susceptible de flooder), il envoie tout dans un seul message, et les " +"utilisateurs peuvent utiliser 'more' si nécessaire." -#: ../src/conf.py:353 +#: src/conf.py:373 msgid "" "Determines whether the bot will reply with an\n" -" error message when it is addressed but not given a valid command. If this\n" +" error message when it is addressed but not given a valid command. If " +"this\n" " value is False, the bot will remain silent, as long as no other plugins\n" " override the normal behavior." -msgstr "Détermine si le bot répondra avec un message d'erreur lorsqu'un message lui est adressé, mais qu'il ne s'agit pas d'une commande valide. Si cette valeur est à False, le bot restera silencieux, du moment qu'aucun plugin ne modifie le comportement normal." +msgstr "" +"Détermine si le bot répondra avec un message d'erreur lorsqu'un message " +"lui est adressé, mais qu'il ne s'agit pas d'une commande valide. Si cette " +"valeur est à False, le bot restera silencieux, du moment qu'aucun plugin " +"ne modifie le comportement normal." -#: ../src/conf.py:360 +#: src/conf.py:380 msgid "" "Determines whether error messages that result\n" " from bugs in the bot will show a detailed error message (the uncaught\n" " exception) or a generic error message." -msgstr "Détermine si les messages d'erreur résultant de bugs seront affichés dans un message d'erreur (l'exception non interceptée) ou si un message d'erreur générique est utilisé." +msgstr "" +"Détermine si les messages d'erreur résultant de bugs seront affichés dans " +"un message d'erreur (l'exception non interceptée) ou si un message " +"d'erreur générique est utilisé." -#: ../src/conf.py:364 +#: src/conf.py:384 msgid "" "Determines whether the bot will send error\n" -" messages to users in private. You might want to do this in order to keep\n" +" messages to users in private. You might want to do this in order to " +"keep\n" " channel traffic to minimum. This can be used in combination with\n" " supybot.reply.error.withNotice." -msgstr "Détermine si le bot enverra les messages d'erreur en privé. Vous pouvez vouloir ceci dans le but de limiter le traffic de données sur le canal. Vous pouvez utiliser ceci en combinaison avec supybot.reply.error.withNotice." +msgstr "" +"Détermine si le bot enverra les messages d'erreur en privé. Vous pouvez " +"vouloir ceci dans le but de limiter le traffic de données sur le canal. " +"Vous pouvez utiliser ceci en combinaison avec supybot.reply.error." +"withNotice." -#: ../src/conf.py:369 +#: src/conf.py:389 msgid "" "Determines whether the bot will send error\n" -" messages to users via NOTICE instead of PRIVMSG. You might want to do this\n" +" messages to users via NOTICE instead of PRIVMSG. You might want to do " +"this\n" " so users can ignore NOTICEs from the bot and not have to see error\n" " messages; or you might want to use it in combination with\n" -" supybot.reply.errorInPrivate so private errors don't open a query window\n" +" supybot.reply.errorInPrivate so private errors don't open a query " +"window\n" " in most IRC clients." -msgstr "Détermine si le bot enverra les erreurs par NOTICE plutôt que par PRIVMSG. Vous pouvez faire cela pour que les utilisateurs qui ne veulent pas recevoir de message d'erreur ignorent les NOTICEs du bot. Vous pouvez utiliser cette fonctionnalité en combinaison avec supybot.reply.errorInPrivate, pour que les erreurs en privé n'ouvrent pas une nouvelle fenêtre de requête, sur la plupart des clients." +msgstr "" +"Détermine si le bot enverra les erreurs par NOTICE plutôt que par " +"PRIVMSG. Vous pouvez faire cela pour que les utilisateurs qui ne veulent " +"pas recevoir de message d'erreur ignorent les NOTICEs du bot. Vous " +"pouvez utiliser cette fonctionnalité en combinaison avec supybot.reply." +"errorInPrivate, pour que les erreurs en privé n'ouvrent pas une nouvelle " +"fenêtre de requête, sur la plupart des clients." -#: ../src/conf.py:376 +#: src/conf.py:396 msgid "" "Determines whether the bot will send an error\n" -" message to users who attempt to call a command for which they do not have\n" -" the necessary capability. You may wish to make this True if you don't want\n" +" message to users who attempt to call a command for which they do not " +"have\n" +" the necessary capability. You may wish to make this True if you don't " +"want\n" " users to understand the underlying security system preventing them from\n" " running certain commands." -msgstr "Détermine si le bot enverra un message d'erreur aux utilisateurs qui tentent d'appeler une commande pour laquelle ils n'ont pas de capacité suffisante. Vous pouvez le mettre à True si vous ne voulez pas que les utilisateurs comprennent le système sous-jacent de capacités pour lancer certaines commandes." +msgstr "" +"Détermine si le bot enverra un message d'erreur aux utilisateurs qui " +"tentent d'appeler une commande pour laquelle ils n'ont pas de capacité " +"suffisante. Vous pouvez le mettre à True si vous ne voulez pas que les " +"utilisateurs comprennent le système sous-jacent de capacités pour " +"lancer certaines commandes." -#: ../src/conf.py:383 +#: src/conf.py:403 msgid "" "Determines whether the bot will reply\n" " privatelywhen replying in a channel, rather than replying to the whole\n" " channel." -msgstr "Détermine si le bot répondra en privé, plutôt que de répondre sur le canal." +msgstr "" +"Détermine si le bot répondra en privé, plutôt que de répondre sur le " +"canal." -#: ../src/conf.py:388 +#: src/conf.py:408 msgid "" "Determines whether the bot will reply with a\n" -" notice when replying in a channel, rather than replying with a privmsg as\n" +" notice when replying in a channel, rather than replying with a privmsg " +"as\n" " normal." -msgstr "Détermine si le bot répondra par notice sur un canal plutôt que par privmsg comme d'habitude" +msgstr "" +"Détermine si le bot répondra par notice sur un canal plutôt que par " +"privmsg comme d'habitude" -#: ../src/conf.py:394 +#: src/conf.py:414 msgid "" "Determines whether the bot will reply with a\n" -" notice when it is sending a private message, in order not to open a /query\n" -" window in clients. This can be overridden by individual users via the user\n" +" notice when it is sending a private message, in order not to open a /" +"query\n" +" window in clients. This can be overridden by individual users via the " +"user\n" " configuration variable reply.withNoticeWhenPrivate." -msgstr "Détermine si le bot répondra avec une notice lorsque l'on s'adresse à lui en privé, pour éviter de devoir ouvrir une fenêtre /query. Ceci peut être modifié utilisateur par utilisateur via la varible de configuration reply.withNoticeWhenPrivate." +msgstr "" +"Détermine si le bot répondra avec une notice lorsque l'on s'adresse à lui " +"en privé, pour éviter de devoir ouvrir une fenêtre /query. Ceci peut être " +"modifié utilisateur par utilisateur via la varible de configuration reply." +"withNoticeWhenPrivate." -#: ../src/conf.py:400 +#: src/conf.py:420 msgid "" "Determines whether the bot will always prefix\n" " theuser's nick to its reply to that user's command." -msgstr "Détermine si le bot préfixera toujours le nick de l'utilisateur lors de ses réponses à celui-ci." +msgstr "" +"Détermine si le bot préfixera toujours le nick de l'utilisateur lors de " +"ses réponses à celui-ci." -#: ../src/conf.py:404 +#: src/conf.py:424 msgid "" "Determines whether the bot should attempt to\n" -" reply to all messages even if they don't address it (either via its nick\n" -" or a prefix character). If you set this to True, you almost certainly want\n" +" reply to all messages even if they don't address it (either via its " +"nick\n" +" or a prefix character). If you set this to True, you almost certainly " +"want\n" " to set supybot.reply.whenNotCommand to False." -msgstr "Détermine si le bot tentera de répondre à tous les messages, même si ils ne lui sont pas adressés (par son nick ou par un caractère de préfixe). Si vous définissez ceci à True, vous voudrez probablement mettre supybot.reply.whenNotCommand à False." +msgstr "" +"Détermine si le bot tentera de répondre à tous les messages, même si ils " +"ne lui sont pas adressés (par son nick ou par un caractère de préfixe). " +"Si vous définissez ceci à True, vous voudrez probablement mettre supybot." +"reply.whenNotCommand à False." -#: ../src/conf.py:410 +#: src/conf.py:430 msgid "" "Determines whether the bot will allow you to\n" -" send channel-related commands outside of that channel. Sometimes people\n" +" send channel-related commands outside of that channel. Sometimes " +"people\n" " find it confusing if a channel-related command (like Filter.outfilter)\n" " changes the behavior of the channel but was sent outside the channel\n" " itself." -msgstr "Détermine si le bot vous permettra d'envoyer des commandes liées à un canal en-dehors de ce canal. Parfois, certaines personnes confondent lorsqu'une commande liée à un canal (comme Filter.outfilter) changent le comportement du canal, alors que la commande est envoyée en-dehors du canal." +msgstr "" +"Détermine si le bot vous permettra d'envoyer des commandes liées à un " +"canal en-dehors de ce canal. Parfois, certaines personnes confondent " +"lorsqu'une commande liée à un canal (comme Filter.outfilter) changent le " +"comportement du canal, alors que la commande est envoyée en-dehors du " +"canal." -#: ../src/conf.py:417 +#: src/conf.py:437 msgid "" "Determines whether the bot will unidentify\n" " someone when that person changes his or her nick. Setting this to True\n" " will cause the bot to track such changes. It defaults to False for a\n" " little greater security." -msgstr "Détermine si le bot will désidentifiera une personne lorsque celle-ci change son nick. Mettre ceci à True fera que le bot traquera ces changements. Il est par défaut à False pour améliorer légèrement la sécurité." +msgstr "" +"Détermine si le bot will désidentifiera une personne lorsque celle-ci " +"change son nick. Mettre ceci à True fera que le bot traquera ces " +"changements. Il est par défaut à False pour améliorer légèrement la " +"sécurité." -#: ../src/conf.py:423 +#: src/conf.py:443 msgid "" "Determines whether the bot will always join a\n" -" channel when it's invited. If this value is False, the bot will only join\n" -" a channel if the user inviting it has the 'admin' capability (or if it's\n" -" explicitly told to join the channel using the Admin.join command)" -msgstr "Détermine si le bot joindra toujours les canaux sur lesquels il est invité. Si cette valeur est à False, le bot ne joindra un canal que si l'utilisateur l'invitant a la capacité 'admin' (ou si il lui a directement envoyé la commande Admin join)" +" channel when it's invited. If this value is False, the bot will only " +"join\n" +" a channel if the user inviting it has the 'admin' capability (or if " +"it's\n" +" explicitly told to join the channel using the Admin.join command)." +msgstr "" +"Détermine si le bot joindra toujours les canaux sur lesquels il est " +"invité. Si cette valeur est à False, le bot ne joindra un canal que si " +"l'utilisateur l'invitant a la capacité 'admin' (ou si il lui a " +"directement envoyé la commande Admin join)" -#: ../src/conf.py:429 +#: src/conf.py:449 msgid "" "Supybot normally replies with the full help\n" -" whenever a user misuses a command. If this value is set to True, the bot\n" +" whenever a user misuses a command. If this value is set to True, the " +"bot\n" " will only reply with the syntax of the command (the first line of the\n" " help) rather than the full help." -msgstr "Supybot répond normalement avec une aide complète lorsque l'utilisateur se trompe dans une commande. Si cette valeur est à True, le bot ne répondra qu'avec la syntaxe de la commande (la première ligne de l'aide), plutôt que par toute l'aide." +msgstr "" +"Supybot répond normalement avec une aide complète lorsque l'utilisateur " +"se trompe dans une commande. Si cette valeur est à True, le bot ne " +"répondra qu'avec la syntaxe de la commande (la première ligne de l'aide), " +"plutôt que par toute l'aide." -#: ../src/conf.py:443 +#: src/conf.py:463 msgid "" "Determines what prefix characters the bot will\n" -" reply to. A prefix character is a single character that the bot will use\n" -" to determine what messages are addressed to it; when there are no prefix\n" -" characters set, it just uses its nick. Each character in this string is\n" +" reply to. A prefix character is a single character that the bot will " +"use\n" +" to determine what messages are addressed to it; when there are no " +"prefix\n" +" characters set, it just uses its nick. Each character in this string " +"is\n" " interpreted individually; you can have multiple prefix chars\n" " simultaneously, and if any one of them is used as a prefix the bot will\n" " assume it is being addressed." -msgstr "Détermine à quel caractère de préfixe le bot réagira. Un caractère de préfixe est un caractère servant à indiquer que le message est destiné au bot ; lorsqu'il n'y a pas de caractère de préfixe, vous ne pouvez qu'utiliser le nick du bot. Chaque caractère de cette chaîne sera interprété individuellement ; vous pouvez avoir plusieurs caractères simultanément, et un seul d'entre eux suffira pour s'adresser au bot." +msgstr "" +"Détermine à quel caractère de préfixe le bot réagira. Un caractère de " +"préfixe est un caractère servant à indiquer que le message est destiné " +"au bot ; lorsqu'il n'y a pas de caractère de préfixe, vous ne pouvez " +"qu'utiliser le nick du bot. Chaque caractère de cette chaîne sera " +"interprété individuellement ; vous pouvez avoir plusieurs caractères " +"simultanément, et un seul d'entre eux suffira pour s'adresser au bot." -#: ../src/conf.py:452 +#: src/conf.py:472 msgid "" "Determines what strings the\n" -" bot will reply to when they are at the beginning of the message. Whereas\n" +" bot will reply to when they are at the beginning of the message. " +"Whereas\n" " prefix.chars can only be one character (although there can be many of\n" " them), this variable is a space-separated list of strings, so you can\n" " set something like '@@ ??' and the bot will reply when a message is\n" " prefixed by either @@ or ??." -msgstr "Détermine à quelles chaînes le bot répondra lorsqu'elles sont au début du message. Alors que prefex.chars n'est utilisé que pour un caractère seul (même si on peut en utiliser plusieurs), cette variable est une liste de chaînes séparées par des espaces, vous pouvez donc par exemple mettre '@@ ??' et le bot répondra lorsqu'un message est préfixé par @@ ou par ??." +msgstr "" +"Détermine à quelles chaînes le bot répondra lorsqu'elles sont au début du " +"message. Alors que prefex.chars n'est utilisé que pour un caractère seul " +"(même si on peut en utiliser plusieurs), cette variable est une liste de " +"chaînes séparées par des espaces, vous pouvez donc par exemple mettre " +"'@@ ??' et le bot répondra lorsqu'un message est préfixé par @@ ou par ??." -#: ../src/conf.py:459 +#: src/conf.py:479 msgid "" "Determines whether the bot will reply when\n" " people address it by its nick, rather than with a prefix character." -msgstr "Détermine si le bot will répondra lorsque des gens s'adresseront à lui par si nick, au lieu de ne répondre qu'aux caractères de préfixe." +msgstr "" +"Détermine si le bot will répondra lorsque des gens s'adresseront à lui " +"par si nick, au lieu de ne répondre qu'aux caractères de préfixe." -#: ../src/conf.py:462 +#: src/conf.py:482 msgid "" "Determines whether the bot will reply when\n" " people address it by its nick at the end of the message, rather than at\n" " the beginning." -msgstr "Détermine si le bot répondra lorsque les personnes mettent son nick à la fin d'un message, plutôt qu'au début." +msgstr "" +"Détermine si le bot répondra lorsque les personnes mettent son nick à la " +"fin d'un message, plutôt qu'au début." -#: ../src/conf.py:466 +#: src/conf.py:486 msgid "" "Determines what extra nicks\n" -" the bot will always respond to when addressed by, even if its current nick\n" +" the bot will always respond to when addressed by, even if its current " +"nick\n" " is something else." -msgstr "Détermine à quels nicks supplémentaires le bot répondra lorsqu'on s'adressera à lui par ceux-ci, même si le nick est actuellement utilisé." +msgstr "" +"Détermine à quels nicks supplémentaires le bot répondra lorsqu'on " +"s'adressera à lui par ceux-ci, même si le nick est actuellement utilisé." -#: ../src/conf.py:476 +#: src/conf.py:496 msgid "The operation succeeded." msgstr "Opération effectuée avec succès." -#: ../src/conf.py:477 +#: src/conf.py:497 msgid "" "Determines what message the bot replies with when a command succeeded.\n" " If this configuration variable is empty, no success message will be\n" " sent." -msgstr "Détermine quel message le bot répondra lorsqu'une commande a été effectuée avec succès. Si cette variable de configuration est vide, aucun message de succès ne sera envoyé." +msgstr "" +"Détermine quel message le bot répondra lorsqu'une commande a été " +"effectuée avec succès. Si cette variable de configuration est vide, aucun " +"message de succès ne sera envoyé." -#: ../src/conf.py:482 +#: src/conf.py:502 msgid "" "An error has occurred and has been logged.\n" " Please contact this bot's administrator for more information." -msgstr "Une erreur est survenue et a été logguée. Contactez l'administrateur du bot pour plus d'informations." +msgstr "" +"Une erreur est survenue et a été logguée. Contactez l'administrateur du " +"bot pour plus d'informations." -#: ../src/conf.py:483 +#: src/conf.py:503 msgid "" "\n" " Determines what error message the bot gives when it wants to be\n" " ambiguous." -msgstr "Détermine quel message d'erreur le bot donnera, quand il décidera de ne pas être plus précis." +msgstr "" +"Détermine quel message d'erreur le bot donnera, quand il décidera de ne " +"pas être plus précis." -#: ../src/conf.py:488 +#: src/conf.py:508 msgid "" "An error has occurred and has been logged.\n" " Check the logs for more informations." -msgstr "Une erreur est survenue et a été logguée. Vérifiez les logs pour plus d'informations." +msgstr "" +"Une erreur est survenue et a été logguée. Vérifiez les logs pour plus " +"d'informations." -#: ../src/conf.py:489 +#: src/conf.py:509 msgid "" "Determines what error\n" " message the bot gives to the owner when it wants to be ambiguous." -msgstr "Détermine quel message d'erreur le bot donnera au propriétaire lorsqu'il veut être ambigu." +msgstr "" +"Détermine quel message d'erreur le bot donnera au propriétaire lorsqu'il " +"veut être ambigu." -#: ../src/conf.py:493 +#: src/conf.py:513 msgid "" "Your hostmask doesn't match or your password\n" " is wrong." -msgstr "Votre masque d'hôte ne correspond pas, ou votre mot de passe est incorrect." +msgstr "" +"Votre masque d'hôte ne correspond pas, ou votre mot de passe est " +"incorrect." -#: ../src/conf.py:494 +#: src/conf.py:514 msgid "" "Determines what message the bot replies with when\n" -" someonetries to use a command that requires being identified or having a\n" +" someone tries to use a command that requires being identified or having " +"a\n" " password and neither credential is correct." -msgstr "Détermine quel message le bot répondra lorsque quelqu'un utiliser une commande qui nécessite d'être identifié." +msgstr "" +"Détermine quel message le bot répondra lorsque quelqu'un utiliser une " +"commande qui nécessite d'être identifié." -#: ../src/conf.py:500 +#: src/conf.py:520 msgid "" "I can't find %s in my user\n" -" database. If you didn't give a user name, then I might not know what your\n" +" database. If you didn't give a user name, then I might not know what " +"your\n" " user is, and you'll need to identify before this command might work." -msgstr "Je ne peux trouver %s dans ma base de données d'utilisateurs. Si vous ne m'avez pas donné un nom d'utilisateur, je ne peux savoir qui est cet utilisateur, et vous devrez vous identifier avant que cette commande fonctionne." +msgstr "" +"Je ne peux trouver %s dans ma base de données d'utilisateurs. Si vous ne " +"m'avez pas donné un nom d'utilisateur, je ne peux savoir qui est cet " +"utilisateur, et vous devrez vous identifier avant que cette commande " +"fonctionne." -#: ../src/conf.py:503 +#: src/conf.py:523 msgid "" "Determines what error message the bot replies with when someone tries\n" " to accessing some information on a user the bot doesn't know about." -msgstr "Détermine quel message d'erreur est envoyé lorsque quelqu'un essaye d'accéder à une information sur un utilisateur que le bot ne connait pas." +msgstr "" +"Détermine quel message d'erreur est envoyé lorsque quelqu'un essaye " +"d'accéder à une information sur un utilisateur que le bot ne connait pas." -#: ../src/conf.py:507 +#: src/conf.py:527 msgid "" "You must be registered to use this command.\n" -" If you are already registered, you must either identify (using the identify\n" +" If you are already registered, you must either identify (using the " +"identify\n" " command) or add a hostmask matching your current hostmask (using the\n" " \"hostmask add\" command)." -msgstr "Vous devez être enregistré(e) pour utiliser cette commande. Si vous êtes déjà enregistré(e), vous devez vous identifier (en utilisant la commande 'identify') ou ajouter un masque d'hôte correspondant à votre masque d'hôte courant (en utilisant la commande 'hostmask add')." +msgstr "" +"Vous devez être enregistré(e) pour utiliser cette commande. Si vous êtes " +"déjà enregistré(e), vous devez vous identifier (en utilisant la commande " +"'identify') ou ajouter un masque d'hôte correspondant à votre masque " +"d'hôte courant (en utilisant la commande 'hostmask add')." -#: ../src/conf.py:510 +#: src/conf.py:530 msgid "" "Determines what error message the bot\n" -" replies with when someone tries to do something that requires them to be\n" +" replies with when someone tries to do something that requires them to " +"be\n" " registered but they're not currently recognized." -msgstr "Détermine quel message d'erreur le bot renvoie lorsque quelqu'un essaye de faire quelque chose qui nécessit d'être enregistré, alors qu'il n'est pas reconnu." +msgstr "" +"Détermine quel message d'erreur le bot renvoie lorsque quelqu'un essaye " +"de faire quelque chose qui nécessit d'être enregistré, alors qu'il n'est " +"pas reconnu." -#: ../src/conf.py:515 +#: src/conf.py:535 msgid "" "You don't have the %s capability. If you\n" -" think that you should have this capability, be sure that you are identified\n" +" think that you should have this capability, be sure that you are " +"identified\n" " before trying again. The 'whoami' command can tell you if you're\n" " identified." -msgstr "Vous n'avez pas la capacité %s. Si vous pensez que vous l'avez, assurez-vous d'être identifié(e) et réessayez. La commande 'whoami' vous dit si vous êtes identifié(e)." +msgstr "" +"Vous n'avez pas la capacité %s. Si vous pensez que vous l'avez, assurez-" +"vous d'être identifié(e) et réessayez. La commande 'whoami' vous dit si " +"vous êtes identifié(e)." -#: ../src/conf.py:518 +#: src/conf.py:538 msgid "" "Determines what error message is given when the bot\n" -" is telling someone they aren't cool enough to use the command they tried to\n" +" is telling someone they aren't cool enough to use the command they tried " +"to\n" " use." -msgstr "Détermine quel message d'erreur est donné lorsqu'un utilisateur tente d'utiliser une commande à laquelle il n'y pas accès." +msgstr "" +"Détermine quel message d'erreur est donné lorsqu'un utilisateur tente " +"d'utiliser une commande à laquelle il n'y pas accès." -#: ../src/conf.py:523 +#: src/conf.py:543 msgid "" "You're missing some capability you need.\n" " This could be because you actually possess the anti-capability for the\n" " capability that's required of you, or because the channel provides that\n" " anti-capability by default, or because the global capabilities include\n" " that anti-capability. Or, it could be because the channel or\n" -" supybot.capabilities.default is set to False, meaning that no commands are\n" -" allowed unless explicitly in your capabilities. Either way, you can't do\n" +" supybot.capabilities.default is set to False, meaning that no commands " +"are\n" +" allowed unless explicitly in your capabilities. Either way, you can't " +"do\n" " what you want to do." -msgstr "Il vous manque une capacité. Ceci peut être dû au fait que vous possédez actuellement une anti-capacité quant à la commande que vous tentez d'utiliser, ou que le canal fourni cette anti-capacité par défaut, ou parce que les capacités globales incluent cette anti-capacité. Cela peut également être du au fait que supybot.capabilities.default est défini à False, ce qui signifit qu'une commande n'est autorisée par défaut (elles doivent être autorisées une par une par un administrateur). En clair, vous ne pouvez pas le faire." +msgstr "" +"Il vous manque une capacité. Ceci peut être dû au fait que vous possédez " +"actuellement une anti-capacité quant à la commande que vous tentez " +"d'utiliser, ou que le canal fourni cette anti-capacité par défaut, ou " +"parce que les capacités globales incluent cette anti-capacité. Cela " +"peut également être du au fait que supybot.capabilities.default est " +"défini à False, ce qui signifit qu'une commande n'est autorisée par " +"défaut (elles doivent être autorisées une par une par un administrateur). " +"En clair, vous ne pouvez pas le faire." -#: ../src/conf.py:531 +#: src/conf.py:551 msgid "" "Determines what generic error message is given when the bot is telling\n" -" someone that they aren't cool enough to use the command they tried to use,\n" +" someone that they aren't cool enough to use the command they tried to " +"use,\n" " and the author of the code calling errorNoCapability didn't provide an\n" " explicit capability for whatever reason." -msgstr "Détermine le message d'erreur générique qui est donné par le bot pour dire à quelqu'un qu'il n'a pas les capacités requises pour utiliser une commande qu'il essaye d'utiliser, si l'auteur du code appelant errorNoCapability ne fourni pas d'information explicite sur la raison de ce refus." +msgstr "" +"Détermine le message d'erreur générique qui est donné par le bot pour " +"dire à quelqu'un qu'il n'a pas les capacités requises pour utiliser une " +"commande qu'il essaye d'utiliser, si l'auteur du code appelant " +"errorNoCapability ne fourni pas d'information explicite sur la raison de " +"ce refus." -#: ../src/conf.py:537 +#: src/conf.py:557 msgid "" "That operation cannot be done in a\n" " channel." msgstr "Cette opération ne peut être faite sur un canal." -#: ../src/conf.py:538 +#: src/conf.py:558 msgid "" "Determines what error messages the bot sends to people\n" " who try to do things in a channel that really should be done in\n" " private." -msgstr "Détermine quel message d'erreur le bot envoie aux personnes qui tentent de faire quelque chose sur un canal, alors que cela doit être fait en privé." +msgstr "" +"Détermine quel message d'erreur le bot envoie aux personnes qui tentent " +"de faire quelque chose sur un canal, alors que cela doit être fait en " +"privé." -#: ../src/conf.py:543 +#: src/conf.py:563 msgid "" "This may be a bug. If you think it is,\n" " please file a bug report at\n" -" ." -msgstr "Ceci semble être un bug. Si vous pensez que c'en est un, veillez à envoyer un rapport de bug sur ." +" ." +msgstr "" +"Ceci semble être un bug. Si vous pensez que c'en est un, veillez à " +"envoyer un rapport de bug sur ." -#: ../src/conf.py:546 +#: src/conf.py:566 msgid "" "Determines what message the bot sends when it thinks you've\n" " encountered a bug that the developers don't know about." -msgstr "Détermine quel message le bot envoie quand il pense que l'on a rencontré un bug que les développeurs ne connaissent pas." +msgstr "" +"Détermine quel message le bot envoie quand il pense que l'on a rencontré " +"un bug que les développeurs ne connaissent pas." -#: ../src/conf.py:553 +#: src/conf.py:573 msgid "" "A floating point number of seconds to throttle\n" -" snarfed URLs, in order to prevent loops between two bots snarfing the same\n" +" snarfed URLs, in order to prevent loops between two bots snarfing the " +"same\n" " URLs and having the snarfed URL in the output of the snarf message." -msgstr "Un nombre à virgule flottante correspondant au temps (en secondes) à attendre avant de 'snarfer' la même URL, dans le but d'éviter que deux bots entrent ainsi en boucle infinie." +msgstr "" +"Un nombre à virgule flottante correspondant au temps (en secondes) à " +"attendre avant de 'snarfer' la même URL, dans le but d'éviter que deux " +"bots entrent ainsi en boucle infinie." -#: ../src/conf.py:558 +#: src/conf.py:578 msgid "" "Determines the number of seconds\n" -" between running the upkeep function that flushes (commits) open databases,\n" +" between running the upkeep function that flushes (commits) open " +"databases,\n" " collects garbage, and records some useful statistics at the debugging\n" " level." -msgstr "Détermine le nombre de secondes entre deux exécutions de la fonction upkeep, qui rafraichit les bases de données ouvertes, vide le cache, et enregistre des statistiques utiles pour le débogage." +msgstr "" +"Détermine le nombre de secondes entre deux exécutions de la fonction " +"upkeep, qui rafraichit les bases de données ouvertes, vide le cache, et " +"enregistre des statistiques utiles pour le débogage." -#: ../src/conf.py:564 +#: src/conf.py:584 msgid "" "Determines whether the bot will periodically\n" " flush data and configuration files to disk. Generally, the only time\n" " you'll want to set this to False is when you want to modify those\n" " configuration files by hand and don't want the bot to flush its current\n" -" version over your modifications. Do note that if you change this to False\n" +" version over your modifications. Do note that if you change this to " +"False\n" " inside the bot, your changes won't be flushed. To make this change\n" " permanent, you must edit the registry yourself." -msgstr "Détermine si le bot rafraichira périodiquement les fichiers de données et de configuration sur le disque. Générallement, on ne défini ceci à False que lorsque l'on veut modifier ces fichiers de configuration à la main, et que l'on ne veut pas que le bot supprime les modifications en écrivant par-dessus. Notez que si vous définissez ceci à False, les changements apportés aux fichiers n'auront pas pour autant une influence sur le bot. Si vous voulez rendre ce changement définitif, vous devez éditer le registre vous-même." +msgstr "" +"Détermine si le bot rafraichira périodiquement les fichiers de données et " +"de configuration sur le disque. Générallement, on ne défini ceci à False " +"que lorsque l'on veut modifier ces fichiers de configuration à la main, " +"et que l'on ne veut pas que le bot supprime les modifications en écrivant " +"par-dessus. Notez que si vous définissez ceci à False, les changements " +"apportés aux fichiers n'auront pas pour autant une influence sur le bot. " +"Si vous voulez rendre ce changement définitif, vous devez éditer le " +"registre vous-même." -#: ../src/conf.py:589 +#: src/conf.py:609 msgid "" "Determines what characters are valid for quoting\n" " arguments to commands in order to prevent them from being tokenized.\n" " " -msgstr "Détermine quels caractères sont valides pour citer des arguments à des commandes, pour leur éviter d'être tokénisés." +msgstr "" +"Détermine quels caractères sont valides pour citer des arguments à des " +"commandes, pour leur éviter d'être tokénisés." -#: ../src/conf.py:596 +#: src/conf.py:616 msgid "" "Determines whether the bot will allow nested\n" " commands, which rule. You definitely should keep this on." -msgstr "Détermine si le bot autorisera les commandes commandes imbriquées sur ce bot, ce qui est une fonctionnalité génial. Vous devriez vraiment garder ceci actif." +msgstr "" +"Détermine si le bot autorisera les commandes commandes imbriquées sur ce " +"bot, ce qui est une fonctionnalité génial. Vous devriez vraiment garder " +"ceci actif." -#: ../src/conf.py:599 +#: src/conf.py:619 msgid "" "Determines what the maximum number of\n" " nested commands will be; users will receive an error if they attempt\n" " commands more nested than this." -msgstr "Détermine le nombre maximum de commandes imbriquées ; les utilisateurs recevront une erreur si ils tentent d'en mettre plus." +msgstr "" +"Détermine le nombre maximum de commandes imbriquées ; les utilisateurs " +"recevront une erreur si ils tentent d'en mettre plus." -#: ../src/conf.py:607 +#: src/conf.py:627 msgid "" "Supybot allows you to specify what brackets are\n" -" used for your nested commands. Valid sets of brackets include [], <>, and\n" -" {} (). [] has strong historical motivation, as well as being the brackets\n" -" that don't require shift. <> or () might be slightly superior because they\n" +" used for your nested commands. Valid sets of brackets include [], <>, " +"and\n" +" {} (). [] has strong historical motivation, as well as being the " +"brackets\n" +" that don't require shift. <> or () might be slightly superior because " +"they\n" " cannot occur in a nick. If this string is empty, nested commands will\n" " not be allowed in this channel." -msgstr "Supybot vous permet de spécifier quels crochets sont utilisés pour vos commandes imbriquées. Sont disponibles : [], <>, {}, et (). [] est très largement le plus utilisé, car leur utilisation est la plus simple pour des claviers qwerty. <> et () tirent leur avantage du fait qu'ils ne peuvent apparaître dans un nick. Si cette chaîne est vide, les commandes imbriquées ne seront pas autorisées sur ce canal." +msgstr "" +"Supybot vous permet de spécifier quels crochets sont utilisés pour vos " +"commandes imbriquées. Sont disponibles : [], <>, {}, et (). [] est très " +"largement le plus utilisé, car leur utilisation est la plus simple pour " +"des claviers qwerty. <> et () tirent leur avantage du fait qu'ils ne " +"peuvent apparaître dans un nick. Si cette chaîne est vide, les commandes " +"imbriquées ne seront pas autorisées sur ce canal." -#: ../src/conf.py:614 +#: src/conf.py:634 msgid "" "Supybot allows nested commands. Enabling this\n" -" option will allow nested commands with a syntax similar to UNIX pipes, for\n" +" option will allow nested commands with a syntax similar to UNIX pipes, " +"for\n" " example: 'bot: foo | bar'." -msgstr "Supybot permet les commandes imbriquées. Activer cette option permettra aux commandes imbriquées d'utiliser une syntaxe similaire aux 'pipes' UNIX, par exemple : 'bot: foo | bar'." +msgstr "" +"Supybot permet les commandes imbriquées. Activer cette option permettra " +"aux commandes imbriquées d'utiliser une syntaxe similaire aux 'pipes' " +"UNIX, par exemple : 'bot: foo | bar'." -#: ../src/conf.py:619 +#: src/conf.py:639 msgid "" "Determines what commands have default\n" -" plugins set, and which plugins are set to be the default for each of those\n" +" plugins set, and which plugins are set to be the default for each of " +"those\n" " commands." -msgstr "Détermine, lorsque l'on appelle une commande appartenant à plusieurs plugins, lequel sera choisi par défaut pour chacune de ces commandes." +msgstr "" +"Détermine, lorsque l'on appelle une commande appartenant à plusieurs " +"plugins, lequel sera choisi par défaut pour chacune de ces commandes." -#: ../src/conf.py:625 +#: src/conf.py:645 msgid "" "Determines what plugins automatically get precedence over all\n" " other plugins when selecting a default plugin for a command. By\n" " default, this includes the standard loaded plugins. You probably\n" -" shouldn't change this if you don't know what you're doing; if you do\n" +" shouldn't change this if you don't know what you're doing; if you " +"do\n" " know what you're doing, then also know that this set is\n" " case-sensitive." -msgstr "Détermine quels plugins sont prioritaires sur tous les autres lorsque l'on recherche le plugin par défaut d'une commande. Par défaut, cela inclu les plugins standards chargés. Vous ne devriez probablement pas changer ceci, à moins de savoir ce que vous faites ; si vous savez ce que vous faites, sachez que les noms de plugins sont sensibles à la classe." +msgstr "" +"Détermine quels plugins sont prioritaires sur tous les autres lorsque " +"l'on recherche le plugin par défaut d'une commande. Par défaut, cela " +"inclu les plugins standards chargés. Vous ne devriez probablement pas " +"changer ceci, à moins de savoir ce que vous faites ; si vous savez ce " +"que vous faites, sachez que les noms de plugins sont sensibles à la " +"classe." -#: ../src/conf.py:640 +#: src/conf.py:660 msgid "" "Determines whether the bot will defend itself\n" " against command-flooding." -msgstr "Détermine si le bot se défendra contre les attaques par flood de commandes." +msgstr "" +"Détermine si le bot se défendra contre les attaques par flood de " +"commandes." -#: ../src/conf.py:643 +#: src/conf.py:663 msgid "" "Determines how many commands users are\n" -" allowed per minute. If a user sends more than this many commands in any\n" +" allowed per minute. If a user sends more than this many commands in " +"any\n" " 60 second period, he or she will be ignored for\n" " supybot.abuse.flood.command.punishment seconds." -msgstr "Détermine le nombre maximum de commandes qu'un utilisateur peut envoyer en une minute. Si un utilisateur dépasse cette limite, il sera ignoré supybot.abuse.flood.command.punishment secondes." +msgstr "" +"Détermine le nombre maximum de commandes qu'un utilisateur peut envoyer " +"en une minute. Si un utilisateur dépasse cette limite, il sera ignoré " +"supybot.abuse.flood.command.punishment secondes." -#: ../src/conf.py:648 +#: src/conf.py:668 msgid "" "Determines how many seconds the bot\n" " will ignore users who flood it with commands." -msgstr "Détermine combien de secondes le bot ignorera les utilisateurs qui le floodent de commandes." +msgstr "" +"Détermine combien de secondes le bot ignorera les utilisateurs qui le " +"floodent de commandes." -#: ../src/conf.py:652 +#: src/conf.py:672 msgid "" "Determines whether the bot will defend itself\n" " against invalid command-flooding." -msgstr "Détermine si le bot se défendra contre le flood de commandes invalides." +msgstr "" +"Détermine si le bot se défendra contre le flood de commandes invalides." -#: ../src/conf.py:655 +#: src/conf.py:675 msgid "" "Determines how many invalid commands users\n" " are allowed per minute. If a user sends more than this many invalid\n" " commands in any 60 second period, he or she will be ignored for\n" -" supybot.abuse.flood.command.invalid.punishment seconds. Typically, this\n" +" supybot.abuse.flood.command.invalid.punishment seconds. Typically, " +"this\n" " value is lower than supybot.abuse.flood.command.maximum, since it's far\n" " less likely (and far more annoying) for users to flood with invalid\n" " commands than for them to flood with valid commands." -msgstr "Détermine le nombre maximum de commandes invalies qu'un utilisateur peut envoyer en une minute. Si un utilisateur dépasse cette limite, il sera ignoré supybot.abuse.flood.command.invalid.punishment secondes. Typiquement, cette valeur est plus petite que value is lower than supybot.abuse.flood.command.maximum, car il est plus probable que les utilisateurs floodent avec des commandes invalides qu'avec des commandes valides." +msgstr "" +"Détermine le nombre maximum de commandes invalies qu'un utilisateur peut " +"envoyer en une minute. Si un utilisateur dépasse cette limite, il sera " +"ignoré supybot.abuse.flood.command.invalid.punishment secondes. " +"Typiquement, cette valeur est plus petite que value is lower than " +"supybot.abuse.flood.command.maximum, car il est plus probable que les " +"utilisateurs floodent avec des commandes invalides qu'avec des commandes " +"valides." -#: ../src/conf.py:663 +#: src/conf.py:683 msgid "" "Determines how many seconds the bot\n" " will ignore users who flood it with invalid commands. Typically, this\n" -" value is higher than supybot.abuse.flood.command.punishment, since it's far\n" -" less likely (and far more annoying) for users to flood witih invalid\n" +" value is higher than supybot.abuse.flood.command.punishment, since it's " +"far\n" +" less likely (and far more annoying) for users to flood with invalid\n" " commands than for them to flood with valid commands." -msgstr "Détermine combien de secondes le bot ignorera les utilisateurs qui le floodent de commandes invalides. Typiquement,cette valeur est plus grande que value is lower than supybot.abuse.flood.command.punishment, car il est plus probable que les utilisateurs floodent avec des commandes invalides qu'avec des commandes valides." +msgstr "" +"Détermine combien de secondes le bot ignorera les utilisateurs qui le " +"floodent de commandes invalides. Typiquement,cette valeur est plus " +"grande que value is lower than supybot.abuse.flood.command.punishment, " +"car il est plus probable que les utilisateurs floodent avec des commandes " +"invalides qu'avec des commandes valides." -#: ../src/conf.py:669 +#: src/conf.py:689 msgid "" "Determines whether the bot will notify people\n" " that they're being ignored for invalid command flooding." -msgstr "Détermine si le bot notifiera les personnes lorsqu'elles se font ignorer pour flood de commande." +msgstr "" +"Détermine si le bot notifiera les personnes lorsqu'elles se font ignorer " +"pour flood de commande." -#: ../src/conf.py:678 +#: src/conf.py:698 msgid "" "Determines the default length of time a\n" " driver should block waiting for input." -msgstr "Détermine la durée par défaut durant laquelle un moteur réseau peut être bloquant, en attente de données entrantes." +msgstr "" +"Détermine la durée par défaut durant laquelle un moteur réseau peut être " +"bloquant, en attente de données entrantes." -#: ../src/conf.py:685 +#: src/conf.py:705 msgid "" "Determines what driver module the bot\n" " will use. Socket, a simple driver based on timeout sockets, is used by\n" -" default because it's simple and stable. Twisted is very stable and simple,\n" +" default because it's simple and stable. Twisted is very stable and " +"simple,\n" " and if you've got Twisted installed, is probably your best bet." -msgstr "Détermine quel moteur réseau le bot utilisera. Socket, est un simple moteur basé sur des sockets bloquantes à timeout ; c'est celui utilisé par défaut. Twisted est très stable et simple, et, si vous avez Twisted installé, c'est probablement le meilleur choix." +msgstr "" +"Détermine quel moteur réseau le bot utilisera. Socket, est un simple " +"moteur basé sur des sockets bloquantes à timeout ; c'est celui utilisé " +"par défaut. Twisted est très stable et simple, et, si vous avez Twisted " +"installé, c'est probablement le meilleur choix." -#: ../src/conf.py:691 +#: src/conf.py:711 msgid "" "Determines the maximum time the bot will\n" " wait before attempting to reconnect to an IRC server. The bot may, of\n" " course, reconnect earlier if possible." -msgstr "Détermine le temps maximum durant lequel le bot attendra avant de se reconnecter à un serveur IRC. Le bot peut, bien sûr, se reconnecter plus tôt, si c'est possible." +msgstr "" +"Détermine le temps maximum durant lequel le bot attendra avant de se " +"reconnecter à un serveur IRC. Le bot peut, bien sûr, se reconnecter plus " +"tôt, si c'est possible." -#: ../src/conf.py:740 +#: src/conf.py:760 msgid "" "Determines what directory configuration data is\n" " put into." msgstr "Détermine dans quel répertoire les données de configuration sont." -#: ../src/conf.py:743 +#: src/conf.py:763 msgid "Determines what directory data is put into." msgstr "Détermine dans quel répertoire les données sont." -#: ../src/conf.py:745 +#: src/conf.py:765 msgid "" "Determines what directory backup data is put\n" -" into." -msgstr "Détermine dans quel répertoire les sauvegardes des données sont." +" into. Set it to /dev/null to disable backup (it is a special value,\n" +" so it also works on Windows and systems without /dev/null)." +msgstr "" +"Détermine dans quel dossier les sauvegardes seront effectuées. Définissez " +"cette variable à /dev/null pour désactiver la sauvegarde (c'est une valeur " +"spéciale, donc elle marchera également sur Windows et les systèmes qui n'ont " +"pas de /dev/null)." -#: ../src/conf.py:748 +#: src/conf.py:769 msgid "" "Determines what directory temporary files\n" " are put into." msgstr "Détermine dans quel répertoire les fichiers temporaires sont." -#: ../src/conf.py:755 +#: src/conf.py:776 msgid "" "Determines what directories\n" " the bot will look for plugins in. Accepts a comma-separated list of\n" " strings.\n" -" This means that to add another directory, you can nest the former value and\n" -" add a new one. E.g. you can say: bot: 'config supybot.directories.plugins\n" +" This means that to add another directory, you can nest the former value " +"and\n" +" add a new one. E.g. you can say: bot: 'config supybot.directories." +"plugins\n" " [config supybot.directories.plugins], newPluginDirectory'." -msgstr "Détermine dans quel répertoire le bot recherchera les plugins. Accepte une liste de chaînes séparées par des virgules. Ce qui signifit que si vous voulez ajouter un autre répertoire, vous pouvez imbriquer la forme actuelle la nouvelle. Par exemple, vous pouvez dire : 'config supybot.directories.plugins [config supybot.directories.plugins], nouveauRepertoireDePlugins'." +msgstr "" +"Détermine dans quel répertoire le bot recherchera les plugins. Accepte " +"une liste de chaînes séparées par des virgules. Ce qui signifit que si " +"vous voulez ajouter un autre répertoire, vous pouvez imbriquer la forme " +"actuelle la nouvelle. Par exemple, vous pouvez dire : 'config supybot." +"directories.plugins [config supybot.directories.plugins], " +"nouveauRepertoireDePlugins'." -#: ../src/conf.py:763 +#: src/conf.py:784 msgid "" "Determines what plugins will\n" " be loaded." msgstr "Détermine quels plugins seront chargés." -#: ../src/conf.py:766 +#: src/conf.py:787 msgid "" "Determines whether the bot will always load\n" " important plugins (Admin, Channel, Config, Misc, Owner, and User)\n" -" regardless of what their configured state is. Generally, if these plugins\n" +" regardless of what their configured state is. Generally, if these " +"plugins\n" " are configured not to load, you didn't do it on purpose, and you still\n" -" want them to load. Users who don't want to load these plugins are smart\n" +" want them to load. Users who don't want to load these plugins are " +"smart\n" " enough to change the value of this variable appropriately :)" -msgstr "Détermine si le bot chargera toujours les plugins importants (Admin, Channel, Config, Misc, Owner, et User), peu importe l'état de la configuration. Généralement, si ces plugins sont configurés pour ne pas être chargés, vous ne pourrez plus les charger, et finalement, vous voudrez le faire. Les utilisateurs qui ne souhaitent pas charger ces plugins sont suffisement intelligents pour changer la valeur de cette variable de façon appropriée :)" +msgstr "" +"Détermine si le bot chargera toujours les plugins importants (Admin, " +"Channel, Config, Misc, Owner, et User), peu importe l'état de la " +"configuration. Généralement, si ces plugins sont configurés pour ne pas " +"être chargés, vous ne pourrez plus les charger, et finalement, vous " +"voudrez le faire. Les utilisateurs qui ne souhaitent pas charger ces " +"plugins sont suffisement intelligents pour changer la valeur de cette " +"variable de façon appropriée :)" -#: ../src/conf.py:793 +#: src/conf.py:814 msgid "" "Determines what databases are available for use. If this\n" -" value is not configured (that is, if its value is empty) then sane defaults\n" +" value is not configured (that is, if its value is empty) then sane " +"defaults\n" " will be provided." -msgstr "Détermine quelles bases de données sont disponibles. si cette valeur n'est pas configurée (c'est à dire si sa valeur est vide), alors une manière par défaut saine sera utilisée." +msgstr "" +"Détermine quelles bases de données sont disponibles. si cette valeur " +"n'est pas configurée (c'est à dire si sa valeur est vide), alors une " +"manière par défaut saine sera utilisée." -#: ../src/conf.py:799 +#: src/conf.py:820 msgid "" "Determines what filename will be used\n" -" for the users database. This file will go into the directory specified by\n" +" for the users database. This file will go into the directory specified " +"by\n" " the supybot.directories.conf variable." -msgstr "Détermine quel nom de fichier sera utilisé pour la base de données des utilisateurs. Ce fichiers ira dans le répertoire spécifié par la variable supybot.directories.conf." +msgstr "" +"Détermine quel nom de fichier sera utilisé pour la base de données des " +"utilisateurs. Ce fichiers ira dans le répertoire spécifié par la variable " +"supybot.directories.conf." -#: ../src/conf.py:803 +#: src/conf.py:824 msgid "" "Determines how long it takes identification to\n" -" time out. If the value is less than or equal to zero, identification never\n" +" time out. If the value is less than or equal to zero, identification " +"never\n" " times out." -msgstr "Détermine combien de temps au maximum un utilisateur peut rester identifié. Si cette valeur est inférieure ou égale à zéro, l'identification n'expirera jamais." +msgstr "" +"Détermine combien de temps au maximum un utilisateur peut rester " +"identifié. Si cette valeur est inférieure ou égale à zéro, " +"l'identification n'expirera jamais." -#: ../src/conf.py:807 +#: src/conf.py:828 msgid "" "Determines whether the bot will allow users to\n" " unregister their users. This can wreak havoc with already-existing\n" -" databases, so by default we don't allow it. Enable this at your own risk.\n" -" (Do also note that this does not prevent the owner of the bot from using\n" +" databases, so by default we don't allow it. Enable this at your own " +"risk.\n" +" (Do also note that this does not prevent the owner of the bot from " +"using\n" " the unregister command.)\n" " " -msgstr "Détermine si le bot autorisera les utilisateurs à se désenregistrer. Ceci peut provoquer des dégâts avec des bases de données déjà existantes, donc, nous ne l'autorisons pas par défaut. Activez ceci à vos risques et périls. (Notez également que ceci n'empêche pas le propriétaire du bot de se désenregistrer.)" +msgstr "" +"Détermine si le bot autorisera les utilisateurs à se désenregistrer. Ceci " +"peut provoquer des dégâts avec des bases de données déjà existantes, " +"donc, nous ne l'autorisons pas par défaut. Activez ceci à vos risques et " +"périls. (Notez également que ceci n'empêche pas le propriétaire du bot de " +"se désenregistrer.)" -#: ../src/conf.py:816 +#: src/conf.py:837 msgid "" "Determines what filename will be used\n" -" for the ignores database. This file will go into the directory specified\n" +" for the ignores database. This file will go into the directory " +"specified\n" " by the supybot.directories.conf variable." -msgstr "Détermine quel nom de fichier sera utilisé pour stocker la base de données d'ignorance. Ce fichiers ira dans le répertoire spécifié par la variable supybot.directories.conf." +msgstr "" +"Détermine quel nom de fichier sera utilisé pour stocker la base de " +"données d'ignorance. Ce fichiers ira dans le répertoire spécifié par la " +"variable supybot.directories.conf." -#: ../src/conf.py:822 +#: src/conf.py:843 msgid "" "Determines what filename will be used\n" -" for the channels database. This file will go into the directory specified\n" +" for the channels database. This file will go into the directory " +"specified\n" " by the supybot.directories.conf variable." -msgstr "Détermine quel nom de fichier sera utilisé pour stocker la base de données de canaux. Ce fichiers ira dans le répertoire spécifié par la variable supybot.directories.conf." +msgstr "" +"Détermine quel nom de fichier sera utilisé pour stocker la base de " +"données de canaux. Ce fichiers ira dans le répertoire spécifié par la " +"variable supybot.directories.conf." -#: ../src/conf.py:852 +#: src/conf.py:873 msgid "" "Determines whether database-based plugins that\n" -" can be channel-specific will be so. This can be overridden by individual\n" +" can be channel-specific will be so. This can be overridden by " +"individual\n" " channels. Do note that the bot needs to be restarted immediately after\n" -" changing this variable or your db plugins may not work for your channel;\n" +" changing this variable or your db plugins may not work for your " +"channel;\n" " also note that you may wish to set\n" -" supybot.databases.plugins.channelSpecific.link appropriately if you wish\n" +" supybot.databases.plugins.channelSpecific.link appropriately if you " +"wish\n" " to share a certain channel's databases globally." -msgstr "Détermine si des plugins basés sur une base de données peuvent être spécifiques à un canal. Ceci peut être surchargé pour chaque canal. Notez que le bot doit être redémarré immédiatement après avoir changé cette variable, ou vos plugins basés sur une base de données pourraient ne pas marcher pour votre canal ; notez également qui vous pouvez vouloir définir supybot.databases.plugins.channelSpecific.link de manière appropriée si vous voulez partager les bases de données de certains canaux." +msgstr "" +"Détermine si des plugins basés sur une base de données peuvent être " +"spécifiques à un canal. Ceci peut être surchargé pour chaque canal. Notez " +"que le bot doit être redémarré immédiatement après avoir changé cette " +"variable, ou vos plugins basés sur une base de données pourraient ne pas " +"marcher pour votre canal ; notez également qui vous pouvez vouloir " +"définir supybot.databases.plugins.channelSpecific.link de manière " +"appropriée si vous voulez partager les bases de données de certains " +"canaux." -#: ../src/conf.py:860 +#: src/conf.py:881 msgid "" "Determines what channel global\n" " (non-channel-specific) databases will be considered a part of. This is\n" -" helpful if you've been running channel-specific for awhile and want to turn\n" +" helpful if you've been running channel-specific for awhile and want to " +"turn\n" " the databases for your primary channel into global databases. If\n" -" supybot.databases.plugins.channelSpecific.link.allow prevents linking, the\n" -" current channel will be used. Do note that the bot needs to be restarted\n" -" immediately after changing this variable or your db plugins may not work\n" +" supybot.databases.plugins.channelSpecific.link.allow prevents linking, " +"the\n" +" current channel will be used. Do note that the bot needs to be " +"restarted\n" +" immediately after changing this variable or your db plugins may not " +"work\n" " for your channel." -msgstr "Détermine quelles bases de données de canaux seront considérées comme faisant partie de la base de données globale. Ceci est utile si vous utilisez une base de données spécifique à un canal depuis longtemps, et que vous voulez faire passer les bases de données de votre canal principal en bases de données globales. Si supybot.databases.plugins.channelSpecific.link.allow empêche la liaison, le canal courant sera utilisé. Notez que le bot doit être redémarré immédiatement après avoir changé cette variable ou vos plugins basés sur une base de données pourraient ne pas fonctionner." +msgstr "" +"Détermine quelles bases de données de canaux seront considérées comme " +"faisant partie de la base de données globale. Ceci est utile si vous " +"utilisez une base de données spécifique à un canal depuis longtemps, et " +"que vous voulez faire passer les bases de données de votre canal " +"principal en bases de données globales. Si supybot.databases.plugins." +"channelSpecific.link.allow empêche la liaison, le canal courant sera " +"utilisé. Notez que le bot doit être redémarré immédiatement après avoir " +"changé cette variable ou vos plugins basés sur une base de données " +"pourraient ne pas fonctionner." -#: ../src/conf.py:869 +#: src/conf.py:890 msgid "" "Determines whether another channel's global\n" -" (non-channel-specific) databases will be allowed to link to this channel's\n" -" databases. Do note that the bot needs to be restarted immediately after\n" -" changing this variable or your db plugins may not work for your channel.\n" +" (non-channel-specific) databases will be allowed to link to this " +"channel's\n" +" databases. Do note that the bot needs to be restarted immediately " +"after\n" +" changing this variable or your db plugins may not work for your " +"channel.\n" " " -msgstr "Détermine si les bases de données globales d'un autre canal peuvent êtres liées à celles de ce canal. Notez que le bot doit être redémarré immédiatement après avoir changé cette variable ou vos plugins basés sur une base de données pourraient ne pas marcher pour votre canal." +msgstr "" +"Détermine si les bases de données globales d'un autre canal peuvent êtres " +"liées à celles de ce canal. Notez que le bot doit être redémarré " +"immédiatement après avoir changé cette variable ou vos plugins basés sur " +"une base de données pourraient ne pas marcher pour votre canal." -#: ../src/conf.py:886 +#: src/conf.py:907 msgid "" "Determines\n" " whether CDB databases will be allowed as a database implementation." -msgstr "Détermine si les bases de données CDB seront autorisées comme implémentation de base de données." +msgstr "" +"Détermine si les bases de données CDB seront autorisées comme " +"implémentation de base de données." -#: ../src/conf.py:889 +#: src/conf.py:910 msgid "" "Determines how often CDB databases will have\n" -" their modifications flushed to disk. When the number of modified records\n" -" is greater than this fraction of the total number of records, the database\n" +" their modifications flushed to disk. When the number of modified " +"records\n" +" is greater than this fraction of the total number of records, the " +"database\n" " will be entirely flushed to disk." -msgstr "Détermine la fréquence de sauvegarde des bases de données CDB sur le disque. Lorsque le nombre d'enregistrements modifiés est plus grand que le nombre d'enregistrements non modifiés, la base de données sera entièrement enregistrée sur le disque." +msgstr "" +"Détermine la fréquence de sauvegarde des bases de données CDB sur le " +"disque. Lorsque le nombre d'enregistrements modifiés est plus grand que " +"le nombre d'enregistrements non modifiés, la base de données sera " +"entièrement enregistrée sur le disque." -#: ../src/conf.py:974 +#: src/conf.py:998 msgid "" "Determines what will be used as the\n" " default banmask style." msgstr "Détermine le style de masque de bannissement utilisé par défaut." -#: ../src/conf.py:978 +#: src/conf.py:1002 msgid "" "Determines whether the bot will strictly follow\n" " the RFC; currently this only affects what strings are considered to be\n" -" nicks. If you're using a server or a network that requires you to message\n" -" a nick such as services@this.network.server then you you should set this to\n" +" nicks. If you're using a server or a network that requires you to " +"message\n" +" a nick such as services@this.network.server then you you should set this " +"to\n" " False." -msgstr "Détermine si le bot suivra strictement la RFC ; actuellement, cela n'affecte que les chaînes considérées comme des nicks. Si vous utilisez un serveur ou un réseau qui requiert que vous envoyiez un message à un nick tel queservices@this.network.server, vous devriez défini ceci à False." +msgstr "" +"Détermine si le bot suivra strictement la RFC ; actuellement, cela " +"n'affecte que les chaînes considérées comme des nicks. Si vous utilisez " +"un serveur ou un réseau qui requiert que vous envoyiez un message à un " +"nick tel queservices@this.network.server, vous devriez défini ceci à " +"False." -#: ../src/conf.py:985 +#: src/conf.py:1009 msgid "" "Determines what user modes the bot will request\n" -" from the server when it first connects. Many people might choose +i; some\n" -" networks allow +x, which indicates to the auth services on those networks\n" +" from the server when it first connects. Many people might choose +i; " +"some\n" +" networks allow +x, which indicates to the auth services on those " +"networks\n" " that you should be given a fake host." -msgstr "Détermine quels modes d'utilisateur le bot demandera au serveur lorsqu'il s'y connecte. Certaines personnes voudront le +i ; certains réseaux autorisent +x, ce qui indique aux services du réseau que l'on veut 'cloaker' (masquer) notre masque d'hôte." +msgstr "" +"Détermine quels modes d'utilisateur le bot demandera au serveur lorsqu'il " +"s'y connecte. Certaines personnes voudront le +i ; certains réseaux " +"autorisent +x, ce qui indique aux services du réseau que l'on veut " +"'cloaker' (masquer) notre masque d'hôte." -#: ../src/conf.py:991 +#: src/conf.py:1015 msgid "" "Determines what vhost the bot will bind to before\n" " connecting to the IRC server." -msgstr "Détermine quelle vhost le bot bindera avant de se connecter au serveur IRC." +msgstr "" +"Détermine quelle vhost le bot bindera avant de se connecter au serveur " +"IRC." -#: ../src/conf.py:995 +#: src/conf.py:1019 msgid "" "Determines how many old messages the bot will\n" -" keep around in its history. Changing this variable will not take effect\n" +" keep around in its history. Changing this variable will not take " +"effect\n" " until the bot is restarted." -msgstr "Détermine combien de vieux messages le bot gardera dans son historique. Changer cette variable ne prend effet qu'après avoir redémarré le bot." +msgstr "" +"Détermine combien de vieux messages le bot gardera dans son historique. " +"Changer cette variable ne prend effet qu'après avoir redémarré le bot." -#: ../src/conf.py:1000 +#: src/conf.py:1024 msgid "" "A floating point number of seconds to throttle\n" -" queued messages -- that is, messages will not be sent faster than once per\n" +" queued messages -- that is, messages will not be sent faster than once " +"per\n" " throttleTime seconds." -msgstr "Un nombre à virgule flottante, correspondant à la mise en attente des messages à envoyé ; c'est à dire que les messages ne seront pas envoyé plus vite que 1 par throttleTime secondes." +msgstr "" +"Un nombre à virgule flottante, correspondant à la mise en attente des " +"messages à envoyé ; c'est à dire que les messages ne seront pas envoyé " +"plus vite que 1 par throttleTime secondes." -#: ../src/conf.py:1005 +#: src/conf.py:1029 msgid "" "Determines whether the bot will send PINGs to\n" " the server it's connected to in order to keep the connection alive and\n" " discover earlier when it breaks. Really, this option only exists for\n" -" debugging purposes: you always should make it True unless you're testing\n" +" debugging purposes: you always should make it True unless you're " +"testing\n" " some strange server issues." -msgstr "Détermine si le bot enverra des PINGs au serveurs auxquels il est connecté dans le but de garder la connexion active et détecter plus tôt lorsqu'elle est rompue. En fait, cette option existe surtout pour le débogage : vous devriez toujours laisser cette option à True excepté si il vous arrive des trucs bizarres avec le serveur." +msgstr "" +"Détermine si le bot enverra des PINGs au serveurs auxquels il est " +"connecté dans le but de garder la connexion active et détecter plus tôt " +"lorsqu'elle est rompue. En fait, cette option existe surtout pour le " +"débogage : vous devriez toujours laisser cette option à True excepté si " +"il vous arrive des trucs bizarres avec le serveur." -#: ../src/conf.py:1012 +#: src/conf.py:1036 msgid "" "Determines the number of seconds between sending\n" " pings to the server, if pings are being sent to the server." -msgstr "Détermine le nombre de secondes entre deux envois de PING au serveur, si les pings sont envoyés au serveur." +msgstr "" +"Détermine le nombre de secondes entre deux envois de PING au serveur, si " +"les pings sont envoyés au serveur." -#: ../src/conf.py:1017 +#: src/conf.py:1041 msgid "" "Determines whether the bot will refuse\n" -" duplicate messages to be queued for delivery to the server. This is a\n" +" duplicated messages to be queued for delivery to the server. This is a\n" " safety mechanism put in place to prevent plugins from sending the same\n" -" message multiple times; most of the time it doesn't matter, unless you're\n" +" message multiple times; most of the time it doesn't matter, unless " +"you're\n" " doing certain kinds of plugin hacking." -msgstr "Détermine si le bot refusera de dupliquer les messages à mettre dans la queue d'envoi un serveur. C'est un mécanisme de sécurité mis en place pour éviter que les plugins envoient le même message plusieurs fois ; la plupart du temps, vous n'avez pas à vous en préoccuper, à moins que vous ne bidouilliez des plugins." +msgstr "" +"Détermine si le bot refusera de dupliquer les messages à mettre dans la " +"queue d'envoi un serveur. C'est un mécanisme de sécurité mis en place " +"pour éviter que les plugins envoient le même message plusieurs fois ; la " +"plupart du temps, vous n'avez pas à vous en préoccuper, à moins que vous " +"ne bidouilliez des plugins." -#: ../src/conf.py:1025 +#: src/conf.py:1049 msgid "" "Determines how many seconds must elapse between\n" " JOINs sent to the server." -msgstr "Détermine combien de secondes doivent s'écouler entre deux envois de JOIN au serveur." +msgstr "" +"Détermine combien de secondes doivent s'écouler entre deux envois de JOIN " +"au serveur." -#: ../src/conf.py:1033 +#: src/conf.py:1057 msgid "" "Determines how many bytes the bot will\n" -" 'peek' at when looking through a URL for a doctype or title or something\n" -" similar. It'll give up after it reads this many bytes, even if it hasn't\n" +" 'peek' at when looking through a URL for a doctype or title or " +"something\n" +" similar. It'll give up after it reads this many bytes, even if it " +"hasn't\n" " found what it was looking for." -msgstr "Détermine combien d'octets le bot 'regarder' lorsqu'il cherchera le doctype, le title, ou autre chose dans une URL. Après avoir lu ces octets, le bot abandonnera sa recherche." +msgstr "" +"Détermine combien d'octets le bot 'regarder' lorsqu'il cherchera le " +"doctype, le title, ou autre chose dans une URL. Après avoir lu ces " +"octets, le bot abandonnera sa recherche." -#: ../src/conf.py:1039 +#: src/conf.py:1063 msgid "" "Determines what proxy all HTTP requests should go\n" " through. The value should be of the form 'host:port'." -msgstr "Détermine par quel proxy toutes les requêtes HTTP devraient passer. Cette valeur doit être de la forme 'host:port', ou être vide s'il n'y a pas de proxy." +msgstr "" +"Détermine par quel proxy toutes les requêtes HTTP devraient passer. Cette " +"valeur doit être de la forme 'host:port', ou être vide s'il n'y a pas de " +"proxy." -#: ../src/conf.py:1059 +#: src/conf.py:1083 msgid "Determines what host the HTTP server will bind." msgstr "Détermine à quel hôte le serveur HTTP va s'attacher." -#: ../src/conf.py:1061 +#: src/conf.py:1085 msgid "" "Determines what port the HTTP server will\n" " bind." msgstr "Détermine à quel port le serveur HTTP va s'attacher." -#: ../src/conf.py:1064 +#: src/conf.py:1088 msgid "" -"Defines whether the server will stay alive if\n" -" no plugin is using it. This also means that the server will start even\n" -" if it is not used." -msgstr "Détermine si le serveur restera lancé si aucun plugin ne l'utilise. Cela signifie également que le serveur va démarrer même si il n'est pas utilisé." +"Determines whether the server will stay\n" +" alive if no plugin is using it. This also means that the server will\n" +" start even if it is not used." +msgstr "" +"Détermine si le serveur restera lancé si aucun plugin ne l'utilise. Cela " +"signifie également que le serveur va démarrer même si il n'est pas utilisé." -#: ../src/conf.py:1073 +#: src/conf.py:1092 +msgid "" +"Determines the content of the robots.txt file,\n" +" served on the server to search engine." +msgstr "" +"Détermine quel sera le contenu du fichier robots.txt, servi par le serveur " +"aux moteurs de recherche." + +#: src/conf.py:1100 msgid "" "Determines whether the bot will ignore\n" " unregistered users by default. Of course, that'll make it particularly\n" -" hard for those users to register or identify with the bot, but that's your\n" +" hard for those users to register or identify with the bot, but that's " +"your\n" " problem to solve." -msgstr "Détermine si le bot ignorera par défaut les utilisateurs qui ne sont pas enregistrés. Bien sûr, cela rendra très difficile pour les utilisateurs de s'enregistrer ou de s'identifier, mais c'est votre problème." +msgstr "" +"Détermine si le bot ignorera par défaut les utilisateurs qui ne sont pas " +"enregistrés. Bien sûr, cela rendra très difficile pour les utilisateurs " +"de s'enregistrer ou de s'identifier, mais c'est votre problème." -#: ../src/conf.py:1080 +#: src/conf.py:1107 msgid "" "A string that is the external IP of the bot. If this is the\n" -" empty string, the bot will attempt to find out its IP dynamically (though\n" +" empty string, the bot will attempt to find out its IP dynamically " +"(though\n" " sometimes that doesn't work, hence this variable)." -msgstr "Une chaîne qui est une IP externe du bot. Si elle est vide, le bot recherchera cette IP dynamiquement (ce qui, parfois, ne marche pas ; dans ce cas, utilisez cette variable)." +msgstr "" +"Une chaîne qui est une IP externe du bot. Si elle est vide, le bot " +"recherchera cette IP dynamiquement (ce qui, parfois, ne marche pas ; dans " +"ce cas, utilisez cette variable)." -#: ../src/conf.py:1094 +#: src/conf.py:1121 msgid "" "Determines what the default timeout for socket\n" -" objects will be. This means that *all* sockets will timeout when this many\n" -" seconds has gone by (unless otherwise modified by the author of the code\n" +" objects will be. This means that *all* sockets will timeout when this " +"many\n" +" seconds has gone by (unless otherwise modified by the author of the " +"code\n" " that uses the sockets)." -msgstr "Détermine quel timeout est utilisé par défaut pour les sockets. Ceci signifit que *toutes* les sockets expireront au bout de cette durée (à moins que l'auteur du code n'ait changé cette valeur)." +msgstr "" +"Détermine quel timeout est utilisé par défaut pour les sockets. Ceci " +"signifit que *toutes* les sockets expireront au bout de cette durée (à " +"moins que l'auteur du code n'ait changé cette valeur)." -#: ../src/conf.py:1100 +#: src/conf.py:1127 msgid "" "Determines what file the bot should write its PID\n" -" (Process ID) to, so you can kill it more easily. If it's left unset (as is\n" -" the default) then no PID file will be written. A restart is required for\n" +" (Process ID) to, so you can kill it more easily. If it's left unset (as " +"is\n" +" the default) then no PID file will be written. A restart is required " +"for\n" " changes to this variable to take effect." -msgstr "Détermine dans quel fichier le bot écrit son PID (Process ID), ce qui vous permet de le killer plus facilement. Si cette valeur est laissée vide, le PID ne sera écrit dans aucun fichier. Un redémarrage est requis pour que cette variable prenne effet." +msgstr "" +"Détermine dans quel fichier le bot écrit son PID (Process ID), ce qui " +"vous permet de le killer plus facilement. Si cette valeur est laissée " +"vide, le PID ne sera écrit dans aucun fichier. Un redémarrage est requis " +"pour que cette variable prenne effet." -#: ../src/conf.py:1110 +#: src/conf.py:1137 msgid "" "Determines whether the bot will automatically\n" " thread all commands." msgstr "Détermine si le bot threadera automatiquement toutes les commandes." -#: ../src/conf.py:1113 +#: src/conf.py:1140 msgid "" "Determines whether the bot will automatically\n" -" flush all flushers *very* often. Useful for debugging when you don't know\n" +" flush all flushers *very* often. Useful for debugging when you don't " +"know\n" " what's breaking or when, but think that it might be logged." -msgstr "Détermine si le bot videra automatiquement le cache *très* souvent. Utile pour déboguer lorsque vous ne savez pas ce qui ne marche pas, mais que vous pensez que ça peut être loggué." +msgstr "" +"Détermine si le bot videra automatiquement le cache *très* souvent. Utile " +"pour déboguer lorsque vous ne savez pas ce qui ne marche pas, mais que " +"vous pensez que ça peut être loggué." -#: ../src/questions.py:60 -msgid "Sorry, that response was not an option." -msgstr "Désolé, cette réponse n'est pas l'une des options." - -#: ../src/questions.py:106 -msgid "Sorry, you must enter a value." -msgstr "Désolé, vous devez entrer une valeur." - -#: ../src/questions.py:126 -msgid "Enter password: " -msgstr "Entrez un mot de passe : " - -#: ../src/questions.py:128 -msgid "Re-enter password: " -msgstr "Entrez à nouveau le mot de passe : " - -#: ../src/questions.py:141 -msgid "Passwords don't match." -msgstr "Les mots de passe ne correspondent pas." - -#: ../src/utils/httpserver.py:129 +#: src/httpserver.py:131 msgid "" "\n" " This is a default response of the Supybot HTTP server. If you see this\n" -" message, it probably means you are developping a plugin, and you have\n" +" message, it probably means you are developing a plugin, and you have\n" " neither overriden this message or defined an handler for this query." msgstr "" "\n" -" Ceci est la réponse par défaut du serveur HTTP de Supybot. Si vous voyez ce message, cela signifie probablement que vous êtes en train de développer un plugin, et que vous n'avez ni outrepassé ce message ni défini un gestionnaire pour cette requête." +" Ceci est la réponse par défaut du serveur HTTP de Supybot. Si vous " +"voyez ce message, cela signifie probablement que vous êtes en train de " +"développer un plugin, et que vous n'avez ni outrepassé ce message ni " +"défini un gestionnaire pour cette requête." -#: ../src/utils/httpserver.py:150 +#: src/httpserver.py:152 msgid "" "\n" -" I am a pretty clever IRC bot, but I suck at serving Web pages, particulary\n" +" I am a pretty clever IRC bot, but I suck at serving Web pages, " +"particulary\n" " if I don't know what to serve.\n" " What I'm saying is you just triggered a 404 Not Found, and I am not\n" " trained to help you in such a case." msgstr "" "\n" -" Je suis un robot IRC très intelligent, mais je suis nul dès qu'il s'agit de servir des pages Web, en particulier lorsque je ne sais pas quoi servir. Ce que j'essaye de dire, c'est que vous venez tout juste de déclencher une erreur 404 Not Found, and je ne suis pas entraîné à vous aider dans un tel cas." +" Je suis un robot IRC très intelligent, mais je suis nul dès qu'il s'agit " +"de servir des pages Web, en particulier lorsque je ne sais pas quoi " +"servir. Ce que j'essaye de dire, c'est que vous venez tout juste de " +"déclencher une erreur 404 Not Found, and je ne suis pas entraîné à vous " +"aider dans un tel cas." -#: ../src/utils/httpserver.py:167 +#: src/httpserver.py:169 msgid "Request not handled." msgstr "Requête non gérée." -#: ../src/utils/httpserver.py:171 +#: src/httpserver.py:173 msgid "Supybot Web server index" msgstr "Index du serveur Web de Supybot" -#: ../src/utils/httpserver.py:174 +#: src/httpserver.py:176 msgid "Here is a list of the plugins that have a Web interface:" msgstr "Voici une liste des plugins qui ont une interface Web :" -#: ../src/utils/httpserver.py:183 +#: src/httpserver.py:185 msgid "No plugins available." msgstr "Aucun plugin disponible." +#: src/httpserver.py:199 +msgid "Request not handled" +msgstr "Requête non gérée." + +#: src/questions.py:60 +msgid "Sorry, that response was not an option." +msgstr "Désolé, cette réponse n'est pas l'une des options." + +#: src/questions.py:106 +msgid "Sorry, you must enter a value." +msgstr "Désolé, vous devez entrer une valeur." + +#: src/questions.py:126 +msgid "Enter password: " +msgstr "Entrez un mot de passe : " + +#: src/questions.py:128 +msgid "Re-enter password: " +msgstr "Entrez à nouveau le mot de passe : " + +#: src/questions.py:141 +msgid "Passwords don't match." +msgstr "Les mots de passe ne correspondent pas." + +#~ msgid "" +#~ "Determines what directory backup data is put\n" +#~ " into." +#~ msgstr "Détermine dans quel répertoire les sauvegardes des données sont." diff --git a/locale/it.po b/locale/it.po index 1710aa2e0..4b7026f40 100644 --- a/locale/it.po +++ b/locale/it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-07-22 11:11+0200\n" +"PO-Revision-Date: 2012-04-23 18:33+0200\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -11,59 +11,59 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" -#: ../src/callbacks.py:184 +#: src/callbacks.py:184 msgid "Error: " msgstr "Errore: " -#: ../src/callbacks.py:198 +#: src/callbacks.py:198 msgid "Error: I tried to send you an empty message." msgstr "Errore: ho cercato di inviarti un messaggio vuoto." -#: ../src/callbacks.py:288 +#: src/callbacks.py:288 msgid "Missing \"%s\". You may want to quote your arguments with double quotes in order to prevent extra brackets from being evaluated as nested commands." msgstr "\"%s\" mancante. Dovresti racchiudere gli argomenti tra virgolette per evitare che le parentesi vengano interpretate come comandi nidificati." -#: ../src/callbacks.py:318 +#: src/callbacks.py:318 msgid "\"|\" with nothing preceding. I obviously can't do a pipe with nothing before the |." msgstr "\"|\" con niente che la precede. Ovviamente non posso usare una pipe senza nulla prima di |." -#: ../src/callbacks.py:326 +#: src/callbacks.py:326 msgid "Spurious \"%s\". You may want to quote your arguments with double quotes in order to prevent extra brackets from being evaluated as nested commands." msgstr "\"%s\" eccedente. Dovresti racchiudere gli argomenti tra virgolette per evitare che le parentesi vengano interpretate come comandi nidificati." -#: ../src/callbacks.py:335 +#: src/callbacks.py:335 msgid "\"|\" with nothing following. I obviously can't do a pipe with nothing after the |." msgstr "\"|\" con niente che la segue. Ovviamente non posso usare una pipe senza nulla dopo di |." -#: ../src/callbacks.py:519 +#: src/callbacks.py:519 msgid "%s is not a valid %s." msgstr "%s non è un %s valido." -#: ../src/callbacks.py:521 +#: src/callbacks.py:521 msgid "That's not a valid %s." msgstr "Questo non è un %s valido." -#: ../src/callbacks.py:599 +#: src/callbacks.py:599 msgid "You've attempted more nesting than is currently allowed on this bot." msgstr "Hai tentato di nidificare più di quanto sia attualmente consentito." -#: ../src/callbacks.py:778 +#: src/callbacks.py:778 msgid "The command %q is available in the %L plugins. Please specify the plugin whose command you wish to call by using its name as a command before %q." msgstr "Il comando %q è disponibile nei plugin %L. Specifica in quale plugin si trova quello che desideri usare aggiungendo il suo nome prima di %q." -#: ../src/callbacks.py:863 ../src/callbacks.py:876 +#: src/callbacks.py:864 src/callbacks.py:877 msgid "(XX more messages)" msgstr "(XX altri messaggi)" -#: ../src/callbacks.py:908 +#: src/callbacks.py:909 msgid "more message" msgstr "altro messaggio" -#: ../src/callbacks.py:910 +#: src/callbacks.py:911 msgid "more messages" msgstr "altri messaggi" -#: ../src/callbacks.py:1010 +#: src/callbacks.py:1028 msgid "" "Determines what commands are currently disabled. Such\n" " commands will not appear in command lists, etc. They will appear not even\n" @@ -72,139 +72,153 @@ msgstr "" "Determina quali comandi sono attualmente disabilitati. Questi non appariranno\n" " nell'elenco dei comandi, ecc.; sarà come se non esistessero." -#: ../src/callbacks.py:1201 +#: src/callbacks.py:1224 msgid "Invalid arguments for %s." msgstr "Argomenti non validi per %s." -#: ../src/callbacks.py:1227 +#: src/callbacks.py:1250 msgid "The %q command has no help." msgstr "Il comando %q non ha un help." -#: ../src/commands.py:171 +#: src/commands.py:228 msgid "integer" msgstr "intero" -#: ../src/commands.py:182 +#: src/commands.py:239 msgid "non-integer value" msgstr "valore non intero" -#: ../src/commands.py:193 +#: src/commands.py:250 msgid "floating point number" msgstr "numero in virgola mobile" -#: ../src/commands.py:202 +#: src/commands.py:259 msgid "positive integer" msgstr "intero positivo" -#: ../src/commands.py:206 +#: src/commands.py:263 msgid "non-negative integer" msgstr "intero non negativo" -#: ../src/commands.py:209 +#: src/commands.py:266 msgid "index" msgstr "indice" -#: ../src/commands.py:234 +#: src/commands.py:291 msgid "number of seconds" msgstr "numero di secondi" -#: ../src/commands.py:241 +#: src/commands.py:298 msgid "boolean" msgstr "booleano" -#: ../src/commands.py:255 +#: src/commands.py:312 src/commands.py:320 src/commands.py:328 +#: src/commands.py:336 msgid "do that" msgstr "fare ciò" -#: ../src/commands.py:259 +#: src/commands.py:316 src/commands.py:324 src/commands.py:332 +#: src/commands.py:340 msgid "I'm not even in %s." msgstr "Non sono in %s." -#: ../src/commands.py:261 +#: src/commands.py:318 +msgid "I need to be voiced to %s." +msgstr "Devo avere il voice per %s." + +#: src/commands.py:326 +msgid "I need to be halfopped to %s." +msgstr "Devo essere halfop per %s." + +#: src/commands.py:334 msgid "I need to be opped to %s." msgstr "Devo essere op per %s." -#: ../src/commands.py:278 +#: src/commands.py:344 +msgid "I need to be at least halfopped to %s." +msgstr "Devo almeno essere halfop per %s." + +#: src/commands.py:362 msgid "nick or hostmask" msgstr "nick o hostmask" -#: ../src/commands.py:330 ../src/commands.py:333 +#: src/commands.py:414 src/commands.py:417 msgid "regular expression" msgstr "espressione regolare" -#: ../src/commands.py:344 +#: src/commands.py:428 msgid "That nick is too long for this server." msgstr "Il nick è troppo lungo per questo server." -#: ../src/commands.py:393 ../src/commands.py:412 +#: src/commands.py:477 src/commands.py:496 msgid "I'm not in %s." msgstr "Non sono in %s." -#: ../src/commands.py:397 +#: src/commands.py:481 msgid "This command may only be given in a channel that I am in." msgstr "Questo comando può essere dato solo in un canale in cui sono presente." -#: ../src/commands.py:410 +#: src/commands.py:494 msgid "You must be in %s." msgstr "Devo essere in %s." -#: ../src/commands.py:414 +#: src/commands.py:498 msgid "channel" msgstr "canale" -#: ../src/commands.py:421 +#: src/commands.py:505 msgid "%s is not in %s." msgstr "%s non è in %s." -#: ../src/commands.py:455 +#: src/commands.py:539 msgid "You must not give the empty string as an argument." msgstr "Non puoi darmi una stringa vuota come argomento." -#: ../src/commands.py:472 +#: src/commands.py:556 msgid "This message must be sent in a channel." msgstr "Questo messaggio va inviato in canale." -#: ../src/commands.py:518 +#: src/commands.py:602 msgid "http url" msgstr "URL HTTP" -#: ../src/commands.py:525 +#: src/commands.py:609 msgid "command name" msgstr "nome comando" -#: ../src/commands.py:533 +#: src/commands.py:617 msgid "ip" msgstr "IP" -#: ../src/commands.py:539 +#: src/commands.py:623 msgid "letter" msgstr "lettera" -#: ../src/commands.py:571 +#: src/commands.py:655 msgid "plugin" msgstr "plugin" -#: ../src/commands.py:579 +#: src/commands.py:663 msgid "irc color" msgstr "colore IRC" -#: ../src/conf.py:104 +#: src/conf.py:104 msgid "" "Determines whether this plugin is loaded\n" " by default." msgstr "Determina se questo plugin sia caricato in modo predefinito." -#: ../src/conf.py:108 +#: src/conf.py:108 msgid "" "Determines whether this plugin is\n" " publicly visible." msgstr "Determina se questo plugin sia visibile pubblicamente." -#: ../src/conf.py:194 +#: src/conf.py:202 msgid "Determines the bot's default nick." msgstr "Determina il nick predefinito del bot." -#: ../src/conf.py:197 +#: src/conf.py:205 msgid "" "Determines what alternative\n" " nicks will be used if the primary nick (supybot.nick) isn't available. A\n" @@ -217,13 +231,13 @@ msgstr "" " Se non è fornita alcuna alternativa, o sono tutti in uso, supybot.nick sarà\n" " modificato in modo appropriato finché ne trova uno non utilizzato." -#: ../src/conf.py:204 +#: src/conf.py:212 msgid "" "Determines the bot's ident string, if the server\n" " doesn't provide one by default." msgstr "Determina l'ident (ciò che precede @ nella hostmask) nel caso in cui il server non ne fornisca una." -#: ../src/conf.py:215 +#: src/conf.py:223 msgid "" "Determines the user the bot sends to the server.\n" " A standard user using the current version of the bot will be generated if\n" @@ -232,11 +246,11 @@ msgstr "" "Determina il nome utente inviato al server dal bot. Se lasciato vuoto, ne verrà\n" " generato uno standard utilizzando la versione del bot." -#: ../src/conf.py:223 +#: src/conf.py:231 msgid "Determines what networks the bot will connect to." msgstr "Determina su quali reti si connetterà il bot." -#: ../src/conf.py:264 +#: src/conf.py:273 msgid "" "Determines what password will be used on %s. Yes, we know that\n" " technically passwords are server-specific and not network-specific,\n" @@ -245,7 +259,7 @@ msgstr "" "Determina quale password utilizzare su %s. Sì, sappiamo che tecnicamente le password\n" " sono specifiche per il server e non per la rete, ma per ora è il meglio che possiamo fare." -#: ../src/conf.py:268 +#: src/conf.py:277 msgid "" "Determines what servers the bot will connect to for %s. Each will\n" " be tried in order, wrapping back to the first when the cycle is\n" @@ -254,23 +268,45 @@ msgstr "" "Determina a quali server si connetterà il bot per %s. Verranno provati in\n" " ordine tornando al primo quando il ciclo è stato completato." -#: ../src/conf.py:272 +#: src/conf.py:281 msgid "Determines what channels the bot will join only on %s." msgstr "Determina in quali canali di %s entrerà il bot." -#: ../src/conf.py:275 +#: src/conf.py:284 msgid "" "Determines whether the bot will attempt to connect with SSL\n" " sockets to %s." msgstr "Determina se il bot tenterà di connettersi a %s tramite un socket SSL." -#: ../src/conf.py:278 +#: src/conf.py:287 msgid "" "Determines what key (if any) will be used to join the\n" " channel." msgstr "Determina quale password (eventuale) verrà usata per entrare in canale." -#: ../src/conf.py:298 +#: src/conf.py:289 +msgid "" +"Determines\n" +" what nick the bot will use on this network. If empty, defaults to\n" +" supybot.nick." +msgstr "" +"Determina che nick userà il bot su questa rete. Se lasciato vuoto assegna il valore di supybot.nick." + +#: src/conf.py:294 +msgid "" +"Determines what SASL username will be used on %s. This should\n" +" be the bot's account name. Due to the way SASL works, you can't use\n" +" any grouped nick." +msgstr "" +"Determina quale nome utente SASL utilizzare su %s; dovrebbe essere il nome usato per\n" +" l'account del bot. A causa del funzionamento di SASL, non è possibile usare\n" +" un nick raggruppato." + +#: src/conf.py:298 +msgid "Determines what SASL password will be used on %s." +msgstr "Determina quale password per SASL sarà usata su %s." + +#: src/conf.py:318 msgid "" "Determines how timestamps\n" " printed for human reading should be formatted. Refer to the Python\n" @@ -281,7 +317,7 @@ msgstr "" " Per sapere quali sono i formati validi fai riferimento alla documentazione\n" " di Python per il modulo time." -#: ../src/conf.py:312 +#: src/conf.py:332 msgid "" "Determines whether elapsed times will be given\n" " as \"1 day, 2 hours, 3 minutes, and 15 seconds\" or as \"1d 2h 3m 15s\"." @@ -289,7 +325,7 @@ msgstr "" "Determina se il tempo trascorso sarà espresso nella forma \"1 giorno, 2 ore,\n" " 3 minuti e 15 secondi\" o \"1d 2h 3m 15s\"." -#: ../src/conf.py:322 +#: src/conf.py:342 msgid "" "Determines the absolute maximum length of\n" " the bot's reply -- no reply will be passed through the bot with a length\n" @@ -297,7 +333,7 @@ msgid "" msgstr "" "Determina la lunghezza massima delle risposte; il bot non invierà alcuna risposta che supera questo valore." -#: ../src/conf.py:327 +#: src/conf.py:347 msgid "" "Determines whether the bot will break up long\n" " messages into chunks and allow users to use the 'more' command to get the\n" @@ -306,13 +342,13 @@ msgstr "" "Determina se il bot separerà i messaggi lunghi in più parti permettendo\n" " agli utenti di utilizzare il comando \"more\" per ottenere il resto." -#: ../src/conf.py:332 +#: src/conf.py:352 msgid "" "Determines what the maximum number of\n" " chunks (for use with the 'more' command) will be." msgstr "Determina il numero massimo di parti (da utilizzare con il comando \"more\")." -#: ../src/conf.py:336 +#: src/conf.py:356 msgid "" "Determines how long individual chunks\n" " will be. If set to 0, uses our super-tweaked,\n" @@ -321,7 +357,7 @@ msgstr "" "Determina la lunghezza di ogni singolo pezzo. Se impostata a 0 permette\n" " di usare il nostro super algoritmo per ottenere il più possibile da ogni messaggio." -#: ../src/conf.py:341 +#: src/conf.py:361 msgid "" "Determines how many mores will be sent\n" " instantly (i.e., without the use of the more command, immediately when\n" @@ -331,7 +367,7 @@ msgstr "" "Determina quanti pezzi saranno inviati immediatamente (ovvero senza utilizzare il comando\n" " \"more\"). Impostato a 1 in modo predefinito, per cui viene ne viene visualizzato uno solo." -#: ../src/conf.py:347 +#: src/conf.py:367 msgid "" "Determines whether the bot will send\n" " multi-message replies in a single message or in multiple messages. For\n" @@ -342,7 +378,7 @@ msgstr "" " ragioni di sicurezza (il bot è meno suscettibile a flood) mostrerà tutto\n" " in un singolo messaggio e utilizzando \"more\" se necessario." -#: ../src/conf.py:353 +#: src/conf.py:373 msgid "" "Determines whether the bot will reply with an\n" " error message when it is addressed but not given a valid command. If this\n" @@ -353,7 +389,7 @@ msgstr "" " ma non si fornisce un comando valido. Se impostato a False rimarrà silenzioso,\n" " a meno che altri plugin modifichino questo comportamento." -#: ../src/conf.py:360 +#: src/conf.py:380 msgid "" "Determines whether error messages that result\n" " from bugs in the bot will show a detailed error message (the uncaught\n" @@ -362,7 +398,7 @@ msgstr "" "Determina se i messaggi di errore causati da bug del bot saranno mostrati\n" " in modo dettagliato (eccezione non gestita) o con un messaggio di errore generico." -#: ../src/conf.py:364 +#: src/conf.py:384 msgid "" "Determines whether the bot will send error\n" " messages to users in private. You might want to do this in order to keep\n" @@ -372,7 +408,7 @@ msgstr "" "Determina se il bot invierà i messaggi di errore in privato; utile per ridurre il\n" " traffico del canale. Può essere usato in combinazione con supybot.reply.error.withNotice." -#: ../src/conf.py:369 +#: src/conf.py:389 msgid "" "Determines whether the bot will send error\n" " messages to users via NOTICE instead of PRIVMSG. You might want to do this\n" @@ -386,7 +422,7 @@ msgstr "" " provenienti dal bot oppure usarlo in combinazione con supybot.reply.errorInPrivate\n" " affinché gli errori non causino l'apertura di una finestra privata nel client IRC." -#: ../src/conf.py:376 +#: src/conf.py:396 msgid "" "Determines whether the bot will send an error\n" " message to users who attempt to call a command for which they do not have\n" @@ -399,21 +435,21 @@ msgstr "" " True per evitare che vengano a conoscenza del sistema di sicurezza sottostante\n" " che impedisce loro di eseguire certi comandi." -#: ../src/conf.py:383 +#: src/conf.py:403 msgid "" "Determines whether the bot will reply\n" " privatelywhen replying in a channel, rather than replying to the whole\n" " channel." msgstr "Determina se il bot risponderà in privato piuttosto che in canale." -#: ../src/conf.py:388 +#: src/conf.py:408 msgid "" "Determines whether the bot will reply with a\n" " notice when replying in a channel, rather than replying with a privmsg as\n" " normal." msgstr "Determina se il bot risponderà con un notice piuttosto che in privato." -#: ../src/conf.py:394 +#: src/conf.py:414 msgid "" "Determines whether the bot will reply with a\n" " notice when it is sending a private message, in order not to open a /query\n" @@ -424,14 +460,14 @@ msgstr "" " per evitare di aprire una finestra nel client (una /query). Può essere modificato\n" " per singolo utente tramite la variabile di configurazione reply.withNoticeWhenPrivate." -#: ../src/conf.py:400 +#: src/conf.py:420 msgid "" "Determines whether the bot will always prefix\n" " theuser's nick to its reply to that user's command." msgstr "" "Determina se il bot userà sempre il nick dell'utente come prefisso della risposta al comando richiesto." -#: ../src/conf.py:404 +#: src/conf.py:424 msgid "" "Determines whether the bot should attempt to\n" " reply to all messages even if they don't address it (either via its nick\n" @@ -442,7 +478,7 @@ msgstr "" " (tramite il nick o il prefisso). Se impostato a True, si vorrà certamente\n" " impostare supybot.reply.whenNotCommand a False." -#: ../src/conf.py:410 +#: src/conf.py:430 msgid "" "Determines whether the bot will allow you to\n" " send channel-related commands outside of that channel. Sometimes people\n" @@ -455,7 +491,7 @@ msgstr "" " comando (come Filter.outfilter) modifichi il comportamento del canale\n" " ma è stato inviato fuori da questo." -#: ../src/conf.py:417 +#: src/conf.py:437 msgid "" "Determines whether the bot will unidentify\n" " someone when that person changes his or her nick. Setting this to True\n" @@ -466,7 +502,7 @@ msgstr "" " Impostandolo a True, il bot terrà traccia di questi cambiamenti; è\n" " su False in modo predefinito per migliorare leggermente la sicurezza." -#: ../src/conf.py:423 +#: src/conf.py:443 msgid "" "Determines whether the bot will always join a\n" " channel when it's invited. If this value is False, the bot will only join\n" @@ -477,7 +513,7 @@ msgstr "" " impostato a False entrerà solo se l'utente che lo invita ha la capacità \"admin\"\n" " (o se gli è stato esplicitamente detto di farlo tramite il comando Admin.join)." -#: ../src/conf.py:429 +#: src/conf.py:449 msgid "" "Supybot normally replies with the full help\n" " whenever a user misuses a command. If this value is set to True, the bot\n" @@ -488,7 +524,7 @@ msgstr "" " solitamente con l'help completo. Se questo valore è impostato a True,\n" " il bot risponderà solo con la sintassi del comando (la prima riga dell'help)." -#: ../src/conf.py:443 +#: src/conf.py:463 msgid "" "Determines what prefix characters the bot will\n" " reply to. A prefix character is a single character that the bot will use\n" @@ -503,7 +539,7 @@ msgstr "" " c'è un prefisso viene utilizzato il suo nick. Ogni carattere è interpretato\n" " individualmente ed è possibile impostarne più di uno." -#: ../src/conf.py:452 +#: src/conf.py:472 msgid "" "Determines what strings the\n" " bot will reply to when they are at the beginning of the message. Whereas\n" @@ -518,7 +554,7 @@ msgstr "" " per cui è possibile ad esempio impostare \"@@ ??\" e far sì che il bot\n" " risponderà sia ad un messaggio prefissato da \"@@\" sia da \"??\"." -#: ../src/conf.py:459 +#: src/conf.py:479 msgid "" "Determines whether the bot will reply when\n" " people address it by its nick, rather than with a prefix character." @@ -526,7 +562,7 @@ msgstr "" "Determina se il bot risponderà quando gli utenti lo richiamano\n" " tramite il nick piuttosto che con un prefisso." -#: ../src/conf.py:462 +#: src/conf.py:482 msgid "" "Determines whether the bot will reply when\n" " people address it by its nick at the end of the message, rather than at\n" @@ -535,7 +571,7 @@ msgstr "" "Determina se il bot risponderà quando gli utenti lo richiamano\n" " tramite il nick alla fine del messaggio piuttosto che all'inizio." -#: ../src/conf.py:466 +#: src/conf.py:486 msgid "" "Determines what extra nicks\n" " the bot will always respond to when addressed by, even if its current nick\n" @@ -543,11 +579,11 @@ msgid "" msgstr "" "Determina a quali ulteriori nick risponderà il bot, anche se quello attuale è diverso." -#: ../src/conf.py:476 +#: src/conf.py:496 msgid "The operation succeeded." msgstr "L'operazione è riuscita." -#: ../src/conf.py:477 +#: src/conf.py:497 msgid "" "Determines what message the bot replies with when a command succeeded.\n" " If this configuration variable is empty, no success message will be\n" @@ -556,7 +592,7 @@ msgstr "" "Determina con quale messagggio risponderà il bot quando un comando è stato\n" " effettuato con successo. Se questa variabile è vuota non verrà inviato alcun messaggio." -#: ../src/conf.py:482 +#: src/conf.py:502 msgid "" "An error has occurred and has been logged.\n" " Please contact this bot's administrator for more information." @@ -564,7 +600,7 @@ msgstr "" "Si è verificato un errore ed è stato registrato. Per ulteriori informazioni\n" " contattare l'amministratore del bot." -#: ../src/conf.py:483 +#: src/conf.py:503 msgid "" "\n" " Determines what error message the bot gives when it wants to be\n" @@ -573,26 +609,26 @@ msgstr "" "\n" " Determina quale messagggio di errore riporterà il bot quando non vuole essere preciso." -#: ../src/conf.py:488 +#: src/conf.py:508 msgid "" "An error has occurred and has been logged.\n" " Check the logs for more informations." msgstr "" "Si è verificato un errore ed è stato registrato. Per ulteriori informazioni controllare i log." -#: ../src/conf.py:489 +#: src/conf.py:509 msgid "" "Determines what error\n" " message the bot gives to the owner when it wants to be ambiguous." msgstr "Determina quale messagggio di errore riporterà il bot all'owner quando non vuole essere preciso." -#: ../src/conf.py:493 +#: src/conf.py:513 msgid "" "Your hostmask doesn't match or your password\n" " is wrong." msgstr "La tua hostmask non corrisponde o la password è errata." -#: ../src/conf.py:494 +#: src/conf.py:514 msgid "" "Determines what message the bot replies with when\n" " someone tries to use a command that requires being identified or having a\n" @@ -601,7 +637,7 @@ msgstr "" "Determina con quale messagggio risponderà il bot quando si prova a utilizzare un comando\n" " per cui bisogna essere identificati, o ha una password, e le credenziali non sono corrette." -#: ../src/conf.py:500 +#: src/conf.py:520 msgid "" "I can't find %s in my user\n" " database. If you didn't give a user name, then I might not know what your\n" @@ -610,7 +646,7 @@ msgstr "" "Non trovo %s nel database degli utenti. Se non fornisci un nome utente non posso\n" " sapere quale sia e dovrai identificarti prima di utilizzare questo comando." -#: ../src/conf.py:503 +#: src/conf.py:523 msgid "" "Determines what error message the bot replies with when someone tries\n" " to accessing some information on a user the bot doesn't know about." @@ -618,7 +654,7 @@ msgstr "" "Determina con quale messagggio di errore risponderà il bot quando qualcuno\n" " prova ad accedere a informazioni riguardanti un utente di cui il bot non sa nulla." -#: ../src/conf.py:507 +#: src/conf.py:527 msgid "" "You must be registered to use this command.\n" " If you are already registered, you must either identify (using the identify\n" @@ -629,7 +665,7 @@ msgstr "" " (tramite il comando \"identify\") o aggiungere una hostmask che corrisponda a quella\n" " attuale (tramite il comando \"hostmask add\")." -#: ../src/conf.py:510 +#: src/conf.py:530 msgid "" "Determines what error message the bot\n" " replies with when someone tries to do something that requires them to be\n" @@ -638,7 +674,7 @@ msgstr "" "Determina con quale messagggio risponderà il bot quando si prova a fare qualcosa\n" " per cui bisogna essere registrati ma non si è attualmente riconosciuti." -#: ../src/conf.py:515 +#: src/conf.py:535 msgid "" "You don't have the %s capability. If you\n" " think that you should have this capability, be sure that you are identified\n" @@ -648,7 +684,7 @@ msgstr "" "Non hai la capacità %s; se pensi di averla assicurati di essere identificato prima\n" " di riprovare. Il comando \"whoami\" ti dirà se lo sei." -#: ../src/conf.py:518 +#: src/conf.py:538 msgid "" "Determines what error message is given when the bot\n" " is telling someone they aren't cool enough to use the command they tried to\n" @@ -657,7 +693,7 @@ msgstr "" "Determina quale messaggio di errore fornire quando il bot dice a qualcuno\n" " di non avere accesso ad un certo comando." -#: ../src/conf.py:523 +#: src/conf.py:543 msgid "" "You're missing some capability you need.\n" " This could be because you actually possess the anti-capability for the\n" @@ -676,7 +712,7 @@ msgstr "" " specificato nelle tue capacità (da un amministratore). In ogni caso non ti è\n" " permesso fare ciò che intendevi." -#: ../src/conf.py:531 +#: src/conf.py:551 msgid "" "Determines what generic error message is given when the bot is telling\n" " someone that they aren't cool enough to use the command they tried to use,\n" @@ -687,13 +723,13 @@ msgstr "" " di non avere accesso ad un certo comando e l'autore del codice che richiama\n" " errorNoCapability non ha fornito un'informazione esplicita sul motivo." -#: ../src/conf.py:537 +#: src/conf.py:557 msgid "" "That operation cannot be done in a\n" " channel." msgstr "L'operazione non può essere eseguita in un canale." -#: ../src/conf.py:538 +#: src/conf.py:558 msgid "" "Determines what error messages the bot sends to people\n" " who try to do things in a channel that really should be done in\n" @@ -702,7 +738,7 @@ msgstr "" "Determina quale messaggio di errore invierà il bot a chi tenta di fare qualcosa\n" " in canale e che dovrebbe invece fare in privato." -#: ../src/conf.py:543 +#: src/conf.py:563 msgid "" "This may be a bug. If you think it is,\n" " please file a bug report at\n" @@ -711,7 +747,7 @@ msgstr "" "Questo sembra essere un bug. Se pensi lo sia, invia una segnalazione all'indirizzo\n" " ." -#: ../src/conf.py:546 +#: src/conf.py:566 msgid "" "Determines what message the bot sends when it thinks you've\n" " encountered a bug that the developers don't know about." @@ -719,7 +755,7 @@ msgstr "" "Determina quale messaggio invierà il bot quando pensa tu abbia trovato\n" " un bug di cui gli sviluppatori non sono a conoscenza." -#: ../src/conf.py:553 +#: src/conf.py:573 msgid "" "A floating point number of seconds to throttle\n" " snarfed URLs, in order to prevent loops between two bots snarfing the same\n" @@ -729,7 +765,7 @@ msgstr "" " intercettare lo stesso URL, in modo da evitare che due bot entrino in\n" " un loop infinito intercettandosi a vicenda." -#: ../src/conf.py:558 +#: src/conf.py:578 msgid "" "Determines the number of seconds\n" " between running the upkeep function that flushes (commits) open databases,\n" @@ -739,7 +775,7 @@ msgstr "" "Determina il numero di secondi tra ogni operazione di mantenimento (flush) che\n" " aggiorna i database, svuota la cache e registra le statistiche utili per il debug." -#: ../src/conf.py:564 +#: src/conf.py:584 msgid "" "Determines whether the bot will periodically\n" " flush data and configuration files to disk. Generally, the only time\n" @@ -755,7 +791,7 @@ msgstr "" " se imposti il valore a False tramite il bot i cambiamenti non verranno salvati.\n" " Se vuoi che questa modifica sia permanente devi modificare il registro a mano." -#: ../src/conf.py:589 +#: src/conf.py:609 msgid "" "Determines what characters are valid for quoting\n" " arguments to commands in order to prevent them from being tokenized.\n" @@ -765,7 +801,7 @@ msgstr "" ", ed evitare che vengano tokenizzati.\n" " " -#: ../src/conf.py:596 +#: src/conf.py:616 msgid "" "Determines whether the bot will allow nested\n" " commands, which rule. You definitely should keep this on." @@ -773,7 +809,7 @@ msgstr "" "Determina se il bot permetterà comandi nidificati. È un'ottima\n" " funzionalità, devi assolutamente tenerla attiva." -#: ../src/conf.py:599 +#: src/conf.py:619 msgid "" "Determines what the maximum number of\n" " nested commands will be; users will receive an error if they attempt\n" @@ -782,7 +818,7 @@ msgstr "" "Determina il numero massimo di comandi nidificati. Se gli utenti tentano\n" " di utilizzarne di più, riceveranno un errore." -#: ../src/conf.py:607 +#: src/conf.py:627 msgid "" "Supybot allows you to specify what brackets are\n" " used for your nested commands. Valid sets of brackets include [], <>, and\n" @@ -797,7 +833,7 @@ msgstr "" " non utilizzabili in un nick. Se questa stringa è vuota i comandi nidificati non\n" " saranno permessi." -#: ../src/conf.py:614 +#: src/conf.py:634 msgid "" "Supybot allows nested commands. Enabling this\n" " option will allow nested commands with a syntax similar to UNIX pipes, for\n" @@ -806,7 +842,7 @@ msgstr "" "Supybot permette i comandi nidificati. Abilitare questa opzione ne permetterà l'uso\n" " con una sintassi simile alle pipe UNIX, ad esempio: 'bot: foo | bar'." -#: ../src/conf.py:619 +#: src/conf.py:639 msgid "" "Determines what commands have default\n" " plugins set, and which plugins are set to be the default for each of those\n" @@ -815,7 +851,7 @@ msgstr "" "Determina, quando un comando è presente in più di un plugin, quale sarà utilizzato\n" " in modo predefinito per ciascuno di questi comandi." -#: ../src/conf.py:625 +#: src/conf.py:645 msgid "" "Determines what plugins automatically get precedence over all\n" " other plugins when selecting a default plugin for a command. By\n" @@ -830,13 +866,13 @@ msgstr "" " tu non voglia modificare questo comportamento; in caso contrario sappi anche\n" " che i nomi sono case sensitive." -#: ../src/conf.py:640 +#: src/conf.py:660 msgid "" "Determines whether the bot will defend itself\n" " against command-flooding." msgstr "Determina se il bot si difenderà dall'uso di troppi comandi alla volta (flood)." -#: ../src/conf.py:643 +#: src/conf.py:663 msgid "" "Determines how many commands users are\n" " allowed per minute. If a user sends more than this many commands in any\n" @@ -847,19 +883,19 @@ msgstr "" " questo valore verrà ignorato per il numero di secondi definito nella variabile\n" " supybot.abuse.flood.command.punishment." -#: ../src/conf.py:648 +#: src/conf.py:668 msgid "" "Determines how many seconds the bot\n" " will ignore users who flood it with commands." msgstr "Determina per quanti secondi il bot ignorerà un utente che abusa dei comandi (flood)." -#: ../src/conf.py:652 +#: src/conf.py:672 msgid "" "Determines whether the bot will defend itself\n" " against invalid command-flooding." msgstr "Determina se il bot si difenderà dall'uso di troppi comandi non validi alla volta (flood)." -#: ../src/conf.py:655 +#: src/conf.py:675 msgid "" "Determines how many invalid commands users\n" " are allowed per minute. If a user sends more than this many invalid\n" @@ -875,25 +911,25 @@ msgstr "" " a quello di supybot.abuse.flood.command.maximum, in quanto è meno probabile che un utente\n" " abusi di comandi non validi piuttosto che di quelli validi." -#: ../src/conf.py:663 +#: src/conf.py:683 msgid "" "Determines how many seconds the bot\n" " will ignore users who flood it with invalid commands. Typically, this\n" " value is higher than supybot.abuse.flood.command.punishment, since it's far\n" -" less likely (and far more annoying) for users to flood witih invalid\n" +" less likely (and far more annoying) for users to flood with invalid\n" " commands than for them to flood with valid commands." msgstr "" "Determina per quanti secondi il bot ignorerà un utente che abusa di comandi non validi (flood).\n" " Solitamente questo valore è superiore a quello di supybot.abuse.flood.command.punishment,\n" " in quanto è meno probabile che un utente abusi di comandi non validi piuttosto che di quelli validi." -#: ../src/conf.py:669 +#: src/conf.py:689 msgid "" "Determines whether the bot will notify people\n" " that they're being ignored for invalid command flooding." msgstr "Determina se il bot avvertirà l'utente che è stato ignorato per abuso di comandi non validi (flood)." -#: ../src/conf.py:678 +#: src/conf.py:698 msgid "" "Determines the default length of time a\n" " driver should block waiting for input." @@ -901,7 +937,7 @@ msgstr "" "Determina la quantità di tempo predefinita durante il quale un driver\n" " di rete debba bloccarsi in attesa dei dati in entrata." -#: ../src/conf.py:685 +#: src/conf.py:705 msgid "" "Determines what driver module the bot\n" " will use. Socket, a simple driver based on timeout sockets, is used by\n" @@ -913,7 +949,7 @@ msgstr "" " stabilità. Twisted è molto stabile e semplice, se lo hai installato è\n" " probabilmente la scelta migliore." -#: ../src/conf.py:691 +#: src/conf.py:711 msgid "" "Determines the maximum time the bot will\n" " wait before attempting to reconnect to an IRC server. The bot may, of\n" @@ -922,29 +958,33 @@ msgstr "" "Determina il tempo massimo che il bot attenderà prima di riconnettersi al server\n" " IRC. Se ne avrà la possibilità potrà comunque connettersi prima." -#: ../src/conf.py:740 +#: src/conf.py:760 msgid "" "Determines what directory configuration data is\n" " put into." msgstr "Determina in quale directory collocare i dati di configurazione." -#: ../src/conf.py:743 +#: src/conf.py:763 msgid "Determines what directory data is put into." msgstr "Determina in quale directory collocare i dati." -#: ../src/conf.py:745 +#: src/conf.py:765 msgid "" "Determines what directory backup data is put\n" -" into." -msgstr "Determina in quale directory collocare i dati di backup." +" into. Set it to /dev/null to disable backup (it is a special value,\n" +" so it also works on Windows and systems without /dev/null)." +msgstr "" +"Determina in quale directory collocare i dati di backup. Impostare il valore\n" +" a /dev/null per disabilitarlo (è un valore speciale che funziona anche su\n" +" Windows e sistemi privi di questo device)." -#: ../src/conf.py:748 +#: src/conf.py:769 msgid "" "Determines what directory temporary files\n" " are put into." msgstr "Determina in quale directory collocare i file temporanei." -#: ../src/conf.py:755 +#: src/conf.py:776 msgid "" "Determines what directories\n" " the bot will look for plugins in. Accepts a comma-separated list of\n" @@ -958,13 +998,13 @@ msgstr "" " è possibile nidificare il valore precedente e inserirne uno nuovo. Esempio:\n" " \"config supybot.directories.plugins [config supybot.directories.plugins], nuovaDirectory\"." -#: ../src/conf.py:763 +#: src/conf.py:784 msgid "" "Determines what plugins will\n" " be loaded." msgstr "Determina quali plugin saranno caricati." -#: ../src/conf.py:766 +#: src/conf.py:787 msgid "" "Determines whether the bot will always load\n" " important plugins (Admin, Channel, Config, Misc, Owner, and User)\n" @@ -979,7 +1019,7 @@ msgstr "" " comunque caricarli. Chi non vuole che questo avvenga sarà sufficientemente abile\n" " nel modificare il valore di questa variabile in modo appropriato :)" -#: ../src/conf.py:793 +#: src/conf.py:814 msgid "" "Determines what databases are available for use. If this\n" " value is not configured (that is, if its value is empty) then sane defaults\n" @@ -988,7 +1028,7 @@ msgstr "" "Determina quali database rendere disponibili. Se non configurato (ovvero il\n" " valore è vuoto) verrà utilizzato uno predefinito." -#: ../src/conf.py:799 +#: src/conf.py:820 msgid "" "Determines what filename will be used\n" " for the users database. This file will go into the directory specified by\n" @@ -997,7 +1037,7 @@ msgstr "" "Determina il nome del file utilizzato per il database degli utenti che finirà\n" " nella directory specificata dalla variabile supybot.directories.conf." -#: ../src/conf.py:803 +#: src/conf.py:824 msgid "" "Determines how long it takes identification to\n" " time out. If the value is less than or equal to zero, identification never\n" @@ -1006,7 +1046,7 @@ msgstr "" "Determina per quanto tempo rimarrà identificato un utente. Se il valore è\n" " inferiore o uguale a zero l'identificazione non scadrà mai." -#: ../src/conf.py:807 +#: src/conf.py:828 msgid "" "Determines whether the bot will allow users to\n" " unregister their users. This can wreak havoc with already-existing\n" @@ -1021,7 +1061,7 @@ msgstr "" " bot (owner) di utilizzare il comando \"unregister\".\n" " " -#: ../src/conf.py:816 +#: src/conf.py:837 msgid "" "Determines what filename will be used\n" " for the ignores database. This file will go into the directory specified\n" @@ -1030,7 +1070,7 @@ msgstr "" "Determina il nome del file utilizzato per il database degli ignore che finirà\n" " nella directory specificata dalla variabile supybot.directories.conf." -#: ../src/conf.py:822 +#: src/conf.py:843 msgid "" "Determines what filename will be used\n" " for the channels database. This file will go into the directory specified\n" @@ -1038,7 +1078,7 @@ msgid "" msgstr "Determina il nome del file utilizzato per il database dei canali che finirà\n" " nella directory specificata dalla variabile supybot.directories.conf." -#: ../src/conf.py:852 +#: src/conf.py:873 msgid "" "Determines whether database-based plugins that\n" " can be channel-specific will be so. This can be overridden by individual\n" @@ -1055,7 +1095,7 @@ msgstr "" " canale a livello globale è inoltre possibile impostare la variabile\n" " supybot.databases.plugins.channelSpecific.link in modo appropriato." -#: ../src/conf.py:860 +#: src/conf.py:881 msgid "" "Determines what channel global\n" " (non-channel-specific) databases will be considered a part of. This is\n" @@ -1073,7 +1113,7 @@ msgstr "" " riavviato subito dopo la modifica di questa variabile altrimenti tali plugin\n" " potrebbero non funzionare." -#: ../src/conf.py:869 +#: src/conf.py:890 msgid "" "Determines whether another channel's global\n" " (non-channel-specific) databases will be allowed to link to this channel's\n" @@ -1086,13 +1126,13 @@ msgstr "" " di questa variabile altrimenti tali plugin potrebbero non funzionare.\n" " " -#: ../src/conf.py:886 +#: src/conf.py:907 msgid "" "Determines\n" " whether CDB databases will be allowed as a database implementation." msgstr "Determina se i database CDB sono permessi come implementazione di un database." -#: ../src/conf.py:889 +#: src/conf.py:910 msgid "" "Determines how often CDB databases will have\n" " their modifications flushed to disk. When the number of modified records\n" @@ -1103,13 +1143,13 @@ msgstr "" " Quando il numero di dati modificati è più grande di quelli non modificati il\n" " database verrà interamente scritto sul disco." -#: ../src/conf.py:974 +#: src/conf.py:998 msgid "" "Determines what will be used as the\n" " default banmask style." msgstr "Determina il tipo di banmask utilizzata in modo predefinito." -#: ../src/conf.py:978 +#: src/conf.py:1002 msgid "" "Determines whether the bot will strictly follow\n" " the RFC; currently this only affects what strings are considered to be\n" @@ -1122,7 +1162,7 @@ msgstr "" " di inviare un messaggio a un nick nella forma \"services@this.network.server\", è\n" " necessario impostare questo valore a False." -#: ../src/conf.py:985 +#: src/conf.py:1009 msgid "" "Determines what user modes the bot will request\n" " from the server when it first connects. Many people might choose +i; some\n" @@ -1133,14 +1173,14 @@ msgstr "" " Molti utenti vorranno +i mentre per altre reti è +x, indica ai servizi che si\n" " desidera avere l'hostmask camuffata (vhost) o parzialmente crittata." -#: ../src/conf.py:991 +#: src/conf.py:1015 msgid "" "Determines what vhost the bot will bind to before\n" " connecting to the IRC server." msgstr "" "Determina quale vhost associare al bot prima di connettersi al server IRC." -#: ../src/conf.py:995 +#: src/conf.py:1019 msgid "" "Determines how many old messages the bot will\n" " keep around in its history. Changing this variable will not take effect\n" @@ -1149,7 +1189,7 @@ msgstr "" "Determina quanti messaggi vecchi terrà il bot nella cronologia. La modifica\n" " di questa variabile non avrà effetto finché non si riavvia il bot." -#: ../src/conf.py:1000 +#: src/conf.py:1024 msgid "" "A floating point number of seconds to throttle\n" " queued messages -- that is, messages will not be sent faster than once per\n" @@ -1159,7 +1199,7 @@ msgstr "" " inviare i messaggi in coda; vale a dire che verranno inviati una volta\n" " ogni numero di secondi specificati." -#: ../src/conf.py:1005 +#: src/conf.py:1029 msgid "" "Determines whether the bot will send PINGs to\n" " the server it's connected to in order to keep the connection alive and\n" @@ -1172,16 +1212,16 @@ msgstr "" " In realtà questa opzione esiste solo per scopi di debug, a meno che non\n" " si incontrino problemi strani con il server, andrebbe sempre tenuta a True." -#: ../src/conf.py:1012 +#: src/conf.py:1036 msgid "" "Determines the number of seconds between sending\n" " pings to the server, if pings are being sent to the server." msgstr "Determina il numero di secondi tra ogni invio di PING al server, se questo avviene." -#: ../src/conf.py:1017 +#: src/conf.py:1041 msgid "" "Determines whether the bot will refuse\n" -" duplicate messages to be queued for delivery to the server. This is a\n" +" duplicated messages to be queued for delivery to the server. This is a\n" " safety mechanism put in place to prevent plugins from sending the same\n" " message multiple times; most of the time it doesn't matter, unless you're\n" " doing certain kinds of plugin hacking." @@ -1191,13 +1231,13 @@ msgstr "" " lo stesso messaggio; il più delle volte non ha importanza, tranne che non si\n" " facciano delle modifiche ai plugin." -#: ../src/conf.py:1025 +#: src/conf.py:1049 msgid "" "Determines how many seconds must elapse between\n" " JOINs sent to the server." msgstr "Determina quanti secondi debbano trascorrere tra un invio di JOIN e l'altro." -#: ../src/conf.py:1033 +#: src/conf.py:1057 msgid "" "Determines how many bytes the bot will\n" " 'peek' at when looking through a URL for a doctype or title or something\n" @@ -1208,7 +1248,7 @@ msgstr "" " il title o altri tag HTML simili in un URL. Abbandonerà la ricerca dopo aver\n" " letto questa quantità di byte, anche se non trova quel che stava cercando." -#: ../src/conf.py:1039 +#: src/conf.py:1063 msgid "" "Determines what proxy all HTTP requests should go\n" " through. The value should be of the form 'host:port'." @@ -1216,26 +1256,33 @@ msgstr "" "Determina tramite quale proxy debbano passare le richieste HTTP.\n" " Il valore deve essere nella forma \"host:porta\"." -#: ../src/conf.py:1059 +#: src/conf.py:1083 msgid "Determines what host the HTTP server will bind." msgstr "Determina a quale host si collegherà il server HTTP." -#: ../src/conf.py:1061 +#: src/conf.py:1085 msgid "" "Determines what port the HTTP server will\n" " bind." msgstr "Determina a quale porta si collegherà il server HTTP." -#: ../src/conf.py:1064 +#: src/conf.py:1088 msgid "" -"Defines whether the server will stay alive if\n" -" no plugin is using it. This also means that the server will start even\n" -" if it is not used." +"Determines whether the server will stay\n" +" alive if no plugin is using it. This also means that the server will\n" +" start even if it is not used." msgstr "" "Definisce se il server rimarrà in esecuzione se nessun plugin lo utilizza.\n" " Ciò significa che verrà avviato anche se non utilizzato." -#: ../src/conf.py:1073 +#: src/conf.py:1092 +msgid "" +"Determines the content of the robots.txt file,\n" +" served on the server to search engine." +msgstr "" +"Determina il contenuto del file robots.txt, fornito dal server al motore di ricerca." + +#: src/conf.py:1100 msgid "" "Determines whether the bot will ignore\n" " unregistered users by default. Of course, that'll make it particularly\n" @@ -1245,7 +1292,7 @@ msgstr "" "Determina se il bot ignorerà gli utenti non registrati in modo predefinito.\n" " Naturalmente renderà difficoltoso registrarsi o identificarsi, ma questo è un tuo problema." -#: ../src/conf.py:1080 +#: src/conf.py:1107 msgid "" "A string that is the external IP of the bot. If this is the\n" " empty string, the bot will attempt to find out its IP dynamically (though\n" @@ -1255,7 +1302,7 @@ msgstr "" " di risolvere il suo IP dinamicamente (sebbene a volte non funzioni, ecco quindi\n" " lo scopo di questa variabile)." -#: ../src/conf.py:1094 +#: src/conf.py:1121 msgid "" "Determines what the default timeout for socket\n" " objects will be. This means that *all* sockets will timeout when this many\n" @@ -1265,7 +1312,7 @@ msgstr "" "Determina il timeout predefinito per i socket. Ciò significa che *tutti* i socket\n" " scadranno dopo questo periodo (a meno che l'utore del codice ne abbia modificato il valore)." -#: ../src/conf.py:1100 +#: src/conf.py:1127 msgid "" "Determines what file the bot should write its PID\n" " (Process ID) to, so you can kill it more easily. If it's left unset (as is\n" @@ -1276,13 +1323,13 @@ msgstr "" " terminare più facilmente. Se non impostata, il PID non verrà scritto in nessun\n" " file. Perché le modifiche a questa variabile abbiano effetto è necessario un riavvio." -#: ../src/conf.py:1110 +#: src/conf.py:1137 msgid "" "Determines whether the bot will automatically\n" " thread all commands." msgstr "Determina se il bot userà i thread per tutti i comandi." -#: ../src/conf.py:1113 +#: src/conf.py:1140 msgid "" "Determines whether the bot will automatically\n" " flush all flushers *very* often. Useful for debugging when you don't know\n" @@ -1292,27 +1339,7 @@ msgstr "" " spesso. Utile per fare il debug quando non si sa cosa non funziona o quando\n" " si ritiene necessario tenerlo sotto controllo." -#: ../src/questions.py:60 -msgid "Sorry, that response was not an option." -msgstr "Spiacente, questa risposta non è un'opzione." - -#: ../src/questions.py:106 -msgid "Sorry, you must enter a value." -msgstr "Spiacente, devi inserire un valore." - -#: ../src/questions.py:126 -msgid "Enter password: " -msgstr "Inserire la password: " - -#: ../src/questions.py:128 -msgid "Re-enter password: " -msgstr "Inserire nuovamente la password: " - -#: ../src/questions.py:141 -msgid "Passwords don't match." -msgstr "Le password non corrispondono." - -#: ../src/httpserver.py:129 +#: src/httpserver.py:131 msgid "" "\n" " This is a default response of the Supybot HTTP server. If you see this\n" @@ -1324,7 +1351,7 @@ msgstr "" " questo messaggio significa probabilmente che stai sviluppando un plugin e non\n" " hai sovrascritto questo messaggio o definito un gestore per questa query." -#: ../src/httpserver.py:150 +#: src/httpserver.py:152 msgid "" "\n" " I am a pretty clever IRC bot, but I suck at serving Web pages, particulary\n" @@ -1337,19 +1364,42 @@ msgstr "" " web, in particolare se non cosa servire. Quel che sto cercando di dirti è che hai\n" " appena causato un \"404 Not Found\" e non sono addestrato per aiutarti in questa circostanza." -#: ../src/httpserver.py:167 +#: src/httpserver.py:169 msgid "Request not handled." msgstr "Richiesta non gestita." -#: ../src/httpserver.py:171 +#: src/httpserver.py:173 msgid "Supybot Web server index" msgstr "Indice del server web di Supybot" -#: ../src/httpserver.py:174 +#: src/httpserver.py:176 msgid "Here is a list of the plugins that have a Web interface:" msgstr "Ecco un elenco dei plugin che hanno un'interfaccia web:" -#: ../src/httpserver.py:183 +#: src/httpserver.py:185 msgid "No plugins available." msgstr "Nessun plugin disponibile." +#: src/httpserver.py:199 +msgid "Request not handled" +msgstr "Richiesta non gestita" + +#: src/questions.py:60 +msgid "Sorry, that response was not an option." +msgstr "Spiacente, questa risposta non è un'opzione." + +#: src/questions.py:106 +msgid "Sorry, you must enter a value." +msgstr "Spiacente, devi inserire un valore." + +#: src/questions.py:126 +msgid "Enter password: " +msgstr "Inserire la password: " + +#: src/questions.py:128 +msgid "Re-enter password: " +msgstr "Inserire nuovamente la password: " + +#: src/questions.py:141 +msgid "Passwords don't match." +msgstr "Le password non corrispondono." diff --git a/locale/messages.pot b/locale/messages.pot index c881f3581..56d840760 100644 --- a/locale/messages.pot +++ b/locale/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-06-25 14:17+CEST\n" +"POT-Creation-Date: 2012-04-23 19:24+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,198 +15,212 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: ../src/callbacks.py:184 +#: src/callbacks.py:184 msgid "Error: " msgstr "" -#: ../src/callbacks.py:198 +#: src/callbacks.py:198 msgid "Error: I tried to send you an empty message." msgstr "" -#: ../src/callbacks.py:288 +#: src/callbacks.py:288 msgid "Missing \"%s\". You may want to quote your arguments with double quotes in order to prevent extra brackets from being evaluated as nested commands." msgstr "" -#: ../src/callbacks.py:318 +#: src/callbacks.py:318 msgid "\"|\" with nothing preceding. I obviously can't do a pipe with nothing before the |." msgstr "" -#: ../src/callbacks.py:326 +#: src/callbacks.py:326 msgid "Spurious \"%s\". You may want to quote your arguments with double quotes in order to prevent extra brackets from being evaluated as nested commands." msgstr "" -#: ../src/callbacks.py:335 +#: src/callbacks.py:335 msgid "\"|\" with nothing following. I obviously can't do a pipe with nothing after the |." msgstr "" -#: ../src/callbacks.py:519 +#: src/callbacks.py:519 msgid "%s is not a valid %s." msgstr "" -#: ../src/callbacks.py:521 +#: src/callbacks.py:521 msgid "That's not a valid %s." msgstr "" -#: ../src/callbacks.py:599 +#: src/callbacks.py:599 msgid "You've attempted more nesting than is currently allowed on this bot." msgstr "" -#: ../src/callbacks.py:778 +#: src/callbacks.py:778 msgid "The command %q is available in the %L plugins. Please specify the plugin whose command you wish to call by using its name as a command before %q." msgstr "" -#: ../src/callbacks.py:863 ../src/callbacks.py:876 +#: src/callbacks.py:864 src/callbacks.py:877 msgid "(XX more messages)" msgstr "" -#: ../src/callbacks.py:908 +#: src/callbacks.py:909 msgid "more message" msgstr "" -#: ../src/callbacks.py:910 +#: src/callbacks.py:911 msgid "more messages" msgstr "" -#: ../src/callbacks.py:1010 +#: src/callbacks.py:1028 msgid "" "Determines what commands are currently disabled. Such\n" " commands will not appear in command lists, etc. They will appear not even\n" " to exist." msgstr "" -#: ../src/callbacks.py:1201 +#: src/callbacks.py:1224 msgid "Invalid arguments for %s." msgstr "" -#: ../src/callbacks.py:1227 +#: src/callbacks.py:1250 msgid "The %q command has no help." msgstr "" -#: ../src/commands.py:171 +#: src/commands.py:228 msgid "integer" msgstr "" -#: ../src/commands.py:182 +#: src/commands.py:239 msgid "non-integer value" msgstr "" -#: ../src/commands.py:193 +#: src/commands.py:250 msgid "floating point number" msgstr "" -#: ../src/commands.py:202 +#: src/commands.py:259 msgid "positive integer" msgstr "" -#: ../src/commands.py:206 +#: src/commands.py:263 msgid "non-negative integer" msgstr "" -#: ../src/commands.py:209 +#: src/commands.py:266 msgid "index" msgstr "" -#: ../src/commands.py:234 +#: src/commands.py:291 msgid "number of seconds" msgstr "" -#: ../src/commands.py:241 +#: src/commands.py:298 msgid "boolean" msgstr "" -#: ../src/commands.py:255 +#: src/commands.py:312 src/commands.py:320 src/commands.py:328 +#: src/commands.py:336 msgid "do that" msgstr "" -#: ../src/commands.py:259 +#: src/commands.py:316 src/commands.py:324 src/commands.py:332 +#: src/commands.py:340 msgid "I'm not even in %s." msgstr "" -#: ../src/commands.py:261 +#: src/commands.py:318 +msgid "I need to be voiced to %s." +msgstr "" + +#: src/commands.py:326 +msgid "I need to be halfopped to %s." +msgstr "" + +#: src/commands.py:334 msgid "I need to be opped to %s." msgstr "" -#: ../src/commands.py:278 +#: src/commands.py:344 +msgid "I need to be at least halfopped to %s." +msgstr "" + +#: src/commands.py:362 msgid "nick or hostmask" msgstr "" -#: ../src/commands.py:330 ../src/commands.py:333 +#: src/commands.py:414 src/commands.py:417 msgid "regular expression" msgstr "" -#: ../src/commands.py:344 +#: src/commands.py:428 msgid "That nick is too long for this server." msgstr "" -#: ../src/commands.py:393 ../src/commands.py:412 +#: src/commands.py:477 src/commands.py:496 msgid "I'm not in %s." msgstr "" -#: ../src/commands.py:397 +#: src/commands.py:481 msgid "This command may only be given in a channel that I am in." msgstr "" -#: ../src/commands.py:410 +#: src/commands.py:494 msgid "You must be in %s." msgstr "" -#: ../src/commands.py:414 +#: src/commands.py:498 msgid "channel" msgstr "" -#: ../src/commands.py:421 +#: src/commands.py:505 msgid "%s is not in %s." msgstr "" -#: ../src/commands.py:455 +#: src/commands.py:539 msgid "You must not give the empty string as an argument." msgstr "" -#: ../src/commands.py:472 +#: src/commands.py:556 msgid "This message must be sent in a channel." msgstr "" -#: ../src/commands.py:518 +#: src/commands.py:602 msgid "http url" msgstr "" -#: ../src/commands.py:525 +#: src/commands.py:609 msgid "command name" msgstr "" -#: ../src/commands.py:533 +#: src/commands.py:617 msgid "ip" msgstr "" -#: ../src/commands.py:539 +#: src/commands.py:623 msgid "letter" msgstr "" -#: ../src/commands.py:571 +#: src/commands.py:655 msgid "plugin" msgstr "" -#: ../src/commands.py:579 +#: src/commands.py:663 msgid "irc color" msgstr "" -#: ../src/conf.py:104 +#: src/conf.py:104 msgid "" "Determines whether this plugin is loaded\n" -" bydefault." +" by default." msgstr "" -#: ../src/conf.py:108 +#: src/conf.py:108 msgid "" "Determines whether this plugin is\n" " publicly visible." msgstr "" -#: ../src/conf.py:194 +#: src/conf.py:202 msgid "Determines the bot's default nick." msgstr "" -#: ../src/conf.py:197 +#: src/conf.py:205 msgid "" "Determines what alternative\n" " nicks will be used if the primary nick (supybot.nick) isn't available. A\n" @@ -215,54 +229,72 @@ msgid "" " appropriately until an unused nick is found." msgstr "" -#: ../src/conf.py:204 +#: src/conf.py:212 msgid "" "Determines the bot's ident string, if the server\n" " doesn't provide one by default." msgstr "" -#: ../src/conf.py:215 +#: src/conf.py:223 msgid "" "Determines the user the bot sends to the server.\n" " A standard user using the current version of the bot will be generated if\n" " this is left empty." msgstr "" -#: ../src/conf.py:223 +#: src/conf.py:231 msgid "Determines what networks the bot will connect to." msgstr "" -#: ../src/conf.py:264 +#: src/conf.py:273 msgid "" "Determines what password will be used on %s. Yes, we know that\n" " technically passwords are server-specific and not network-specific,\n" " but this is the best we can do right now." msgstr "" -#: ../src/conf.py:268 +#: src/conf.py:277 msgid "" "Determines what servers the bot will connect to for %s. Each will\n" " be tried in order, wrapping back to the first when the cycle is\n" " completed." msgstr "" -#: ../src/conf.py:272 +#: src/conf.py:281 msgid "Determines what channels the bot will join only on %s." msgstr "" -#: ../src/conf.py:275 +#: src/conf.py:284 msgid "" "Determines whether the bot will attempt to connect with SSL\n" " sockets to %s." msgstr "" -#: ../src/conf.py:278 +#: src/conf.py:287 msgid "" "Determines what key (if any) will be used to join the\n" " channel." msgstr "" -#: ../src/conf.py:298 +#: src/conf.py:289 +msgid "" +"Determines\n" +" what nick the bot will use on this network. If empty, defaults to\n" +" supybot.nick." +msgstr "" + +#: src/conf.py:294 +msgid "" +"Determines what SASL username will be used on %s. This should\n" +" be the bot's account name. Due to the way SASL works, you can't use\n" +" any grouped nick." +msgstr "" + +#: src/conf.py:298 +msgid "Determines what SASL password will be used on %s." +msgstr "" + +#: src/conf.py:318 msgid "" "Determines how timestamps\n" " printed for human reading should be formatted. Refer to the Python\n" @@ -270,40 +302,40 @@ msgid "" " time formats." msgstr "" -#: ../src/conf.py:312 +#: src/conf.py:332 msgid "" "Determines whether elapsed times will be given\n" " as \"1 day, 2 hours, 3 minutes, and 15 seconds\" or as \"1d 2h 3m 15s\"." msgstr "" -#: ../src/conf.py:322 +#: src/conf.py:342 msgid "" "Determines the absolute maximum length of\n" " the bot's reply -- no reply will be passed through the bot with a length\n" " greater than this." msgstr "" -#: ../src/conf.py:327 +#: src/conf.py:347 msgid "" "Determines whether the bot will break up long\n" " messages into chunks and allow users to use the 'more' command to get the\n" " remaining chunks." msgstr "" -#: ../src/conf.py:332 +#: src/conf.py:352 msgid "" "Determines what the maximum number of\n" " chunks (for use with the 'more' command) will be." msgstr "" -#: ../src/conf.py:336 +#: src/conf.py:356 msgid "" "Determines how long individual chunks\n" " will be. If set to 0, uses our super-tweaked,\n" " get-the-most-out-of-an-individual-message default." msgstr "" -#: ../src/conf.py:341 +#: src/conf.py:361 msgid "" "Determines how many mores will be sent\n" " instantly (i.e., without the use of the more command, immediately when\n" @@ -311,7 +343,7 @@ msgid "" " required for all but the first chunk." msgstr "" -#: ../src/conf.py:347 +#: src/conf.py:367 msgid "" "Determines whether the bot will send\n" " multi-message replies in a single message or in multiple messages. For\n" @@ -319,7 +351,7 @@ msgid "" " everything in a single message, using mores if necessary." msgstr "" -#: ../src/conf.py:353 +#: src/conf.py:373 msgid "" "Determines whether the bot will reply with an\n" " error message when it is addressed but not given a valid command. If this\n" @@ -327,14 +359,14 @@ msgid "" " override the normal behavior." msgstr "" -#: ../src/conf.py:360 +#: src/conf.py:380 msgid "" "Determines whether error messages that result\n" " from bugs in the bot will show a detailed error message (the uncaught\n" " exception) or a generic error message." msgstr "" -#: ../src/conf.py:364 +#: src/conf.py:384 msgid "" "Determines whether the bot will send error\n" " messages to users in private. You might want to do this in order to keep\n" @@ -342,7 +374,7 @@ msgid "" " supybot.reply.error.withNotice." msgstr "" -#: ../src/conf.py:369 +#: src/conf.py:389 msgid "" "Determines whether the bot will send error\n" " messages to users via NOTICE instead of PRIVMSG. You might want to do this\n" @@ -352,7 +384,7 @@ msgid "" " in most IRC clients." msgstr "" -#: ../src/conf.py:376 +#: src/conf.py:396 msgid "" "Determines whether the bot will send an error\n" " message to users who attempt to call a command for which they do not have\n" @@ -361,21 +393,21 @@ msgid "" " running certain commands." msgstr "" -#: ../src/conf.py:383 +#: src/conf.py:403 msgid "" "Determines whether the bot will reply\n" " privatelywhen replying in a channel, rather than replying to the whole\n" " channel." msgstr "" -#: ../src/conf.py:388 +#: src/conf.py:408 msgid "" "Determines whether the bot will reply with a\n" " notice when replying in a channel, rather than replying with a privmsg as\n" " normal." msgstr "" -#: ../src/conf.py:394 +#: src/conf.py:414 msgid "" "Determines whether the bot will reply with a\n" " notice when it is sending a private message, in order not to open a /query\n" @@ -383,13 +415,13 @@ msgid "" " configuration variable reply.withNoticeWhenPrivate." msgstr "" -#: ../src/conf.py:400 +#: src/conf.py:420 msgid "" "Determines whether the bot will always prefix\n" " theuser's nick to its reply to that user's command." msgstr "" -#: ../src/conf.py:404 +#: src/conf.py:424 msgid "" "Determines whether the bot should attempt to\n" " reply to all messages even if they don't address it (either via its nick\n" @@ -397,7 +429,7 @@ msgid "" " to set supybot.reply.whenNotCommand to False." msgstr "" -#: ../src/conf.py:410 +#: src/conf.py:430 msgid "" "Determines whether the bot will allow you to\n" " send channel-related commands outside of that channel. Sometimes people\n" @@ -406,7 +438,7 @@ msgid "" " itself." msgstr "" -#: ../src/conf.py:417 +#: src/conf.py:437 msgid "" "Determines whether the bot will unidentify\n" " someone when that person changes his or her nick. Setting this to True\n" @@ -414,15 +446,15 @@ msgid "" " little greater security." msgstr "" -#: ../src/conf.py:423 +#: src/conf.py:443 msgid "" "Determines whether the bot will always join a\n" " channel when it's invited. If this value is False, the bot will only join\n" " a channel if the user inviting it has the 'admin' capability (or if it's\n" -" explicitly told to join the channel using the Admin.join command)" +" explicitly told to join the channel using the Admin.join command)." msgstr "" -#: ../src/conf.py:429 +#: src/conf.py:449 msgid "" "Supybot normally replies with the full help\n" " whenever a user misuses a command. If this value is set to True, the bot\n" @@ -430,7 +462,7 @@ msgid "" " help) rather than the full help." msgstr "" -#: ../src/conf.py:443 +#: src/conf.py:463 msgid "" "Determines what prefix characters the bot will\n" " reply to. A prefix character is a single character that the bot will use\n" @@ -441,7 +473,7 @@ msgid "" " assume it is being addressed." msgstr "" -#: ../src/conf.py:452 +#: src/conf.py:472 msgid "" "Determines what strings the\n" " bot will reply to when they are at the beginning of the message. Whereas\n" @@ -451,89 +483,89 @@ msgid "" " prefixed by either @@ or ??." msgstr "" -#: ../src/conf.py:459 +#: src/conf.py:479 msgid "" "Determines whether the bot will reply when\n" " people address it by its nick, rather than with a prefix character." msgstr "" -#: ../src/conf.py:462 +#: src/conf.py:482 msgid "" "Determines whether the bot will reply when\n" " people address it by its nick at the end of the message, rather than at\n" " the beginning." msgstr "" -#: ../src/conf.py:466 +#: src/conf.py:486 msgid "" "Determines what extra nicks\n" " the bot will always respond to when addressed by, even if its current nick\n" " is something else." msgstr "" -#: ../src/conf.py:476 +#: src/conf.py:496 msgid "The operation succeeded." msgstr "" -#: ../src/conf.py:477 +#: src/conf.py:497 msgid "" "Determines what message the bot replies with when a command succeeded.\n" " If this configuration variable is empty, no success message will be\n" " sent." msgstr "" -#: ../src/conf.py:482 +#: src/conf.py:502 msgid "" "An error has occurred and has been logged.\n" " Please contact this bot's administrator for more information." msgstr "" -#: ../src/conf.py:483 +#: src/conf.py:503 msgid "" "\n" " Determines what error message the bot gives when it wants to be\n" " ambiguous." msgstr "" -#: ../src/conf.py:488 +#: src/conf.py:508 msgid "" "An error has occurred and has been logged.\n" " Check the logs for more informations." msgstr "" -#: ../src/conf.py:489 +#: src/conf.py:509 msgid "" "Determines what error\n" " message the bot gives to the owner when it wants to be ambiguous." msgstr "" -#: ../src/conf.py:493 +#: src/conf.py:513 msgid "" "Your hostmask doesn't match or your password\n" " is wrong." msgstr "" -#: ../src/conf.py:494 +#: src/conf.py:514 msgid "" "Determines what message the bot replies with when\n" -" someonetries to use a command that requires being identified or having a\n" +" someone tries to use a command that requires being identified or having a\n" " password and neither credential is correct." msgstr "" -#: ../src/conf.py:500 +#: src/conf.py:520 msgid "" "I can't find %s in my user\n" " database. If you didn't give a user name, then I might not know what your\n" " user is, and you'll need to identify before this command might work." msgstr "" -#: ../src/conf.py:503 +#: src/conf.py:523 msgid "" "Determines what error message the bot replies with when someone tries\n" " to accessing some information on a user the bot doesn't know about." msgstr "" -#: ../src/conf.py:507 +#: src/conf.py:527 msgid "" "You must be registered to use this command.\n" " If you are already registered, you must either identify (using the identify\n" @@ -541,14 +573,14 @@ msgid "" " \"hostmask add\" command)." msgstr "" -#: ../src/conf.py:510 +#: src/conf.py:530 msgid "" "Determines what error message the bot\n" " replies with when someone tries to do something that requires them to be\n" " registered but they're not currently recognized." msgstr "" -#: ../src/conf.py:515 +#: src/conf.py:535 msgid "" "You don't have the %s capability. If you\n" " think that you should have this capability, be sure that you are identified\n" @@ -556,14 +588,14 @@ msgid "" " identified." msgstr "" -#: ../src/conf.py:518 +#: src/conf.py:538 msgid "" "Determines what error message is given when the bot\n" " is telling someone they aren't cool enough to use the command they tried to\n" " use." msgstr "" -#: ../src/conf.py:523 +#: src/conf.py:543 msgid "" "You're missing some capability you need.\n" " This could be because you actually possess the anti-capability for the\n" @@ -575,7 +607,7 @@ msgid "" " what you want to do." msgstr "" -#: ../src/conf.py:531 +#: src/conf.py:551 msgid "" "Determines what generic error message is given when the bot is telling\n" " someone that they aren't cool enough to use the command they tried to use,\n" @@ -583,40 +615,40 @@ msgid "" " explicit capability for whatever reason." msgstr "" -#: ../src/conf.py:537 +#: src/conf.py:557 msgid "" "That operation cannot be done in a\n" " channel." msgstr "" -#: ../src/conf.py:538 +#: src/conf.py:558 msgid "" "Determines what error messages the bot sends to people\n" " who try to do things in a channel that really should be done in\n" " private." msgstr "" -#: ../src/conf.py:543 +#: src/conf.py:563 msgid "" "This may be a bug. If you think it is,\n" " please file a bug report at\n" -" ." +" ." msgstr "" -#: ../src/conf.py:546 +#: src/conf.py:566 msgid "" "Determines what message the bot sends when it thinks you've\n" " encountered a bug that the developers don't know about." msgstr "" -#: ../src/conf.py:553 +#: src/conf.py:573 msgid "" "A floating point number of seconds to throttle\n" " snarfed URLs, in order to prevent loops between two bots snarfing the same\n" " URLs and having the snarfed URL in the output of the snarf message." msgstr "" -#: ../src/conf.py:558 +#: src/conf.py:578 msgid "" "Determines the number of seconds\n" " between running the upkeep function that flushes (commits) open databases,\n" @@ -624,7 +656,7 @@ msgid "" " level." msgstr "" -#: ../src/conf.py:564 +#: src/conf.py:584 msgid "" "Determines whether the bot will periodically\n" " flush data and configuration files to disk. Generally, the only time\n" @@ -635,27 +667,27 @@ msgid "" " permanent, you must edit the registry yourself." msgstr "" -#: ../src/conf.py:589 +#: src/conf.py:609 msgid "" "Determines what characters are valid for quoting\n" " arguments to commands in order to prevent them from being tokenized.\n" " " msgstr "" -#: ../src/conf.py:596 +#: src/conf.py:616 msgid "" "Determines whether the bot will allow nested\n" " commands, which rule. You definitely should keep this on." msgstr "" -#: ../src/conf.py:599 +#: src/conf.py:619 msgid "" "Determines what the maximum number of\n" " nested commands will be; users will receive an error if they attempt\n" " commands more nested than this." msgstr "" -#: ../src/conf.py:607 +#: src/conf.py:627 msgid "" "Supybot allows you to specify what brackets are\n" " used for your nested commands. Valid sets of brackets include [], <>, and\n" @@ -665,21 +697,21 @@ msgid "" " not be allowed in this channel." msgstr "" -#: ../src/conf.py:614 +#: src/conf.py:634 msgid "" "Supybot allows nested commands. Enabling this\n" " option will allow nested commands with a syntax similar to UNIX pipes, for\n" " example: 'bot: foo | bar'." msgstr "" -#: ../src/conf.py:619 +#: src/conf.py:639 msgid "" "Determines what commands have default\n" " plugins set, and which plugins are set to be the default for each of those\n" " commands." msgstr "" -#: ../src/conf.py:625 +#: src/conf.py:645 msgid "" "Determines what plugins automatically get precedence over all\n" " other plugins when selecting a default plugin for a command. By\n" @@ -689,13 +721,13 @@ msgid "" " case-sensitive." msgstr "" -#: ../src/conf.py:640 +#: src/conf.py:660 msgid "" "Determines whether the bot will defend itself\n" " against command-flooding." msgstr "" -#: ../src/conf.py:643 +#: src/conf.py:663 msgid "" "Determines how many commands users are\n" " allowed per minute. If a user sends more than this many commands in any\n" @@ -703,19 +735,19 @@ msgid "" " supybot.abuse.flood.command.punishment seconds." msgstr "" -#: ../src/conf.py:648 +#: src/conf.py:668 msgid "" "Determines how many seconds the bot\n" " will ignore users who flood it with commands." msgstr "" -#: ../src/conf.py:652 +#: src/conf.py:672 msgid "" "Determines whether the bot will defend itself\n" " against invalid command-flooding." msgstr "" -#: ../src/conf.py:655 +#: src/conf.py:675 msgid "" "Determines how many invalid commands users\n" " are allowed per minute. If a user sends more than this many invalid\n" @@ -726,28 +758,28 @@ msgid "" " commands than for them to flood with valid commands." msgstr "" -#: ../src/conf.py:663 +#: src/conf.py:683 msgid "" "Determines how many seconds the bot\n" " will ignore users who flood it with invalid commands. Typically, this\n" " value is higher than supybot.abuse.flood.command.punishment, since it's far\n" -" less likely (and far more annoying) for users to flood witih invalid\n" +" less likely (and far more annoying) for users to flood with invalid\n" " commands than for them to flood with valid commands." msgstr "" -#: ../src/conf.py:669 +#: src/conf.py:689 msgid "" "Determines whether the bot will notify people\n" " that they're being ignored for invalid command flooding." msgstr "" -#: ../src/conf.py:678 +#: src/conf.py:698 msgid "" "Determines the default length of time a\n" " driver should block waiting for input." msgstr "" -#: ../src/conf.py:685 +#: src/conf.py:705 msgid "" "Determines what driver module the bot\n" " will use. Socket, a simple driver based on timeout sockets, is used by\n" @@ -755,36 +787,37 @@ msgid "" " and if you've got Twisted installed, is probably your best bet." msgstr "" -#: ../src/conf.py:691 +#: src/conf.py:711 msgid "" "Determines the maximum time the bot will\n" " wait before attempting to reconnect to an IRC server. The bot may, of\n" " course, reconnect earlier if possible." msgstr "" -#: ../src/conf.py:740 +#: src/conf.py:760 msgid "" "Determines what directory configuration data is\n" " put into." msgstr "" -#: ../src/conf.py:743 +#: src/conf.py:763 msgid "Determines what directory data is put into." msgstr "" -#: ../src/conf.py:745 +#: src/conf.py:765 msgid "" "Determines what directory backup data is put\n" -" into." +" into. Set it to /dev/null to disable backup (it is a special value,\n" +" so it also works on Windows and systems without /dev/null)." msgstr "" -#: ../src/conf.py:748 +#: src/conf.py:769 msgid "" "Determines what directory temporary files\n" " are put into." msgstr "" -#: ../src/conf.py:755 +#: src/conf.py:776 msgid "" "Determines what directories\n" " the bot will look for plugins in. Accepts a comma-separated list of\n" @@ -794,13 +827,13 @@ msgid "" " [config supybot.directories.plugins], newPluginDirectory'." msgstr "" -#: ../src/conf.py:763 +#: src/conf.py:784 msgid "" "Determines what plugins will\n" " be loaded." msgstr "" -#: ../src/conf.py:766 +#: src/conf.py:787 msgid "" "Determines whether the bot will always load\n" " important plugins (Admin, Channel, Config, Misc, Owner, and User)\n" @@ -810,28 +843,28 @@ msgid "" " enough to change the value of this variable appropriately :)" msgstr "" -#: ../src/conf.py:793 +#: src/conf.py:814 msgid "" "Determines what databases are available for use. If this\n" " value is not configured (that is, if its value is empty) then sane defaults\n" " will be provided." msgstr "" -#: ../src/conf.py:799 +#: src/conf.py:820 msgid "" "Determines what filename will be used\n" " for the users database. This file will go into the directory specified by\n" " the supybot.directories.conf variable." msgstr "" -#: ../src/conf.py:803 +#: src/conf.py:824 msgid "" "Determines how long it takes identification to\n" " time out. If the value is less than or equal to zero, identification never\n" " times out." msgstr "" -#: ../src/conf.py:807 +#: src/conf.py:828 msgid "" "Determines whether the bot will allow users to\n" " unregister their users. This can wreak havoc with already-existing\n" @@ -841,21 +874,21 @@ msgid "" " " msgstr "" -#: ../src/conf.py:816 +#: src/conf.py:837 msgid "" "Determines what filename will be used\n" " for the ignores database. This file will go into the directory specified\n" " by the supybot.directories.conf variable." msgstr "" -#: ../src/conf.py:822 +#: src/conf.py:843 msgid "" "Determines what filename will be used\n" " for the channels database. This file will go into the directory specified\n" " by the supybot.directories.conf variable." msgstr "" -#: ../src/conf.py:852 +#: src/conf.py:873 msgid "" "Determines whether database-based plugins that\n" " can be channel-specific will be so. This can be overridden by individual\n" @@ -866,7 +899,7 @@ msgid "" " to share a certain channel's databases globally." msgstr "" -#: ../src/conf.py:860 +#: src/conf.py:881 msgid "" "Determines what channel global\n" " (non-channel-specific) databases will be considered a part of. This is\n" @@ -878,7 +911,7 @@ msgid "" " for your channel." msgstr "" -#: ../src/conf.py:869 +#: src/conf.py:890 msgid "" "Determines whether another channel's global\n" " (non-channel-specific) databases will be allowed to link to this channel's\n" @@ -887,13 +920,13 @@ msgid "" " " msgstr "" -#: ../src/conf.py:886 +#: src/conf.py:907 msgid "" "Determines\n" " whether CDB databases will be allowed as a database implementation." msgstr "" -#: ../src/conf.py:889 +#: src/conf.py:910 msgid "" "Determines how often CDB databases will have\n" " their modifications flushed to disk. When the number of modified records\n" @@ -901,13 +934,13 @@ msgid "" " will be entirely flushed to disk." msgstr "" -#: ../src/conf.py:974 +#: src/conf.py:998 msgid "" "Determines what will be used as the\n" " default banmask style." msgstr "" -#: ../src/conf.py:978 +#: src/conf.py:1002 msgid "" "Determines whether the bot will strictly follow\n" " the RFC; currently this only affects what strings are considered to be\n" @@ -916,7 +949,7 @@ msgid "" " False." msgstr "" -#: ../src/conf.py:985 +#: src/conf.py:1009 msgid "" "Determines what user modes the bot will request\n" " from the server when it first connects. Many people might choose +i; some\n" @@ -924,27 +957,27 @@ msgid "" " that you should be given a fake host." msgstr "" -#: ../src/conf.py:991 +#: src/conf.py:1015 msgid "" "Determines what vhost the bot will bind to before\n" " connecting to the IRC server." msgstr "" -#: ../src/conf.py:995 +#: src/conf.py:1019 msgid "" "Determines how many old messages the bot will\n" " keep around in its history. Changing this variable will not take effect\n" " until the bot is restarted." msgstr "" -#: ../src/conf.py:1000 +#: src/conf.py:1024 msgid "" "A floating point number of seconds to throttle\n" " queued messages -- that is, messages will not be sent faster than once per\n" " throttleTime seconds." msgstr "" -#: ../src/conf.py:1005 +#: src/conf.py:1029 msgid "" "Determines whether the bot will send PINGs to\n" " the server it's connected to in order to keep the connection alive and\n" @@ -953,28 +986,28 @@ msgid "" " some strange server issues." msgstr "" -#: ../src/conf.py:1012 +#: src/conf.py:1036 msgid "" "Determines the number of seconds between sending\n" " pings to the server, if pings are being sent to the server." msgstr "" -#: ../src/conf.py:1017 +#: src/conf.py:1041 msgid "" "Determines whether the bot will refuse\n" -" duplicate messages to be queued for delivery to the server. This is a\n" +" duplicated messages to be queued for delivery to the server. This is a\n" " safety mechanism put in place to prevent plugins from sending the same\n" " message multiple times; most of the time it doesn't matter, unless you're\n" " doing certain kinds of plugin hacking." msgstr "" -#: ../src/conf.py:1025 +#: src/conf.py:1049 msgid "" "Determines how many seconds must elapse between\n" " JOINs sent to the server." msgstr "" -#: ../src/conf.py:1033 +#: src/conf.py:1057 msgid "" "Determines how many bytes the bot will\n" " 'peek' at when looking through a URL for a doctype or title or something\n" @@ -982,30 +1015,36 @@ msgid "" " found what it was looking for." msgstr "" -#: ../src/conf.py:1039 +#: src/conf.py:1063 msgid "" "Determines what proxy all HTTP requests should go\n" " through. The value should be of the form 'host:port'." msgstr "" -#: ../src/conf.py:1059 +#: src/conf.py:1083 msgid "Determines what host the HTTP server will bind." msgstr "" -#: ../src/conf.py:1061 +#: src/conf.py:1085 msgid "" "Determines what port the HTTP server will\n" " bind." msgstr "" -#: ../src/conf.py:1064 +#: src/conf.py:1088 msgid "" -"Defines whether the server will stay alive if\n" -" no plugin is using it. This also means that the server will start even\n" -" if it is not used." +"Determines whether the server will stay\n" +" alive if no plugin is using it. This also means that the server will\n" +" start even if it is not used." msgstr "" -#: ../src/conf.py:1073 +#: src/conf.py:1092 +msgid "" +"Determines the content of the robots.txt file,\n" +" served on the server to search engine." +msgstr "" + +#: src/conf.py:1100 msgid "" "Determines whether the bot will ignore\n" " unregistered users by default. Of course, that'll make it particularly\n" @@ -1013,14 +1052,14 @@ msgid "" " problem to solve." msgstr "" -#: ../src/conf.py:1080 +#: src/conf.py:1107 msgid "" "A string that is the external IP of the bot. If this is the\n" " empty string, the bot will attempt to find out its IP dynamically (though\n" " sometimes that doesn't work, hence this variable)." msgstr "" -#: ../src/conf.py:1094 +#: src/conf.py:1121 msgid "" "Determines what the default timeout for socket\n" " objects will be. This means that *all* sockets will timeout when this many\n" @@ -1028,7 +1067,7 @@ msgid "" " that uses the sockets)." msgstr "" -#: ../src/conf.py:1100 +#: src/conf.py:1127 msgid "" "Determines what file the bot should write its PID\n" " (Process ID) to, so you can kill it more easily. If it's left unset (as is\n" @@ -1036,48 +1075,28 @@ msgid "" " changes to this variable to take effect." msgstr "" -#: ../src/conf.py:1110 +#: src/conf.py:1137 msgid "" "Determines whether the bot will automatically\n" " thread all commands." msgstr "" -#: ../src/conf.py:1113 +#: src/conf.py:1140 msgid "" "Determines whether the bot will automatically\n" " flush all flushers *very* often. Useful for debugging when you don't know\n" " what's breaking or when, but think that it might be logged." msgstr "" -#: ../src/questions.py:60 -msgid "Sorry, that response was not an option." -msgstr "" - -#: ../src/questions.py:106 -msgid "Sorry, you must enter a value." -msgstr "" - -#: ../src/questions.py:126 -msgid "Enter password: " -msgstr "" - -#: ../src/questions.py:128 -msgid "Re-enter password: " -msgstr "" - -#: ../src/questions.py:141 -msgid "Passwords don't match." -msgstr "" - -#: ../src/utils/httpserver.py:129 +#: src/httpserver.py:131 msgid "" "\n" " This is a default response of the Supybot HTTP server. If you see this\n" -" message, it probably means you are developping a plugin, and you have\n" +" message, it probably means you are developing a plugin, and you have\n" " neither overriden this message or defined an handler for this query." msgstr "" -#: ../src/utils/httpserver.py:150 +#: src/httpserver.py:152 msgid "" "\n" " I am a pretty clever IRC bot, but I suck at serving Web pages, particulary\n" @@ -1086,19 +1105,43 @@ msgid "" " trained to help you in such a case." msgstr "" -#: ../src/utils/httpserver.py:167 +#: src/httpserver.py:169 msgid "Request not handled." msgstr "" -#: ../src/utils/httpserver.py:171 +#: src/httpserver.py:173 msgid "Supybot Web server index" msgstr "" -#: ../src/utils/httpserver.py:174 +#: src/httpserver.py:176 msgid "Here is a list of the plugins that have a Web interface:" msgstr "" -#: ../src/utils/httpserver.py:183 +#: src/httpserver.py:185 msgid "No plugins available." msgstr "" +#: src/httpserver.py:199 +msgid "Request not handled" +msgstr "" + +#: src/questions.py:60 +msgid "Sorry, that response was not an option." +msgstr "" + +#: src/questions.py:106 +msgid "Sorry, you must enter a value." +msgstr "" + +#: src/questions.py:126 +msgid "Enter password: " +msgstr "" + +#: src/questions.py:128 +msgid "Re-enter password: " +msgstr "" + +#: src/questions.py:141 +msgid "Passwords don't match." +msgstr "" + diff --git a/plugins/Admin/locale/de.po b/plugins/Admin/locale/de.po new file mode 100644 index 000000000..e2476d5d3 --- /dev/null +++ b/plugins/Admin/locale/de.po @@ -0,0 +1,213 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-10-30 19:20+CET\n" +"PO-Revision-Date: 2011-10-31 13:37+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: Germany\n" + +#: plugin.py:54 +msgid "Nick/channel temporarily unavailable." +msgstr "Nick/Kanal temporär nicht verfügbar." + +#: plugin.py:72 +msgid "Cannot join %s, it's full." +msgstr "Kann %s nicht beitreten, der Kanal ist voll." + +#: plugin.py:80 +msgid "Cannot join %s, I was not invited." +msgstr "Kann %s nicht beitreten, ich wurde nicht eingeladen." + +#: plugin.py:88 +msgid "Cannot join %s, it's banned me." +msgstr "Ich kann %s nicht betreten, ich bin gebannt." + +#: plugin.py:96 +msgid "Cannot join %s, my keyword was wrong." +msgstr "Ich kann %s nicht beitreten, mein Schlüsselwort ist falsch." + +#: plugin.py:104 +msgid "Cannot join %s, I'm not identified with NickServ." +msgstr "Ich kann %s nicht betreten, ich bin nicht mit NickServ identifiziert." + +#: plugin.py:134 +msgid "" +" []\n" +"\n" +" Tell the bot to join the given channel. If is given, it is used\n" +" when attempting to join the channel.\n" +" " +msgstr "" +" []\n" +"\n" +"Sagt dem Bot dem angegeben Kanal beizutreten. Falls angegeben wird, wird dieser benutzt um zu versuchen den Kanal zu betreten." + +#: plugin.py:147 +msgid "I'm already too close to maximum number of channels for this network." +msgstr "Ich bin schon zu nah an den maximalen Kanälen für dieses Netzwerk." + +#: plugin.py:156 +msgid "" +"takes no arguments\n" +"\n" +" Returns the channels the bot is on. Must be given in private, in order\n" +" to protect the secrecy of secret channels.\n" +" " +msgstr "" +"hat keine Argumenten\n" +"\n" +"Gibt die Kanäle aus in denen der Bot sich befindet. Dieser Befehl muss privat gegeben werden, um das Geheimnis der geheimen Kanale zu wahren." + +#: plugin.py:166 +msgid "I'm not currently in any channels." +msgstr "Momentan bin ich in keinen Kanälen." + +#: plugin.py:172 +msgid "My connection is restricted, I can't change nicks." +msgstr "Meine Verbindung ist begrenzt, I kann meinen Nick nicht wechseln." + +#: plugin.py:179 +msgid "Someone else is already using that nick." +msgstr "Jemand anderes benutzt diesen Nick schon." + +#: plugin.py:186 +msgid "That nick is currently banned." +msgstr "Dieser Nick ist momentan gebannt." + +#: plugin.py:193 +msgid "I can't change nicks, the server said %q." +msgstr "Ich kann meinen Nick nicht ändern, der Server sagte %q." + +#: plugin.py:207 +msgid "" +"[]\n" +"\n" +" Changes the bot's nick to . If no nick is given, returns the\n" +" bot's current nick.\n" +" " +msgstr "" +"[]\n" +"\n" +"Ändert den Nick des Bots zu . Falls nicht angegeben wird, wird der momentane Botnick zurückgegeben." + +#: plugin.py:222 +msgid "" +"[] []\n" +"\n" +" Tells the bot to part the list of channels you give it. is\n" +" only necessary if you want the bot to part a channel other than the\n" +" current channel. If is specified, use it as the part\n" +" message.\n" +" " +msgstr "" +"[] []\n" +"\n" +"Sagt dem Bot die Liste von angebenen Kanälen zu verlassen. ist nur notwendig, falls der Bot einen anderen Kanal als den Momentanen verlassen soll. Falls angegeben wird, wird dies als Verlassensnachricht verwendet." + +#: plugin.py:240 +msgid "I'm not in %s." +msgstr "Ich bin nicht in %s." + +#: plugin.py:252 +msgid "" +" \n" +"\n" +" Gives the user specified by (or the user to whom \n" +" currently maps) the specified capability \n" +" " +msgstr "" +" \n" +"\n" +"Gibt dem angebenen Benutzer (oder dem auf den die zutrifft) die angegebene Fähigkeit." + +#: plugin.py:272 +msgid "The \"owner\" capability can't be added in the bot. Use the supybot-adduser program (or edit the users.conf file yourself) to add an owner capability." +msgstr "Die \"owner\" Fähigkeit kann nicht über den Bot hinzugefügt werden. Benutze das supybot-adduser Programm (oder verändere users.conf per Hand) um die Besitzer Fähigkeit hinzuzufügen." + +#: plugin.py:283 +msgid "You can't add capabilities you don't have." +msgstr "Du kannst keine Fähigkeiten hinzufügen, die du nicht hast." + +#: plugin.py:288 +msgid "" +" \n" +"\n" +" Takes from the user specified by (or the user to whom\n" +" currently maps) the specified capability \n" +" " +msgstr "" +" \n" +"\n" +"Nimmt dem Benutzer der durch (oder dem Benutzer auf den momentan zeigt) angeben wird die angegeben Fähigkeit ." + +#: plugin.py:300 +msgid "That user doesn't have that capability." +msgstr "Der Benutzer hat diese Fähigkeit nicht." + +#: plugin.py:302 +msgid "You can't remove capabilities you don't have." +msgstr "Du kannst keine Fähigkeiten entfernen, die du nicht hast." + +#: plugin.py:310 +msgid "" +" []\n" +"\n" +" This will set a persistent ignore on or the hostmask\n" +" currently associated with . is an optional argument\n" +" specifying when (in \"seconds from now\") the ignore will expire; if\n" +" it isn't given, the ignore will never automatically expire.\n" +" " +msgstr "" +" []\n" +"\n" +"Es wird eine beständige Ignorierung auf oder auf die Hostmaske die momentan mit verbunden wird gesetzt. ist optional, das legt fest wann die Ignorierung abläuft;falls dies nicht angegeben wird, wird die Ignorierung niemals ablaufen." + +#: plugin.py:323 +msgid "" +"\n" +"\n" +" This will remove the persistent ignore on or the\n" +" hostmask currently associated with .\n" +" " +msgstr "" +"\n" +"\n" +"Wird die beständige Ignorierung, von oder der Hostmaske die momentan mit dem verbunden wird, aufheben." + +#: plugin.py:332 +msgid "%s wasn't in the ignores database." +msgstr "%s war nicht in der Datenbank für Ignorierungen." + +#: plugin.py:337 +msgid "" +"takes no arguments\n" +"\n" +" Lists the hostmasks that the bot is ignoring.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Listet die Hostmasken auf, die der Bot ignoriert." + +#: plugin.py:345 +msgid "I'm not currently globally ignoring anyone." +msgstr "Momentan ignoriere ich niemanden global." + +#: plugin.py:351 +msgid "" +"takes no arguments\n" +"\n" +" Clears the current send queue for this network.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Leert die momentane Sendenwarteschlange für dieses Netzwerk." + diff --git a/plugins/Admin/locale/fi.po b/plugins/Admin/locale/fi.po index 0dcd5759c..9b0d23a6b 100644 --- a/plugins/Admin/locale/fi.po +++ b/plugins/Admin/locale/fi.po @@ -5,12 +5,13 @@ msgid "" msgstr "" "Project-Id-Version: Finnish translation of Admin plugin in Supybot\n" -"POT-Creation-Date: 2010-10-16 10:43+CEST\n" -"PO-Revision-Date: 2011-08-13 23:31+0200\n" +"POT-Creation-Date: 2011-10-30 19:20+CET\n" +"PO-Revision-Date: 2011-10-31 16:25+0200\n" "Last-Translator: Mika Suomalainen \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "X-Poedit-Language: Finnish\n" @@ -37,7 +38,7 @@ msgid "Cannot join %s, my keyword was wrong." msgstr "En voi liittyä kanavalle %s, minun avainsana oli väärä." #: plugin.py:104 -msgid "Cannot join %s, I'm not identified with the NickServ." +msgid "Cannot join %s, I'm not identified with NickServ." msgstr "En voi liittyä kanavalle %s, koska en ole tunnistautunut NickServille." #: plugin.py:134 @@ -184,10 +185,10 @@ msgid "" msgstr "" " []\n" "\n" -" Tämä asettaa pysyvän ignoren tai hostmaskiin,\n" +" Tämä asettaa pysyvän huomiotta jättämisen tai hostmaskiin,\n" " joka on tällä hetkellä yhdistetty . on vaihtoehtoinen paremetri,\n" -" joka määrittää (\"sekuntieissa\") joiden jälkeen ignore poistetaan; jos\n" -" sitä ei ole annettu, ignore ei vanhene koskaan automaattisesti.\n" +" joka määrittää (\"sekuntit\") joiden jälkeen huomiotta jättäminen poistetaan; jos\n" +" sitä ei ole annettu, huomiotta jättäminen ei vanhene ikinä automaattisesti.\n" " " #: plugin.py:323 @@ -200,13 +201,13 @@ msgid "" msgstr "" "\n" "\n" -" Tämä poistaa pysyvän ignoren tai\n" +" Tämä poistaa pysyvän huomiotta jättämisen tai\n" " hostmaskista joka on tällä hetkellä yhdistetty .\n" " " #: plugin.py:332 msgid "%s wasn't in the ignores database." -msgstr "%s ei ollut ignore tietokannassa." +msgstr "%s ei ollut huomiotta jätettävien tietokannassa." #: plugin.py:337 msgid "" @@ -217,10 +218,22 @@ msgid "" msgstr "" "Ei ota parametrejä\n" "\n" -" Luetteloi hostmaskit jotka ovat botin ignoressa.\n" +" Luetteloi hostmaskit jotka ovat botin huomiotta jättämis listalla.\n" " " #: plugin.py:345 msgid "I'm not currently globally ignoring anyone." -msgstr "Minä en tällä hetkellä pidä ketään globaalissa ignoressa." +msgstr "En tällä hetkellä jätä ketään huomioitta globaalisti." + +#: plugin.py:351 +msgid "" +"takes no arguments\n" +"\n" +" Clears the current send queue for this network.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Tyhjentää nykyisen lähetysjonon tälle verkolle.\n" +" " diff --git a/plugins/Admin/locale/fr.po b/plugins/Admin/locale/fr.po index 22034eb42..dbeb90ad2 100644 --- a/plugins/Admin/locale/fr.po +++ b/plugins/Admin/locale/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2010-10-16 10:43+CEST\n" +"POT-Creation-Date: 2011-10-30 19:20+CET\n" "PO-Revision-Date: \n" "Last-Translator: Valentin Lorentz \n" "Language-Team: ProgVal \n" @@ -34,7 +34,7 @@ msgid "Cannot join %s, my keyword was wrong." msgstr "Ne peut joindre %s, mon mot de passe est mauvais." #: plugin.py:104 -msgid "Cannot join %s, I'm not identified with the NickServ." +msgid "Cannot join %s, I'm not identified with NickServ." msgstr "Ne peut joindre %s, je ne suis pas identifié auprès de NickServ." #: plugin.py:134 @@ -200,3 +200,14 @@ msgstr "" msgid "I'm not currently globally ignoring anyone." msgstr "Je n'ignore actuellement personne globalement." +#: plugin.py:351 +msgid "" +"takes no arguments\n" +"\n" +" Clears the current send queue for this network.\n" +" " +msgstr "" +"Ne prend pas d'argument\n" +"\n" +"Vide la queue en attente pour ce réseau." + diff --git a/plugins/Admin/locale/it.po b/plugins/Admin/locale/it.po index 02420d7fe..5358336b3 100644 --- a/plugins/Admin/locale/it.po +++ b/plugins/Admin/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-08-09 23:57+0200\n" +"PO-Revision-Date: 2012-03-15 20:25+0100\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -32,11 +32,11 @@ msgstr "Non posso entrare in %s, sono stato bannato." msgid "Cannot join %s, my keyword was wrong." msgstr "Non posso entrare in %s, la password era sbagliata." -#: plugin.py:104 -msgid "Cannot join %s, I'm not identified with the NickServ." +#: plugin.py:104 plugin.py:113 +msgid "Cannot join %s, I'm not identified with NickServ." msgstr "Non posso entrare in %s, non sono identificato con NickServ." -#: plugin.py:134 +#: plugin.py:143 #, docstring msgid "" " []\n" @@ -51,11 +51,11 @@ msgstr "" " viene usata quando si tenta di entrare nel canale.\n" " " -#: plugin.py:147 +#: plugin.py:156 msgid "I'm already too close to maximum number of channels for this network." msgstr "Sono già troppo vicino al numero massimo di canali per questa rete." -#: plugin.py:156 +#: plugin.py:165 #, docstring msgid "" "takes no arguments\n" @@ -70,27 +70,27 @@ msgstr "" " privato per preservare la segretezza dei canali privati.\n" " " -#: plugin.py:166 +#: plugin.py:175 msgid "I'm not currently in any channels." msgstr "Al momento non sono in nessun canale." -#: plugin.py:172 +#: plugin.py:181 msgid "My connection is restricted, I can't change nicks." msgstr "La mia connessione è limitata, non posso cambiare nick." -#: plugin.py:179 +#: plugin.py:188 msgid "Someone else is already using that nick." msgstr "Qualcun altro sta utilizzando questo nick." -#: plugin.py:186 +#: plugin.py:195 msgid "That nick is currently banned." msgstr "Il nick è attualmente bannato." -#: plugin.py:193 +#: plugin.py:202 msgid "I can't change nicks, the server said %q." msgstr "Non posso cambiare nick, il server ha detto %q." -#: plugin.py:207 +#: plugin.py:216 #, docstring msgid "" "[]\n" @@ -105,7 +105,7 @@ msgstr "" " quello attuale.\n" " " -#: plugin.py:222 +#: plugin.py:231 #, docstring msgid "" "[] []\n" @@ -123,11 +123,11 @@ msgstr "" " Se viene specificato, verrà usato come messaggio di uscita.\n" " " -#: plugin.py:240 +#: plugin.py:249 msgid "I'm not in %s." msgstr "Non sono in %s." -#: plugin.py:252 +#: plugin.py:261 #, docstring msgid "" " \n" @@ -142,15 +142,15 @@ msgstr "" " attualmente) la specificata.\n" " " -#: plugin.py:272 +#: plugin.py:281 msgid "The \"owner\" capability can't be added in the bot. Use the supybot-adduser program (or edit the users.conf file yourself) to add an owner capability." msgstr "La capacità \"owner\" non può essere aggiunta al bot. Utilizzare il programma supybot-adduser (o modificare il file users.conf) per aggiungerla." -#: plugin.py:283 +#: plugin.py:292 msgid "You can't add capabilities you don't have." msgstr "Non puoi aggiungere capacità che non hai." -#: plugin.py:288 +#: plugin.py:297 #, docstring msgid "" " \n" @@ -165,15 +165,15 @@ msgstr "" " attualmente) la specificata\n" " " -#: plugin.py:300 +#: plugin.py:309 msgid "That user doesn't have that capability." msgstr "Questo utente non ha tale capacità." -#: plugin.py:302 +#: plugin.py:311 msgid "You can't remove capabilities you don't have." msgstr "Non puoi rimuovere capacità che non hai." -#: plugin.py:310 +#: plugin.py:319 #, docstring msgid "" " []\n" @@ -192,7 +192,7 @@ msgstr "" " questo non scadrà mai.\n" " " -#: plugin.py:323 +#: plugin.py:332 #, docstring msgid "" "\n" @@ -206,11 +206,11 @@ msgstr "" " Rimuove l'ignore persistente su o l'attuale hostmask associata a .\n" " " -#: plugin.py:332 +#: plugin.py:341 msgid "%s wasn't in the ignores database." msgstr "%s non è nel mio database degli ignorati." -#: plugin.py:337 +#: plugin.py:346 #, docstring msgid "" "takes no arguments\n" @@ -223,7 +223,20 @@ msgstr "" " Elenca le hostmask che il bot sta ignorando.\n" " " -#: plugin.py:345 +#: plugin.py:354 msgid "I'm not currently globally ignoring anyone." msgstr "Al momento non sto ignorando nessuno." +#: plugin.py:360 +#, docstring +msgid "" +"takes no arguments\n" +"\n" +" Clears the current send queue for this network.\n" +" " +msgstr "" +"non necessita argomenti\n" +"\n" +" Pulisce l'attuale coda dei messaggi da inviare (interrompe il flood) per questa rete.\n" +" " + diff --git a/plugins/Admin/messages.pot b/plugins/Admin/messages.pot index 4b4e9ec5b..0509d8628 100644 --- a/plugins/Admin/messages.pot +++ b/plugins/Admin/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -36,11 +36,11 @@ msgstr "" msgid "Cannot join %s, my keyword was wrong." msgstr "" -#: plugin.py:104 -msgid "Cannot join %s, I'm not identified with the NickServ." +#: plugin.py:104 plugin.py:113 +msgid "Cannot join %s, I'm not identified with NickServ." msgstr "" -#: plugin.py:134 +#: plugin.py:143 #, docstring msgid "" " []\n" @@ -50,11 +50,11 @@ msgid "" " " msgstr "" -#: plugin.py:147 +#: plugin.py:156 msgid "I'm already too close to maximum number of channels for this network." msgstr "" -#: plugin.py:156 +#: plugin.py:165 #, docstring msgid "" "takes no arguments\n" @@ -64,27 +64,27 @@ msgid "" " " msgstr "" -#: plugin.py:166 +#: plugin.py:175 msgid "I'm not currently in any channels." msgstr "" -#: plugin.py:172 +#: plugin.py:181 msgid "My connection is restricted, I can't change nicks." msgstr "" -#: plugin.py:179 +#: plugin.py:188 msgid "Someone else is already using that nick." msgstr "" -#: plugin.py:186 +#: plugin.py:195 msgid "That nick is currently banned." msgstr "" -#: plugin.py:193 +#: plugin.py:202 msgid "I can't change nicks, the server said %q." msgstr "" -#: plugin.py:207 +#: plugin.py:216 #, docstring msgid "" "[]\n" @@ -94,7 +94,7 @@ msgid "" " " msgstr "" -#: plugin.py:222 +#: plugin.py:231 #, docstring msgid "" "[] []\n" @@ -106,11 +106,11 @@ msgid "" " " msgstr "" -#: plugin.py:240 +#: plugin.py:249 msgid "I'm not in %s." msgstr "" -#: plugin.py:252 +#: plugin.py:261 #, docstring msgid "" " \n" @@ -120,15 +120,15 @@ msgid "" " " msgstr "" -#: plugin.py:272 +#: plugin.py:281 msgid "The \"owner\" capability can't be added in the bot. Use the supybot-adduser program (or edit the users.conf file yourself) to add an owner capability." msgstr "" -#: plugin.py:283 +#: plugin.py:292 msgid "You can't add capabilities you don't have." msgstr "" -#: plugin.py:288 +#: plugin.py:297 #, docstring msgid "" " \n" @@ -138,15 +138,15 @@ msgid "" " " msgstr "" -#: plugin.py:300 +#: plugin.py:309 msgid "That user doesn't have that capability." msgstr "" -#: plugin.py:302 +#: plugin.py:311 msgid "You can't remove capabilities you don't have." msgstr "" -#: plugin.py:310 +#: plugin.py:319 #, docstring msgid "" " []\n" @@ -158,7 +158,7 @@ msgid "" " " msgstr "" -#: plugin.py:323 +#: plugin.py:332 #, docstring msgid "" "\n" @@ -168,11 +168,11 @@ msgid "" " " msgstr "" -#: plugin.py:332 +#: plugin.py:341 msgid "%s wasn't in the ignores database." msgstr "" -#: plugin.py:337 +#: plugin.py:346 #, docstring msgid "" "takes no arguments\n" @@ -181,7 +181,16 @@ msgid "" " " msgstr "" -#: plugin.py:345 +#: plugin.py:354 msgid "I'm not currently globally ignoring anyone." msgstr "" +#: plugin.py:360 +#, docstring +msgid "" +"takes no arguments\n" +"\n" +" Clears the current send queue for this network.\n" +" " +msgstr "" + diff --git a/plugins/Admin/plugin.py b/plugins/Admin/plugin.py index 0590f715c..df06759b2 100644 --- a/plugins/Admin/plugin.py +++ b/plugins/Admin/plugin.py @@ -97,11 +97,20 @@ class Admin(callbacks.Plugin): except KeyError: self.log.debug('Got 475 without Admin.join being called.') + def do477(self, irc, msg): + try: + channel = msg.args[1] + (irc,msg) = self.joins.pop(channel) + irc.error(_('Cannot join %s, I\'m not identified with ' + 'NickServ.') % channel) + except KeyError: + self.log.debug('Got 477 without Admin.join being called.') + def do515(self, irc, msg): try: channel = msg.args[1] (irc, msg) = self.joins.pop(channel) - irc.error(_('Cannot join %s, I\'m not identified with the ' + irc.error(_('Cannot join %s, I\'m not identified with ' 'NickServ.') % channel) except KeyError: self.log.debug('Got 515 without Admin.join being called.') @@ -117,7 +126,7 @@ class Admin(callbacks.Plugin): def doInvite(self, irc, msg): channel = msg.args[1] if channel not in irc.state.channels: - if conf.supybot.alwaysJoinOnInvite() or \ + if conf.supybot.alwaysJoinOnInvite.get(channel)() or \ ircdb.checkCapability(msg.prefix, 'admin'): self.log.info('Invited to %s by %s.', channel, msg.prefix) networkGroup = conf.supybot.networks.get(irc.network) @@ -346,6 +355,17 @@ class Admin(callbacks.Plugin): list = wrap(list) + @internationalizeDocstring + def clearq(self, irc, msg, args): + """takes no arguments + + Clears the current send queue for this network. + """ + irc.queue.reset() + irc.replySuccess() + + + Class = Admin # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: diff --git a/plugins/Alias/locale/de.po b/plugins/Alias/locale/de.po new file mode 100644 index 000000000..e3c64658e --- /dev/null +++ b/plugins/Alias/locale/de.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2012-02-15 23:03+CET\n" +"PO-Revision-Date: 2012-04-27 15:36+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" + +#: plugin.py:45 +msgid "" +"Returns the channel the msg came over or the channel given in args.\n" +"\n" +" If the channel was given in args, args is modified (the channel is\n" +" removed).\n" +" " +msgstr "" +"Gibt den Kanal aus über den die Nachricht kam oder der Kanal der in den Argumenten gegeben wurde.\n" +"\n" +"Falls der Kanal in den Argumenten angegeben wurde, werden die Argumente bearbeitet (der Kanal wird entfernt." + +#: plugin.py:164 +msgid " at least" +msgstr "mindestens" + +#: plugin.py:165 +msgid "" +"\n" +"\n" +"Alias for %q." +msgstr "" +"\n" +"\n" +"Alias für %q." + +#: plugin.py:166 +msgid "argument" +msgstr "Argument" + +#: plugin.py:220 +msgid "" +"\n" +"\n" +" Locks an alias so that no one else can change it.\n" +" " +msgstr "" +"\n" +"\n" +"Versperrt ein Alias, sodass er nicht verändert werden kann." + +#: plugin.py:229 +#: plugin.py:243 +msgid "There is no such alias." +msgstr "Es gibt keinen Alias mit diesem Namen." + +#: plugin.py:234 +msgid "" +"\n" +"\n" +" Unlocks an alias so that people can define new aliases over it.\n" +" " +msgstr "" +"\n" +"\n" +"Entsperrt den Alias, sodass andere Personen ihn verändern können." + +#: plugin.py:254 +msgid "That name isn't valid. Try %q instead." +msgstr "Dieser Name ist nicht zulässig. Probiere anstatt %q." + +#: plugin.py:292 +#, fuzzy +msgid "" +" \n" +"\n" +" Defines an alias that executes . The \n" +" should be in the standard \"command argument [nestedcommand argument]\"\n" +" arguments to the alias; they'll be filled with the first, second, etc.\n" +" arguments. $1, $2, etc. can be used for required arguments. @1, @2,\n" +" etc. can be used for optional arguments. $* simply means \"all\n" +" remaining arguments,\" and cannot be combined with optional arguments.\n" +" " +msgstr "" +" \n" +"\n" +"Definiert einen Alias der ausführt. sollte in der Standardform \"Befehl Argument [verschachtelter Befehl Argument\" angegeben werden." + +#: plugin.py:315 +msgid "" +"\n" +"\n" +" Removes the given alias, if unlocked.\n" +" " +msgstr "" +"\n" +"\n" +"Entfernt den gegeben Alias, falls er nicht gesperrt ist." + diff --git a/plugins/Alias/locale/fi.po b/plugins/Alias/locale/fi.po index 377c3cecd..546f09e10 100644 --- a/plugins/Alias/locale/fi.po +++ b/plugins/Alias/locale/fi.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot Alias plugin\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: \n" "Last-Translator: Mika Suomalainen \n" "Language-Team: \n" @@ -83,9 +83,9 @@ msgstr "Tuo nimi ei ole kelvollinen. Yritä sen sijaan %q:ta." #: plugin.py:292 msgid "" -" \n" +" \n" "\n" -" Defines an alias that executes . The \n" +" Defines an alias that executes . The \n" " should be in the standard \"command argument [nestedcommand argument]\"\n" " arguments to the alias; they'll be filled with the first, second, etc.\n" " arguments. $1, $2, etc. can be used for required arguments. @1, @2,\n" @@ -95,11 +95,11 @@ msgid "" msgstr "" " \n" "\n" -" Määrittää aliaksen , joka suorittaa . \n" +" Määrittää aliaksen , joka suorittaa . \n" " pitäisi olla tavallinen \"komento parametri [sisäkkäinen komento parametrit]\"\n" -" parametrejä aliakselle; ne täytetään ensinmäinen, toinen, jne.\n" -" Parametrit. $1, $2, jne. ovat vaadittuja parametrejä. @1, @2,\n" -" jne. ovat vapaaehtoisia parametrejä. $* tarkoittaa yksinkertaisesti \"kaikki\n" +" parametrejä aliakselle; ne täytetään ensimmäinen, toinen, jne.\n" +" Parametrit. $1, $2, jne. ovat vaadittava parametrejä. @1, @2,\n" +" jne. ovat valinnaisia parametrejä. $* tarkoittaa yksinkertaisesti \"kaikki\n" " jäljellä olevat parametrit,\" ja johon ei voida yhdistää vaihtoehtoisia parametrejä.\n" " " diff --git a/plugins/Alias/locale/fr.po b/plugins/Alias/locale/fr.po index 068f09224..209e01834 100644 --- a/plugins/Alias/locale/fr.po +++ b/plugins/Alias/locale/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: \n" "Last-Translator: Valentin Lorentz \n" "Language-Team: Supybot-fr \n" @@ -76,9 +76,9 @@ msgstr "Ce nom n'est pas valide. Essayez plutôt %q." #: plugin.py:292 msgid "" -" \n" +" \n" "\n" -" Defines an alias that executes . The \n" +" Defines an alias that executes . The \n" " should be in the standard \"command argument [nestedcommand argument]\"\n" " arguments to the alias; they'll be filled with the first, second, etc.\n" " arguments. $1, $2, etc. can be used for required arguments. @1, @2,\n" diff --git a/plugins/Alias/locale/hu.po b/plugins/Alias/locale/hu.po new file mode 100644 index 000000000..3d911bdfd --- /dev/null +++ b/plugins/Alias/locale/hu.po @@ -0,0 +1,107 @@ +# Limnoria Alias plugin. +# Copyright (C) 2011 Limnoria +# nyuszika7h , 2011. +# Mika Suomalainen , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: Limnoria Alias\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:12+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: Finnish <>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: plugin.py:45 +msgid "" +"Returns the channel the msg came over or the channel given in args.\n" +"\n" +" If the channel was given in args, args is modified (the channel is\n" +" removed).\n" +" " +msgstr "" +"Kiírja a csatorna nevét, ahonnan az üzenet jött, vagy a paraméterként megadott csatornát.\n" +"\n" +"Ha a csatorna meg volt adva paraméterként, a paraméterek módosulnak (a csatorna eltávolításra kerül).\n" + +#: plugin.py:164 +msgid " at least" +msgstr " legalább" + +#: plugin.py:165 +msgid "" +"\n" +"\n" +"Alias for %q." +msgstr "" +"\n" +"\n" +" Locks an alias so that no one else can change it.\n" +" " +msgstr "" +"<álnév>\n" +"\n" +"Lezár egy álnevet, hogy senki más ne változtathassa meg.\n" + +#: plugin.py:229 +#: plugin.py:243 +msgid "There is no such alias." +msgstr "Nincs ilyen álnév." + +#: plugin.py:234 +msgid "" +"\n" +"\n" +" Unlocks an alias so that people can define new aliases over it.\n" +" " +msgstr "" +"<álnév>\n" +"\n" +"Feloldja egy álnév lezárását, hogy az emberek új álnevekkel írhassák felül." + +#: plugin.py:254 +msgid "That name isn't valid. Try %q instead." +msgstr "Az a név nem érvényes. Próbáld meg %q-t inkább." + +#: plugin.py:292 +msgid "" +" \n" +"\n" +" Defines an alias that executes . The \n" +" should be in the standard \"command argument [nestedcommand argument]\"\n" +" arguments to the alias; they'll be filled with the first, second, etc.\n" +" arguments. $1, $2, etc. can be used for required arguments. @1, @2,\n" +" etc. can be used for optional arguments. $* simply means \"all\n" +" remaining arguments,\" and cannot be combined with optional arguments.\n" +" " +msgstr "" +" <álnév>\n" +"\n" +"Meghatároz egy nevű álnevet, amely futtatja <álnév> parancsot. Az <álnév>-nek a szabványos \"parancs paraméter [beágyazottparancs paraméter]\" álnév paraméterei formában kell lennie; ezek ki lesznek töltve az első, második stb. paraméterekkel. $1, $2 stb. használható kötelező paraméterekhez. @1, @2 stb. használható választható paraméterekhez. $* azt jelenti, \"az összes hátralévő paraméter,\" és nem kombinálható választható paraméterekkel.\n" + +#: plugin.py:315 +msgid "" +"\n" +"\n" +" Removes the given alias, if unlocked.\n" +" " +msgstr "" +"\n" +"\n" +"Eltávolítja a megadott álnevet, ha nincs lezárva.\n" + diff --git a/plugins/Alias/locale/it.po b/plugins/Alias/locale/it.po index 1b85c3b57..5e60b6a7f 100644 --- a/plugins/Alias/locale/it.po +++ b/plugins/Alias/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-07 08:23+0200\n" "Last-Translator: skizzhg \n" @@ -81,9 +81,9 @@ msgstr "Nome non valido. Prova %q invece." #: plugin.py:292 #, docstring msgid "" -" \n" +" \n" "\n" -" Defines an alias that executes . The \n" +" Defines an alias that executes . The \n" " should be in the standard \"command argument [nestedcommand argument]\"\n" " arguments to the alias; they'll be filled with the first, second, etc.\n" " arguments. $1, $2, etc. can be used for required arguments. @1, @2,\n" @@ -91,9 +91,9 @@ msgid "" " remaining arguments,\" and cannot be combined with optional arguments.\n" " " msgstr "" -" \n" +" \n" "\n" -" Definisce un che esegue . deve essere nello\n" +" Definisce un che esegue . deve essere nello\n" " standard \"comando argomento [comando_nidificato argomento]\"; gli\n" " argomenti dati devono essere riportati in sequenza. Per gli argomenti\n" " richiesti è possibile utilizzare $1, $2, ecc., mentre @1, @2, ecc. per\n" diff --git a/plugins/Alias/locale/messages.pot b/plugins/Alias/locale/messages.pot new file mode 100644 index 000000000..f86734f0a --- /dev/null +++ b/plugins/Alias/locale/messages.pot @@ -0,0 +1,91 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2012-02-15 23:03+CET\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \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:45 +#, docstring +msgid "" +"Returns the channel the msg came over or the channel given in args.\n" +"\n" +" If the channel was given in args, args is modified (the channel is\n" +" removed).\n" +" " +msgstr "" + +#: plugin.py:164 +msgid " at least" +msgstr "" + +#: plugin.py:165 +msgid "" +"\n" +"\n" +"Alias for %q." +msgstr "" + +#: plugin.py:166 +msgid "argument" +msgstr "" + +#: plugin.py:220 +#, docstring +msgid "" +"\n" +"\n" +" Locks an alias so that no one else can change it.\n" +" " +msgstr "" + +#: plugin.py:229 plugin.py:243 +msgid "There is no such alias." +msgstr "" + +#: plugin.py:234 +#, docstring +msgid "" +"\n" +"\n" +" Unlocks an alias so that people can define new aliases over it.\n" +" " +msgstr "" + +#: plugin.py:254 +msgid "That name isn't valid. Try %q instead." +msgstr "" + +#: plugin.py:292 +#, docstring +msgid "" +" \n" +"\n" +" Defines an alias that executes . The \n" +" should be in the standard \"command argument [nestedcommand argument]\"\n" +" arguments to the alias; they'll be filled with the first, second, etc.\n" +" arguments. $1, $2, etc. can be used for required arguments. @1, @2,\n" +" etc. can be used for optional arguments. $* simply means \"all\n" +" remaining arguments,\" and cannot be combined with optional arguments.\n" +" " +msgstr "" + +#: plugin.py:315 +#, docstring +msgid "" +"\n" +"\n" +" Removes the given alias, if unlocked.\n" +" " +msgstr "" + diff --git a/plugins/Alias/messages.pot b/plugins/Alias/messages.pot index 373c8de0e..697542b7c 100644 --- a/plugins/Alias/messages.pot +++ b/plugins/Alias/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -69,9 +69,9 @@ msgstr "" #: plugin.py:292 #, docstring msgid "" -" \n" +" \n" "\n" -" Defines an alias that executes . The \n" +" Defines an alias that executes . The \n" " should be in the standard \"command argument [nestedcommand argument]\"\n" " arguments to the alias; they'll be filled with the first, second, etc.\n" " arguments. $1, $2, etc. can be used for required arguments. @1, @2,\n" diff --git a/plugins/Alias/plugin.py b/plugins/Alias/plugin.py index 87ce858b6..e4a6b310f 100644 --- a/plugins/Alias/plugin.py +++ b/plugins/Alias/plugin.py @@ -289,9 +289,9 @@ class Alias(callbacks.Plugin): @internationalizeDocstring def add(self, irc, msg, args, name, alias): - """ + """ - Defines an alias that executes . The + Defines an alias that executes . The should be in the standard "command argument [nestedcommand argument]" arguments to the alias; they'll be filled with the first, second, etc. arguments. $1, $2, etc. can be used for required arguments. @1, @2, diff --git a/plugins/Anonymous/config.py b/plugins/Anonymous/config.py index 51e6ba70b..de7aa590c 100644 --- a/plugins/Anonymous/config.py +++ b/plugins/Anonymous/config.py @@ -49,10 +49,10 @@ conf.registerChannelValue(conf.supybot.plugins.Anonymous, 'requirePresenceInChannel', registry.Boolean(True, _("""Determines whether the bot should require people trying to use this plugin to be in the channel they wish to anonymously send to."""))) -conf.registerGlobalValue(conf.supybot.plugins.Anonymous, 'requireRegistration', +conf.registerChannelValue(conf.supybot.plugins.Anonymous, 'requireRegistration', registry.Boolean(True, _("""Determines whether the bot should require people trying to use this plugin to be registered."""))) -conf.registerGlobalValue(conf.supybot.plugins.Anonymous, 'requireCapability', +conf.registerChannelValue(conf.supybot.plugins.Anonymous, 'requireCapability', registry.String('', _("""Determines what capability (if any) the bot should require people trying to use this plugin to have."""))) conf.registerGlobalValue(conf.supybot.plugins.Anonymous, 'allowPrivateTarget', diff --git a/plugins/Anonymous/locale/de.po b/plugins/Anonymous/locale/de.po new file mode 100644 index 000000000..68fdc39e1 --- /dev/null +++ b/plugins/Anonymous/locale/de.po @@ -0,0 +1,94 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-06-09 18:26+CEST\n" +"PO-Revision-Date: 2011-10-28 12:55+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: de\n" + +#: config.py:49 +msgid "" +"Determines whether\n" +" the bot should require people trying to use this plugin to be in the\n" +" channel they wish to anonymously send to." +msgstr "Legt fest ob Leute im Kanal sein müssen, an den anonym senden wollen." + +#: config.py:53 +msgid "" +"Determines whether the bot should require\n" +" people trying to use this plugin to be registered." +msgstr "Legt fest ob Nutzer registiert sein müssen um dieses Plugin zu benutze." + +#: config.py:56 +msgid "" +"Determines what capability (if any) the bot should\n" +" require people trying to use this plugin to have." +msgstr "Legt fest welche Fähgikeiten (falls überhaupt) der Bot verlangt von Personen die versuchen dieses Plugin zu benutzen." + +#: config.py:59 +msgid "" +"Determines whether the bot will require \n" +" targets of the \"say\" command to be public (i.e., channels). If this is\n" +" True, the bot will allow people to use the \"say\" command to send private\n" +" messages to other users." +msgstr "Legt fest ob der Bot verlangt, dass Ziele des Befehls \"say\" öffentlich sind (z.B. Kanäle). Falls das auf True gesetzt ist, wird ber Bot Nutzern erlauben den Befehl \"say\" zu nutzen um anderen Nutzern private Nachrichten zu senden." + +#: plugin.py:40 +msgid "" +"This plugin allows users to act through the bot anonymously. The 'do'\n" +" command has the bot perform an anonymous action in a given channel, and\n" +" the 'say' command allows other people to speak through the bot. Since\n" +" this can be fairly well abused, you might want to set\n" +" supybot.plugins.Anonymous.requireCapability so only users with that\n" +" capability can use this plugin. For extra security, you can require that\n" +" the user be *in* the channel they are trying to address anonymously with\n" +" supybot.plugins.Anonymous.requirePresenceInChannel, or you can require\n" +" that the user be registered by setting\n" +" supybot.plugins.Anonymous.requireRegistration.\n" +" " +msgstr "Das Plugin erlaubt Nutzern durch den Bot anonym zu bleiben. Der 'do' Befehl lässt den Bot eine anonyme Aktion in einem Kanal ausführen und der 'say' Befehl lässt Nutzer durch den Bot sprechen. Da das Ganze natürlich leicht missbraucht werden kann, willst du vielleicht supybot.plugins.Anonymous.requireCapability setzen, sodass nur Nutzer mit dieser Fähigkeit das Plugin benutzen können. Für etwas mehr Sicherheit kannst du mit supybot.plugins.Anonymous.requirePresenceInChannel verlangen, dass der Nutzer in dem Kanal sein muss in dem er anonym senden will oder du kannst verlangen, dass der Nutzer registriert sein muss indem du supybot.plugins.Anonymous.requireRegistration setzt." + +#: plugin.py:64 +msgid "You must be in %s to %q in there." +msgstr "Du musst in %s sein um %q dort auszuführen." + +#: plugin.py:68 +msgid "I'm lobotomized in %s." +msgstr "Ich bin hirnamputiert in %s." + +#: plugin.py:71 +msgid "That channel has set its capabilities so as to disallow the use of this plugin." +msgstr "Für den Kanal sind die Fähigkeiten so gesetzt, dass sie das benutzen dieses Plugins nicht erlauben." + +#: plugin.py:74 +msgid "%q cannot be used to send private messages." +msgstr "%q kann nicht verwendet werden um private Nachrichten zu versenden." + +#: plugin.py:80 +msgid "" +" \n" +"\n" +" Sends to . Can only send to if\n" +" supybot.plugins.Anonymous.allowPrivateTarget is True.\n" +" " +msgstr "" +" \n" +"\n" +"Sendet an . Kann nur an senden wenn supybot.plugins.Anonymous.allowPrivateTarget auf True gesetzt ist." + +#: plugin.py:94 +msgid "" +" \n" +"\n" +" Performs in .\n" +" " +msgstr "" +" \n" +"\n" +"Führt die im aus." + diff --git a/plugins/Anonymous/locale/it.po b/plugins/Anonymous/locale/it.po index 3d4ca3b74..5a2f078b1 100644 --- a/plugins/Anonymous/locale/it.po +++ b/plugins/Anonymous/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-08-10 00:13+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Anonymous/plugin.py b/plugins/Anonymous/plugin.py index da845c9c1..960132d13 100644 --- a/plugins/Anonymous/plugin.py +++ b/plugins/Anonymous/plugin.py @@ -49,12 +49,12 @@ class Anonymous(callbacks.Plugin): supybot.plugins.Anonymous.requireRegistration. """ def _preCheck(self, irc, msg, target, action): - if self.registryValue('requireRegistration'): + if self.registryValue('requireRegistration', target): try: foo = ircdb.users.getUser(msg.prefix) except KeyError: irc.errorNotRegistered(Raise=True) - capability = self.registryValue('requireCapability') + capability = self.registryValue('requireCapability', target) if capability: if not ircdb.checkCapability(msg.prefix, capability): irc.errorNoCapability(capability, Raise=True) diff --git a/plugins/AutoMode/config.py b/plugins/AutoMode/config.py index aa8766655..95e0692c9 100644 --- a/plugins/AutoMode/config.py +++ b/plugins/AutoMode/config.py @@ -71,6 +71,9 @@ conf.registerChannelValue(AutoMode.ban, 'period', registry.PositiveInteger(86400, _("""Determines how many seconds the bot will automatically ban a person when banning."""))) +conf.registerChannelValue(AutoMode, 'delay', + registry.Integer(0, _("""Determines how many seconds the bot will wait + before applying a mode. Has no effect on bans."""))) # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: diff --git a/plugins/AutoMode/locale/de.po b/plugins/AutoMode/locale/de.po new file mode 100644 index 000000000..d02c8b494 --- /dev/null +++ b/plugins/AutoMode/locale/de.po @@ -0,0 +1,75 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2012-04-19 21:37+CEST\n" +"PO-Revision-Date: 2012-04-27 15:38+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" + +#: config.py:46 +msgid "" +"Determines whether this plugin is enabled.\n" +" " +msgstr "Legt fest ob das Plugin aktiv ist." + +#: config.py:49 +msgid "" +"Determines whether this plugin will automode\n" +" owners even if they don't have op/halfop/voice/whatever capability." +msgstr "Legt fest ob das Plugin Besitzern automatisch den Modus zuweist, obwohl sie nicht die op/halfop/voice/wasauchimmer Fähigkeit besitzen." + +#: config.py:52 +#, fuzzy +msgid "" +"Determines whether the bot will \"fall\n" +" through\" to halfop/voicing when auto-opping is turned off but\n" +" auto-halfopping/voicing are turned on." +msgstr "Legt fest ob der Bot \"zurückfällt\" auf Halboperator/Sprechrechte wenn automatischer Operator abgeschaltet ist, aber automatische Halboperator/Sprecherechte angeschaltet sind." + +#: config.py:56 +msgid "" +"Determines whether the bot will automatically\n" +" op people with the ,op capability when they join the channel.\n" +" " +msgstr "Legt fest ob der Bot Personen, mit der ,op Fähigkeit, automatisch Operatorrechte zuweisen soll, wenn sie den Kanal betreten." + +#: config.py:60 +msgid "" +"Determines whether the bot will automatically\n" +" halfop people with the ,halfop capability when they join the\n" +" channel." +msgstr "Legt fest ob der Bot Personen, mit der ,halfop Fähigkeit, automatisch Halboperatorrechte zuweisen soll, wenn sie den Kanal betreten." + +#: config.py:64 +msgid "" +"Determines whether the bot will automatically\n" +" voice people with the ,voice capability when they join the\n" +" channel." +msgstr "Legt fest ob der Bot Personen, mit der ,voice Fähigkeit, automatisch Sprechrechte zuweisen soll, wenn sie den Kanal betreten." + +#: config.py:68 +msgid "" +"Determines whether the bot will automatically\n" +" ban people who join the channel and are on the banlist." +msgstr "Legt fest ob der Bot automatisch Personen bannen soll die auf der Banliste stehen." + +#: config.py:71 +msgid "" +"Determines how many seconds the bot\n" +" will automatically ban a person when banning." +msgstr "Legt fest wieviele Sekunden der Bot Personen automatisch bannt." + +#: config.py:75 +#, fuzzy +msgid "" +"Determines how many seconds the bot will wait\n" +" before applying a mode. Has no effect on bans." +msgstr "Legt fest wieviele Sekunden der Bot Personen automatisch bannt." + diff --git a/plugins/AutoMode/locale/fi.po b/plugins/AutoMode/locale/fi.po index cbf4c9c01..d1bd1b23c 100644 --- a/plugins/AutoMode/locale/fi.po +++ b/plugins/AutoMode/locale/fi.po @@ -1,36 +1,36 @@ # AutoMode plugin in Limnoria. # Copyright (C) 2011 Limnoria -# Mika Suomalainen , 2011. +# Mika Suomalainen , 2011, 2012. # msgid "" msgstr "" "Project-Id-Version: Supybot AutoMode\n" -"POT-Creation-Date: 2011-06-27 12:02+CEST\n" -"PO-Revision-Date: \n" +"POT-Creation-Date: 2012-04-19 21:37+CEST\n" +"PO-Revision-Date: 2012-04-20 11:34+0300\n" "Last-Translator: Mika Suomalainen \n" -"Language-Team: \n" +"Language-Team: Finnish <>\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Finnish\n" "X-Poedit-Country: FINLAND\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #: config.py:46 msgid "" "Determines whether this plugin is enabled.\n" " " -msgstr "" -"Määrittää onko tämä lisäosa käytössä.\n" -" " +msgstr "Määrittää onko tämä lisäosa käytössä." #: config.py:49 msgid "" "Determines whether this plugin will automode\n" " owners even if they don't have op/halfop/voice/whatever capability." msgstr "" -"Määrittää vaihtaako botti omistajien tilaa automaattisesti, vaikka heillä ei olisi\n" -" op/halfop/voice/ihansama valtuutta." +"Määrittää vaihtaako botti omistajien tilaa automaattisesti, vaikka heillä ei " +"olisi\n" +" op/halfop/voice/ihansama valtuutta." #: config.py:52 msgid "" @@ -38,9 +38,10 @@ msgid "" " through\" to halfop/voicing when auto-opping is turned off but\n" " auto-halfopping/voicing are turned on." msgstr "" -"Määrittää \"siirtyykö\" botti\n" -" halfoppaamiseen/voicen antamiseen kun automaatti-oppaaminen on poistettu käytöstä, mutta\n" -" automaattinen-halfoppaaminen/voicen antaminen on käytössä." +"Määrittää \"alentuuko\" botti halfoppaamiseen/voicen antamiseen kun " +"automaattinen\n" +" oprtaattori aseman antaminen on poistettu käytöstä, mutta automaattinen\n" +" puolioperaattori aseman/äänen antaminen on käytössä." #: config.py:56 msgid "" @@ -49,8 +50,8 @@ msgid "" " " msgstr "" "Määrittää oppaako botti\n" -" ihmiset #,op valtuudella automaattisesti, kun he liittyvät kanavalle.\n" -" " +" ihmiset, joilla on #,op valtuus automaattisesti, kun he liittyvät " +"kanavalle." #: config.py:60 msgid "" @@ -58,9 +59,8 @@ msgid "" " halfop people with the ,halfop capability when they join the\n" " channel." msgstr "" -"Määrittää halfoppaako botti automaattisesti, kun\n" -" ihmiset #,halfop valtuudella, kun he liittyvät \n" -" kanavalle." +"Määrittää antaako botti puolioperaattorin aseman automaattisesti, kun " +"ihmiset, joilla on #,halfop valtuus liittyvät kanavalle." #: config.py:64 msgid "" @@ -68,9 +68,9 @@ msgid "" " voice people with the ,voice capability when they join the\n" " channel." msgstr "" -"Määrittää antaako botti automaattisesti äänen\n" -" ihmisille, joilla on #,voice valtuus kun he liittyvät\n" -" kanavalle." +"Määrittää antaako botti automaattisesti äänen ihmisille, joilla on #," +"voice\n" +" valtuus heidän liittyessään kanavalle." #: config.py:68 msgid "" @@ -78,13 +78,22 @@ msgid "" " ban people who join the channel and are on the banlist." msgstr "" "Määrittää antaako botti porttikiellon ihmisille,\n" -" jotka liittyvät kanavalle ja ovat porttikieltolistalla." +" jotka liittyvät kanavalle ja ovat porttikieltolistalla." #: config.py:71 msgid "" "Determines how many seconds the bot\n" " will automatically ban a person when banning." msgstr "" -"Määrittää kuinka moneksi sekuntiksi botti\n" -"antaa porttikiellon henkilöle, kun ollaan antamassa porttikieltoja." +"Määrittää kuinka moneksi sekuntiksi botti antaa porttikiellon henkilöle, " +"antaessaan\n" +" porttikieltoa automaattisesti." +#: config.py:75 +msgid "" +"Determines how many seconds the bot will wait\n" +" before applying a mode. Has no effect on bans." +msgstr "" +"Määrittää kuinka monta sekuntia botti odottaa ennen, kuin asettaa tilan. " +"Tällä ei ole\n" +" vaikutusta porttikieltoihin." diff --git a/plugins/AutoMode/locale/fr.po b/plugins/AutoMode/locale/fr.po index b7679a94a..6f1c4a550 100644 --- a/plugins/AutoMode/locale/fr.po +++ b/plugins/AutoMode/locale/fr.po @@ -1,10 +1,11 @@ +# Valentin Lorentz , 2012. msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-06-27 12:02+CEST\n" -"PO-Revision-Date: \n" -"Last-Translator: Valentin Lorentz \n" -"Language-Team: Supybot-fr \n" +"POT-Creation-Date: 2012-04-19 21:37+CEST\n" +"PO-Revision-Date: 2012-04-27 18:12+0200\n" +"Last-Translator: Valentin Lorentz \n" +"Language-Team: French \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,6 +13,8 @@ msgstr "" "X-Poedit-Language: Français\n" "X-Poedit-Country: France\n" "X-Poedit-SourceCharset: ASCII\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: config.py:46 msgid "" @@ -23,45 +26,67 @@ msgstr "Détermine si ce plugin est activé." msgid "" "Determines whether this plugin will automode\n" " owners even if they don't have op/halfop/voice/whatever capability." -msgstr "Détermine si ce plugin mettra des modes automatiques sur les owners, même si ils n'ont pas la capacité op/halfop/voice/..." +msgstr "" +"Détermine si ce plugin mettra des modes automatiques sur les owners, même si " +"ils n'ont pas la capacité op/halfop/voice/..." #: config.py:52 msgid "" "Determines whether the bot will \"fall\n" " through\" to halfop/voicing when auto-opping is turned off but\n" " auto-halfopping/voicing are turned on." -msgstr "Détermine si le bot ne halfopera/voicera pas lorsque l'auto-op est désactivé, même si l'auto-halfopvoice est activé." +msgstr "" +"Détermine si le bot ne halfopera/voicera pas lorsque l'auto-op est " +"désactivé, même si l'auto-halfopvoice est activé." #: config.py:56 msgid "" "Determines whether the bot will automatically\n" " op people with the ,op capability when they join the channel.\n" " " -msgstr "Détermine si le bot opera automatiquement les gens qui ont la capacité ,op lorsqu'ils rejoignent le canal." +msgstr "" +"Détermine si le bot opera automatiquement les gens qui ont la capacité " +",op lorsqu'ils rejoignent le canal." #: config.py:60 msgid "" "Determines whether the bot will automatically\n" " halfop people with the ,halfop capability when they join the\n" " channel." -msgstr "Détermine si le bot halfopera les gens qui ont la capacité ,halfop lorsqu'ils rejoignent le canal." +msgstr "" +"Détermine si le bot halfopera les gens qui ont la capacité ,halfop " +"lorsqu'ils rejoignent le canal." #: config.py:64 msgid "" "Determines whether the bot will automatically\n" " voice people with the ,voice capability when they join the\n" " channel." -msgstr "Détermine si le bot voicera automatiquement les gens avec la capacité ,voice lorsqu'ils rejoingent le canal." +msgstr "" +"Détermine si le bot voicera automatiquement les gens avec la capacité " +",voice lorsqu'ils rejoingent le canal." #: config.py:68 msgid "" "Determines whether the bot will automatically\n" " ban people who join the channel and are on the banlist." -msgstr "Détermine si le bot bannira automatiquement les personnes qui rejoignent le canal et qui sont sur la liste de bannissement." +msgstr "" +"Détermine si le bot bannira automatiquement les personnes qui rejoignent le " +"canal et qui sont sur la liste de bannissement." #: config.py:71 msgid "" "Determines how many seconds the bot\n" " will automatically ban a person when banning." -msgstr "Détermine combien de secondes durera le bannissement que le bot posera sur une personne." +msgstr "" +"Détermine combien de secondes durera le bannissement que le bot posera sur " +"une personne." + +#: config.py:75 +msgid "" +"Determines how many seconds the bot will wait\n" +" before applying a mode. Has no effect on bans." +msgstr "" +"Détermine combien de secondes le bot attendra avant d'appliquer un mode. Cela " +"n'a aucun effet sur les bannissements." diff --git a/plugins/AutoMode/locale/it.po b/plugins/AutoMode/locale/it.po index a11d4c13f..c81f6a747 100644 --- a/plugins/AutoMode/locale/it.po +++ b/plugins/AutoMode/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-08-10 00:29+0200\n" +"PO-Revision-Date: 2012-04-23 19:29+0200\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -81,5 +81,13 @@ msgid "" "Determines how many seconds the bot\n" " will automatically ban a person when banning." msgstr "" -"Determina quanti secondi durerà il ban applica a un utente." +"Determina quanti secondi durerà il ban applicato a un utente." + +#: config.py:75 +msgid "" +"Determines how many seconds the bot will wait\n" +" before applying a mode. Has no effect on bans." +msgstr "" +"Determina quanti secondi aspetterà il bot prima di applicare un mode.\n" +" Non ha effetto sui ban." diff --git a/plugins/AutoMode/messages.pot b/plugins/AutoMode/messages.pot index 14d0660ba..69af8f9bf 100644 --- a/plugins/AutoMode/messages.pot +++ b/plugins/AutoMode/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-06-27 12:02+CEST\n" +"POT-Creation-Date: 2012-04-19 21:37+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -67,3 +67,9 @@ msgid "" " will automatically ban a person when banning." msgstr "" +#: config.py:75 +msgid "" +"Determines how many seconds the bot will wait\n" +" before applying a mode. Has no effect on bans." +msgstr "" + diff --git a/plugins/AutoMode/plugin.py b/plugins/AutoMode/plugin.py index 6a1ddc82d..8a706b409 100644 --- a/plugins/AutoMode/plugin.py +++ b/plugins/AutoMode/plugin.py @@ -55,16 +55,24 @@ class AutoMode(callbacks.Plugin): if ircdb.checkCapability(msg.prefix, cap, ignoreOwner=not self.registryValue('owner')): if self.registryValue(type, channel): - self.log.info('Sending auto-%s of %s in %s.', + self.log.info('Scheduling auto-%s of %s in %s.', type, msg.prefix, channel) msgmaker = getattr(ircmsgs, type) - irc.queueMsg(msgmaker(channel, msg.nick)) + schedule_msg(msgmaker(channel, msg.nick)) raise Continue # Even if fallthrough, let's only do one. elif not fallthrough: self.log.debug('%s has %s, but supybot.plugins.AutoMode.%s' ' is not enabled in %s, refusing to fall ' 'through.', msg.prefix, cap, type, channel) raise Continue + def schedule_msg(msg): + def f(): + irc.queueMsg(msg) + delay = self.registryValue('delay', channel) + if delay: + schedule.addEvent(f, time.time() + delay) + else: + f() try: do('op') if 'h' in irc.state.supported['prefix']: diff --git a/plugins/BadWords/config.py b/plugins/BadWords/config.py index 2961f348e..bbd32e64a 100644 --- a/plugins/BadWords/config.py +++ b/plugins/BadWords/config.py @@ -52,7 +52,7 @@ BadWords = conf.registerPlugin('BadWords') conf.registerGlobalValue(BadWords, 'words', LastModifiedSetOfStrings([], _("""Determines what words are considered to be 'bad' so the bot won't say them."""))) -conf.registerGlobalValue(BadWords,'requireWordBoundaries', +conf.registerChannelValue(BadWords,'requireWordBoundaries', registry.Boolean(False, _("""Determines whether the bot will require bad words to be independent words, or whether it will censor them within other words. For instance, if 'darn' is a bad word, then if this is true, 'darn' diff --git a/plugins/BadWords/locale/it.po b/plugins/BadWords/locale/it.po index c54f69e7e..7072ef8c2 100644 --- a/plugins/BadWords/locale/it.po +++ b/plugins/BadWords/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-28 23:29+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/BadWords/messages.pot b/plugins/BadWords/messages.pot index 767fc700a..bb63481d2 100644 --- a/plugins/BadWords/messages.pot +++ b/plugins/BadWords/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -100,7 +100,7 @@ msgid "" " has op." msgstr "" -#: plugin.py:113 +#: plugin.py:114 #, docstring msgid "" "takes no arguments\n" @@ -109,11 +109,11 @@ msgid "" " " msgstr "" -#: plugin.py:123 +#: plugin.py:124 msgid "I'm not currently censoring any bad words." msgstr "" -#: plugin.py:128 +#: plugin.py:129 #, docstring msgid "" " [ ...]\n" @@ -122,7 +122,7 @@ msgid "" " " msgstr "" -#: plugin.py:140 +#: plugin.py:141 #, docstring msgid "" " [ ...]\n" diff --git a/plugins/BadWords/plugin.py b/plugins/BadWords/plugin.py index 5e3ba816d..dc84776a6 100644 --- a/plugins/BadWords/plugin.py +++ b/plugins/BadWords/plugin.py @@ -73,12 +73,13 @@ class BadWords(callbacks.Privmsg): # We need to check for bad words here rather than in doPrivmsg because # messages don't get to doPrivmsg if the user is ignored. if msg.command == 'PRIVMSG': - self.updateRegexp() - s = ircutils.stripFormatting(msg.args[1]) channel = msg.args[0] + self.updateRegexp(channel) + s = ircutils.stripFormatting(msg.args[1]) if ircutils.isChannel(channel) and self.registryValue('kick', channel): if self.regexp.search(s): - if irc.nick in irc.state.channels[channel].ops: + if irc.nick in irc.state.channels[channel].ops or \ + irc.nick in irc.state.channels[channel].halfops: message = self.registryValue('kick.message', channel) irc.queueMsg(ircmsgs.kick(channel, msg.nick, message)) else: @@ -86,14 +87,15 @@ class BadWords(callbacks.Privmsg): msg.nick, channel) return msg - def updateRegexp(self): + def updateRegexp(self, channel): if self.lastModified < self.words.lastModified: - self.makeRegexp(self.words()) + self.makeRegexp(self.words(), channel) self.lastModified = time.time() def outFilter(self, irc, msg): if self.filtering and msg.command == 'PRIVMSG' and self.words(): - self.updateRegexp() + channel = msg.args[0] + self.updateRegexp(channel) s = msg.args[1] if self.registryValue('stripFormatting'): s = ircutils.stripFormatting(s) @@ -102,9 +104,9 @@ class BadWords(callbacks.Privmsg): msg = ircmsgs.privmsg(msg.args[0], t, msg=msg) return msg - def makeRegexp(self, iterable): + def makeRegexp(self, iterable, channel): s = '(%s)' % '|'.join(map(re.escape, iterable)) - if self.registryValue('requireWordBoundaries'): + if self.registryValue('requireWordBoundaries', channel): s = r'\b%s\b' % s self.regexp = re.compile(s, re.I) diff --git a/plugins/Channel/locale/de.po b/plugins/Channel/locale/de.po new file mode 100644 index 000000000..c11e53aed --- /dev/null +++ b/plugins/Channel/locale/de.po @@ -0,0 +1,687 @@ +msgid "" +msgstr "" +"Project-Id-Version: sdf\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:33+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: config.py:48 +msgid "" +"Determines whether the bot will always try to\n" +" rejoin a channel whenever it's kicked from the channel." +msgstr "Legt fest ob der Bot immer probieren soll den Kanal wieder zu betreten, falls er gekickt wurde." + +#: plugin.py:69 +msgid "" +"[] [ ...]\n" +"\n" +" Sets the mode in to , sending the arguments given.\n" +" is only necessary if the message isn't sent in the channel\n" +" itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Setzt den Modus für auf , mit den angegeben Argumenten. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:76 +msgid "change the mode" +msgstr "ändert den Modus" + +#: plugin.py:80 +msgid "" +"[] []\n" +"\n" +" Sets the channel limit to . If is 0, or isn't given,\n" +" removes the channel limit. is only necessary if the message\n" +" isn't sent in the channel itself.\n" +" " +msgstr "" +"[] []\n" +"\n" +"Setzt das Kanal Limit auf . Falls 0 ist, oder nicht angegeben wird, wird das Kanal Limit entfernt. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:90 +msgid "change the limit" +msgstr "ändert das Limit" + +#: plugin.py:95 +msgid "" +"[]\n" +"\n" +" Sets +m on , making it so only ops and voiced users can\n" +" send messages to the channel. is only necessary if the\n" +" message isn't sent in the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Setzt +m auf , sodass nur Ops und Voice Benutzer Nachrichten an den Kanal senden können. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:102 +msgid "moderate the channel" +msgstr "moderiert den Kanel" + +#: plugin.py:106 +msgid "" +"[]\n" +"\n" +" Sets -m on , making it so everyone can\n" +" send messages to the channel. is only necessary if the\n" +" message isn't sent in the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Setzt -m auf , sodass jeder Nachrichten an den Kanal senden kann. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:114 +msgid "unmoderate the channel" +msgstr "Kanal nicht mehr moderieren" + +#: plugin.py:118 +msgid "" +"[] []\n" +"\n" +" Sets the keyword in to . If is not given, removes\n" +" the keyword requirement to join . is only necessary\n" +" if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] []\n" +"\n" +"Setzt das Schlüsselwort für auf . Fall nicht angegeben wird, wird die Schlüsselwort entfernt, und jeder kann dem beitreten. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:130 +msgid "change the keyword" +msgstr "ändert das Schlüsselwort" + +#: plugin.py:135 +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,op capability, this will give all the s\n" +" you provide ops. If you don't provide any s, this will op you.\n" +" is only necessary if the message isn't sent in the channel\n" +" itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird dies allen s die du angibst Op geben. Falls du keine s angibst, wird dir Op gegeben. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:147 +msgid "op someone" +msgstr "jemandem Operatorrechte geben." + +#: plugin.py:151 +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,halfop capability, this will give all the\n" +" s you provide halfops. If you don't provide any s, this\n" +" will give you halfops. is only necessary if the message isn't\n" +" sent in the channel itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,halfop Fähigkeit hast, wird allen angegeben s halb-Op gegeben. Falls du keine s angibst wird dir halb-Op gegeben. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:163 +msgid "halfop someone" +msgstr "jemandem Halfop geben" + +#: plugin.py:168 +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,voice capability, this will voice all the\n" +" s you provide. If you don't provide any s, this will\n" +" voice you. is only necessary if the message isn't sent in the\n" +" channel itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,voice Fähigkeit hast, wird allen angegeben s Voice gegeben. Falls du keine s angibst wird dir Voice gegeben. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:190 +msgid "voice someone" +msgstr "Sprechrecht geben" + +#: plugin.py:195 +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,op capability, this will remove operator\n" +" privileges from all the nicks given. If no nicks are given, removes\n" +" operator privileges from the person sending the message.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird allen angegeben Nicks Op entzogen. Falls keine Nicks angegeben sind, wird Op der Person entzogen die den Befehl gab." + +#: plugin.py:202 +msgid "I cowardly refuse to deop myself. If you really want me deopped, tell me to op you and then deop me yourself." +msgstr "Ich verweigere es mir selbst Op zu entziehen. Falls du mir wirklich op entziehen willst, befehle mir dir Op zu geben und tu es selbst." + +#: plugin.py:210 +msgid "deop someone" +msgstr "Operator entziehen" + +#: plugin.py:215 +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,op capability, this will remove half-operator\n" +" privileges from all the nicks given. If no nicks are given, removes\n" +" half-operator privileges from the person sending the message.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird allen angegeben Nicks halb-Op entzogen. Falls keine Nicks angegeben sind, wird halb-Op der Person entzogen die den Befehl gab." + +#: plugin.py:222 +msgid "I cowardly refuse to dehalfop myself. If you really want me dehalfopped, tell me to op you and then dehalfop me yourself." +msgstr "Ich verweigere mich mir halb-Op zu entziehen. Falls du mir halb-Op entziehen willst, befehle mir dir Op zu geben und tu es selbst." + +#: plugin.py:230 +msgid "dehalfop someone" +msgstr "entzieht jemanden halb-Op" + +#: plugin.py:235 +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,op capability, this will remove voice from all\n" +" the nicks given. If no nicks are given, removes voice from the person\n" +" sending the message.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird allen angegeben Nicks Voice entzogen. Falls keine Nicks angegeben sind, wird Voice der Person entzogen die den Befehl gab." + +#: plugin.py:242 +msgid "I cowardly refuse to devoice myself. If you really want me devoiced, tell me to op you and then devoice me yourself." +msgstr "Ich bin zu Feige um mir Voice zu entziehen. Falls du mir wirklich Voice entziehen willst, befehle mir dir Op zu geben und entziehe mir Voice selbst." + +#: plugin.py:255 +msgid "" +"[]\n" +"\n" +" If you have the #channel,op capability, this will cause the bot to\n" +" \"cycle\", or PART and then JOIN the channel. is only necessary\n" +" if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird der Bot den Kanal verlassen und danach wieder betreten. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:268 +msgid "" +"[] [, , ...] []\n" +"\n" +" Kicks (s) from for . If isn't given,\n" +" uses the nick of the person making the command as the reason.\n" +" is only necessary if the message isn't sent in the channel\n" +" itself.\n" +" " +msgstr "" +"[] [, , ...]\n" +"\n" +"Kickt die s aus dem mit der . Falls keine angegeben wurde, wird der Nick der Person die den Befehl gesendet hat, als Begründung genommen. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:276 +msgid "I cowardly refuse to kick myself." +msgstr "Ich bin zu feige um mich selbst zu kicken." + +#: plugin.py:281 +msgid "The reason you gave is longer than the allowed length for a KICK reason on this server." +msgstr "Der Grund den du mir gegeben hast war länger als die erlaubte für KICK Gründe auf diesem Server." + +#: plugin.py:286 +msgid "kick someone" +msgstr "jemanden kicken" + +#: plugin.py:292 +msgid "" +"[] [--{exact,nick,user,host}] [] []\n" +"\n" +" If you have the #channel,op capability, this will kickban for\n" +" as many seconds as you specify, or else (if you specify 0 seconds or\n" +" don't specify a number of seconds) it will ban the person indefinitely.\n" +" --exact bans only the exact hostmask; --nick bans just the nick;\n" +" --user bans just the user, and --host bans just the host. You can\n" +" combine these options as you choose. is a reason to give for\n" +" the kick.\n" +" is only necessary if the message isn't sent in the channel\n" +" itself.\n" +" " +msgstr "" +"[] [--{exact,nick,user,host}] [] []\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird den kickbannen, solange wie in Sekunden angegeben, oder andernfalls (falls 0 Sekunden oder gar keine Sekunden angeben werden) wird die Person für immer gebannt. --exact bannt nur die exakte Hostmaske; --nick bannt nur den Nick; --user bannt nur den Benuter und --host bannt nur diese Hostmaske. Du kannst die Optionen miteinander kombinieren wie du willst. ist die Begründung für den Kick. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:311 +msgid "I cowardly refuse to kickban myself." +msgstr "Ich bin zu feige um mich selbst zu kicken und zu bannen." + +#: plugin.py:318 +msgid "I haven't seen %s." +msgstr "Ich habe % nicht gesehen." + +#: plugin.py:326 +msgid "I cowardly refuse to ban myself." +msgstr "Ich bin zu feige um mich selbst zu bannen." + +#: plugin.py:353 +msgid "%s has %s too, you can't ban him/her/it." +msgstr "%s hat auch %s, du kannst ihn/sie/es nicht bannen." + +#: plugin.py:365 +msgid "kick or ban someone" +msgstr "jemanden kicken oder bannen" + +#: plugin.py:372 +msgid "" +"[] []\n" +"\n" +" Unbans on . If is not given, unbans\n" +" any hostmask currently banned on that matches your current\n" +" hostmask. Especially useful for unbanning yourself when you get\n" +" unexpectedly (or accidentally) banned from the channel. is\n" +" only necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] []\n" +"\n" +"Entbannt im . Falls die nicht angegeben wird, werden alle Bans entfernt, die momenaten im gebannt sind und auf deine momentane Hostmaske zutreffen. Besonders nützlich um dich selsbt zu entbannen, falls du versehentlich im Kanal gebannt wurdest. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:389 +msgid "All bans on %s matching %s have been removed." +msgstr "Alle Bans von %s die auf %s zutreffen wurden entfernt." + +#: plugin.py:393 +msgid "No bans matching %s were found on %s." +msgstr "Keine passenden Bans %s wurden in %s gefunden." + +#: plugin.py:396 +msgid "unban someone" +msgstr "jemanden entbannen" + +#: plugin.py:401 +msgid "" +"[] \n" +"\n" +" If you have the #channel,op capability, this will invite \n" +" to join . is only necessary if the message isn't\n" +" sent in the channel itself.\n" +" " +msgstr "" +"[] \n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird dazu eingeladen den zu betreten. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:410 +msgid "invite someone" +msgstr "jemanden einladen" + +#: plugin.py:429 +msgid "%s is already in %s." +msgstr "%s ist schon in %s." + +#: plugin.py:436 +msgid "There is no %s on this network." +msgstr "%s nicht auf diesem Netzwerk." + +#: plugin.py:448 +msgid "" +"[]\n" +"\n" +" If you have the #channel,op capability, this will \"lobotomize\" the\n" +" bot, making it silent and unanswering to all requests made in the\n" +" channel. is only necessary if the message isn't sent in\n" +" the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Falls du die #channel,op Fähigkeit besitzt, wird dies den Bot \"hirnamputieren\", er wird still und wird nicht auf Anfragen reagieren, die im Kanal getätigt werden. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:463 +msgid "" +"[]\n" +"\n" +" If you have the #channel,op capability, this will unlobotomize the\n" +" bot, making it respond to requests made in the channel again.\n" +" is only necessary if the message isn't sent in the channel\n" +" itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird dem Bot sein Hirn zurückgegeben, ab diesem Zeitpunkt antwortet er wieder auf Anfragen aus dem Kanal. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:478 +msgid "" +"takes no arguments\n" +"\n" +" Returns the channels in which this bot is lobotomized.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt die Kanäle aus in denen der Bot hirnamputiert ist." + +#: plugin.py:493 +msgid "I'm currently lobotomized in %L." +msgstr "Ich bin momentan hirnamputiert in %L." + +#: plugin.py:496 +msgid "I'm not currently lobotomized in any channels that you're in." +msgstr "Momentan bin ich nicht hirnamputiert in allen Kanälen in denen du bist." + +#: plugin.py:503 +msgid "" +"[] []\n" +"\n" +" If you have the #channel,op capability, this will effect a\n" +" persistent ban from interacting with the bot on the given\n" +" (or the current hostmask associated with ). Other\n" +" plugins may enforce this ban by actually banning users with\n" +" matching hostmasks when they join. is an optional\n" +" argument specifying when (in \"seconds from now\") the ban should\n" +" expire; if none is given, the ban will never automatically expire.\n" +" is only necessary if the message isn't sent in the\n" +" channel itself.\n" +" " +msgstr "" +"[] []\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird einem beständigen Ban mit der (oder dem Benutzer der mit verbunden wird) verboten mit dem Bot zu interagieren. Andere Plugins setzen es womöglich durch das der Ban Benutzer beim betreten eines Kanals wirklich bannt. ist optional, und legt fest wann (in Sekunden von jetzt an) der Ban abläuft, falls nicht angegeben wird der Ban niemals automatisch ablaufen. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:523 +msgid "" +"[] \n" +"\n" +" If you have the #channel,op capability, this will remove the\n" +" persistent ban on . is only necessary if the\n" +" message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] \n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird der beständige Ban auf aufgehoben. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:535 +msgid "There are no persistent bans for that hostmask." +msgstr "Es gibt keine beständigen Bans für diese Hostmaske." + +#: plugin.py:540 +#, fuzzy +msgid "" +"[]\n" +"\n" +" If you have the #channel,op capability, this will show you the\n" +" current persistent bans on the .\n" +" " +msgstr "" +"[]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, werden die momentan beständigen Bans im angezeigt." + +#: plugin.py:550 +msgid "%q (expires %t)" +msgstr "%q (läuft ab:%t)" + +#: plugin.py:553 +msgid "%q (never expires)" +msgstr "%q(läuft niemals ab)" + +#: plugin.py:557 +msgid "There are no persistent bans on %s." +msgstr "Es gibt keine beständigen Bans für %s." + +#: plugin.py:564 +msgid "" +"[] []\n" +"\n" +" If you have the #channel,op capability, this will set a persistent\n" +" ignore on or the hostmask currently\n" +" associated with . is an optional argument\n" +" specifying when (in \"seconds from now\") the ignore will expire; if\n" +" it isn't given, the ignore will never automatically expire.\n" +" is only necessary if the message isn't sent in the\n" +" channel itself.\n" +" " +msgstr "" +"[] []\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird eine beständige Ignorierung auf gesetzt oder auf die Hostmaske die momentan mit verbunden wird. ist optional und gibt an wann (in Sekunden von jetzt an) die Ignorierung abläuft, falls dies nicht angegeben wird, wird die Ignorierung niemals automatisch ablaufen. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:582 +msgid "" +"[] \n" +"\n" +" If you have the #channel,op capability, this will remove the\n" +" persistent ignore on in the channel. is only\n" +" necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] \n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird dies den dauerhaften Ignore von im Kanal entfernen. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:594 +msgid "There are no ignores for that hostmask." +msgstr "Es gibt keine Ignorierungen für diese Hostmaske." + +#: plugin.py:599 +msgid "" +"[]\n" +"\n" +" Lists the hostmasks that the bot is ignoring on the given channel.\n" +" is only necessary if the message isn't sent in the\n" +" channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Listet die Hostmasken auf, die der Bot im gegeben Kanal ignoriert. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:608 +msgid "I'm not currently ignoring any hostmasks in %q" +msgstr "Momentan ignoriere ich keine Hostmasken in %s." + +#: plugin.py:619 +#, fuzzy +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,op capability, this will give the\n" +" (or the user to whom maps)\n" +" the capability in the channel. is only\n" +" necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird die Kanalfähigkeit dem Benutzer (oder dem Benutzer auf den passt) gegeben. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:635 +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,op capability, this will take from the\n" +" user currently identified as (or the user to whom \n" +" maps) the capability in the channel. is only\n" +" necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird die die Fähigkeit im Kanal vom Benutzer entfernt, der momentan als angemeldet ist (oder auf des Benutzers auf den die zutrifft). ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:654 +msgid "That user didn't have the %L %s." +msgstr "Der Nutzer hatte nicht %L %s." + +#: plugin.py:663 +msgid "" +"[] {True|False}\n" +"\n" +" If you have the #channel,op capability, this will set the default\n" +" response to non-power-related (that is, not {op, halfop, voice})\n" +" capabilities to be the value you give. is only necessary\n" +" if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] {True|False}\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird dies die Standard Antwort auf nicht-macht-bezogene (also nicht {Op, halb-Op, Voice}) Fähigkeiten auf die angegeben Antwort setzen. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:681 +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,op capability, this will add the channel\n" +" capability for all users in the channel. is\n" +" only necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird die Kanalfähigkeit für alle Benutzer hinzugefügt. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:696 +msgid "" +"[] [ ...]\n" +"\n" +" If you have the #channel,op capability, this will unset the channel\n" +" capability so each user's specific capability or the\n" +" channel default capability will take precedence. is only\n" +" necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird die Kanalfähigkeit entfernt, sodass die Benutzerfähigkeiten oder Kanal Standardfähigkeiten vorrang haben. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:712 +msgid "capability" +msgstr "Fähigkeit" + +#: plugin.py:715 +msgid "I do not know about the %L %s." +msgstr "Ich weiß nichts von %L %s." + +#: plugin.py:722 +msgid "" +"[]\n" +"\n" +" Returns the capabilities present on the . is\n" +" only necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Gibt die Fähigkeiten zurück, die es im gibt. ist nur notwendig, falls die Nachricht nicht im Kanal selbt gegeben wurde." + +#: plugin.py:734 +msgid "" +"[] [] []\n" +"\n" +" If you have the #channel,op capability, this will disable the \n" +" in . If is provided, will be disabled only\n" +" for that plugin. If only is provided, all commands in the\n" +" given plugin will be disabled. is only necessary if the\n" +" message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] [] []\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird dies den im deaktivieren, falls er deaktiviert wurde. Falls angegeben wurde, wird nur für dieses deaktiviert. Falls nur angegeben wurde, werden alle Befehle des Plugins deaktiviert. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:750 +#: plugin.py:789 +msgid "The %s plugin does not have a command called %s." +msgstr "%s Plugin hat keinen Befehl %s." + +#: plugin.py:757 +#: plugin.py:796 +msgid "No plugin or command named %s could be found." +msgstr "Kein Plugin oder Befehl mit dem Namen %s konnte gefunden werden." + +#: plugin.py:773 +msgid "" +"[] [] []\n" +"\n" +" If you have the #channel,op capability, this will enable the \n" +" in if it has been disabled. If is provided,\n" +" will be enabled only for that plugin. If only is\n" +" provided, all commands in the given plugin will be enabled. \n" +" is only necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] [] []\n" +"\n" +"Falls du die #channel,op Fähigkeit hast, wird dies den im aktivieren, falls er deaktiviert wurde. Falls angegeben wurde, wird nur für dieses aktiviert. Falls nur angegeben wurde, werden alle Befehle des Plugins aktiviert. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:810 +msgid "%s was not disabled." +msgstr "%s wurde nicht abgeschaltet." + +#: plugin.py:819 +msgid "" +"[] [--count]\n" +"\n" +" Returns the nicks in . is only necessary if the\n" +" message isn't sent in the channel itself. Returns only the number of\n" +" nicks if --count option is provided.\n" +" " +msgstr "" +"[] [--count]\n" +"\n" +"Gibt die Nicks in zurück. ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde. Gibt nur die Anzahl der Nicks an, falls die --count Option angegeben wurde." + +#: plugin.py:831 +msgid "You don't have access to that information." +msgstr "Ich habe keinen Zugriff auf diese Informationen." + +#: plugin.py:845 +msgid "" +"Internal message for notifying all the #channel,ops in a channel of\n" +" a given situation." +msgstr "Interne Nachricht die alle #channel,ops eines Kanals über eine Situation informiert." + +#: plugin.py:848 +msgid "Alert to all %s ops: %s" +msgstr "Alarm an alle %s Operatoren: %s" + +#: plugin.py:850 +msgid " (from %s)" +msgstr "(von %s)" + +#: plugin.py:858 +msgid "" +"[] \n" +"\n" +" Sends to all the users in who have the ,op\n" +" capability.\n" +" " +msgstr "" +"[] \n" +"\n" +"Sendet , die die ,op Fähigkeit haben." + diff --git a/plugins/Channel/locale/fi.po b/plugins/Channel/locale/fi.po index 1d7abb5fa..0b406b53a 100644 --- a/plugins/Channel/locale/fi.po +++ b/plugins/Channel/locale/fi.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot Channel\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: \n" "Last-Translator: Mika Suomalainen \n" "Language-Team: \n" @@ -340,15 +340,15 @@ msgstr "Minä en ole nähnyt käyttäjää %s." msgid "I cowardly refuse to ban myself." msgstr "Minä pelkurimaisesti kieltäydyn antamasta itselleni porttikieltoa." -#: plugin.py:352 +#: plugin.py:353 msgid "%s has %s too, you can't ban him/her/it." msgstr "Käyttäjälltä %s on myös valtuus %s, et voi antaa hänelle/sille porttikieltoa." -#: plugin.py:364 +#: plugin.py:365 msgid "kick or ban someone" msgstr "potki tai anna jollekulle porttikielto" -#: plugin.py:371 +#: plugin.py:372 msgid "" "[] []\n" "\n" @@ -368,19 +368,19 @@ msgstr "" " vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:388 +#: plugin.py:389 msgid "All bans on %s matching %s have been removed." msgstr "Kaikki porttikiellot, jotka täsmäävät kanavalla %s käyttäjään %s on poistettu." -#: plugin.py:392 +#: plugin.py:393 msgid "No bans matching %s were found on %s." msgstr "Banneja, jotka täsmäävät käyttäjään %s ei löydetty kanavalla %s." -#: plugin.py:395 +#: plugin.py:396 msgid "unban someone" msgstr "poista joltakulta porttikielto" -#: plugin.py:400 +#: plugin.py:401 msgid "" "[] \n" "\n" @@ -396,19 +396,19 @@ msgstr "" " ei lähetetä kanavalla itsessään.\n" " " -#: plugin.py:409 +#: plugin.py:410 msgid "invite someone" msgstr "kutsu joku" -#: plugin.py:428 +#: plugin.py:429 msgid "%s is already in %s." msgstr "%s on jo kanavalla %s" -#: plugin.py:435 +#: plugin.py:436 msgid "There is no %s on this network." msgstr "Käyttäjä %s ei ole tässä verkossa." -#: plugin.py:447 +#: plugin.py:448 msgid "" "[]\n" "\n" @@ -426,7 +426,7 @@ msgstr "" " kanavalla itsellään.\n" " " -#: plugin.py:462 +#: plugin.py:463 msgid "" "[]\n" "\n" @@ -443,7 +443,7 @@ msgstr "" " on vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:477 +#: plugin.py:478 msgid "" "takes no arguments\n" "\n" @@ -455,15 +455,15 @@ msgstr "" " Palauttaa kanavat, joilla botti on lobotomoitu.\n" " " -#: plugin.py:492 +#: plugin.py:493 msgid "I'm currently lobotomized in %L." msgstr "Minut on tällä hetkellä lobotomoity seuraavilla kanavilla: %L." -#: plugin.py:495 +#: plugin.py:496 msgid "I'm not currently lobotomized in any channels that you're in." msgstr "En tällä hetkellä ole lobotomoitu millään kanavalla, jolla sinä olet." -#: plugin.py:502 +#: plugin.py:503 msgid "" "[] []\n" "\n" @@ -491,7 +491,7 @@ msgstr "" " kanavalla itsellään.\n" " " -#: plugin.py:522 +#: plugin.py:523 msgid "" "[] \n" "\n" @@ -507,16 +507,16 @@ msgstr "" " viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:534 +#: plugin.py:535 msgid "There are no persistent bans for that hostmask." msgstr "Tuolla hostmaskilla ei ole pysyvää porttikieltoa." -#: plugin.py:539 +#: plugin.py:540 msgid "" "[]\n" "\n" " If you have the #channel,op capability, this will show you the\n" -" current persistent bans on #channel.\n" +" current persistent bans on the .\n" " " msgstr "" "[]\n" @@ -525,19 +525,19 @@ msgstr "" " pysyvät bannit #kanavalla.\n" " " -#: plugin.py:549 +#: plugin.py:550 msgid "%q (expires %t)" msgstr "%q (venhentuu %t)" -#: plugin.py:552 +#: plugin.py:553 msgid "%q (never expires)" msgstr "%q (ei vanhene ikinä)" -#: plugin.py:556 +#: plugin.py:557 msgid "There are no persistent bans on %s." msgstr "Kanavalla %s ei ole pysyviä porttikieltoja." -#: plugin.py:563 +#: plugin.py:564 msgid "" "[] []\n" "\n" @@ -553,15 +553,15 @@ msgstr "" "[] []\n" "\n" " Jos sinulla on #kanava,op valtuus, tämä asettaa pysyvän\n" -" ignoren tai hostmaskiin\n" +" huomiotta jättämisen tai hostmaskiin\n" " joka on käytössä. on vaihtoehtoinen parametri\n" -" kun määritetään ( \"sekunteja alkaen nyt\")milloin ignore vanhentuu; jos\n" -" sitä ei ole annettu, ignore ei ikinä vanhennu automaattisesti.\n" +" kun määritetään ( \"sekunteja alkaen nyt\")milloin huomiotta jättäminen vanhentuu; jos\n" +" sitä ei ole annettu, huomiotta jättäminen ei ikinä vanhene automaattisesti.\n" " on vaadittu vain jos viestiä ei lähetetä\n" " kanavalla itsellään.\n" " " -#: plugin.py:581 +#: plugin.py:582 msgid "" "[] \n" "\n" @@ -573,15 +573,15 @@ msgstr "" "[] \n" "\n" " Jos sinulla on #kanava,op valtuus, tämä poistaa\n" -" pysyvän ignoren kanavalla. on vaadittu vain jos\n" +" pysyvän huomiotta jättämisen kanavalla. on vaadittu vain jos\n" " viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:593 +#: plugin.py:594 msgid "There are no ignores for that hostmask." -msgstr "Tuolla hostmaskilla ei ole pysyviä ignoreja." +msgstr "Tuolla hostmaskilla ei ole pysyviä huomiotta jättämisiä." -#: plugin.py:598 +#: plugin.py:599 msgid "" "[]\n" "\n" @@ -592,34 +592,34 @@ msgid "" msgstr "" "[]\n" "\n" -" Luettelee hostmaskit, jotka ovat botin ignoressa annetulla kanavalla.\n" +" Luettelee hostmaskit, jotka ovat botin huomiotta jättämis listalla annetulla kanavalla.\n" " on vaadittu vain, jos viestiä ei lähetetä\n" " kanavalla itsellään.\n" " " -#: plugin.py:607 +#: plugin.py:608 msgid "I'm not currently ignoring any hostmasks in %q" -msgstr "Minun ignoressani ei ole yhtään hostmaskia kanavalla %q." +msgstr "En tällä hetkellä jätä mitään hostmaskia huomiotta kanavalla %q." -#: plugin.py:618 +#: plugin.py:619 msgid "" "[] [ ...]\n" "\n" -" If you have the #channel,op capability, this will give the user\n" -" (or the user to whom maps)\n" +" If you have the #channel,op capability, this will give the\n" +" (or the user to whom maps)\n" " the capability in the channel. is only\n" " necessary if the message isn't sent in the channel itself.\n" " " msgstr "" -"[] []\n" +"[] []\n" "\n" -" Jos sinulla on #kanava,op valtuus, tämä antaa käyttäjä\n" -" (tai käyttäjälle, jonka määrittää)\n" -" kanavalla. on\n" +" Jos sinulla on #kanava,op valtuus, tämä antaa \n" +" (tai käyttäjälle, jonka määrittää)\n" +" kanavalla. on\n" " vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:634 +#: plugin.py:635 msgid "" "[] [ ...]\n" "\n" @@ -637,11 +637,11 @@ msgstr "" " vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:653 +#: plugin.py:654 msgid "That user didn't have the %L %s." msgstr "Tuolla käyttäjällä ei ollut valtuutta %L kanavalla %s." -#: plugin.py:662 +#: plugin.py:663 msgid "" "[] {True|False}\n" "\n" @@ -659,7 +659,7 @@ msgstr "" " jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:680 +#: plugin.py:681 msgid "" "[] [ ...]\n" "\n" @@ -675,7 +675,7 @@ msgstr "" " vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:695 +#: plugin.py:696 msgid "" "[] [ ...]\n" "\n" @@ -693,28 +693,29 @@ msgstr "" " vain jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:711 +#: plugin.py:712 msgid "capability" msgstr "valtuus" -#: plugin.py:714 +#: plugin.py:715 msgid "I do not know about the %L %s." msgstr "En tiedä valtuudesta %L kanavalla %s." -#: plugin.py:721 +#: plugin.py:722 msgid "" "[]\n" "\n" " Returns the capabilities present on the . is\n" " only necessary if the message isn't sent in the channel itself.\n" " " -msgstr "[]\n" +msgstr "" +"[]\n" "\n" " Palauttaa listan valtuuksista, jotka ovat . on\n" " vaadittu vain, jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:733 +#: plugin.py:734 msgid "" "[] [] []\n" "\n" @@ -734,17 +735,17 @@ msgstr "" " viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:749 -#: plugin.py:788 +#: plugin.py:750 +#: plugin.py:789 msgid "The %s plugin does not have a command called %s." msgstr "%s lisäosassa ei ole komentoa %s." -#: plugin.py:756 -#: plugin.py:795 +#: plugin.py:757 +#: plugin.py:796 msgid "No plugin or command named %s could be found." msgstr "Lisäosaa tai komentoa nimeltä %s ei löytynyt." -#: plugin.py:772 +#: plugin.py:773 msgid "" "[] [] []\n" "\n" @@ -764,11 +765,11 @@ msgstr "" " on vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:809 +#: plugin.py:810 msgid "%s was not disabled." msgstr "%s ei ollut poistettu käytöstä." -#: plugin.py:818 +#: plugin.py:819 msgid "" "[] [--count]\n" "\n" @@ -783,11 +784,11 @@ msgstr "" " viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:830 +#: plugin.py:831 msgid "You don't have access to that information." msgstr "Sinulla ei ole pääsyoikeutta tuohon tietoon." -#: plugin.py:843 +#: plugin.py:845 msgid "" "Internal message for notifying all the #channel,ops in a channel of\n" " a given situation." @@ -795,15 +796,15 @@ msgstr "" "Sisäinen viesti huomattamaan kaikkia henkilöitä, joilla on #kanava,op valtuus kanavalla,\n" " annetusta tilanteesta." -#: plugin.py:846 +#: plugin.py:848 msgid "Alert to all %s ops: %s" msgstr "Hälytys kaikille kanavan %s operaattoreille: %s" -#: plugin.py:848 +#: plugin.py:850 msgid " (from %s)" msgstr "(lähettänyt %s)" -#: plugin.py:856 +#: plugin.py:858 msgid "" "[] \n" "\n" diff --git a/plugins/Channel/locale/fr.po b/plugins/Channel/locale/fr.po index 05ed97b35..30531dbf4 100644 --- a/plugins/Channel/locale/fr.po +++ b/plugins/Channel/locale/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: \n" "Last-Translator: Valentin Lorentz \n" "Language-Team: Supybot-fr \n" @@ -287,15 +287,15 @@ msgstr "Je n'ai jamais vu %s." msgid "I cowardly refuse to ban myself." msgstr "Je suis trop couard pour me bannir moi-même." -#: plugin.py:352 +#: plugin.py:353 msgid "%s has %s too, you can't ban him/her/it." msgstr "%s est aussi %s, je ne peux le/la bannir." -#: plugin.py:364 +#: plugin.py:365 msgid "kick or ban someone" msgstr "kicker ou bannir quelqu'un" -#: plugin.py:371 +#: plugin.py:372 msgid "" "[] []\n" "\n" @@ -310,19 +310,19 @@ msgstr "" "\n" "Débannit le du . Si le n'est pas donné, débannit tous les masques d'hôte qui correspondent à votre masque d'hôte actuel. Particulièrement utile lorsque vous avez été banni(e) de manière inatendue ou accidentelle d'un canal. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:388 +#: plugin.py:389 msgid "All bans on %s matching %s have been removed." msgstr "Tous les bannissements sur %s correspondant à %s ont été supprimés." -#: plugin.py:392 +#: plugin.py:393 msgid "No bans matching %s were found on %s." msgstr "Aucun bannissement correspondant à % n'a été trouvé sur %s." -#: plugin.py:395 +#: plugin.py:396 msgid "unban someone" msgstr "débannir quelqu'un" -#: plugin.py:400 +#: plugin.py:401 msgid "" "[] \n" "\n" @@ -335,19 +335,19 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op, ceci invitera à rejoindre le . n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:409 +#: plugin.py:410 msgid "invite someone" msgstr "inviter quelqu'un" -#: plugin.py:428 +#: plugin.py:429 msgid "%s is already in %s." msgstr "%s est déjà sur %s." -#: plugin.py:435 +#: plugin.py:436 msgid "There is no %s on this network." msgstr "Il n'y a aucun %s sur ce réseau." -#: plugin.py:447 +#: plugin.py:448 msgid "" "[]\n" "\n" @@ -361,7 +361,7 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op, ceci \"lobotomisera\" le bot, c'est à dire qu'il sera silencieux et ne répondra plus à aucune requête faite sur le canal. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:462 +#: plugin.py:463 msgid "" "[]\n" "\n" @@ -375,7 +375,7 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op, ceci \"dé-lobotomisera\" le bot, c'est à dire qu'il ne sera plus silencieux et répondra à nouveau aux requêtes faites sur le canal. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:477 +#: plugin.py:478 msgid "" "takes no arguments\n" "\n" @@ -386,15 +386,15 @@ msgstr "" "\n" "Retourne les canaux sur lesquels le bot est lobotomisé." -#: plugin.py:492 +#: plugin.py:493 msgid "I'm currently lobotomized in %L." msgstr "Je suis actuellement lobotomisé sur %L." -#: plugin.py:495 +#: plugin.py:496 msgid "I'm not currently lobotomized in any channels that you're in." msgstr "Je ne suis actuellement lobotomisé sur aucun canal où vous êtes." -#: plugin.py:502 +#: plugin.py:503 msgid "" "[] []\n" "\n" @@ -413,7 +413,7 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op, ceci affectera un bannisement persistant au spécifié. D'autres plugins pourraient renforcer ce bannissement en bannissant vraiment les utilisateurs correspondant à ce masque d'hôte lorsqu'ils entrent. est un argument option, correspondant à la durée, en secondes, que doit avoir le bannissement." -#: plugin.py:522 +#: plugin.py:523 msgid "" "[] \n" "\n" @@ -426,35 +426,35 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op, ceci supprimera le bannissement persistant sur le . n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:534 +#: plugin.py:535 msgid "There are no persistent bans for that hostmask." msgstr "Il n'y a pas de bannissement persistant pour ce masque d'hôte." -#: plugin.py:539 +#: plugin.py:540 msgid "" "[]\n" "\n" " If you have the #channel,op capability, this will show you the\n" -" current persistent bans on #channel.\n" +" current persistent bans on the .\n" " " msgstr "" "[]\n" "\n" "Si vous avez la capacité #canal,op, ceci vous affichera la liste des bannissements persistants sur le canal." -#: plugin.py:549 +#: plugin.py:550 msgid "%q (expires %t)" msgstr "%q (expire dans %t)" -#: plugin.py:552 +#: plugin.py:553 msgid "%q (never expires)" msgstr "%q (n'expire jamais)" -#: plugin.py:556 +#: plugin.py:557 msgid "There are no persistent bans on %s." msgstr "Il n'y a pas de bannissement persistant sur %s." -#: plugin.py:563 +#: plugin.py:564 msgid "" "[] []\n" "\n" @@ -471,7 +471,7 @@ msgstr "" "\n" "Vous permet d'ajouter un ignore persistant sur le , ou le masque associé au , à condition d'avoir la capacité #canal,op. est un argument optionnel, correspondant au nombre de secondes durant lesquelles l'ignore sera effectif ; si il n'est pas donné, l'ignore n'expirera jamais. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:581 +#: plugin.py:582 msgid "" "[] \n" "\n" @@ -484,11 +484,11 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op, ceci supprimera le masque d'ignorance persistant du sur le canal. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:593 +#: plugin.py:594 msgid "There are no ignores for that hostmask." msgstr "Il n'y a pas d'ignorance pour ce masque d'hôte." -#: plugin.py:598 +#: plugin.py:599 msgid "" "[]\n" "\n" @@ -501,25 +501,25 @@ msgstr "" "\n" "Liste les masques d'hôte que le bot ignore sur le canal donné. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:607 +#: plugin.py:608 msgid "I'm not currently ignoring any hostmasks in %q" msgstr "Je n'ignore actuellement aucun masque d'hôte sur %q." -#: plugin.py:618 +#: plugin.py:619 msgid "" "[] [ ...]\n" "\n" -" If you have the #channel,op capability, this will give the user\n" -" (or the user to whom maps)\n" +" If you have the #channel,op capability, this will give the\n" +" (or the user to whom maps)\n" " the capability in the channel. is only\n" " necessary if the message isn't sent in the channel itself.\n" " " msgstr "" "[] [ ...]\n" "\n" -"Vous permet de donner à l'utilisateur (ou celui ayant actuellement le ) la sur le canal. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." +"Si vous avez la permission #canal,op : donne à l'utilisateur (ou celui ayant actuellement le ) la sur le canal. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:634 +#: plugin.py:635 msgid "" "[] [ ...]\n" "\n" @@ -533,11 +533,11 @@ msgstr "" "\n" " Vous permet de prendre la de l'utilisateur (ou celui à qui appartient le , à condition que vous ayez la capacité #canal,op. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:653 +#: plugin.py:654 msgid "That user didn't have the %L %s." msgstr "Cet utilisateur n'a pas les %L %s." -#: plugin.py:662 +#: plugin.py:663 msgid "" "[] {True|False}\n" "\n" @@ -551,7 +551,7 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op, cela vous permet de définir la réponse par défaut relative aux problèmes de pouvoir nécessaire op, halfop, voice). n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:680 +#: plugin.py:681 msgid "" "[] [ ...]\n" "\n" @@ -564,7 +564,7 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op ceci ajoutera la de canal à tous les utilisateurs du canal. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:695 +#: plugin.py:696 msgid "" "[] [ ...]\n" "\n" @@ -578,15 +578,15 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op ceci désactivera le fait que tous les utilisateurs du canal aient la de canal. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:711 +#: plugin.py:712 msgid "capability" msgstr "capacité" -#: plugin.py:714 +#: plugin.py:715 msgid "I do not know about the %L %s." msgstr "Je ne sais rien à propos des %L %s." -#: plugin.py:721 +#: plugin.py:722 msgid "" "[]\n" "\n" @@ -598,7 +598,7 @@ msgstr "" "\n" "Retourne les capacité présentes sur le . n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:733 +#: plugin.py:734 msgid "" "[] [] []\n" "\n" @@ -613,17 +613,17 @@ msgstr "" "\n" " Si vous avez la capacité #canal,op, ceci désactive la sur le . Si le est fourni, toutes les commandes de ce plugin seront désactivées. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:749 -#: plugin.py:788 +#: plugin.py:750 +#: plugin.py:789 msgid "The %s plugin does not have a command called %s." msgstr "Le plugin %s n'a pas de commande appelée %s." -#: plugin.py:756 -#: plugin.py:795 +#: plugin.py:757 +#: plugin.py:796 msgid "No plugin or command named %s could be found." msgstr "Aucun plugin ou commande appelé %s n'a pû être trouvé." -#: plugin.py:772 +#: plugin.py:773 msgid "" "[] [] []\n" "\n" @@ -638,11 +638,11 @@ msgstr "" "\n" "Si vous avez la capacité #canal,op, ceci activera la sur le , si elle a auparavant été désactivée. Si le seule la commande de ce plugin sera activée. n'est nécessaire n'est pas envoyé sur le canal lui-même." -#: plugin.py:809 +#: plugin.py:810 msgid "%s was not disabled." msgstr "%s n'était pas désactivé." -#: plugin.py:818 +#: plugin.py:819 msgid "" "[] [--count]\n" "\n" @@ -655,25 +655,25 @@ msgstr "" "\n" "Retourne les nick sur le . n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même. Ne retourne que le nombre de nicks si --count est donné." -#: plugin.py:830 +#: plugin.py:831 msgid "You don't have access to that information." msgstr "Vous n'avez pas accès à cette information" -#: plugin.py:843 +#: plugin.py:845 msgid "" "Internal message for notifying all the #channel,ops in a channel of\n" " a given situation." msgstr "Message interne pour notifier tous les #canal,ops sur un canal d'une situation donnée." -#: plugin.py:846 +#: plugin.py:848 msgid "Alert to all %s ops: %s" msgstr "Alerte à tous les ops de %s : %s" -#: plugin.py:848 +#: plugin.py:850 msgid " (from %s)" msgstr "(de %s)" -#: plugin.py:856 +#: plugin.py:858 msgid "" "[] \n" "\n" diff --git a/plugins/Channel/locale/hu.po b/plugins/Channel/locale/hu.po index 106419968..ed685d8aa 100644 --- a/plugins/Channel/locale/hu.po +++ b/plugins/Channel/locale/hu.po @@ -5,9 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: Limnoria Channel\n" -"POT-Creation-Date: 2011-07-22 01:33+CEST\n" -"PO-Revision-Date: 2011-08-10 14:02+0100\n" -"Last-Translator: nyuszika7h \n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 14:49+0200\n" +"Last-Translator: Mika Suomalainen \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" @@ -285,15 +285,15 @@ msgstr "Nem láttam %s-t." msgid "I cowardly refuse to ban myself." msgstr "Gyáván megtagadom, hogy kitiltsam magam." -#: plugin.py:352 +#: plugin.py:353 msgid "%s has %s too, you can't ban him/her/it." msgstr "%s-nek is van %s, nem tilthatod ki őt." -#: plugin.py:364 +#: plugin.py:365 msgid "kick or ban someone" msgstr "kirúgni vagy kitiltani valakit" -#: plugin.py:371 +#: plugin.py:372 msgid "" "[] []\n" "\n" @@ -308,19 +308,19 @@ msgstr "" "\n" "Eltávolítja a tiltást -ról -ban. Ha nincs megadva, az összes tiltást eltávolítja -ról, ami illeszkedik rád. Főleg akkor hasznos, hogy eltávolítsd a tiltást magadról, ha váratlanul (vagy véletlenül) ki lettél tiltva a csatornáról. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:388 +#: plugin.py:389 msgid "All bans on %s matching %s have been removed." msgstr "Minden tiltás %s-ban, ami illeszkedik %s-ra el lett távolítva." -#: plugin.py:392 +#: plugin.py:393 msgid "No bans matching %s were found on %s." msgstr "Nem található %s-ra illeszkedő tiltás %s-ban." -#: plugin.py:395 +#: plugin.py:396 msgid "unban someone" msgstr "eltávolítani a tiltást valakiről" -#: plugin.py:400 +#: plugin.py:401 msgid "" "[] \n" "\n" @@ -333,19 +333,19 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, meghívja -et -ra. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:409 +#: plugin.py:410 msgid "invite someone" msgstr "meghívni valakit" -#: plugin.py:428 +#: plugin.py:429 msgid "%s is already in %s." msgstr "%s már %s-ban van." -#: plugin.py:435 +#: plugin.py:436 msgid "There is no %s on this network." msgstr "Nincs %s ezen a hálózaton." -#: plugin.py:447 +#: plugin.py:448 msgid "" "[]\n" "\n" @@ -359,7 +359,7 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez \"némítja\" a botot, ezzel némáva teszi azt és nem fog válaszolni a csatornában végrehajtott kérésekre. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:462 +#: plugin.py:463 msgid "" "[]\n" "\n" @@ -373,7 +373,7 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez megszünteti a bot némítását, így az újra válaszol a csatornában vérgehajtott kérésekre. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:477 +#: plugin.py:478 msgid "" "takes no arguments\n" "\n" @@ -384,15 +384,15 @@ msgstr "" "\n" "Kiírja a csatornákat, ahol a bot némítva van." -#: plugin.py:492 +#: plugin.py:493 msgid "I'm currently lobotomized in %L." msgstr "Jelenleg némítva vagyok %L-ban." -#: plugin.py:495 +#: plugin.py:496 msgid "I'm not currently lobotomized in any channels that you're in." msgstr "Jelenleg nem vagyok némítva egy csatornában sem, ahol vagy." -#: plugin.py:502 +#: plugin.py:503 msgid "" "[] []\n" "\n" @@ -411,7 +411,7 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez megtiltja -nak (vagy jelenlegi hosztjának), hogy a botot használja a csatornában. Más bővítmények kényszeríthetik a tiltást azzal, hogy kitiltják a felhasználókat, akikre illeszkedik a hoszt amikor belépnek. egy nem kötelező paaméter, meghatározza, hogy mikor (hány \"másodperc múlva\") járjon le a tiltás; ha nincs megadva, a tiltás soha nem fog automatikusan lejárni. csak akkor szükséges, ha az üzenet nem a csaotnában van elküldve." -#: plugin.py:522 +#: plugin.py:523 msgid "" "[] \n" "\n" @@ -424,35 +424,36 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez eltávolítja a tiltást -ról. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:534 +#: plugin.py:535 msgid "There are no persistent bans for that hostmask." msgstr "Nincsenek tiltások erre a hosztra." -#: plugin.py:539 +#: plugin.py:540 +#, fuzzy msgid "" "[]\n" "\n" " If you have the #channel,op capability, this will show you the\n" -" current persistent bans on #channel.\n" +" current persistent bans on the .\n" " " msgstr "" "[]\n" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez megmutatja neked a jelenlegi tiltásokat -n." -#: plugin.py:549 +#: plugin.py:550 msgid "%q (expires %t)" msgstr "%q (lejár %t)" -#: plugin.py:552 +#: plugin.py:553 msgid "%q (never expires)" msgstr "%q (soha nem jár le)" -#: plugin.py:556 +#: plugin.py:557 msgid "There are no persistent bans on %s." msgstr "Nincsenek tiltások %s-on." -#: plugin.py:563 +#: plugin.py:564 msgid "" "[] []\n" "\n" @@ -469,7 +470,7 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez mellőzi -ot vagy jelenlegi hosztját. egy nem kötelező paraméter, meghatározza, hogy mikor (hány \"másodperc múlva\" járjon le a mellőzés; ha nincs megadva, a mellőzés soha nem fog automatikusan lejárni. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:581 +#: plugin.py:582 msgid "" "[] \n" "\n" @@ -482,11 +483,11 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez eltávolítja a mellőzést -ról a csatornában. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:593 +#: plugin.py:594 msgid "There are no ignores for that hostmask." msgstr "Nincsenek mellőzések erre a hosztra." -#: plugin.py:598 +#: plugin.py:599 msgid "" "[]\n" "\n" @@ -499,16 +500,17 @@ msgstr "" "\n" "Kiírja a hosztokat, amelyeket a bot mellőz a megadott csatornában. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:607 +#: plugin.py:608 msgid "I'm not currently ignoring any hostmasks in %q" msgstr "Nem mellőzők egy hosztot sem %q-ban." -#: plugin.py:618 +#: plugin.py:619 +#, fuzzy msgid "" "[] [ ...]\n" "\n" -" If you have the #channel,op capability, this will give the user\n" -" (or the user to whom maps)\n" +" If you have the #channel,op capability, this will give the\n" +" (or the user to whom maps)\n" " the capability in the channel. is only\n" " necessary if the message isn't sent in the channel itself.\n" " " @@ -517,7 +519,7 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez felhasználónak (vagy felhasználójának) a képességet a csatornában. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:634 +#: plugin.py:635 msgid "" "[] [ ...]\n" "\n" @@ -531,11 +533,11 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez eltávolítja a jelenleg -ként bejelentkezett felhasználóról (vagy a felhasználóról, akire illeszkedik) a képességet a csatornában. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:653 +#: plugin.py:654 msgid "That user didn't have the %L %s." msgstr "A felhasználónak nem volt a(z) %L %s." -#: plugin.py:662 +#: plugin.py:663 msgid "" "[] {True|False}\n" "\n" @@ -549,7 +551,7 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez az alapértelmezett választ a nem erővel kapcsolatos (vagyis nem {op, halfop, voice}) képességeket a megadott értékre állítja. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:680 +#: plugin.py:681 msgid "" "[] [ ...]\n" "\n" @@ -562,7 +564,7 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez hozzáadja -et a csatorna képességeihez. csak akkor szükséges, ha az üzenet nem, a csatornában van elküldve." -#: plugin.py:695 +#: plugin.py:696 msgid "" "[] [ ...]\n" "\n" @@ -576,15 +578,15 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez eltávolítja a csatorna képességét, így a felhasználók saját képességei vagy a csatorna alapértelmezett képességei lesznek előnyben. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:711 +#: plugin.py:712 msgid "capability" msgstr "képesség" -#: plugin.py:714 +#: plugin.py:715 msgid "I do not know about the %L %s." msgstr "Nem tudok a %L %s-ról." -#: plugin.py:721 +#: plugin.py:722 msgid "" "[]\n" "\n" @@ -596,7 +598,7 @@ msgstr "" "\n" "Kiírja képességeit. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:733 +#: plugin.py:734 msgid "" "[] [] []\n" "\n" @@ -611,17 +613,17 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez letiltja -ot -ban. Ha meg van adva, csak a megadott bővítményben lesz letiltva. Ha csak van megadva, minden parancs le lesz tiltva a megadott bővítményben. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:749 -#: plugin.py:788 +#: plugin.py:750 +#: plugin.py:789 msgid "The %s plugin does not have a command called %s." msgstr "A %s bővítménynek nincs %s nevű parancsa." -#: plugin.py:756 -#: plugin.py:795 +#: plugin.py:757 +#: plugin.py:796 msgid "No plugin or command named %s could be found." msgstr "Nem található bővítmény vagy parancs %s néven." -#: plugin.py:772 +#: plugin.py:773 msgid "" "[] [] []\n" "\n" @@ -636,11 +638,11 @@ msgstr "" "\n" "Ha rendelkezel a #csatorna,op képességgel, ez engedélyezi -ot -ban ha le lett tiltva. Ha meg van adva, csak a megadott bővítményben lesz engedélyezve." -#: plugin.py:809 +#: plugin.py:810 msgid "%s was not disabled." msgstr "%s nem volt letiltva." -#: plugin.py:818 +#: plugin.py:819 msgid "" "[] [--count]\n" "\n" @@ -653,25 +655,25 @@ msgstr "" "\n" "Kiírja a neveket -ban. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve. Ha a --count opció meg van adva, csak a nevek számát írja ki." -#: plugin.py:830 +#: plugin.py:831 msgid "You don't have access to that information." msgstr "Nincs hozzáférésed ehhez az információhoz." -#: plugin.py:843 +#: plugin.py:845 msgid "" "Internal message for notifying all the #channel,ops in a channel of\n" " a given situation." msgstr "Belső üzenet #csatorna,op-ok értesítésére egy adott szituációban." -#: plugin.py:846 +#: plugin.py:848 msgid "Alert to all %s ops: %s" msgstr "Riasztás minden %s operátornak: %s" -#: plugin.py:848 +#: plugin.py:850 msgid " (from %s)" msgstr "(%s-tól)" -#: plugin.py:856 +#: plugin.py:858 msgid "" "[] \n" "\n" diff --git a/plugins/Channel/locale/it.po b/plugins/Channel/locale/it.po index 680395f35..fa587c7fe 100644 --- a/plugins/Channel/locale/it.po +++ b/plugins/Channel/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-08-10 01:23+0200\n" +"PO-Revision-Date: 2012-06-09 09:33+0200\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -164,7 +164,7 @@ msgstr "" msgid "halfop someone" msgstr "dare l'halfop a qualcuno" -#: plugin.py:168 +#: plugin.py:184 #, docstring msgid "" "[] [ ...]\n" @@ -182,11 +182,11 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:190 +#: plugin.py:192 msgid "voice someone" msgstr "dare il voice a qualcuno" -#: plugin.py:195 +#: plugin.py:197 #, docstring msgid "" "[] [ ...]\n" @@ -202,15 +202,15 @@ msgstr "" " i nick specificati; se nessun nick è fornito li rimuove a chi usa il comando.\n" " " -#: plugin.py:202 +#: plugin.py:204 msgid "I cowardly refuse to deop myself. If you really want me deopped, tell me to op you and then deop me yourself." msgstr "Codardamente mi rifiuto di rimuovermi lo stato di operatore; se davvero lo vuoi, dimmi di darlo a te e poi toglimelo." -#: plugin.py:210 +#: plugin.py:212 msgid "deop someone" msgstr "rimuovere l'op a qualcuno" -#: plugin.py:215 +#: plugin.py:217 #, docstring msgid "" "[] [ ...]\n" @@ -226,15 +226,15 @@ msgstr "" " i nick specificati; se nessun nick è fornito li rimuove a chi usa il comando.\n" " " -#: plugin.py:222 +#: plugin.py:224 msgid "I cowardly refuse to dehalfop myself. If you really want me dehalfopped, tell me to op you and then dehalfop me yourself." msgstr "Codardamente mi rifiuto di rimuovermi lo stato di halfop; se davvero lo vuoi, dimmi di dare l'op a te e poi toglimelo." -#: plugin.py:230 +#: plugin.py:232 msgid "dehalfop someone" msgstr "rimuovere l'halfop a qualcuno" -#: plugin.py:235 +#: plugin.py:237 #, docstring msgid "" "[] [ ...]\n" @@ -250,11 +250,11 @@ msgstr "" " i nick specificati; se nessun nick è fornito lo rimuove a chi usa il comando.\n" " " -#: plugin.py:242 +#: plugin.py:244 msgid "I cowardly refuse to devoice myself. If you really want me devoiced, tell me to op you and then devoice me yourself." msgstr "Codardamente mi rifiuto di rimuovermi il voice; se davvero lo vuoi, dimmi di dare l'op a te e poi toglimelo." -#: plugin.py:255 +#: plugin.py:253 #, docstring msgid "" "[]\n" @@ -270,7 +270,7 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:268 +#: plugin.py:266 #, docstring msgid "" "[] [, , ...] []\n" @@ -288,19 +288,19 @@ msgstr "" " se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:276 +#: plugin.py:274 msgid "I cowardly refuse to kick myself." msgstr "Codardamente mi rifiuto di cacciare me stesso." -#: plugin.py:281 +#: plugin.py:279 msgid "The reason you gave is longer than the allowed length for a KICK reason on this server." msgstr "Il motivo che hai dato è più lungo della lunghezza consentita da questo server." -#: plugin.py:286 +#: plugin.py:284 msgid "kick someone" msgstr "cacciare (kick) qualcuno" -#: plugin.py:292 +#: plugin.py:290 #, docstring msgid "" "[] [--{exact,nick,user,host}] [] []\n" @@ -327,27 +327,27 @@ msgstr "" " se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:311 +#: plugin.py:309 msgid "I cowardly refuse to kickban myself." msgstr "Codardamente mi rifiuto di espellere (kickban) me stesso." -#: plugin.py:318 +#: plugin.py:316 msgid "I haven't seen %s." msgstr "Non ho mai visto %s." -#: plugin.py:326 +#: plugin.py:324 msgid "I cowardly refuse to ban myself." msgstr "Codardamente mi rifiuto di bannare stesso." -#: plugin.py:352 +#: plugin.py:351 msgid "%s has %s too, you can't ban him/her/it." msgstr "anche %s ha %s, non puoi bannarlo/a." -#: plugin.py:364 +#: plugin.py:363 msgid "kick or ban someone" msgstr "cacciare (kick) o bannare qualcuno" -#: plugin.py:371 +#: plugin.py:370 #, docstring msgid "" "[] []\n" @@ -368,19 +368,19 @@ msgstr "" " messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:388 +#: plugin.py:387 msgid "All bans on %s matching %s have been removed." msgstr "Tutti i ban su %s che corrisopndono a %s sono stati rimossi." -#: plugin.py:392 +#: plugin.py:391 msgid "No bans matching %s were found on %s." msgstr "Non è stato trovato alcun ban corrispondente a %s su %s." -#: plugin.py:395 +#: plugin.py:394 msgid "unban someone" msgstr "rimuovere il ban a qualcuno" -#: plugin.py:400 +#: plugin.py:399 #, docstring msgid "" "[] \n" @@ -396,19 +396,19 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:409 +#: plugin.py:408 msgid "invite someone" msgstr "invitare qualcuno" -#: plugin.py:428 +#: plugin.py:427 msgid "%s is already in %s." msgstr "%s è già in %s." -#: plugin.py:435 +#: plugin.py:434 msgid "There is no %s on this network." msgstr "Non c'è nessun %s su questa rete." -#: plugin.py:447 +#: plugin.py:446 #, docstring msgid "" "[]\n" @@ -426,7 +426,7 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:462 +#: plugin.py:461 #, docstring msgid "" "[]\n" @@ -444,7 +444,7 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:477 +#: plugin.py:476 #, docstring msgid "" "takes no arguments\n" @@ -457,15 +457,15 @@ msgstr "" " Riporta l'elenco dei canali nei quali il bot è lobotomizzato.\n" " " -#: plugin.py:492 +#: plugin.py:491 msgid "I'm currently lobotomized in %L." msgstr "Sono attualmente lobotomizzato in %L." -#: plugin.py:495 +#: plugin.py:494 msgid "I'm not currently lobotomized in any channels that you're in." msgstr "Al momento non sono lobotomizzato in nessun canale in cui sei." -#: plugin.py:502 +#: plugin.py:501 #, docstring msgid "" "[] []\n" @@ -491,7 +491,7 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:522 +#: plugin.py:521 #, docstring msgid "" "[] \n" @@ -507,17 +507,17 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:534 +#: plugin.py:533 msgid "There are no persistent bans for that hostmask." msgstr "Non ci sono ban permanenti per questa hostmask." -#: plugin.py:539 +#: plugin.py:538 #, docstring msgid "" "[]\n" "\n" " If you have the #channel,op capability, this will show you the\n" -" current persistent bans on #channel.\n" +" current persistent bans on the .\n" " " msgstr "" "[]\n" @@ -525,19 +525,19 @@ msgstr "" " Se hai la capacità #canale,op mostra gli attuali ban permanenti su .\n" " " -#: plugin.py:549 +#: plugin.py:548 msgid "%q (expires %t)" msgstr "%q (scade il %t)" -#: plugin.py:552 +#: plugin.py:551 msgid "%q (never expires)" msgstr "%q (non scade)" -#: plugin.py:556 +#: plugin.py:555 msgid "There are no persistent bans on %s." msgstr "Non ci sono ban permanenti su %s." -#: plugin.py:563 +#: plugin.py:562 #, docstring msgid "" "[] []\n" @@ -560,7 +560,7 @@ msgstr "" " se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:581 +#: plugin.py:580 #, docstring msgid "" "[] \n" @@ -576,11 +576,11 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:593 +#: plugin.py:592 msgid "There are no ignores for that hostmask." msgstr "Non ci sono ignore per questa hostmask." -#: plugin.py:598 +#: plugin.py:597 #, docstring msgid "" "[]\n" @@ -596,17 +596,17 @@ msgstr "" " necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:607 +#: plugin.py:606 msgid "I'm not currently ignoring any hostmasks in %q" msgstr "Al momento non sto ignorando nessuna hostmasks in %q" -#: plugin.py:618 +#: plugin.py:617 #, docstring msgid "" "[] [ ...]\n" "\n" -" If you have the #channel,op capability, this will give the user\n" -" (or the user to whom maps)\n" +" If you have the #channel,op capability, this will give the\n" +" (or the user to whom maps)\n" " the capability in the channel. is only\n" " necessary if the message isn't sent in the channel itself.\n" " " @@ -618,7 +618,7 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:634 +#: plugin.py:633 #, docstring msgid "" "[] [ ...]\n" @@ -636,11 +636,11 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:653 +#: plugin.py:652 msgid "That user didn't have the %L %s." msgstr "Questo utente non ha la %L %s." -#: plugin.py:662 +#: plugin.py:661 #, docstring msgid "" "[] {True|False}\n" @@ -658,7 +658,7 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:680 +#: plugin.py:679 #, docstring msgid "" "[] [ ...]\n" @@ -675,7 +675,7 @@ msgstr "" " solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:695 +#: plugin.py:694 #, docstring msgid "" "[] [ ...]\n" @@ -694,15 +694,15 @@ msgstr "" " solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:711 +#: plugin.py:710 msgid "capability" msgstr "capacità" -#: plugin.py:714 +#: plugin.py:713 msgid "I do not know about the %L %s." msgstr "Non so nulla a proposito di %L %s." -#: plugin.py:721 +#: plugin.py:720 #, docstring msgid "" "[]\n" @@ -717,7 +717,7 @@ msgstr "" " solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:733 +#: plugin.py:732 #, docstring msgid "" "[] [] []\n" @@ -737,15 +737,15 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:749 plugin.py:788 +#: plugin.py:748 plugin.py:787 msgid "The %s plugin does not have a command called %s." msgstr "Il plugin %s non ha un comando chiamato %s." -#: plugin.py:756 plugin.py:795 +#: plugin.py:755 plugin.py:794 msgid "No plugin or command named %s could be found." msgstr "Non è stato trovato nessun plugin o comando chiamato %s." -#: plugin.py:772 +#: plugin.py:771 #, docstring msgid "" "[] [] []\n" @@ -766,11 +766,11 @@ msgstr "" " inviato nel canale stesso.\n" " " -#: plugin.py:809 +#: plugin.py:808 msgid "%s was not disabled." msgstr "%s non è stato disabilitato." -#: plugin.py:818 +#: plugin.py:817 #, docstring msgid "" "[] [--count]\n" @@ -787,7 +787,7 @@ msgstr "" " l'opzione --count, mostra solo il numero dei nick.\n" " " -#: plugin.py:830 +#: plugin.py:829 msgid "You don't have access to that information." msgstr "Non hai accesso a questa informazione." diff --git a/plugins/Channel/messages.pot b/plugins/Channel/messages.pot index c469d80e8..670b55d8f 100644 --- a/plugins/Channel/messages.pot +++ b/plugins/Channel/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-07-22 01:33+CEST\n" +"POT-Creation-Date: 2012-06-09 08:56+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -128,7 +128,7 @@ msgstr "" msgid "halfop someone" msgstr "" -#: plugin.py:168 +#: plugin.py:184 #, docstring msgid "" "[] [ ...]\n" @@ -140,11 +140,11 @@ msgid "" " " msgstr "" -#: plugin.py:190 +#: plugin.py:192 msgid "voice someone" msgstr "" -#: plugin.py:195 +#: plugin.py:197 #, docstring msgid "" "[] [ ...]\n" @@ -155,15 +155,15 @@ msgid "" " " msgstr "" -#: plugin.py:202 +#: plugin.py:204 msgid "I cowardly refuse to deop myself. If you really want me deopped, tell me to op you and then deop me yourself." msgstr "" -#: plugin.py:210 +#: plugin.py:212 msgid "deop someone" msgstr "" -#: plugin.py:215 +#: plugin.py:217 #, docstring msgid "" "[] [ ...]\n" @@ -174,15 +174,15 @@ msgid "" " " msgstr "" -#: plugin.py:222 +#: plugin.py:224 msgid "I cowardly refuse to dehalfop myself. If you really want me dehalfopped, tell me to op you and then dehalfop me yourself." msgstr "" -#: plugin.py:230 +#: plugin.py:232 msgid "dehalfop someone" msgstr "" -#: plugin.py:235 +#: plugin.py:237 #, docstring msgid "" "[] [ ...]\n" @@ -193,11 +193,11 @@ msgid "" " " msgstr "" -#: plugin.py:242 +#: plugin.py:244 msgid "I cowardly refuse to devoice myself. If you really want me devoiced, tell me to op you and then devoice me yourself." msgstr "" -#: plugin.py:255 +#: plugin.py:253 #, docstring msgid "" "[]\n" @@ -208,7 +208,7 @@ msgid "" " " msgstr "" -#: plugin.py:268 +#: plugin.py:266 #, docstring msgid "" "[] [, , ...] []\n" @@ -220,19 +220,19 @@ msgid "" " " msgstr "" -#: plugin.py:276 +#: plugin.py:274 msgid "I cowardly refuse to kick myself." msgstr "" -#: plugin.py:281 +#: plugin.py:279 msgid "The reason you gave is longer than the allowed length for a KICK reason on this server." msgstr "" -#: plugin.py:286 +#: plugin.py:284 msgid "kick someone" msgstr "" -#: plugin.py:292 +#: plugin.py:290 #, docstring msgid "" "[] [--{exact,nick,user,host}] [] []\n" @@ -249,27 +249,27 @@ msgid "" " " msgstr "" -#: plugin.py:311 +#: plugin.py:309 msgid "I cowardly refuse to kickban myself." msgstr "" -#: plugin.py:318 +#: plugin.py:316 msgid "I haven't seen %s." msgstr "" -#: plugin.py:326 +#: plugin.py:324 msgid "I cowardly refuse to ban myself." msgstr "" -#: plugin.py:352 +#: plugin.py:351 msgid "%s has %s too, you can't ban him/her/it." msgstr "" -#: plugin.py:364 +#: plugin.py:363 msgid "kick or ban someone" msgstr "" -#: plugin.py:371 +#: plugin.py:370 #, docstring msgid "" "[] []\n" @@ -282,19 +282,19 @@ msgid "" " " msgstr "" -#: plugin.py:388 +#: plugin.py:387 msgid "All bans on %s matching %s have been removed." msgstr "" -#: plugin.py:392 +#: plugin.py:391 msgid "No bans matching %s were found on %s." msgstr "" -#: plugin.py:395 +#: plugin.py:394 msgid "unban someone" msgstr "" -#: plugin.py:400 +#: plugin.py:399 #, docstring msgid "" "[] \n" @@ -305,19 +305,19 @@ msgid "" " " msgstr "" -#: plugin.py:409 +#: plugin.py:408 msgid "invite someone" msgstr "" -#: plugin.py:428 +#: plugin.py:427 msgid "%s is already in %s." msgstr "" -#: plugin.py:435 +#: plugin.py:434 msgid "There is no %s on this network." msgstr "" -#: plugin.py:447 +#: plugin.py:446 #, docstring msgid "" "[]\n" @@ -329,7 +329,7 @@ msgid "" " " msgstr "" -#: plugin.py:462 +#: plugin.py:461 #, docstring msgid "" "[]\n" @@ -341,7 +341,7 @@ msgid "" " " msgstr "" -#: plugin.py:477 +#: plugin.py:476 #, docstring msgid "" "takes no arguments\n" @@ -350,15 +350,15 @@ msgid "" " " msgstr "" -#: plugin.py:492 +#: plugin.py:491 msgid "I'm currently lobotomized in %L." msgstr "" -#: plugin.py:495 +#: plugin.py:494 msgid "I'm not currently lobotomized in any channels that you're in." msgstr "" -#: plugin.py:502 +#: plugin.py:501 #, docstring msgid "" "[] []\n" @@ -375,7 +375,7 @@ msgid "" " " msgstr "" -#: plugin.py:522 +#: plugin.py:521 #, docstring msgid "" "[] \n" @@ -386,33 +386,33 @@ msgid "" " " msgstr "" -#: plugin.py:534 +#: plugin.py:533 msgid "There are no persistent bans for that hostmask." msgstr "" -#: plugin.py:539 +#: plugin.py:538 #, docstring msgid "" "[]\n" "\n" " If you have the #channel,op capability, this will show you the\n" -" current persistent bans on #channel.\n" +" current persistent bans on the .\n" " " msgstr "" -#: plugin.py:549 +#: plugin.py:548 msgid "%q (expires %t)" msgstr "" -#: plugin.py:552 +#: plugin.py:551 msgid "%q (never expires)" msgstr "" -#: plugin.py:556 +#: plugin.py:555 msgid "There are no persistent bans on %s." msgstr "" -#: plugin.py:563 +#: plugin.py:562 #, docstring msgid "" "[] []\n" @@ -427,7 +427,7 @@ msgid "" " " msgstr "" -#: plugin.py:581 +#: plugin.py:580 #, docstring msgid "" "[] \n" @@ -438,11 +438,11 @@ msgid "" " " msgstr "" -#: plugin.py:593 +#: plugin.py:592 msgid "There are no ignores for that hostmask." msgstr "" -#: plugin.py:598 +#: plugin.py:597 #, docstring msgid "" "[]\n" @@ -453,23 +453,23 @@ msgid "" " " msgstr "" -#: plugin.py:607 +#: plugin.py:606 msgid "I'm not currently ignoring any hostmasks in %q" msgstr "" -#: plugin.py:618 +#: plugin.py:617 #, docstring msgid "" "[] [ ...]\n" "\n" -" If you have the #channel,op capability, this will give the user\n" -" (or the user to whom maps)\n" +" If you have the #channel,op capability, this will give the\n" +" (or the user to whom maps)\n" " the capability in the channel. is only\n" " necessary if the message isn't sent in the channel itself.\n" " " msgstr "" -#: plugin.py:634 +#: plugin.py:633 #, docstring msgid "" "[] [ ...]\n" @@ -481,11 +481,11 @@ msgid "" " " msgstr "" -#: plugin.py:653 +#: plugin.py:652 msgid "That user didn't have the %L %s." msgstr "" -#: plugin.py:662 +#: plugin.py:661 #, docstring msgid "" "[] {True|False}\n" @@ -497,7 +497,7 @@ msgid "" " " msgstr "" -#: plugin.py:680 +#: plugin.py:679 #, docstring msgid "" "[] [ ...]\n" @@ -508,7 +508,7 @@ msgid "" " " msgstr "" -#: plugin.py:695 +#: plugin.py:694 #, docstring msgid "" "[] [ ...]\n" @@ -520,15 +520,15 @@ msgid "" " " msgstr "" -#: plugin.py:711 +#: plugin.py:710 msgid "capability" msgstr "" -#: plugin.py:714 +#: plugin.py:713 msgid "I do not know about the %L %s." msgstr "" -#: plugin.py:721 +#: plugin.py:720 #, docstring msgid "" "[]\n" @@ -538,7 +538,7 @@ msgid "" " " msgstr "" -#: plugin.py:733 +#: plugin.py:732 #, docstring msgid "" "[] [] []\n" @@ -551,15 +551,15 @@ msgid "" " " msgstr "" -#: plugin.py:749 plugin.py:788 +#: plugin.py:748 plugin.py:787 msgid "The %s plugin does not have a command called %s." msgstr "" -#: plugin.py:756 plugin.py:795 +#: plugin.py:755 plugin.py:794 msgid "No plugin or command named %s could be found." msgstr "" -#: plugin.py:772 +#: plugin.py:771 #, docstring msgid "" "[] [] []\n" @@ -572,11 +572,11 @@ msgid "" " " msgstr "" -#: plugin.py:809 +#: plugin.py:808 msgid "%s was not disabled." msgstr "" -#: plugin.py:818 +#: plugin.py:817 #, docstring msgid "" "[] [--count]\n" @@ -587,7 +587,7 @@ msgid "" " " msgstr "" -#: plugin.py:830 +#: plugin.py:829 msgid "You don't have access to that information." msgstr "" diff --git a/plugins/Channel/plugin.py b/plugins/Channel/plugin.py index 78ff7455b..9db073a07 100644 --- a/plugins/Channel/plugin.py +++ b/plugins/Channel/plugin.py @@ -1,6 +1,6 @@ ### # Copyright (c) 2002-2005, Jeremiah Fincher -# Copyright (c) 2009, James Vega +# Copyright (c) 2009-2012, James McCoy # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -163,15 +163,7 @@ class Channel(callbacks.Plugin): halfop = wrap(halfop, ['halfop', ('haveOp', _('halfop someone')), any('nickInChannel')]) - @internationalizeDocstring - def voice(self, irc, msg, args, channel, nicks): - """[] [ ...] - - If you have the #channel,voice capability, this will voice all the - s you provide. If you don't provide any s, this will - voice you. is only necessary if the message isn't sent in the - channel itself. - """ + def _voice(self, irc, msg, args, channel, nicks, fn): if nicks: if len(nicks) == 1 and msg.nick in nicks: capability = 'voice' @@ -183,10 +175,20 @@ class Channel(callbacks.Plugin): capability = ircdb.makeChannelCapability(channel, capability) if ircdb.checkCapability(msg.prefix, capability): def f(L): - return ircmsgs.voices(channel, L) + return fn(channel, L) self._sendMsgs(irc, nicks, f) else: irc.errorNoCapability(capability) + + def voice(self, irc, msg, args, channel, nicks): + """[] [ ...] + + If you have the #channel,voice capability, this will voice all the + s you provide. If you don't provide any s, this will + voice you. is only necessary if the message isn't sent in the + channel itself. + """ + self._voice(irc, msg, args, channel, nicks, ircmsgs.voices) voice = wrap(voice, ['channel', ('isGranted', _('voice someone')), any('nickInChannel')]) @@ -242,12 +244,8 @@ class Channel(callbacks.Plugin): irc.error(_('I cowardly refuse to devoice myself. If you really ' 'want me devoiced, tell me to op you and then devoice ' 'me yourself.'), Raise=True) - if not nicks: - nicks = [msg.nick] - def f(L): - return ircmsgs.devoices(channel, L) - self._sendMsgs(irc, nicks, f) - devoice = wrap(devoice, ['voice', ('isGranted', 'devoice someone'), + self._voice(irc, msg, args, channel, nicks, ircmsgs.devoices) + devoice = wrap(devoice, ['channel', ('haveOp', 'devoice someone'), any('nickInChannel')]) @internationalizeDocstring @@ -346,7 +344,8 @@ class Channel(callbacks.Plugin): if bannedNick == msg.nick: doBan() elif ircdb.checkCapability(msg.prefix, capability): - if ircdb.checkCapability(bannedHostmask, capability): + if ircdb.checkCapability(bannedHostmask, capability) and \ + not ircdb.checkCapability(msg.prefix, 'owner'): self.log.warning('%s tried to ban %q, but both have %s', msg.prefix, bannedHostmask, capability) irc.error(format(_('%s has %s too, you can\'t ban ' @@ -539,7 +538,7 @@ class Channel(callbacks.Plugin): """[] If you have the #channel,op capability, this will show you the - current persistent bans on #channel. + current persistent bans on the . """ c = ircdb.channels.getChannel(channel) if c.bans: @@ -617,8 +616,8 @@ class Channel(callbacks.Plugin): def add(self, irc, msg, args, channel, user, capabilities): """[] [ ...] - If you have the #channel,op capability, this will give the user - (or the user to whom maps) + If you have the #channel,op capability, this will give the + (or the user to whom maps) the capability in the channel. is only necessary if the message isn't sent in the channel itself. """ @@ -827,8 +826,8 @@ class Channel(callbacks.Plugin): msg.args[0] != channel and \ (ircutils.isChannel(msg.args[0]) or \ msg.nick not in irc.state.channels[channel].users): - irc.error(_('You don\'t have access to that information.')) - return + irc.error(_('You don\'t have access to that information.'), + Raise=True) L = list(irc.state.channels[channel].users) keys = [option for (option, arg) in optlist] if 'count' not in keys: diff --git a/plugins/Channel/test.py b/plugins/Channel/test.py index 54ce68ac5..1c301ce7b 100644 --- a/plugins/Channel/test.py +++ b/plugins/Channel/test.py @@ -205,11 +205,19 @@ class ChannelTestCase(ChannelPluginTestCase): def testIgnore(self): orig = conf.supybot.protocols.irc.banmask() + def ignore(given, expect=None): + if expect is None: + expect = given + self.assertNotError('channel ignore add %s' % given) + self.assertResponse('channel ignore list', "'%s'" % expect) + self.assertNotError('channel ignore remove %s' % expect) + self.assertRegexp('channel ignore list', 'not currently') try: + ignore('foo!bar@baz', '*!bar@baz') + ignore('foo!*@*') conf.supybot.protocols.irc.banmask.setValue(['exact']) - self.assertNotError('channel ignore add foo!bar@baz') - self.assertResponse('channel ignore list', "'foo!bar@baz'") - self.assertNotError('channel ignore remove foo!bar@baz') + ignore('foo!bar@baz') + ignore('foo!*@*') self.assertError('ban add not!a.hostmask') finally: conf.supybot.protocols.irc.banmask.setValue(orig) diff --git a/plugins/ChannelLogger/locale/it.po b/plugins/ChannelLogger/locale/it.po index 26c48495c..05f0787a4 100644 --- a/plugins/ChannelLogger/locale/it.po +++ b/plugins/ChannelLogger/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-19 16:57+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/ChannelStats/locale/it.po b/plugins/ChannelStats/locale/it.po new file mode 100644 index 000000000..666a09a42 --- /dev/null +++ b/plugins/ChannelStats/locale/it.po @@ -0,0 +1,186 @@ +msgid "" +msgstr "" +"Project-Id-Version: Limnoria\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-07-05 13:41+0200\n" +"Last-Translator: skizzhg \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + + +#: config.py:60 +msgid "" +"Determines whether the bot will keep channel\n" +" statistics on itself, possibly skewing the channel stats (especially in\n" +" cases where the bot is relaying between channels on a network)." +msgstr "" +"Determina se il bot terrà statistiche del canale, probabilmente alterandole\n" +" (in particolare in caso faccia l'inoltro dei messaggi attraverso i canali).\n" + +#: config.py:64 +msgid "" +"Determines what\n" +" words (i.e., pieces of text with no spaces in them) are considered\n" +" 'smileys' for the purposes of stats-keeping." +msgstr "" +"Determina quali parole (ovvero parti di testo senza spazi) sono considerate\n" +" faccine sorridenti per le statistiche." + +#: config.py:68 +msgid "" +"Determines what words\n" +" (i.e., pieces of text with no spaces in them ) are considered 'frowns' for\n" +" the purposes of stats-keeping." +msgstr "" +"Determina quali parole (ovvero parti di testo senza spazi) sono considerate\n" +" faccine tristi per le statistiche." + +#: plugin.py:246 +#, docstring +msgid "" +"[] []\n" +"\n" +" Returns the statistics for on . is only\n" +" necessary if the message isn't sent on the channel itself. If \n" +" isn't given, it defaults to the user sending the command.\n" +" " +msgstr "" +"[] []\n" +"\n" +" Riporta le statistiche per su . è necessario\n" +" solo se il messaggio non viene inviato nel canale stesso. Se \n" +" non è specificato, passa all'utente che ha dato il comando.\n" +" " + +#: plugin.py:259 +msgid "I couldn't find you in my user database." +msgstr "Non ti trovo nel mio database utenti." + +#: plugin.py:272 +msgid "%s has sent %n; a total of %n, %n, %n, and %n; %s of those messages %s. %s has joined %n, parted %n, quit %n, kicked someone %n, been kicked %n, changed the topic %n, and changed the mode %n." +msgstr "%s ha inviato %n; un totale di %n, %n, %n, e %n; %s di quei messaggi %s. %s è entrato %n volte, è uscito %n volte, si è disconnesso %n volte, ha espulso qualcuno %n volte, è stato espulso %n volte, ha modificato il topic %n volte ed ha cambiato il mode %n volte." + +#: plugin.py:279 +msgid "character" +msgstr "carattere" + +#: plugin.py:280 plugin.py:363 +msgid "word" +msgstr "parola" + +#: plugin.py:281 plugin.py:364 +msgid "smiley" +msgstr "faccina sorridente" + +#: plugin.py:282 plugin.py:365 +msgid "frown" +msgstr "faccina triste" + +#: plugin.py:284 plugin.py:366 +msgid "was an ACTION" +msgstr "è stata un'azione (ACTION)" + +#: plugin.py:285 plugin.py:367 +msgid "were ACTIONs" +msgstr "sono state azioni (ACTION)" + +#: plugin.py:287 plugin.py:288 plugin.py:289 plugin.py:290 plugin.py:291 +#: plugin.py:292 plugin.py:293 +msgid "time" +msgstr "volta" + +#: plugin.py:296 +msgid "I have no stats for that %s in %s." +msgstr "Non ho statistiche per %s in %s." + +#: plugin.py:304 +#, docstring +msgid "" +"[] \n" +"\n" +" Returns the ranking of users according to the given stat expression.\n" +" Valid variables in the stat expression include 'msgs', 'chars',\n" +" 'words', 'smileys', 'frowns', 'actions', 'joins', 'parts', 'quits',\n" +" 'kicks', 'kicked', 'topics', and 'modes'. Any simple mathematical\n" +" expression involving those variables is permitted.\n" +" " +msgstr "" +"[] \n" +"\n" +" Riporta la classifica degli utenti in base all'espresisone fornita.\n" +" Le variabili valide sono: \"msgs\", \"chars\", \"words\", \"smileys\",\n" +" \"frowns\", \"actions\", \"joins\", \"parts\", \"quits\", \"kicks\",\n" +" \"kicked\", \"topics\" e \"modes\". È permessa qualsiasi espressione\n" +" matematica che utilizzi queste variabili.\n" +" " + +#: plugin.py:315 +msgid "There's really no reason why you should have underscores or brackets in your mathematical expression. Please remove them." +msgstr "Non v'è alcuna ragione di usare underscore o parentesi nelle espressioni matematiche; ti invito a rimuoverli." + +#: plugin.py:319 +msgid "You can't use lambda in this command." +msgstr "Non è possibile usare lambda in questo comando." + +#: plugin.py:333 +msgid "stat variable" +msgstr "variabile di statistica" + +#: plugin.py:349 +#, docstring +msgid "" +"[]\n" +"\n" +" Returns the statistics for . is only necessary if\n" +" the message isn't sent on the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +" Riporta le statistiche di . è necessario\n" +" solo se il messaggio non viene inviato nel canale stesso.\n" +" " + +#: plugin.py:357 +msgid "On %s there %h been %i messages, containing %i characters, %n, %n, and %n; %i of those messages %s. There have been %n, %n, %n, %n, %n, and %n. There %b currently %n and the channel has peaked at %n." +msgstr "In %s ci sono%v stati %i messaggi, contenenti %i caratteri, %n, %n, e %n; %i di questi messaggi %s. Ci sono stati %n, %n, %n, %n, %n, e %n. Attualmente ci sono%v %n e il canale ha raggiunto il picco di %n." + +#: plugin.py:368 +msgid "join" +msgstr "join" + +#: plugin.py:369 +msgid "part" +msgstr "part" + +#: plugin.py:370 +msgid "quit" +msgstr "quit" + +#: plugin.py:371 +msgid "kick" +msgstr "kick" + +#: plugin.py:372 +msgid "mode" +msgstr "mode" + +#: plugin.py:372 plugin.py:373 +msgid "change" +msgstr "modifiche" + +#: plugin.py:373 +msgid "topic" +msgstr "topic" + +#: plugin.py:375 plugin.py:376 +msgid "user" +msgstr "utente" + +#: plugin.py:379 +msgid "I've never been on %s." +msgstr "Non sono mai stato su %s." + diff --git a/plugins/Conditional/locale/it.po b/plugins/Conditional/locale/it.po index ca7747b55..b6dc3df01 100644 --- a/plugins/Conditional/locale/it.po +++ b/plugins/Conditional/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-08 09:05+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Config/locale/de.po b/plugins/Config/locale/de.po new file mode 100644 index 000000000..bbe7889fc --- /dev/null +++ b/plugins/Config/locale/de.po @@ -0,0 +1,155 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-10-27 00:20+0100\n" +"Last-Translator: Florian Besser \n" +"Language: de\n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: German\n" + +#: plugin.py:103 +msgid "configuration variable" +msgstr "Konfigurationsvariable" + +#: plugin.py:109 +msgid "settable configuration variable" +msgstr "setzbare Konfigurationsvariable" + +#: plugin.py:136 +msgid "" +"\n" +"\n" +" Returns the configuration variables available under the given\n" +" configuration . If a variable has values under it, it is\n" +" preceded by an '@' sign. If a variable is a 'ChannelValue', that is,\n" +" it can be separately configured for each channel using the 'channel'\n" +" command in this plugin, it is preceded by an '#' sign.\n" +" " +msgstr "" +"\n" +"\n" +"Gibt die Konfigurationsvariablen aus die unter der gegeben Konfiguraions verfügbar sind. Falls eine Variable mehrere Werte unter ihr wird '@' Zeichen vorangestellt. Falls eine Variable ein 'Kanalwert' wird ein '#' Zeichen vorangestellt, es ist dann möglich diese Variable für jeden Kanal, mit dem 'channel' Befehl, separat zu setzen." + +#: plugin.py:148 +msgid "There don't seem to be any values in %s." +msgstr "Es scheint so als würde es keine Werte in %s geben." + +#: plugin.py:154 +msgid "" +"\n" +"\n" +" Searches for in the current configuration variables.\n" +" " +msgstr "" +"\n" +"\n" +"Sucht nach in den momentanen Konfigurationsvariablen." + +#: plugin.py:167 +msgid "There were no matching configuration variables." +msgstr "Keine passende Konfigurationsvariable gefunden." + +#: plugin.py:174 +msgid "Global: %s; %s: %s" +msgstr "Global: %s; %s: %s" + +#: plugin.py:185 +msgid "That registry variable has no value. Use the list command in this plugin to see what variables are available in this group." +msgstr "Diese Registierungsvariable hat keinen Wert. Benutze den list Befehl um zu sehen welche Variablen in dieser Gruppe verfügbar sind." + +#: plugin.py:200 +msgid "" +"[] []\n" +"\n" +" If is given, sets the channel configuration variable for \n" +" to for . Otherwise, returns the current channel\n" +" configuration value of . is only necessary if the\n" +" message isn't sent in the channel itself." +msgstr "" +"[] []\n" +"\n" +"Falls angegeben ist wird die Kanal Konfigurationsvariable für auf gesetzt für . Andererseits wird der momentane Wert der Kanal Konfigurationsvariable ausgegben. wird nur benötigt wenn die Nachricht nicht im Kanal selbst gesendet wird." + +#: plugin.py:207 +msgid "That configuration variable is not a channel-specific configuration variable." +msgstr "Diese Konfigurationsvariable ist keine kanalspezifische Konfigurationsvariable." + +#: plugin.py:220 +msgid "" +" []\n" +"\n" +" If is given, sets the value of to . Otherwise,\n" +" returns the current value of . You may omit the leading\n" +" \"supybot.\" in the name if you so choose.\n" +" " +msgstr "" +" []\n" +"\n" +"Falls angegeben wird, wird der Wert von auf gesetzt. Wenn nicht, wird der momentane Wert von ausgegben> Du kannst möglicherweise das vornstehende \"supybot.\" im Namen weglassen, falls du das möchtest." + +#: plugin.py:234 +msgid "" +"\n" +"\n" +" Returns the description of the configuration variable .\n" +" " +msgstr "" +"\n" +"\n" +"Gibt die Beschreibung der Konfigurationsvariable aus." + +#: plugin.py:242 +msgid " (Current value: %s)" +msgstr " (Momentaner Wert: %s)" + +#: plugin.py:245 +msgid "That configuration group exists, but seems to have no help. Try \"config list %s\" to see if it has any children values." +msgstr "Diese Konfigurationsgruppe extistiert, es scheint aber so als wäre keine Hilfe verfügbar. Probiere \"config list\" um zu sehen ob es Werte darunter gibt." + +#: plugin.py:249 +msgid "%s has no help." +msgstr "%s hat keine Hilfe." + +#: plugin.py:254 +msgid "" +"\n" +"\n" +" Returns the default value of the configuration variable .\n" +" " +msgstr "" +"\n" +"\n" +"Gibt den Standartwert der Konfigurationsvariable aus." + +#: plugin.py:264 +msgid "" +"takes no arguments\n" +"\n" +" Reloads the various configuration files (user database, channel\n" +" database, registry, etc.).\n" +" " +msgstr "" +"hat kein Argument\n" +"\n" +"Läd verschiedene Konfigurationsdateien neu (Benuter Datenbank, Kanal Datenbank, Registrierung, etc)." + +#: plugin.py:275 +msgid "" +"\n" +"\n" +" Exports the public variables of your configuration to .\n" +" If you want to show someone your configuration file, but you don't\n" +" want that person to be able to see things like passwords, etc., this\n" +" command will export a \"sanitized\" configuration file suitable for\n" +" showing publicly.\n" +" " +msgstr "" +"\n" +"\n" +"Exportier die öffentlichen Variablen deiner Konfiguration nach . Falls du deine Konfiguration jemandem zeigen möchtest, er aber keine Dinge wie Passwörter, etc. sehen soll, wird dieser Befehl eine \"bereinigte\" Konfiguration exportieren die für die Öffentlichkeit geeignet ist." + diff --git a/plugins/Config/locale/it.po b/plugins/Config/locale/it.po index a0b9a1ab7..3b2de9f76 100644 --- a/plugins/Config/locale/it.po +++ b/plugins/Config/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-28 12:33+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Config/messages.pot b/plugins/Config/messages.pot index cb2fba16c..b9ab403e0 100644 --- a/plugins/Config/messages.pot +++ b/plugins/Config/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/plugins/Ctcp/config.py b/plugins/Ctcp/config.py index 8e19f3273..866ad5f45 100644 --- a/plugins/Ctcp/config.py +++ b/plugins/Ctcp/config.py @@ -50,6 +50,9 @@ conf.registerGlobalValue(Ctcp, 'versionWait', wait after getting a version command (not a CTCP VERSION, but an actual call of the command in this plugin named "version") before replying with the results it has collected.""")) +conf.registerGlobalValue(Ctcp, 'userinfo', + registry.String('', """Determines what will be sent when a + USERINFO query is received.""")) ### # supybot.abuse configuration variables. diff --git a/plugins/Ctcp/locale/de.po b/plugins/Ctcp/locale/de.po new file mode 100644 index 000000000..78563bb52 --- /dev/null +++ b/plugins/Ctcp/locale/de.po @@ -0,0 +1,55 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-10-29 19:22+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: Germen \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: plugin.py:77 +msgid "\001PING ?(.*)\001" +msgstr "\001PING ?(.*)\001" + +#: plugin.py:86 +msgid "\001VERSION\001" +msgstr "\001VERSION\001" + +#: plugin.py:91 +msgid "\001USERINFO\001" +msgstr "\001USERINFO\001" + +#: plugin.py:96 +msgid "\001TIME\001" +msgstr "\001TIME\001" + +#: plugin.py:101 +msgid "\001FINGER\001" +msgstr "\001FINGER\001" + +#: plugin.py:104 +msgid "Supybot, the best Python IRC bot in existence!" +msgstr "Supybot ist der beste Python IRC Bot den es gibt!" + +#: plugin.py:107 +msgid "\001SOURCE\001" +msgstr "\001SOURCE\001" + +#: plugin.py:123 +msgid "" +"[] [--nicks]\n" +"\n" +" Sends a CTCP VERSION to , returning the various\n" +" version strings returned. It waits for 10 seconds before returning\n" +" the versions received at that point. If --nicks is given, nicks are\n" +" associated with the version strings; otherwise, only the version\n" +" strings are given.\n" +" " +msgstr "" +"[] [--nicks] \n" +"\n" +"Sendet CTCP VERSION an , gibt die verschiedenen Versions Zeichenketten zurück. Es wartet 10 Sekunden bevor die Versionen die zu diesem Zeitpunkt emfpangen wurden zurückgegeben werden. Falls --nicks angegeben wird, werden die Versions Zeichenketten an die Nicks geknüpft;wenn nicht werden nur die Versions Zeichenketten zurückgegeben." + diff --git a/plugins/Ctcp/locale/fi.po b/plugins/Ctcp/locale/fi.po index 14bfa2763..6fbcc2a39 100755 --- a/plugins/Ctcp/locale/fi.po +++ b/plugins/Ctcp/locale/fi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-08-10 14:27+0200\n" +"PO-Revision-Date: 2011-12-23 13:36+0200\n" "Last-Translator: Mika Suomalainen \n" "Language-Team: \n" "Language: \n" diff --git a/plugins/Ctcp/locale/fr.po b/plugins/Ctcp/locale/fr.po index 2dba46d88..d8e9e0cb7 100644 --- a/plugins/Ctcp/locale/fr.po +++ b/plugins/Ctcp/locale/fr.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Supybot-fr\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: \n" -"Last-Translator: Valentin Lorentz \n" +"Last-Translator: Mika Suomalainen \n" "Language-Team: Supybot-fr \n" "Language: \n" "MIME-Version: 1.0\n" @@ -14,32 +14,32 @@ msgstr "" "X-Poedit-SourceCharset: ASCII\n" #: plugin.py:77 -msgid "PING ?(.*)" -msgstr "" +msgid "\001PING ?(.*)\001" +msgstr "\001PING ?(.*)\001" #: plugin.py:86 -msgid "VERSION" -msgstr "" +msgid "\001VERSION\001" +msgstr "\001VERSION\001" #: plugin.py:91 -msgid "USERINFO" -msgstr "" +msgid "\001USERINFO\001" +msgstr "\001USERINFO\001" #: plugin.py:96 -msgid "TIME" -msgstr "" +msgid "\001TIME\001" +msgstr "\001TIME\001" #: plugin.py:101 -msgid "FINGER" -msgstr "" +msgid "\001FINGER\001" +msgstr "\001FINGER\001" #: plugin.py:104 msgid "Supybot, the best Python IRC bot in existence!" msgstr "Supybot, le meilleur bot IRC en Python au monde !" #: plugin.py:107 -msgid "SOURCE" -msgstr "" +msgid "\001SOURCE\001" +msgstr "\001SOURCE\001" #: plugin.py:123 msgid "" diff --git a/plugins/Ctcp/locale/it.po b/plugins/Ctcp/locale/it.po index 7169ebbe8..d64814fb0 100644 --- a/plugins/Ctcp/locale/it.po +++ b/plugins/Ctcp/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-12 13:43+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Ctcp/plugin.py b/plugins/Ctcp/plugin.py index 94dc3e2ed..ebcedbce4 100644 --- a/plugins/Ctcp/plugin.py +++ b/plugins/Ctcp/plugin.py @@ -90,7 +90,7 @@ class Ctcp(callbacks.PluginRegexp): def ctcpUserinfo(self, irc, msg, match): "\x01USERINFO\x01" self.log.info('Received CTCP USERINFO from %s', msg.prefix) - self._reply(irc, msg, 'USERINFO') + self._reply(irc, msg, 'USERINFO %s' % self.registryValue('userinfo')) def ctcpTime(self, irc, msg, match): "\x01TIME\x01" @@ -107,7 +107,7 @@ class Ctcp(callbacks.PluginRegexp): "\x01SOURCE\x01" self.log.info('Received CTCP SOURCE from %s', msg.prefix) self._reply(irc, msg, - 'SOURCE http://www.sourceforge.net/projects/supybot/') + 'SOURCE https://github.com/ProgVal/Limnoria') def doNotice(self, irc, msg): if ircmsgs.isCtcp(msg): diff --git a/plugins/Dict/locale/it.po b/plugins/Dict/locale/it.po index ca5194dee..44805de44 100644 --- a/plugins/Dict/locale/it.po +++ b/plugins/Dict/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-28 20:21+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Dunno/locale/de.po b/plugins/Dunno/locale/de.po new file mode 100644 index 000000000..d29242799 --- /dev/null +++ b/plugins/Dunno/locale/de.po @@ -0,0 +1,28 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-11-04 18:45+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"Language: de\n" + +#: config.py:46 +msgid "" +"Determines whether the bot will prefix the nick\n" +" of the user giving an invalid command to the \"dunno\" response." +msgstr "Legt fest ob der Bot " + +#: plugin.py:37 +msgid "" +"This plugin was written initially to work with MoobotFactoids, the two\n" +" of them to provide a similar-to-moobot-and-blootbot interface for factoids.\n" +" Basically, it replaces the standard 'Error: is not a valid command.'\n" +" messages with messages kept in a database, able to give more personable\n" +" responses." +msgstr "Dieses plugin wurde ursprünglich geschrieben um mit MoobotFactoids betrieben zu werden, die zwei zusammen um ein gleiches MooBot und Blootbot Interface für Factoids zu bieten. Es ersetzt die Standard 'Fehler: ist kein zulässiger Befehl.' Nachricht mit einer Nachricht die in der Datenbank gespeichert ist, um die Antworten mehr zu personalisieren." + diff --git a/plugins/Dunno/locale/it.po b/plugins/Dunno/locale/it.po index 5e701bc00..5f9e908fb 100644 --- a/plugins/Dunno/locale/it.po +++ b/plugins/Dunno/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-12 13:58+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Factoids/locale/fi.po b/plugins/Factoids/locale/fi.po index a1e27bbe6..54dc13b84 100644 --- a/plugins/Factoids/locale/fi.po +++ b/plugins/Factoids/locale/fi.po @@ -1,26 +1,26 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR ORGANIZATION -# Mika Suomalainen , 2011. +# Factoids plugin in Limnoria +# Copyright (C) 2011, 2012 Limnoria +# Mika Suomalainen , 2011, 2012. # msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: 2011-06-28 19:40+CEST\n" -"PO-Revision-Date: 2011-07-21 19:18+0200\n" +"PO-Revision-Date: 2012-04-27 14:45+0200\n" "Last-Translator: Mika Suomalainen \n" -"Language-Team: \n" +"Language-Team: Finnish <>\n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #: config.py:45 msgid "" "Value must include $value, otherwise the factoid's value would be left\n" " out." -msgstr "" -"Arvon täytyy sisältää $value, muutoin factoidin arvo jätettäisiin\n" -" ulos." +msgstr "Arvon täytyy sisältää $value, muuten factoidin arvo jätettäisiin ulos." #: config.py:51 msgid "" @@ -29,19 +29,20 @@ msgid "" " feel more comfortable with 'is' or something else, so it's\n" " configurable." msgstr "" -"Määrittää mitä komentoa käytetään erottajana\n" -" \"learn\" komennossa. Oletuksena 'as' -- learn as . Käyttäjistä saattaa\n" -" käyttäjästä saattaa olla mukavampaa käyttää 'is'iä tai jotakin muuta, joten se on\n" -" säädettävissä." +"Määrittää mitä sanaa käytetään eroittajana\n" +" \"learn\" komennossa. Oletuksena 'as' -- learn as . Käyttäjistä saattaa\n" +" kuitenkin olla mukavampaa käyttää 'is'iä tai jotakin muuta eroittajaa, joten se on\n" +" säädettävissä." #: config.py:56 +#, fuzzy msgid "" "Determines whether the bot will reply with the\n" " single matching factoid if only one factoid matches when using the search\n" " command." msgstr "" "Määrittää vastaako botti yhden komennon täsmäävään\n" -" factoidiin, jos vain yksi täsmää \"search\" komentoa käytettäessä.\n" +" factoidiin, jos vain yksi täsmää \"search\" komentoa käytettäessä.\n" #: config.py:60 msgid "" @@ -49,9 +50,9 @@ msgid "" " commands by searching for a factoid; basically making the whatis\n" " unnecessary when you want all factoids for a given key." msgstr "" -"Determines whether the bot will reply to invalid\n" -" commands by searching for a factoid; basically making the whatis\n" -" unnecessary when you want all factoids for a given key." +"Määrittää vastaako botti virheelliseen komentoon etsimällä Factoidia; perusteellisesti\n" +" tehden \"whatis\" komennon tarpeettomaksi, kun tahdotaan kaikki factoidit, jotka\n" +" täsmäävät annettuun avaimeen." #: config.py:64 msgid "" @@ -60,26 +61,24 @@ msgid "" " several approximate matching algorithms and return a list of matching keys,\n" " before giving up." msgstr "" -"Jos sinä yrität etsiä olematonta factoidia,\n" -" tämä asetus saa botin yrittämään löytää mahdollisesti täsmääviä avaimia\n" -" muutaman tarkan täsmäusalgoritmin läpi ja palauttaa listan täsmäävistä avaimista ennen,\n" -" kuin luovuttaa." +"Jos sinä yritetään etsiä olematonta factoidia, tämä asetus saa botin yrittämään \n" +" löytää mahdollisesti täsmääviä avaimia muutaman tarkan täsmäusalgoritmin läpi ja\n" +" palauttaa listan täsmäävistä avaimista ennen luovuttamistaan." #: config.py:69 msgid "$key could be $value." msgstr "$key voisi olla $value." #: config.py:69 -#, fuzzy msgid "" "Determines the format of\n" " the response given when a factoid's value is requested. All the standard\n" " substitutes apply, in addition to \"$key\" for the factoid's key and \"$value\"\n" " for the factoid's value." msgstr "" -"Määrittää missä muodossa factoidin arvo annetaan, kun\n" -" factoidin arvoa pyydetään. Kaikki perus-\n" -" korvikkeet ovat voimassa, \"$key\"men lisäksi factoidin arvolle ja \"$value\"\llen factoidin arvolle." +"Määrittää missä muodossa factoidin arvo annetaan, kun factoidin arvoa pyydetään.\n" +" Kaikki peruskorvaukset ovat voimassa, \"$key\" factoidin avaimelle ja\n" +" \"$value\" factoidin arvolle." #: plugin.py:179 msgid "" @@ -94,14 +93,12 @@ msgid "" msgstr "" "[] %s \n" "\n" -" Liittää . on vaadittu vain, jos\n" -" viestiä ei lähetetä kanavalla itsellään.\n" -" Sana '%s' on vaadittu erottamaan avain arvosta.\n" -" Se voidaan vaihtaa toiseksi sanaksi\n" -" learnSeparator rekisteriarvolla.\n" -" " +" Liittää . on vaadittu vain, jos viestiä ei lähetetä\n" +" kanavalla itsellään. Sana '%s' on vaadittu erottamaan avain arvosta. Se voidaan\n" +" vaihtaa toiseksi sanaksi rekisteriarvolla plugins.Factoids.learnSeparator." #: plugin.py:199 +#, fuzzy msgid "" "Try to typo-match input to possible factoids.\n" " \n" @@ -112,10 +109,9 @@ msgid "" msgstr "" "Yritä typo-täsmätä mahdollisia factoideja.\n" " \n" -" Oleta, että ensinmäinen kirjain on oikein, vähentääksesi suoritusaikaa. \n" -" Ensiksi, yritä yksinkertaista jokerimerkki hakua.\n" -" Jos se epäonnistuu, käytä Damerau-Levenshtein muokkaus-etäisyys metriä.\n" -" " +" Oleta, että ensinmäinen kirjain on oikein, vähentääksesi suoritusaikaa\n" +" Ensiksi, yritä yksinkertaista jokerimerkki hakua.\n" +" Jos se epäonnistuu, käytä Damerau-Levenshtein muokkaus-etäisyys metriä." #: plugin.py:257 #: plugin.py:386 @@ -141,19 +137,20 @@ msgid "" msgstr "" "[] [--raw] []\n" "\n" -" Etsii arvoa factoidi tietokannasta. Jos numero on annettu,\n" -" palauttaa vain juuri sen factoidin. Jos '--raw' asetus on\n" -" annettu, muuttujan korvike ei vaikuta factoidissa.\n" -" on vaadittu vain jos viestiä ei lähetetä kanavalla\n" -" itsellään.\n" -" " +" Etsii arvoa factoidi tietokannasta. Jos numero on annettu,\n" +" palauttaa vain juuri sen factoidin. Jos '--raw' asetus on\n" +" annettu, muuttujan korvike ei vaikuta factoidissa.\n" +" on vaadittu vain jos viestiä ei lähetetä kanavalla\n" +" itsellään." #: plugin.py:321 #: plugin.py:523 msgid "key id" msgstr "avaimen id" +# (verbatim) ? #: plugin.py:334 +#, fuzzy msgid "" "[] []\n" "\n" @@ -167,13 +164,12 @@ msgid "" msgstr "" "[] []\n" "\n" -" Lisää uudenavaimen factoidiin, joka on liitetty .\n" -" on vaadittu vain, jos vain yksi factoid on liitetty\n" -" .\n" +" Lisää factoidiin, joka on liitetty .\n" +" on vaadittu vain, jos vain yksi factoidi on liitetty\n" +" .\n" "\n" -" Sama toiminto voidaan suorittaa 'learn' toiminnolla, mutta\n" -" uusi avain tulee olemassa olevan (verbatim) factoidin sisällön kautta.\n" -" " +" Sama toiminto voidaan suorittaa 'learn' toiminnolla, mutta\n" +" uusi avain tulee olemassa olamassa olevan (verbatim) factoidin sisällön kautta." #: plugin.py:381 #: plugin.py:398 @@ -182,7 +178,7 @@ msgstr "Tämä avain-factoidi suhde on jo olemassa." #: plugin.py:389 msgid "This key has more than one factoid associated with it, but you have not provided a number." -msgstr "Tähän avaimeen on liitetty useampi, kuin yksi factoidi, mutta sinä et antanut numeroa." +msgstr "Tähän avaimeen on liitetty useampi, kuin yksi factoidi, mutta numeroa ei ole annettu." #: plugin.py:403 msgid "" @@ -204,19 +200,18 @@ msgid "" msgstr "" "[] [--plain] [--alpha] []\n" "\n" -" Palauttaa factoidien top-listan. käyttömäärän\n" -" (rank) perusteella. Jos ei ole annettu\n" -" palauttaa factoideja rankListLength rekisteriarvon määrittämän määrän.\n" +" Palauttaa factoidien top-listan. käyttömäärän (rank) perusteella. Jos \n" +" ei ole annettu, palauttaa factoideja rankListLength rekisteriarvon määrittämän\n" +" määrän.\n" "\n" -" Jos asetus --plain on annettu, ranking numeroita ja käyttömääriä ei sisällytetä\n" -" ulostuloon.\n" +" Jos asetus --plain on annettu, ranking numeroita ja käyttömääriä ei sisällytetä\n" +" ulostuloon.\n" "\n" -" Jos --alpha asetus on annettu --plain :in lisäksi, avaimet lajitellaan\n" -" aakkosjärjestyksessä, rankingin sijasta.\n" +" Jos --alpha asetus on annettu --plain:in lisäksi, avaimet lajitellaan \n" +" aakkosjärjestyksessä, rankingin sijasta.\n" "\n" -" on vaadittu vain jos viestiä ei lähetetä kanavalla\n" -" itsellään.\n" -" " +" on vaadittu vain jos viestiä ei lähetetä kanavalla\n" +" itsellään." #: plugin.py:448 msgid "" @@ -229,10 +224,9 @@ msgid "" msgstr "" "[] \n" "\n" -" Lukitsee factoid(it), jotka on liitetty , jotta niitä ei voida\n" -" poistaa, eikä lisätä. on vaadittu vain, jos viestiä ei lähetetä\n" -" kanavalla itsellään.\n" -" " +" Lukitsee factoidi(n/t), jotka on liitetty , jotta niitä ei voida\n" +" poistaa, eikä lisätä. on vaadittu vain, jos viestiä ei lähetetä\n" +" kanavalla itsellään." #: plugin.py:466 msgid "" @@ -245,10 +239,9 @@ msgid "" msgstr "" "[] \n" "\n" -" Avaa factoid(it), jotka on liitetty , jotta niitä voidaan\n" -" lisätä tai poistaa. on vaadittu vain jos viestiä ei lähetetä kanavalla\n" -" itsellään.\n" -" " +" Avaa factoidi(n/t), jotka on liitetty , jotta niitä voidaan\n" +" lisätä ja poistaa. on vaadittu vain mikäli viestiä ei lähetetä kanavalla\n" +" itsellään." #: plugin.py:505 msgid "" @@ -268,29 +261,29 @@ msgid "" msgstr "" "[] [|*]\n" "\n" -" Poistaa avain-factoidi suhteen factoidi\n" -" tietokannasta. jos avaimelle on useampi kuin yksi suhde,\n" -" numero on vaadittu määrittämään mikä pitäisi poistaa/\n" -" *:teä voi käyttää poistamaan kaikki suhteet .\n" +" Poistaa avain-factoidi suhteen factoidi tietokannasta. Jos avaimelle\n" +" on useampi kuin yksi suhde, numero on vaadittu määrittämään mikä pitäisi poistaa/\n" +" *:teä voidaan käyttää poistamaan kaikki suhteet .\n" "\n" -" Jos tuloksena, avain (factoidi) jää ilman\n" -" factoidia (avain), se poistetaan tietokannasta.\n" +" Jos tuloksena, avain (factoidi) jää ilman factoidia (avain), se poistetaan\n" +" tietokannasta.\n" "\n" -" on vaadittu vain, jos viestiä\n" -" ei lähetetä kanavalla itsellään.\n" -" " +" on vaadittu vain, jos viestiä ei lähetetä kanavalla itsellään." #: plugin.py:537 msgid "There is no such factoid." -msgstr "Tuollaista factoidia ei ole-" +msgstr "Tuollaista factoidia ei ole." #: plugin.py:547 msgid "Invalid factoid number." msgstr "Epäkelvollinen factoidin numero." #: plugin.py:552 +#, fuzzy msgid "%s factoids have that key. Please specify which one to remove, or use * to designate all of them." -msgstr "%s factoidilla on tuo avain. Ole hyvä ja määritä mikä poistetaan, tai käytä * poistaaksesi ne kaikki." +msgstr "" +"%s factoidilla on tuo avain. Poistettava avain täytyy määrittää tai käyttää merkkiä *\n" +" poistaakseen ne kaikki." #: plugin.py:560 msgid "" @@ -302,9 +295,8 @@ msgid "" msgstr "" "[]\n" "\n" -" Palauttaa satunnaisen factoidin tietokannasta. \n" -" on vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" -" " +" Palauttaa satunnaisen factoidin tietokannasta. on vaadittu vain\n" +" jos viestiä ei lähetetä kanavalla itsellään." #: plugin.py:582 msgid "I couldn't find a factoid." @@ -321,18 +313,17 @@ msgid "" msgstr "" "[] \n" "\n" -" Antaa tiedot factod(eista), jotka on liitetty .\n" -" on vaadittu vain, jos viestiä ei lähetetä kanavalla\n" -" itsellään.\n" -" " +" Antaa tiedot factoid(ista/eista), jotka on liitetty .\n" +" on vaadittu vain, jos viestiä ei lähetetä kanavalla\n" +" itsellään." #: plugin.py:613 msgid "#%i was added by %s at %s, and has been recalled %n" -msgstr "#%i:inlisäsi %s %s, aja on kutsuttu %n" +msgstr "#Factoidin %i lisäsi %s %s, ja sitä on kutsuttu %n" #: plugin.py:616 msgid "time" -msgstr "aika" +msgstr "kerta" #: plugin.py:626 msgid "" @@ -344,9 +335,8 @@ msgid "" msgstr "" "[] \n" "\n" -" Vaihtaa factoidin #, joka on liitetty \n" -" mukaan.\n" -" " +" Vaihtaa factoidin #, joka on liitetty \n" +" mukaan." #: plugin.py:640 msgid "I couldn't find any key %q" @@ -363,9 +353,10 @@ msgid "" msgstr "" "[] [--values] [--{regexp} ] [ ...]\n" "\n" -" Etsii avainavaruudesta avaimia, jotka täsmäävät . Jos --regexp on annettu,\n" -" liittää arvon, joka on otettu säännöllisestä lausekkeesta ja täsmätty avaimia vastaan.\n" -" Jos --values on annettu, etsii arvoavaruudesta avainavaruuden sijaan.\n" +" Etsii avainavaruudesta avaimia, jotka täsmäävät . Jos --regexp on\n" +" annettu, liittää arvon, joka on otettu säännöllisestä lausekkeesta ja täsmätty\n" +" avaimia vastaan. Jos --values on annettu, etsii arvoavaruudesta avainavaruuden\n" +" sijaan.\n" " " #: plugin.py:692 diff --git a/plugins/Factoids/locale/it.po b/plugins/Factoids/locale/it.po index 979c5720f..6275442c5 100644 --- a/plugins/Factoids/locale/it.po +++ b/plugins/Factoids/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-18 13:05+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Filter/locale/it.po b/plugins/Filter/locale/it.po index 6a0870f6d..1bcc61e2b 100644 --- a/plugins/Filter/locale/it.po +++ b/plugins/Filter/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-19 22:51+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Format/locale/fi.po b/plugins/Format/locale/fi.po index 103dce83b..c03dde5d4 100644 --- a/plugins/Format/locale/fi.po +++ b/plugins/Format/locale/fi.po @@ -213,7 +213,7 @@ msgstr "" " \n" "\n" " Palauttaa :nen välilyönnillä erotetut osan . Esim. jos teksti\n" -" on \"foo bar baz\" ja on 2, palauttaa \"bar\ :in.\".\n" +" on \"foo bar baz\" ja on 2, palauttaa \"bar\" :in.\".\n" " " #: plugin.py:192 diff --git a/plugins/Format/locale/it.po b/plugins/Format/locale/it.po index e2ae21a98..fc81d848b 100644 --- a/plugins/Format/locale/it.po +++ b/plugins/Format/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-29 14:11+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Games/locale/de.po b/plugins/Games/locale/de.po new file mode 100644 index 000000000..b07ae4f34 --- /dev/null +++ b/plugins/Games/locale/de.po @@ -0,0 +1,134 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-11-10 23:19+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: DE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: German\n" + +#: plugin.py:46 +msgid "" +"takes no arguments\n" +"\n" +" Flips a coin and returns the result.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Wirft eine Münze und gibt das Ergebnis aus." + +#: plugin.py:51 +msgid "heads" +msgstr "Kopf" + +#: plugin.py:53 +msgid "tails" +msgstr "Zahl" + +#: plugin.py:58 +msgid "" +"d\n" +"\n" +" Rolls a die with number of sides times.\n" +" For example, 2d6 will roll 2 six-sided dice; 10d10 will roll 10\n" +" ten-sided dice.\n" +" " +msgstr "" +"d\n" +"\n" +"Wirft einen Würfel mit Anzahl der Seiten, mal. z.B. 2d6 wirft 2 Würfel mit 6 Seiten; 10d10 wirft 10 mal einen 10 seitigen Würfel." + +#: plugin.py:66 +msgid "You can't roll more than 1000 dice." +msgstr "Du kannst nicht mehr wie 1000 Würfel werfen." + +#: plugin.py:68 +msgid "Dice can't have more than 100 sides." +msgstr "Würfel kann nicht mehr als 100 Seiten haben." + +#: plugin.py:70 +msgid "Dice can't have fewer than 3 sides." +msgstr "Würfel können nicht weniger wie 3 Seiten haben." + +#: plugin.py:78 +msgid "Dice must be of the form d" +msgstr "Würfel muss mit d angegeben werden" + +#: plugin.py:82 +msgid "It is possible.|Yes!|Of course.|Naturally.|Obviously.|It shall be.|The outlook is good.|It is so.|One would be wise to think so.|The answer is certainly yes." +msgstr "Es ist möglich.| Ja!|Natürlich.|Natürlicher.|Ist doch klar.|So soll es sein.|Es sieht gut aus.|So ist es.| Es wäre gut so zu denken.|Die Antwort ist sicherlich ja." + +#: plugin.py:86 +msgid "In your dreams.|I doubt it very much.|No chance.|The outlook is poor.|Unlikely.|About as likely as pigs flying.|You're kidding, right?|NO!|NO.|No.|The answer is a resounding no." +msgstr "In deinen Träumen.|Ich zweifel das stark an.| Keine Chance.|Es sieht schlecht aus.|Unwahrscheinlich.|So wahrscheinlich wie fliegende Schweine.| Du machst Witze, oder?|NEIN!|NEIN.|Nein.| Die Antwort ist ein klares Nein." + +#: plugin.py:90 +msgid "Maybe...|No clue.|_I_ don't know.|The outlook is hazy, please ask again later.|What are you asking me for?|Come again?|You know the answer better than I.|The answer is def-- oooh! shiny thing!" +msgstr "Vielleicht...| Keine Ahnung.| Ich weiß nicht.|Die Aussicht ist unklar, frag später nochmal.|Nach was fragst du mich?|Kommst du wieder?|Du weißt die Antwort besser als ich.|Die Antwort ist defin---- OHH! Da glänzt was!" + +#: plugin.py:107 +msgid "" +"[]\n" +"\n" +" Ask a question and the answer shall be provided.\n" +" " +msgstr "" +"[]\n" +"\n" +"Frage deine Frage und dir wird eine Antwort gegeben." + +#: plugin.py:121 +msgid "" +"[spin]\n" +"\n" +" Fires the revolver. If the bullet was in the chamber, you're dead.\n" +" Tell me to spin the chambers and I will.\n" +" " +msgstr "" +"[spin]\n" +"\n" +"Feuert den Revolver. Falls eine Patrone in der Kammer war, bist du tod. Sag mir das ich die Kammern drehen soll, dann werde ich das tun." + +#: plugin.py:128 +msgid "*SPIN* Are you feeling lucky?" +msgstr "*DREHE* Denkst du du hast Glück?" + +#: plugin.py:137 +msgid "*BANG* Hey, who put a blank in here?!" +msgstr "*BANG* Hey, wer hat hier eine leere Patrone reingetan?!" + +#: plugin.py:139 +msgid "reloads and spins the chambers." +msgstr "läd nach und dreht die Kammer." + +#: plugin.py:141 +msgid "*click*" +msgstr "*klick*" + +#: plugin.py:148 +msgid "" +"[]\n" +"\n" +" Returns the number of consecutive lines you've sent in \n" +" without being interrupted by someone else (i.e. how long your current\n" +" 'monologue' is). is only necessary if the message isn't sent\n" +" in the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Gibt die Anzahl der aufeinderfolgenen Zeilen an, die du im gesendet hast, ohne von jemand anderem unterbrochen worden zu sein (z.B. wie lang dein momentaner Monolog ist). ist nur nötig falls die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:167 +msgid "Your current monologue is at least %n long." +msgstr "Dein momentaner Monolog ist mindestens %n lang." + +#: plugin.py:168 +msgid "line" +msgstr "Zeile" + diff --git a/plugins/Games/locale/it.po b/plugins/Games/locale/it.po index 6e2310b2a..4534348f1 100644 --- a/plugins/Games/locale/it.po +++ b/plugins/Games/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-06-21 00:17+0200\n" +"PO-Revision-Date: 2011-11-20 21:27+0100\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -109,7 +109,7 @@ msgstr "*GIRA* Pronto a mettere alla prova la fortuna?" #: plugin.py:137 msgid "*BANG* Hey, who put a blank in here?!" -msgstr "*BANG* Hey, chi ha fatto un buco qui?!" +msgstr "*BANG* Hei, chi ha messo una cartuccia a salve qui?!" #: plugin.py:139 msgid "reloads and spins the chambers." diff --git a/plugins/Google/locale/fi.po b/plugins/Google/locale/fi.po index a4c5e06cf..c65417e4b 100644 --- a/plugins/Google/locale/fi.po +++ b/plugins/Google/locale/fi.po @@ -5,10 +5,11 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-06-20 22:53+0200\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-03-15 08:54+0200\n" "Last-Translator: Mika Suomalainen \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -228,7 +229,7 @@ msgstr "kielelle" msgid "^google\\s+(.*)$" msgstr "^google\\s+(.*)$" -#: plugin.py:336 +#: plugin.py:343 msgid "" "\n" "\n" @@ -240,11 +241,11 @@ msgstr "" " Käyttää Googlen laskinta laskeakseen arvon.\n" " " -#: plugin.py:353 -msgid "Google's calculator didn't come up with anything." -msgstr "Googlen laskin ei keksinyt mitään." +#: plugin.py:370 +msgid "Google says: Error: %s." +msgstr "Google sanoo: Virhe: %s." -#: plugin.py:359 +#: plugin.py:377 msgid "" "\n" "\n" @@ -256,7 +257,9 @@ msgstr "" " Etsii Googlesta.\n" " " -#: plugin.py:373 +#: plugin.py:391 msgid "Google's phonebook didn't come up with anything." msgstr "Googlen puhelinluettelo ei keksinyt mitään." +#~ msgid "Google's calculator didn't come up with anything." +#~ msgstr "Googlen laskin ei keksinyt mitään." diff --git a/plugins/Google/locale/fr.po b/plugins/Google/locale/fr.po index fb81dc957..0242e80b5 100644 --- a/plugins/Google/locale/fr.po +++ b/plugins/Google/locale/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-02-14 18:30+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: \n" "Last-Translator: Valentin Lorentz \n" "Language-Team: Supybot-fr \n" @@ -25,11 +25,11 @@ msgstr "Le plugin Google sert à lire des URLs qui correspondent à un masque sp msgid "Do you want the Google search snarfer enabled by default?" msgstr "Voulez-vous activer le snarfer de recherche Google par défaut ?" -#: config.py:88 +#: config.py:89 msgid "Value must be 1 <= n <= 8" msgstr "La valeur doit être comprise entre 1 et 8 (inclus)" -#: config.py:99 +#: config.py:100 msgid "" "Determines the URL that will be sent to Google for\n" " the Referer field of the search requests. If this value is empty, a\n" @@ -37,7 +37,7 @@ msgid "" " http://$server/$botName" msgstr "Détermine l'URL qui sera envoyée à Google comme Referer pour les recerches. Si la valeur est vide, un Refere sera automatiquement généré dans le format : http://$server/$botNamr" -#: config.py:104 +#: config.py:105 msgid "" "Determines whether the search snarfer is\n" " enabled. If so, messages (even unaddressed ones) beginning with the word\n" @@ -45,33 +45,33 @@ msgid "" " channel." msgstr "Détermine si le snarger de recherche est activé. Si c'est le cas, les messages (même non adressés) commençant par 'google' seront répondus par la première URL que Google donne pour cette recherche." -#: config.py:109 +#: config.py:110 msgid "" "Determines whether the word 'google' in the\n" " bot's output will be made colorful (like Google's logo)." msgstr "Détermine si le mot 'google' dans la sortie du bot sera coloré (comme le logo de Google)" -#: config.py:112 +#: config.py:113 msgid "Determines whether results are bolded." msgstr "Détermine si les résultats sont mis en gras." -#: config.py:114 +#: config.py:115 msgid "" "Determines the maximum number of results returned\n" " from the google command." msgstr "Détermine le nombre maximum de résultats retournés par la commande google." -#: config.py:117 +#: config.py:118 msgid "" "Determines what default language is used in\n" " searches. If left empty, no specific language will be requested." msgstr "Détermine quand langue par défaut est utilisée dans les recherches. Si laissé vide, aucune langue spécifique ne sera demandée." -#: config.py:117 +#: config.py:118 msgid "en" msgstr "fr" -#: config.py:120 +#: config.py:121 msgid "" "Determines what level of search filtering to use\n" " by default. 'active' - most filtering, 'moderate' - default filtering,\n" @@ -190,11 +190,11 @@ msgstr "Les langues valides sont : %L" msgid "to language" msgstr "vers la langue" -#: plugin.py:297 +#: plugin.py:314 msgid "^google\\s+(.*)$" msgstr "^google\\s+(.*)$" -#: plugin.py:320 +#: plugin.py:343 msgid "" "\n" "\n" @@ -205,11 +205,11 @@ msgstr "" "\n" "Utilise la calculatrice Google pour calculer la valeur de l'." -#: plugin.py:337 -msgid "Google's calculator didn't come up with anything." -msgstr "La calculatrice Google ne donne aucun résultat." +#: plugin.py:370 +msgid "Google says: Error: %s." +msgstr "Google dit : Erreur : %s." -#: plugin.py:343 +#: plugin.py:377 msgid "" "\n" "\n" @@ -220,7 +220,9 @@ msgstr "" "\n" "Recherche le sur Google." -#: plugin.py:357 +#: plugin.py:391 msgid "Google's phonebook didn't come up with anything." msgstr "L'annuaire téléphonique de Google ne donne aucun résultat." +#~ msgid "Google's calculator didn't come up with anything." +#~ msgstr "La calculatrice Google ne donne aucun résultat." diff --git a/plugins/Google/locale/it.po b/plugins/Google/locale/it.po index 1dcbe751b..f08156214 100644 --- a/plugins/Google/locale/it.po +++ b/plugins/Google/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-07-17 00:07+0200\n" +"PO-Revision-Date: 2012-03-15 20:55+0100\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -225,7 +225,7 @@ msgstr "a lingua" msgid "^google\\s+(.*)$" msgstr "^google\\s+(.*)$" -#: plugin.py:336 +#: plugin.py:343 #, docstring msgid "" "\n" @@ -238,11 +238,11 @@ msgstr "" " Utilizza la calcolatrice di Google per calcolare il valore di .\n" " " -#: plugin.py:353 -msgid "Google's calculator didn't come up with anything." -msgstr "La calcolatrice di Google non ha fornito alcun risultato." +#: plugin.py:370 +msgid "Google says: Error: %s." +msgstr "Google dice: errore: %s." -#: plugin.py:359 +#: plugin.py:377 #, docstring msgid "" "\n" @@ -255,7 +255,7 @@ msgstr "" " Cerca su Google.\n" " " -#: plugin.py:373 +#: plugin.py:391 msgid "Google's phonebook didn't come up with anything." msgstr "La rubrica di Google non ha fornito alcun risultato." diff --git a/plugins/Google/messages.pot b/plugins/Google/messages.pot index d2ce05407..4c3bc9cfc 100644 --- a/plugins/Google/messages.pot +++ b/plugins/Google/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -179,7 +179,7 @@ msgstr "" msgid "^google\\s+(.*)$" msgstr "" -#: plugin.py:336 +#: plugin.py:343 #, docstring msgid "" "\n" @@ -188,11 +188,11 @@ msgid "" " " msgstr "" -#: plugin.py:353 -msgid "Google's calculator didn't come up with anything." +#: plugin.py:370 +msgid "Google says: Error: %s." msgstr "" -#: plugin.py:359 +#: plugin.py:377 #, docstring msgid "" "\n" @@ -201,7 +201,7 @@ msgid "" " " msgstr "" -#: plugin.py:373 +#: plugin.py:391 msgid "Google's phonebook didn't come up with anything." msgstr "" diff --git a/plugins/Google/plugin.py b/plugins/Google/plugin.py index de5814b0e..c7ad653ba 100644 --- a/plugins/Google/plugin.py +++ b/plugins/Google/plugin.py @@ -246,70 +246,6 @@ class Google(callbacks.PluginRegexp): s = ', '.join([format('%s: %i', bold(s), i) for (i, s) in results]) irc.reply(s) - _gtranslateUrl='http://ajax.googleapis.com/ajax/services/language/translate' - @internationalizeDocstring - def translate(self, irc, msg, args, fromLang, toLang, text): - """ [to] - - Returns translated from into . - Beware that translating to or from languages that use multi-byte - characters may result in some very odd results. - """ - channel = msg.args[0] - ref = self.registryValue('referer') - if not ref: - ref = 'http://%s/%s' % (dynamic.irc.server, - dynamic.irc.nick) - headers = utils.web.defaultHeaders - headers['Referer'] = ref - opts = {'q': text, 'v': '1.0'} - lang = conf.supybot.plugins.Google.defaultLanguage - if fromLang.capitalize() in lang.transLangs: - fromLang = lang.transLangs[fromLang.capitalize()] - elif lang.normalize('lang_'+fromLang)[5:] \ - not in lang.transLangs.values(): - irc.errorInvalid(_('from language'), fromLang, - format(_('Valid languages are: %L'), - lang.transLangs.keys())) - else: - fromLang = lang.normalize('lang_'+fromLang)[5:] - if toLang.capitalize() in lang.transLangs: - toLang = lang.transLangs[toLang.capitalize()] - elif lang.normalize('lang_'+toLang)[5:] \ - not in lang.transLangs.values(): - irc.errorInvalid(_('to language'), toLang, - format(_('Valid languages are: %L'), - lang.transLangs.keys())) - else: - toLang = lang.normalize('lang_'+toLang)[5:] - if fromLang == 'auto': - fromLang = '' - if toLang == 'auto': - irc.error("Destination language cannot be 'auto'.") - return - opts['langpair'] = '%s|%s' % (fromLang, toLang) - fd = utils.web.getUrlFd('%s?%s' % (self._gtranslateUrl, - urllib.urlencode(opts)), - headers) - json = simplejson.load(fd) - fd.close() - if json['responseStatus'] != 200: - raise callbacks.Error, 'Google says: Response Status %s: %s.' % \ - (json['responseStatus'], json['responseDetails'],) - if fromLang != '': - irc.reply(json['responseData']['translatedText'].encode('utf-8')) - else: - detected_language = json['responseData']['detectedSourceLanguage'].encode('utf-8') - translation = json['responseData']['translatedText'].encode('utf-8') - try: - long_lang_name = [k for k,v in lang.transLangs.iteritems() if v == detected_language][0] - except IndexError: #just in case google adds langs we don't know about - long_lang_name = detected_language - responsestring = "(Detected source language: %s) %s" % \ - (long_lang_name, translation) - irc.reply(responsestring) - translate = wrap(translate, ['something', 'to', 'something', 'text']) - def googleSnarfer(self, irc, msg, match): r"^google\s+(.*)$" if not self.registryValue('searchSnarfer', msg.args[0]): @@ -327,7 +263,14 @@ class Google(callbacks.PluginRegexp): url = r'http://google.com/search?q=' + s return url - _calcRe = re.compile(r'(.*?)', re.I) + def _googleUrlIG(self, s): + s = s.replace('+', '%2B') + s = s.replace(' ', '+') + url = r'http://www.google.com/ig/calculator?hl=en&q=' + s + return url + + _calcRe1 = re.compile(r']*>(.*?)', re.I) + _calcRe2 = re.compile(r']*>(?:)?(.*?)(?:)?', re.I | re.S) _calcSupRe = re.compile(r'(.*?)', re.I) _calcFontRe = re.compile(r'(.*?)') _calcTimesRe = re.compile(r'&(?:times|#215);') @@ -337,9 +280,22 @@ class Google(callbacks.PluginRegexp): Uses Google's calculator to calculate the value of . """ + urlig = self._googleUrlIG(expr) + js = utils.web.getUrl(urlig) + # fix bad google json + js = js \ + .replace('lhs:','"lhs":') \ + .replace('rhs:','"rhs":') \ + .replace('error:','"error":') \ + .replace('icc:','"icc":') \ + .replace('\\', '\\\\') + js = simplejson.loads(js) + url = self._googleUrl(expr) html = utils.web.getUrl(url) - match = self._calcRe.search(html) + match = self._calcRe1.search(html) + if match is None: + match = self._calcRe2.search(html) if match is not None: s = match.group(1) s = self._calcSupRe.sub(r'^(\1)', s) @@ -348,7 +304,8 @@ class Google(callbacks.PluginRegexp): s = utils.web.htmlToText(s) irc.reply(s) else: - irc.reply(_('Google\'s calculator didn\'t come up with anything.')) + irc.reply(_('Google says: Error: %s.') % (js['error'],)) + irc.reply('Google\'s calculator didn\'t come up with anything.') calc = wrap(calc, ['text']) _phoneRe = re.compile(r'Phonebook.*?(.*?)\n" diff --git a/plugins/Internet/locale/it.po b/plugins/Internet/locale/it.po index e3385fa0e..eb59aecfd 100644 --- a/plugins/Internet/locale/it.po +++ b/plugins/Internet/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-12 14:14+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Internet/plugin.py b/plugins/Internet/plugin.py index 53ca3d056..d22d19c03 100644 --- a/plugins/Internet/plugin.py +++ b/plugins/Internet/plugin.py @@ -1,6 +1,6 @@ ### # Copyright (c) 2003-2005, Jeremiah Fincher -# Copyright (c) 2010, James Vega +# Copyright (c) 2010-2011, James Vega # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -55,11 +55,8 @@ class Internet(callbacks.Plugin): irc.reply(hostname) else: try: - ip = socket.gethostbyname(host) - if ip == '64.94.110.11': # Verisign sucks! - irc.reply(_('Host not found.')) - else: - irc.reply(ip) + ip = socket.getaddrinfo(host, None)[0][4][0] + irc.reply(ip) except socket.error: irc.reply(_('Host not found.')) dns = wrap(dns, ['something']) @@ -153,12 +150,22 @@ class Internet(callbacks.Plugin): Returns the hexadecimal IP for that IP. """ - quads = ip.split('.') ret = "" - for quad in quads: - i = int(quad) - ret += '%02x' % i - irc.reply(ret.upper()) + if utils.net.isIPV4(ip): + quads = ip.split('.') + for quad in quads: + i = int(quad) + ret += '%02X' % i + else: + octets = ip.split(':') + for octet in octets: + if octet: + i = int(octet, 16) + ret += '%04X' % i + else: + missing = (8 - len(octets)) * 4 + ret += '0' * missing + irc.reply(ret) hexip = wrap(hexip, ['ip']) Internet = internationalizeDocstring(Internet) diff --git a/plugins/Karma/README.txt b/plugins/Karma/README.txt index d60b47a97..922af9197 100644 --- a/plugins/Karma/README.txt +++ b/plugins/Karma/README.txt @@ -1 +1,7 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This will increase or decrease karma for the item. + +If "config plugins.karma.allowUnaddressedKarma" is set to true, saying "boats++" will give 1 karma to "boats", and "ships--" will subtract 1 karma from "ships". + +However, if you use this in a sentence, like "That deserves a ++. Kevin++", 1 karma will be added to "That deserves a ++. Kevin", so you should only add or subtract karma in a line that doesn't have anything else in it. + +If "config plugins.karma.allowUnaddressedKarma" is set to false, you must use "botname: bots++" to add or subtract karma. diff --git a/plugins/Karma/config.py b/plugins/Karma/config.py index 059e244c4..408bf32bb 100644 --- a/plugins/Karma/config.py +++ b/plugins/Karma/config.py @@ -40,24 +40,24 @@ def configure(advanced): from supybot.questions import expect, anything, something, yn conf.registerPlugin('Karma', True) -conf.registerPlugin('Karma') +Karma = conf.registerPlugin('Karma') -conf.registerChannelValue(conf.supybot.plugins.Karma, 'simpleOutput', +conf.registerChannelValue(Karma, 'simpleOutput', registry.Boolean(False, _("""Determines whether the bot will output shorter versions of the karma output when requesting a single thing's karma."""))) -conf.registerChannelValue(conf.supybot.plugins.Karma, 'response', +conf.registerChannelValue(Karma, 'response', registry.Boolean(False, _("""Determines whether the bot will reply with a success message when something's karma is increased or decreased."""))) -conf.registerChannelValue(conf.supybot.plugins.Karma, 'rankingDisplay', +conf.registerChannelValue(Karma, 'rankingDisplay', registry.Integer(3, _("""Determines how many highest/lowest karma things are shown when karma is called with no arguments."""))) -conf.registerChannelValue(conf.supybot.plugins.Karma, 'mostDisplay', +conf.registerChannelValue(Karma, 'mostDisplay', registry.Integer(25, _("""Determines how many karma things are shown when the most command is called."""))) -conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowSelfRating', +conf.registerChannelValue(Karma, 'allowSelfRating', registry.Boolean(False, _("""Determines whether users can adjust the karma of their nick."""))) -conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowUnaddressedKarma', +conf.registerChannelValue(Karma, 'allowUnaddressedKarma', registry.Boolean(False, _("""Determines whether the bot will increase/decrease karma without being addressed."""))) diff --git a/plugins/Karma/locale/it.po b/plugins/Karma/locale/it.po index 905b5a6ee..31cee4f9b 100644 --- a/plugins/Karma/locale/it.po +++ b/plugins/Karma/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-28 10:43+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Karma/plugin.py b/plugins/Karma/plugin.py index 375770619..91cdad38c 100644 --- a/plugins/Karma/plugin.py +++ b/plugins/Karma/plugin.py @@ -60,11 +60,11 @@ class SqliteKarmaDB(object): if filename in self.dbs: return self.dbs[filename] if os.path.exists(filename): - db = sqlite3.connect(filename) + db = sqlite3.connect(filename, check_same_thread=False) db.text_factory = str self.dbs[filename] = db return db - db = sqlite3.connect(filename) + db = sqlite3.connect(filename, check_same_thread=False) db.text_factory = str self.dbs[filename] = db cursor = db.cursor() diff --git a/plugins/Lart/README.txt b/plugins/Lart/README.txt index d60b47a97..f59b09c36 100644 --- a/plugins/Lart/README.txt +++ b/plugins/Lart/README.txt @@ -1 +1,5 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +Allows the use of the Luser Attitude Readjustment Tool on someone or something. +Example: +If you add 'slaps $who'. +Someone says '@lart ChanServ'. +* bot slaps ChanServ \ No newline at end of file diff --git a/plugins/Lart/locale/it.po b/plugins/Lart/locale/it.po index 0118a7993..4cdf34384 100644 --- a/plugins/Lart/locale/it.po +++ b/plugins/Lart/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-12 14:41+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Later/locale/de.po b/plugins/Later/locale/de.po new file mode 100644 index 000000000..91e49af14 --- /dev/null +++ b/plugins/Later/locale/de.po @@ -0,0 +1,161 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-08-10 11:28+CEST\n" +"PO-Revision-Date: 2011-11-02 00:00+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\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 "Legt die maximalanzahl von Nachrichten fest die in einer Warteschlange abgelegt werden. Falls dieser Wert 0 ist, gibt es keine begrenzung." + +#: config.py:49 +msgid "" +"Determines whether users will be notified in\n" +" the first place in which they're seen, or in private." +msgstr "Legt fest ob der Benutzer dort benachrichtig wird wo er zuerst gesehen wird, oder privat." + +#: config.py:52 +msgid "" +"Determines whether users will be notified upon\n" +" joining any channel the bot is in, or only upon sending a message." +msgstr "Legt fest ob ein Benutzer benachrichtig werden soll sobald er einen Kanal des Bots betritt, oder nach dem senden einer Nachricht." + +#: config.py:55 +msgid "" +"Determines the maximum number of\n" +" days that a message will remain queued for a user. After this time elapses,\n" +" the message will be deleted. If this value is 0, there is no maximum." +msgstr "Legt die maximal Anzahl an Tagen fest, die eine Nachricht in der Warteschlange bleibt. Nach dieser Zeit wird die Nachricht gelöscht. Falls dieser Wert 0 ist gibt es keine Begrenzung." + +#: plugin.py:46 +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 "Wird benutzt um Sachen später zu machen, momentan kann man nur Notizen an andere Nutzer senden. Beachte, dass diese Notizen *nicht* privat sind und auch nicht sein wollen; falls du soetwas sucht, überlege das Note Plugin zu benutzen." + +#: plugin.py:84 +msgid "%s ago" +msgstr "vor %s" + +#: plugin.py:86 +msgid "just now" +msgstr "jetzt" + +#: plugin.py:106 +msgid "" +"Validate nick according to the IRC RFC 2812 spec.\n" +"\n" +" Reference: http://tools.ietf.org/rfcmarkup?doc=2812#section-2.3.1\n" +"\n" +" Some irc clients' tab-completion feature appends 'address' characters\n" +" to nick, such as ':' or ','. We try correcting for that by trimming\n" +" a char off the end.\n" +"\n" +" If nick incorrigibly invalid, return False, otherwise,\n" +" return (possibly trimmed) nick.\n" +" " +msgstr "" +"Validiert den Nick nach der IRC RFC 2812 spec.\n" +"\n" +"Referenz: http://tools.ietf.org/rfcmarkup?doc=2812#section-2.3.1\n" +"\n" +"Manche Klienten fügen bei der Tabvervollständigung 'addressierungs' Zeichen hinzu, sowie ':' oder','. Wir probieren das zu korregieren indem wir das letzte Zeichen abschneiden.\n" +"\n" +"Falls der Nick nicht korrigiert werden kann, wird False zurückgegeben, andererseits der (möglicherweise gekürzte) Nick." + +#: plugin.py:151 +msgid "" +" \n" +"\n" +" Tells the next time is in seen. can\n" +" contain wildcard characters, and the first matching nick will be\n" +" given the note.\n" +" " +msgstr "" +" \n" +"\n" +"Sagt , sobald das nächste Mal gesehen wird. kann Platzhalter enthalten, und der erste Nick der darauf passt wird die Notiz bekommen." + +#: plugin.py:159 +msgid "I can't send notes to myself." +msgstr "Ich kann keine Notizen an mich selbst senden." + +#: plugin.py:169 +msgid "That person's message queue is already full." +msgstr "Die Warteschlange dieser person ist bereits voll." + +#: plugin.py:174 +msgid "" +"[]\n" +"\n" +" If is given, replies with what notes are waiting on ,\n" +" otherwise, replies with the nicks that have notes waiting for them.\n" +" " +msgstr "" +"[]\n" +"\n" +"Falls angegeben wird, wird mit den Notizen geantwortet die auf waren, andernfalls wird mit den Nicks geanwortet die Notizen in der Warteschlange haben." + +#: plugin.py:185 +msgid "I have no notes for that nick." +msgstr "Ich habe keine Notizen für diesen Nick." + +#: plugin.py:190 +msgid "I currently have notes waiting for %L." +msgstr "Ich habe momentan keine Notizen in der Warteschlange für %L." + +#: plugin.py:193 +msgid "I have no notes waiting to be delivered." +msgstr "Ich habe keine Notizen, die darauf warten zugestellt zu werden." + +#: plugin.py:198 +msgid "" +"\n" +"\n" +" Removes the notes waiting on .\n" +" " +msgstr "" +"\n" +"\n" +"Entfernt die wartenden Notizen für ." + +#: plugin.py:207 +msgid "There were no notes for %r" +msgstr "Da waren keine Nachrichten für %r" + +#: plugin.py:212 +msgid "" +"\n" +"\n" +" Removes the latest note you sent to .\n" +" " +msgstr "" +"\n" +"\n" +"Entfern die letzte Notiz die du an gesendet hast." + +#: plugin.py:217 +msgid "There are no note waiting for %s." +msgstr "Es gibt keine Notiz, die auf %s wartet." + +#: plugin.py:228 +msgid "There are no note from you waiting for %s." +msgstr "Es gibt keine Notiz von dir, die auf %s wartet." + +#: plugin.py:252 +msgid "Sent %s: <%s> %s" +msgstr "%s gesendet: <%s> %s" + diff --git a/plugins/Later/locale/it.po b/plugins/Later/locale/it.po index fc610588e..3085712c2 100644 --- a/plugins/Later/locale/it.po +++ b/plugins/Later/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-08-10 14:27+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Limiter/README.txt b/plugins/Limiter/README.txt index d60b47a97..2cefb4c75 100644 --- a/plugins/Limiter/README.txt +++ b/plugins/Limiter/README.txt @@ -1 +1,2 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This will set a limit on the channel based on plugins.Limiter.MaximumExcess plus the current number of users in the channel. +This is useful to prevent flood attacks. \ No newline at end of file diff --git a/plugins/Limiter/locale/hu.po b/plugins/Limiter/locale/hu.po new file mode 100644 index 000000000..2c0b99365 --- /dev/null +++ b/plugins/Limiter/locale/hu.po @@ -0,0 +1,49 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Limnoria Limiter\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-09-01 18:12+0200\n" +"Last-Translator: nyuszika7h \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\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 "Meghatározza, hogy a bot tartsa-e a csatorna korlátját kicsivel a jelenlegi emberek számával a csatornában, hogy a klóntámadásokat nehezebbé tegye." + +#: 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 "Meghatározza a szabad helyek minimum számát, amelyek meg lesznek mentve amikor a korlátok kényszerítve vannak. Ennek mindig kisebbnek kell lennie a supybot.plugins.Limiter.limit.maximumExcess-nél." + +#: 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 "Meghatározza a szabad helyek maximum számát, amelyek meg lesznek mentve amikor a korlátok kényszerítve vannak. Ennek mindig nagyobbnak kell lennie a supybot.plugins.Limiter.limit.minimumExcess-nél." + +#: plugin.py:39 +#, 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 "A bővítmény használatához a konfigurációs értékeinek rendesen be kell lenniük állítva. A supybot.plugins.Limiter.enable True-ra kell, hogy legyen állítva, és a supybot.plugins.Limiter.{maximumExcess,minimumExcess}-nek a csatornának megfelelő értékekre kell lenniük állítva (ha az alapértelmezés nem kielégítő). Ahogy ezek be vannak állítva, és valaki be-/kilép a csatornáról/-ba, a Supybot elkezdi beállítani a megfelelő +l módokat." diff --git a/plugins/Limiter/locale/it.po b/plugins/Limiter/locale/it.po index fff917e78..3e6be79e1 100644 --- a/plugins/Limiter/locale/it.po +++ b/plugins/Limiter/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-15 13:37+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Math/README.txt b/plugins/Math/README.txt index d60b47a97..648405224 100644 --- a/plugins/Math/README.txt +++ b/plugins/Math/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin provides a calculator, converter, a listo of units and other useful math functions. diff --git a/plugins/Math/locale/it.po b/plugins/Math/locale/it.po index 5bd0e74b8..b549208c5 100644 --- a/plugins/Math/locale/it.po +++ b/plugins/Math/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-21 17:27+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Math/plugin.py b/plugins/Math/plugin.py index 683b9c709..00a78cf67 100644 --- a/plugins/Math/plugin.py +++ b/plugins/Math/plugin.py @@ -102,10 +102,15 @@ class Math(callbacks.Plugin): return cmath.sqrt(x) else: return math.sqrt(x) + def _cbrt(x): + return math.pow(x, 1.0/3) _mathEnv['sqrt'] = _sqrt + _mathEnv['cbrt'] = _cbrt _mathEnv['abs'] = abs _mathEnv['max'] = max _mathEnv['min'] = min + _mathSafeEnv = dict([(x,y) for x,y in _mathEnv.items() + if x not in ['factorial']]) _mathRe = re.compile(r'((?:(?\n" diff --git a/plugins/Misc/config.py b/plugins/Misc/config.py index f1c4dc19e..873661212 100644 --- a/plugins/Misc/config.py +++ b/plugins/Misc/config.py @@ -46,6 +46,11 @@ conf.registerGlobalValue(Misc, 'listPrivatePlugins', plugins with the list command if given the --private switch. If this is disabled, non-owner users should be unable to see what private plugins are loaded."""))) +conf.registerGlobalValue(Misc, 'listUnloadedPlugins', + registry.Boolean(True, _("""Determines whether the bot will list unloaded + plugins with the list command if given the --unloaded switch. If this is + disabled, non-owner users should be unable to see what unloaded plugins + are available."""))) conf.registerGlobalValue(Misc, 'timestampFormat', registry.String('[%H:%M:%S]', _("""Determines the format string for timestamps in the Misc.last command. Refer to the Python documentation diff --git a/plugins/Misc/locale/de.po b/plugins/Misc/locale/de.po new file mode 100644 index 000000000..b22b7afac --- /dev/null +++ b/plugins/Misc/locale/de.po @@ -0,0 +1,293 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:40+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: de\n" + +#: config.py:45 +msgid "" +"Determines whether the bot will list private\n" +" plugins with the list command if given the --private switch. If this is\n" +" disabled, non-owner users should be unable to see what private plugins\n" +" are loaded." +msgstr "Legt fest ob der Bot private Plugins mit dem list Befehl auflisten soll, wenn man den --private Schalter angibt. Falls das deaktiviert ist, ist es nicht Inhabern unmöglich zu sehen ob private Plugins geladen sind." + +#: config.py:50 +#, fuzzy +msgid "" +"Determines whether the bot will list unloaded\n" +" plugins with the list command if given the --unloaded switch. If this is\n" +" disabled, non-owner users should be unable to see what unloaded plugins\n" +" are available." +msgstr "Legt fest ob der Bot private Plugins mit dem list Befehl auflisten soll, wenn man den --private Schalter angibt. Falls das deaktiviert ist, ist es nicht Inhabern unmöglich zu sehen ob private Plugins geladen sind." + +#: config.py:55 +msgid "" +"Determines the format string for\n" +" timestamps in the Misc.last command. Refer to the Python documentation\n" +" for the time module to see what formats are accepted. If you set this\n" +" variable to the empty string, the timestamp will not be shown." +msgstr "Legt das Format der Zeichenkette für Zeitstempel im Misc.last Befehl fest. Schau in die Python Dokumentation für das time Modul um zu sehen welche Formate unterstützt sind. Falls du diese Variable auf eine leere Zeichenkette setzt wird kein Zeitstempel angezeigt." + +#: config.py:62 +msgid "" +"Determines whether or not\n" +" the timestamp will be included in the output of last when it is part of a\n" +" nested command" +msgstr "Legt fest ob der Zeitstempel mit in der Ausgabe stehen soll, wenn der letzte Befehl teil eines verschachtelten Befehls war." + +#: config.py:66 +msgid "" +"Determines whether or not the\n" +" nick will be included in the output of last when it is part of a nested\n" +" command" +msgstr "Legt fest ob der Nick mit in der Ausgabe stehen soll, wenn der letzte Befehl teil eines verschachtelten Befehls war." + +#: plugin.py:104 +msgid "You've given me %s invalid commands within the last minute; I'm now ignoring you for %s." +msgstr "Du hast mir %s nicht zulässige Befehle innerhalb der letzten Minute gegeben. Ich werde dich für %s ignorieren." + +#: plugin.py:116 +msgid "The %q plugin is loaded, but there is no command named %q in it. Try \"list %s\" to see the commands in the %q plugin." +msgstr "Das %q Plugin ist geladen, aber es besitzt keinen Befehl mit dem Namen %q. Versuche \"list %s\" um die Befehle des %q Plugins zu sehen." + +#: plugin.py:142 +#, fuzzy +msgid "" +"[--private] [--unloaded] []\n" +"\n" +" Lists the commands available in the given plugin. If no plugin is\n" +" given, lists the public plugins available. If --private is given,\n" +" lists the private plugins. If --unloaded is given, it will list\n" +" available plugins that are not loaded.\n" +" " +msgstr "" +"[--private] []\n" +"\n" +"Listet die Befehl auf die das gegebene Plugin anbietet. Falls kein Plugin angegeben wird, werden alle verfügbaren öffentliche Befehle aufgelistet. Falls --private angegeben wird, werden alle privaten Plugins aufgelistet." + +#: plugin.py:163 +msgid "--private and --unloaded are uncompatible options." +msgstr "" + +#: plugin.py:194 +msgid "There are no private plugins." +msgstr "Es gibt keine privaten Plugins." + +#: plugin.py:196 +msgid "There are no public plugins." +msgstr "Es gibt keine öffentlichen Plugins." + +#: plugin.py:203 +msgid "That plugin exists, but has no commands. This probably means that it has some configuration variables that can be changed in order to modify its behavior. Try \"config list supybot.plugins.%s\" to see what configuration variables it has." +msgstr "Dieses Plugin existiert, hat aber keine Befehle. Das heißt womöglich das es einige Konfigurationsvariablen hat, die verändert werden können um das Verhalten zu beeinflussen. Probiere \"config list supybot.plugins.%s\" um zu sehen welche Konfigurationsvariablen es hat." + +#: plugin.py:215 +msgid "" +"\n" +"\n" +" Searches for in the commands currently offered by the bot,\n" +" returning a list of the commands containing that string.\n" +" " +msgstr "" +"\n" +"\n" +"Sucht nach in den Befehlen die der Bot momentan anbietet, gibt eine Liste der Befehle zurück in denen die Zeichenkette vorkommt." + +#: plugin.py:234 +msgid "No appropriate commands were found." +msgstr "Kein passender Befehl gefunden." + +#: plugin.py:239 +msgid "" +"[] []\n" +"\n" +" This command gives a useful description of what does.\n" +" is only necessary if the command is in more than one plugin.\n" +" " +msgstr "" +"[] []\n" +"\n" +"Gibt eine nützliche Beschreibung was der tut. wird nur benötigt, falls es den Befehl in mehr wie einem Plugin gibt." + +#: plugin.py:249 +msgid "That command exists in the %L plugins. Please specify exactly which plugin command you want help with." +msgstr "Den Befehl gibt es in diesen %L Plugins. Bitte gibt genau an mit welchen Plugin Befehl du Hilfe benötigst." + +#: plugin.py:256 +msgid "There is no command %q." +msgstr "Es gibt keinen Befehl %q." + +#: plugin.py:262 +msgid "" +"takes no arguments\n" +"\n" +" Returns the version of the current bot.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt die momentane Bot Version aus." + +#: plugin.py:276 +msgid "The newest versions available online are %s." +msgstr "Die neuste online Version ist %s." + +#: plugin.py:277 +msgid "%s (in %s)" +msgstr "%s (in %s)" + +#: plugin.py:281 +msgid "I couldn't fetch the newest version from the Limnoria repository." +msgstr "Ich konnte mir die neuste Version nicht aus dem Limnoria Verzeichnis holen." + +#: plugin.py:283 +msgid "The current (running) version of this Supybot is %s. %s" +msgstr "Die momentane (laufende) Version von Supybot ist %s. %s" + +#: plugin.py:290 +msgid "" +"takes no arguments\n" +"\n" +" Returns a URL saying where to get Limnoria.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt eine URL zurück die dir sagt wo man Limnoria bekommt." + +#: plugin.py:294 +msgid "My source is at https://github.com/ProgVal/Limnoria" +msgstr "Mein Quellcode ist auf https://github.com/ProgVal/Limnoria" + +#: plugin.py:299 +msgid "" +"[]\n" +"\n" +" If the last command was truncated due to IRC message length\n" +" limitations, returns the next chunk of the result of the last command.\n" +" If is given, it takes the continuation of the last command from\n" +" instead of the person sending this message.\n" +" " +msgstr "" +"[]\n" +"\n" +"Falls die Ausgabe des letzten Befehls abgeschnitten wurde, wegen der IRC Nachrichtenlänge beschränkung, wird der nexte Teil der Ausgabe des letzten Befehls ausgegben. Falls angegeben wird, wird die AUsgabe des letzten Befehls von weitergeführt, anstatt der Person die den Befehl sendete." + +#: plugin.py:313 +msgid "%s has no public mores." +msgstr "%s hat keine öffentlichen Nachrichten mehr." + +#: plugin.py:316 +msgid "Sorry, I can't find any mores for %s" +msgstr "Sorry, Ich kann nicht mehr für %s finden" + +#: plugin.py:323 +msgid "more message" +msgstr "mehr Nachricht" + +#: plugin.py:325 +msgid "more messages" +msgstr "mehr Nachrichten" + +#: plugin.py:329 +msgid "You haven't asked me a command; perhaps you want to see someone else's more. To do so, call this command with that person's nick." +msgstr "Du hast mir keinen Befehl geben; eventuell willst du mehr Nachrichten einer anderen Person sehen. Um das zu ereichen, rufe diesen Befehl auf mit dem Nicknamen der Person auf." + +#: plugin.py:333 +msgid "That's all, there is no more." +msgstr "Das ist alles, mehr ist nicht da." + +#: plugin.py:343 +msgid "" +"[--{from,in,on,with,without,regexp} ] [--nolimit]\n" +"\n" +" Returns the last message matching the given criteria. --from requires\n" +" a nick from whom the message came; --in requires a channel the message\n" +" was sent to; --on requires a network the message was sent on; --with\n" +" requires some string that had to be in the message; --regexp requires\n" +" a regular expression the message must match; --nolimit returns all\n" +" the messages that can be found. By default, the channel this command is\n" +" given in is searched.\n" +" " +msgstr "" +"[--{from,in,on,with,without,regexp} ] [--nolimit]\n" +"\n" +"Gibt die letzte Nachricht aus, die auf die gegeben Kriterien passt. --from benötigt den Nick von dem die Nachricht kam; --in benötigt den Kanal in den die Nachricht gesendet wurde; --on benötigt das Netzwerk in dem die Nachricht gesendet wurde; --with benötigt eine Zeichenkette die in der Nachricht vorkommt; --regexp benötigt einen regulären Ausdruck auf der auf die Nachricht zutrifft; --nolimit zeigt alle Nachrichten die gefunden wurden. Voreinstellung: Der Kanal in dem der Befehl gegeben wird, wird durchsucht." + +#: plugin.py:445 +msgid "The regular expression timed out." +msgstr "" + +#: plugin.py:458 +msgid "I couldn't find a message matching that criteria in my history of %s messages." +msgstr "I konnte keine Nachricht in meiner Geschichte von %s Nachrichten finden die auf die Kriterien passt." + +#: plugin.py:473 +msgid "" +" \n" +"\n" +" Tells the whatever is. Use nested commands to your\n" +" benefit here.\n" +" " +msgstr "" +" \n" +"\n" +"Sagt den Inhalt von . Benutze verschachtelte Befehle um nutzen daraus zu ziehen." + +#: plugin.py:483 +msgid "Dude, just give the command. No need for the tell." +msgstr "Junge, gib mir einfach den Befehl." + +#: plugin.py:488 +msgid "You just told me, why should I tell myself?" +msgstr "Das hast du mir gerade gesagt, wieso sollte ich es mir selbst sagen?" + +#: plugin.py:493 +msgid "I haven't seen %s, I'll let you do the telling." +msgstr "Ich habe %s nicht gesehen, sag es ihm selbst." + +#: plugin.py:498 +msgid "%s wants me to tell you: %s" +msgstr "%s will dir folgendes sagen: %s" + +#: plugin.py:505 +msgid "" +"takes no arguments\n" +"\n" +" Checks to see if the bot is alive.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Überprüft ob der Bot noch am Leben ist." + +#: plugin.py:509 +msgid "pong" +msgstr "Pong" + +#: plugin.py:513 +msgid "" +"[] [--match-case]\n" +"\n" +" Returns the nick of someone on the channel whose nick begins with the\n" +" given .\n" +" defaults to the current channel." +msgstr "" + +#: plugin.py:519 +msgid "I'm not even in %s." +msgstr "" + +#: plugin.py:531 +msgid "No such nick." +msgstr "" + diff --git a/plugins/Misc/locale/fi.po b/plugins/Misc/locale/fi.po index 38cff73f4..ddfade24c 100644 --- a/plugins/Misc/locale/fi.po +++ b/plugins/Misc/locale/fi.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-08-10 11:28+CEST\n" -"PO-Revision-Date: 2011-08-10 15:00+0200\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-03-15 08:45+0200\n" "Last-Translator: Mika Suomalainen \n" "Language-Team: \n" "Language: \n" @@ -29,6 +29,18 @@ msgstr "" #: config.py:50 msgid "" +"Determines whether the bot will list unloaded\n" +" plugins with the list command if given the --unloaded switch. If this is\n" +" disabled, non-owner users should be unable to see what unloaded plugins\n" +" are available." +msgstr "" +"Määrittää luetteleeko botti lataamattomat lisäosat\n" +" \"list\" komennolla jos --unloaded valitsin on annettu. Jos tämä on poistettu käytöstä,\n" +" ei-omistaja käyttäjien pitäisi olla kykenemättömiä näkemään mitkä lisäosat eivät ole\n" +" ladattuja." + +#: config.py:55 +msgid "" "Determines the format string for\n" " timestamps in the Misc.last command. Refer to the Python documentation\n" " for the time module to see what formats are accepted. If you set this\n" @@ -39,7 +51,7 @@ msgstr "" " aikamoduulin kohdalle nähdäksesi mitkä aikamuodot hyväksytään. Jos asetat tämän asetuksen\n" " tyhjäksi, niin aikaleimaa ei näytetä." -#: config.py:57 +#: config.py:62 msgid "" "Determines whether or not\n" " the timestamp will be included in the output of last when it is part of a\n" @@ -49,7 +61,7 @@ msgstr "" " aikeleima \"last\" komennon ulostuloon, kun se on osa\n" " sisäkkäisiä komentoja." -#: config.py:61 +#: config.py:66 msgid "" "Determines whether or not the\n" " nick will be included in the output of last when it is part of a nested\n" @@ -59,21 +71,22 @@ msgstr "" " sisällytetäänkö nimimerkki \"last\" komennon ulostuloon, kun se on osa sisäkkäisiä\n" " komentoja." -#: plugin.py:81 +#: plugin.py:104 msgid "You've given me %s invalid commands within the last minute; I'm now ignoring you for %s." msgstr "Olet antanut minulle %s epäkelvollista komentoa minuutin sisällä; Minä kiellän sinut nyt %s:siä." -#: plugin.py:93 +#: plugin.py:116 msgid "The %q plugin is loaded, but there is no command named %q in it. Try \"list %s\" to see the commands in the %q plugin." msgstr "Lisäosa %q on ladattu, mutta siinä ei ole %q nimistä komentoa. Käytä komentoa \"list %s\" mähdäksesi kaikki komennot lisäosassa %q." -#: plugin.py:119 +#: plugin.py:142 msgid "" -"[--private] []\n" +"[--private] [--unloaded] []\n" "\n" " Lists the commands available in the given plugin. If no plugin is\n" " given, lists the public plugins available. If --private is given,\n" -" lists the private plugins.\n" +" lists the private plugins. If --unloaded is given, it will list\n" +" available plugins that are not loaded.\n" " " msgstr "" "[--private] []\n" @@ -83,19 +96,23 @@ msgstr "" " luettelee kaikki yksityiset lisäosat.\n" " " -#: plugin.py:144 +#: plugin.py:163 +msgid "--private and --unloaded are uncompatible options." +msgstr "--private ja --unloaded ovat epäyhteensopivia asetuksia." + +#: plugin.py:194 msgid "There are no private plugins." msgstr "Yksityisiä lisäosia ei ole." -#: plugin.py:146 +#: plugin.py:196 msgid "There are no public plugins." msgstr "Julkisia lisäosia ei ole." -#: plugin.py:153 +#: plugin.py:203 msgid "That plugin exists, but has no commands. This probably means that it has some configuration variables that can be changed in order to modify its behavior. Try \"config list supybot.plugins.%s\" to see what configuration variables it has." msgstr "Tuo lisäosa on olemassa, mutta siinä ei ole komentoja. Tämä tarkoittaa luultavasti sitä, että sillä on joitain asetusarvoja, joita voidaan muuttaa sen käyttäytymisen muokkaamiseksi. Käytä komentoa \"config list supybot.plugins.%s\" nähdäksesi mitä asetusarvoja sillä on." -#: plugin.py:164 +#: plugin.py:215 msgid "" "\n" "\n" @@ -109,11 +126,11 @@ msgstr "" " palauttaen listan komennoista, jotka sisältävät sen merkkiketjun.\n" " " -#: plugin.py:183 +#: plugin.py:234 msgid "No appropriate commands were found." msgstr "Sopivia komentoja ei löytynyt." -#: plugin.py:188 +#: plugin.py:239 msgid "" "[] []\n" "\n" @@ -127,15 +144,15 @@ msgstr "" " on vaadittu vain jos komento on useammassa kuin yhdessä lisäosassa.\n" " " -#: plugin.py:198 +#: plugin.py:249 msgid "That command exists in the %L plugins. Please specify exactly which plugin command you want help with." msgstr "Tuo komento on %L lisäosassa. Ole hyvä ja määritä minkä komennon kanssa haluat apua." -#: plugin.py:205 +#: plugin.py:256 msgid "There is no command %q." msgstr "Komentoa %q ei ole." -#: plugin.py:211 +#: plugin.py:262 msgid "" "takes no arguments\n" "\n" @@ -147,23 +164,23 @@ msgstr "" " Palauttaa nykyisen botin version.\n" " " -#: plugin.py:225 +#: plugin.py:276 msgid "The newest versions available online are %s." msgstr "Uusimmat verkossa olevat versiot ovat %s." -#: plugin.py:226 +#: plugin.py:277 msgid "%s (in %s)" msgstr "%s (%s:ssa)" -#: plugin.py:230 +#: plugin.py:281 msgid "I couldn't fetch the newest version from the Limnoria repository." msgstr "Minä en voinut tarkistaa uusinta versiota Limnorian pakettivarastosta." -#: plugin.py:232 +#: plugin.py:283 msgid "The current (running) version of this Supybot is %s. %s" msgstr "Nykyinen (päällä) oleva versio tästä Supybotista on %s. %s" -#: plugin.py:239 +#: plugin.py:290 msgid "" "takes no arguments\n" "\n" @@ -175,11 +192,11 @@ msgstr "" " Palauttaa URL:n, joka kertoo mistä Limnorian saa.\n" " " -#: plugin.py:243 +#: plugin.py:294 msgid "My source is at https://github.com/ProgVal/Limnoria" msgstr "Minun lähdekoodini on osoitteessa: https://github.com/ProgVal/Limnoria" -#: plugin.py:248 +#: plugin.py:299 msgid "" "[]\n" "\n" @@ -197,31 +214,31 @@ msgstr "" " komennon antaneen henkilön sijasta.\n" " " -#: plugin.py:262 +#: plugin.py:313 msgid "%s has no public mores." msgstr "%s:llä ei ole julkista jatkoa." -#: plugin.py:265 +#: plugin.py:316 msgid "Sorry, I can't find any mores for %s" msgstr "Anteeksi, en voi löytää jatkoa %s:lle." -#: plugin.py:272 +#: plugin.py:323 msgid "more message" msgstr "viesti lisää" -#: plugin.py:274 +#: plugin.py:325 msgid "more messages" msgstr "lisää viestejä" -#: plugin.py:278 +#: plugin.py:329 msgid "You haven't asked me a command; perhaps you want to see someone else's more. To do so, call this command with that person's nick." msgstr "Et ole pyytänyt minulta komentoa; ehkäpä tahdoit nähdä jonkun muun jatkon. Tehdäksesi niin, käytä tätä komentoa tuon henkilön nimimerkillä." -#: plugin.py:282 +#: plugin.py:333 msgid "That's all, there is no more." msgstr "Siinä kaikki, enempää ei ole." -#: plugin.py:292 +#: plugin.py:343 msgid "" "[--{from,in,on,with,without,regexp} ] [--nolimit]\n" "\n" @@ -245,11 +262,15 @@ msgstr "" " komento on annettu.\n" " " -#: plugin.py:386 +#: plugin.py:445 +msgid "The regular expression timed out." +msgstr "Säännöllinen lauseke aiheutti aikakatkaisun." + +#: plugin.py:458 msgid "I couldn't find a message matching that criteria in my history of %s messages." msgstr "En voinut löytää viestiä, joka täsmää noihin kriteereihin %s:än viestin historiassa." -#: plugin.py:401 +#: plugin.py:473 msgid "" " \n" "\n" @@ -263,23 +284,23 @@ msgstr "" " eduksesi tässä.\n" " " -#: plugin.py:409 +#: plugin.py:483 msgid "Dude, just give the command. No need for the tell." msgstr "Keikari, anna vain komento. Ei tarvitse kertoa." -#: plugin.py:414 +#: plugin.py:488 msgid "You just told me, why should I tell myself?" msgstr "Sinä kerroit juuri minulle, miksi minun pitäisi kertoa itselleni?" -#: plugin.py:419 +#: plugin.py:493 msgid "I haven't seen %s, I'll let you do the telling." msgstr "En ole nähnyt %s:ää, annan sinun hoitaa kertomisen." -#: plugin.py:424 +#: plugin.py:498 msgid "%s wants me to tell you: %s" msgstr "%s haluaa minun kertovan sinulle: %s" -#: plugin.py:431 +#: plugin.py:505 msgid "" "takes no arguments\n" "\n" @@ -291,7 +312,29 @@ msgstr "" " Tarkistaa onko botti elossa.\n" " " -#: plugin.py:435 +#: plugin.py:509 msgid "pong" msgstr "pong" +#: plugin.py:513 +msgid "" +"[] [--match-case]\n" +"\n" +" Returns the nick of someone on the channel whose nick begins with the\n" +" given .\n" +" defaults to the current channel." +msgstr "" +"[] [--match-case]\n" +"\n" +" Palauttaa jonkun kanavalla olevan nimimerkin, joka alkaa\n" +" annetulla .\n" +" on oletuksena nykyinen kanava." + +#: plugin.py:519 +msgid "I'm not even in %s." +msgstr "En edes ole kanavalla %s." + +#: plugin.py:531 +msgid "No such nick." +msgstr "Tuollaista nimimerkkiä ei ole." + diff --git a/plugins/Misc/locale/fr.po b/plugins/Misc/locale/fr.po index b247ccad9..e6544c62d 100644 --- a/plugins/Misc/locale/fr.po +++ b/plugins/Misc/locale/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-08-10 11:28+CEST\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: \n" "Last-Translator: Valentin Lorentz \n" "Language-Team: Supybot-fr \n" @@ -23,60 +23,73 @@ msgstr "Détermine si le bot listera les plugins privés dans la commande 'list' #: config.py:50 msgid "" +"Determines whether the bot will list unloaded\n" +" plugins with the list command if given the --unloaded switch. If this is\n" +" disabled, non-owner users should be unable to see what unloaded plugins\n" +" are available." +msgstr "Détermine si le bot listera les plugins déchargés dans la commande 'list', si l'option --unloaded est donné. Si cette variable est désactivée, les utilisateurs non-owner ne pourront pas voir quels plugins déchargés sont présents." + +#: config.py:55 +msgid "" "Determines the format string for\n" " timestamps in the Misc.last command. Refer to the Python documentation\n" " for the time module to see what formats are accepted. If you set this\n" " variable to the empty string, the timestamp will not be shown." msgstr "Détermine la chaîne de formattage pour les timestamps de la commande Misc.last. Référez-vous à la documentation de Python sur le module 'time' pour voir quels formats sont acceptés. Si vous définissez cette variable pour être une chaîne vide, le timestamp ne sera pas affiché." -#: config.py:57 +#: config.py:62 msgid "" "Determines whether or not\n" " the timestamp will be included in the output of last when it is part of a\n" " nested command" msgstr "Détermine si le timestamp sera inclu dans la sortie de 'last' lorsqu'il est dans une commande imbriquée." -#: config.py:61 +#: config.py:66 msgid "" "Determines whether or not the\n" " nick will be included in the output of last when it is part of a nested\n" " command" msgstr "Détermine si le nick est inclu dans la sortie de 'last' lorsqu'il est dans une commande imbriquée." -#: plugin.py:81 +#: plugin.py:104 msgid "You've given me %s invalid commands within the last minute; I'm now ignoring you for %s." msgstr "Vous m'avez donné %s commandes invalides dans la dernière minute, je vous ignore maitenant pendant %s." -#: plugin.py:93 +#: plugin.py:116 msgid "The %q plugin is loaded, but there is no command named %q in it. Try \"list %s\" to see the commands in the %q plugin." msgstr "Le plugin %q est chargé, mais il n'a pas de commande appelée %q. Essayez \"list %s\" pour voir les commandes dans le plugin %q." -#: plugin.py:119 +#: plugin.py:142 msgid "" -"[--private] []\n" +"[--private] [--unloaded] []\n" "\n" " Lists the commands available in the given plugin. If no plugin is\n" " given, lists the public plugins available. If --private is given,\n" -" lists the private plugins.\n" +" lists the private plugins. If --unloaded is given, it will list\n" +" available plugins that are not loaded.\n" " " msgstr "" -"[--private] []\n" +"[--private] [--unloaded] []\n" "\n" -"Liste les commandes disponibles dans le plugin donné. Si aucun plugin n'est donné, liste les plugins publics. Si --private est donné, il liste les plugins privés." +"Liste les commandes disponibles dans le plugin donné. Si aucun plugin n'est donné, liste les plugins publics. Si --private est donné, il liste les plugins privés. Si --unloaded est donné, il liste les plugins disponibles qui ne sont pas chargés." -#: plugin.py:144 +#: plugin.py:163 +msgid "--private and --unloaded are uncompatible options." +msgstr "--private et --unloaded ne sont pas des options compatibles." + +#: plugin.py:194 msgid "There are no private plugins." msgstr "Il n'y a pas de plugin privé." -#: plugin.py:146 +#: plugin.py:196 msgid "There are no public plugins." msgstr "Il n'y a pas de plugin privé." -#: plugin.py:153 +#: plugin.py:203 msgid "That plugin exists, but has no commands. This probably means that it has some configuration variables that can be changed in order to modify its behavior. Try \"config list supybot.plugins.%s\" to see what configuration variables it has." msgstr "Ce plugin existe, mais n'a pas de commande. Cela signifie probablement qu'il a des variables de configuration qui peuvent être changés pour modifier son comportement. Essayez \"config list supybot.plugins.%s\" pour voir quelles variables de configuration il a." -#: plugin.py:164 +#: plugin.py:215 msgid "" "\n" "\n" @@ -88,11 +101,11 @@ msgstr "" "\n" "Recherche la dans les commandes actuellement fournies par le bot et retourne une list des commandes contenant cette chaîne." -#: plugin.py:183 +#: plugin.py:234 msgid "No appropriate commands were found." msgstr "Aucune commande appropriée n'a été trouvée." -#: plugin.py:188 +#: plugin.py:239 msgid "" "[] []\n" "\n" @@ -104,15 +117,15 @@ msgstr "" "\n" "Cette commande donne une description utile de ce que fait la . n'est nécessaire que si la commande est présente dans plus d'un plugin." -#: plugin.py:198 +#: plugin.py:249 msgid "That command exists in the %L plugins. Please specify exactly which plugin command you want help with." msgstr "Cette commande existe dans les plugins %L. Veuillez spécifier dans quel plugin se trouve la commande pour laquelle vous cherchez de l'aide." -#: plugin.py:205 +#: plugin.py:256 msgid "There is no command %q." msgstr "Il n'y a pas de commande %q." -#: plugin.py:211 +#: plugin.py:262 msgid "" "takes no arguments\n" "\n" @@ -123,23 +136,23 @@ msgstr "" "\n" "Retourne la version actuelle du bot" -#: plugin.py:225 +#: plugin.py:276 msgid "The newest versions available online are %s." msgstr "Les dernières versions disponibles en ligne sont %s." -#: plugin.py:226 +#: plugin.py:277 msgid "%s (in %s)" msgstr "%s (dans %s)" -#: plugin.py:230 +#: plugin.py:281 msgid "I couldn't fetch the newest version from the Limnoria repository." msgstr "Je ne peux récupérer la dernière version sur le dépôt de Limnoria." -#: plugin.py:232 +#: plugin.py:283 msgid "The current (running) version of this Supybot is %s. %s" msgstr "La version de ce Supybot est %s. %s" -#: plugin.py:239 +#: plugin.py:290 msgid "" "takes no arguments\n" "\n" @@ -150,11 +163,11 @@ msgstr "" "\n" "Retourne une URL disant où trouver Limnoria." -#: plugin.py:243 +#: plugin.py:294 msgid "My source is at https://github.com/ProgVal/Limnoria" msgstr "Ma source est disponible sur https://github.com/ProgVal/Limnoria" -#: plugin.py:248 +#: plugin.py:299 msgid "" "[]\n" "\n" @@ -168,31 +181,31 @@ msgstr "" "\n" "Si la dernière commande était tronquée par les limitations de taille des messages sur IRC, retourne le morceau suivant résultant de la dernière commande. Si le est donné, continue la dernière commande du plutôt que de la personne envoyant ce message." -#: plugin.py:262 +#: plugin.py:313 msgid "%s has no public mores." msgstr "%s n'a pas de 'more' public." -#: plugin.py:265 +#: plugin.py:316 msgid "Sorry, I can't find any mores for %s" msgstr "Désolé, je ne peux trouver de 'more' pour %s" -#: plugin.py:272 +#: plugin.py:323 msgid "more message" msgstr "autre message" -#: plugin.py:274 +#: plugin.py:325 msgid "more messages" msgstr "autres messages" -#: plugin.py:278 +#: plugin.py:329 msgid "You haven't asked me a command; perhaps you want to see someone else's more. To do so, call this command with that person's nick." msgstr "Vous ne m'avez donné aucune commande. Peut-être que vous voulez voir celle de quelqu'un d'autre. Pour cela, appelez cette commande en ajoutant le nick de cette personne." -#: plugin.py:282 +#: plugin.py:333 msgid "That's all, there is no more." msgstr "C'est tout, il n'y a plus de 'more'" -#: plugin.py:292 +#: plugin.py:343 msgid "" "[--{from,in,on,with,without,regexp} ] [--nolimit]\n" "\n" @@ -209,11 +222,15 @@ msgstr "" "\n" "Retourne le dernier message correspondant aux critères donnés. --from requiert le nick de la personne qui a envoyé le message ; --in requiert le canal sur lequel a été envoyé le message ; --with requiert une chaîne qui doit être dans le message --regexp requiert une expression régulière à laquelle le message doit correspondre ; --nolimit retourne tous les messages qui peuvent être trouvés. Par défaut, recherche dans les logs du canal sur lequel est envoyée cette commande." -#: plugin.py:386 +#: plugin.py:445 +msgid "The regular expression timed out." +msgstr "L'expression régulière a pris trop de temps à être évaluée." + +#: plugin.py:458 msgid "I couldn't find a message matching that criteria in my history of %s messages." msgstr "Je ne peux trouver de message correspondant à ce critère dans mon historique de %s messages." -#: plugin.py:401 +#: plugin.py:473 msgid "" " \n" "\n" @@ -225,23 +242,23 @@ msgstr "" "\n" "Dit le au . Utile si vous utilisez des commandes imbriquées." -#: plugin.py:409 +#: plugin.py:483 msgid "Dude, just give the command. No need for the tell." msgstr "Mec, contentes-toi de me donner la commande. Pas besoin d'utiliser 'tell'." -#: plugin.py:414 +#: plugin.py:488 msgid "You just told me, why should I tell myself?" msgstr "Vous venez de me le dire, pourquoi devrais-je me le dire moi-même ?" -#: plugin.py:419 +#: plugin.py:493 msgid "I haven't seen %s, I'll let you do the telling." msgstr "Je n'ai pas vu %s, je vous laisse lui dire." -#: plugin.py:424 +#: plugin.py:498 msgid "%s wants me to tell you: %s" msgstr "%s veut que je vous dise : %s" -#: plugin.py:431 +#: plugin.py:505 msgid "" "takes no arguments\n" "\n" @@ -252,7 +269,26 @@ msgstr "" "\n" "Vérifie si le bot est encore en vie." -#: plugin.py:435 +#: plugin.py:509 msgid "pong" msgstr "pong" +#: plugin.py:513 +msgid "" +"[] [--match-case]\n" +"\n" +" Returns the nick of someone on the channel whose nick begins with the\n" +" given .\n" +" defaults to the current channel." +msgstr "" +"[] [--match-case]\\n" +"Retourne le nick de quelqu'un dans le salon dont le nick commence par les indiquées. correspond par défaut au salon actuel." + +#: plugin.py:519 +msgid "I'm not even in %s." +msgstr "Je ne suis pas dans %s." + +#: plugin.py:531 +msgid "No such nick." +msgstr "Ce nick n'existe pas." + diff --git a/plugins/Misc/locale/hu.po b/plugins/Misc/locale/hu.po index 5d8a46e9e..962322137 100644 --- a/plugins/Misc/locale/hu.po +++ b/plugins/Misc/locale/hu.po @@ -5,9 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: Limnoria Misc\n" -"POT-Creation-Date: 2011-08-10 11:28+CEST\n" -"PO-Revision-Date: 2011-08-10 15:41+0100\n" -"Last-Translator: nyuszika7h \n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:15+0200\n" +"Last-Translator: Mika Suomalainen \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" @@ -24,6 +24,15 @@ msgid "" msgstr "Meghatározza, hogy a bot listázza-e a privát bővítményeket a list paranccsal, ha a --private kapcsoló meg van adva. Ha ez le van tiltva, a tulajdonoson kívül más felhasználók nem láthatják, hogy milyen privát bővítmények vannak betöltve." #: config.py:50 +#, fuzzy +msgid "" +"Determines whether the bot will list unloaded\n" +" plugins with the list command if given the --unloaded switch. If this is\n" +" disabled, non-owner users should be unable to see what unloaded plugins\n" +" are available." +msgstr "Meghatározza, hogy a bot listázza-e a privát bővítményeket a list paranccsal, ha a --private kapcsoló meg van adva. Ha ez le van tiltva, a tulajdonoson kívül más felhasználók nem láthatják, hogy milyen privát bővítmények vannak betöltve." + +#: config.py:55 msgid "" "Determines the format string for\n" " timestamps in the Misc.last command. Refer to the Python documentation\n" @@ -31,54 +40,60 @@ msgid "" " variable to the empty string, the timestamp will not be shown." msgstr "Meghatározza az időbélyegek formátumát a Misc.last parancsban. Hivatkozz a Python dokumentációra a time modulhoz, hogy lásd, milyen formátumok fogadhatók el. Ha üres karakterláncra állítód ezt a változót, az időbélyegző nem lesz megjelenítve." -#: config.py:57 +#: config.py:62 msgid "" "Determines whether or not\n" " the timestamp will be included in the output of last when it is part of a\n" " nested command" msgstr "Meghatározza, hogy a last kimenete tartalmazza-e az időbélyegzőt, ha az egy beágyazott parancs része." -#: config.py:61 +#: config.py:66 msgid "" "Determines whether or not the\n" " nick will be included in the output of last when it is part of a nested\n" " command" msgstr "Meghatározza, hogy a last kimenete tartalmazza-e a nevet, ha az egy beágyazott parancs része." -#: plugin.py:81 +#: plugin.py:104 msgid "You've given me %s invalid commands within the last minute; I'm now ignoring you for %s." msgstr "%s érvénytelen parancsot adtál nekem az utolsó percben; most mellőzlek %s-ig." -#: plugin.py:93 +#: plugin.py:116 msgid "The %q plugin is loaded, but there is no command named %q in it. Try \"list %s\" to see the commands in the %q plugin." msgstr "A %q bővítmény be van töltve, de nincs benne parancs %q névvel. Próbáld meg a \"list %s\"-t, hogy lásd a parancsokat a %q bővítményben." -#: plugin.py:119 +#: plugin.py:142 +#, fuzzy msgid "" -"[--private] []\n" +"[--private] [--unloaded] []\n" "\n" " Lists the commands available in the given plugin. If no plugin is\n" " given, lists the public plugins available. If --private is given,\n" -" lists the private plugins.\n" +" lists the private plugins. If --unloaded is given, it will list\n" +" available plugins that are not loaded.\n" " " msgstr "" "[--private] []\n" "\n" "Kiírja az elérhető parancsokat a megadott bővítményben. Ha nincs megadva bővítmény, kiírja az elérhető publikus bővítményeket. Ha --private meg van adva, kiírja a privát bővítményeket." -#: plugin.py:144 +#: plugin.py:163 +msgid "--private and --unloaded are uncompatible options." +msgstr "" + +#: plugin.py:194 msgid "There are no private plugins." msgstr "Nincsenek privát bővítmények." -#: plugin.py:146 +#: plugin.py:196 msgid "There are no public plugins." msgstr "Nincsenek publikus bővítmények." -#: plugin.py:153 +#: plugin.py:203 msgid "That plugin exists, but has no commands. This probably means that it has some configuration variables that can be changed in order to modify its behavior. Try \"config list supybot.plugins.%s\" to see what configuration variables it has." msgstr "Ez a bővítmény létezik, de nincsenek parancsai. Ez valószínűleg azt jelenti, hogy van néhány konfigurációs változója, ami megváltoztatható, hogy módosítsd a viselkedését. Próbáld meg a \"config list supybot.plugins.%s\"-t, hogy lásd, milyen konfigurációs változói vannak." -#: plugin.py:164 +#: plugin.py:215 msgid "" "\n" "\n" @@ -90,11 +105,11 @@ msgstr "" "\n" "-ra keres a parancsokban, amelyeket a bot kínál, és kiírja a parancsokat, amelyek tartalmazzák a karakterláncot." -#: plugin.py:183 +#: plugin.py:234 msgid "No appropriate commands were found." msgstr "Nem található megfelelő parancs." -#: plugin.py:188 +#: plugin.py:239 msgid "" "[] []\n" "\n" @@ -106,15 +121,15 @@ msgstr "" "\n" "Ez a parancs egy hasznos leírást ad arról, hogy mit csinál . csak akkor szükséges, ha a parancs egynél több bővítményben van." -#: plugin.py:198 +#: plugin.py:249 msgid "That command exists in the %L plugins. Please specify exactly which plugin command you want help with." msgstr "Ez a parancs a(z) %L bővítményekben létezik. Kérlek pontosan határozd meg, hogy melyik bővítmény parancsának akarod látni a segítségét." -#: plugin.py:205 +#: plugin.py:256 msgid "There is no command %q." msgstr "Nincs %q parancs." -#: plugin.py:211 +#: plugin.py:262 msgid "" "takes no arguments\n" "\n" @@ -125,23 +140,23 @@ msgstr "" "\n" "Kiírja a bot verzióját." -#: plugin.py:225 +#: plugin.py:276 msgid "The newest versions available online are %s." msgstr "A legújabb elérhető verziók az interneten: %s." -#: plugin.py:226 +#: plugin.py:277 msgid "%s (in %s)" msgstr "%s (%s-ban)" -#: plugin.py:230 +#: plugin.py:281 msgid "I couldn't fetch the newest version from the Limnoria repository." msgstr "Nem tudtam lekérdezni a legújabb verziót a Limnoria gyűjteményből." -#: plugin.py:232 +#: plugin.py:283 msgid "The current (running) version of this Supybot is %s. %s" msgstr "Az aktuális (futó) verziója ennek a Supybot-nak %s. %s" -#: plugin.py:239 +#: plugin.py:290 msgid "" "takes no arguments\n" "\n" @@ -151,11 +166,11 @@ msgstr "" "paraméter nélküli\n" "Kiír egy linket, ami megmondja, honnan lehet a Limnoria-t megszerezni." -#: plugin.py:243 +#: plugin.py:294 msgid "My source is at https://github.com/ProgVal/Limnoria" msgstr "A forrásom https://github.com/ProgVal/Limnoria -ban van." -#: plugin.py:248 +#: plugin.py:299 msgid "" "[]\n" "\n" @@ -169,31 +184,31 @@ msgstr "" "\n" "Ha a legutóbbi parancs le volt rövidítve az IRC üzenethosszúság-korlátai miatt, kiírja a következő részét az utolsó parancs eredményének. Ha meg van adva, utolsó parancsának a folytatását írja ki." -#: plugin.py:262 +#: plugin.py:313 msgid "%s has no public mores." msgstr "%s-nek nincsenek publikus folytatásai." -#: plugin.py:265 +#: plugin.py:316 msgid "Sorry, I can't find any mores for %s" msgstr "Sajnálom, nem találok folytatásokat %s-hoz." -#: plugin.py:272 +#: plugin.py:323 msgid "more message" msgstr "eggyel több üzenet" -#: plugin.py:274 +#: plugin.py:325 msgid "more messages" msgstr "több üzenet" -#: plugin.py:278 +#: plugin.py:329 msgid "You haven't asked me a command; perhaps you want to see someone else's more. To do so, call this command with that person's nick." msgstr "Nem adtál nekem parancsot; talán valaki más folyatását szeretnéd látni. Ha ezt szeretnéd tenni, hívd meg ezt a parancsot az adott ember nevével." -#: plugin.py:282 +#: plugin.py:333 msgid "That's all, there is no more." msgstr "Ez minden, nincs több." -#: plugin.py:292 +#: plugin.py:343 msgid "" "[--{from,in,on,with,without,regexp} ] [--nolimit]\n" "\n" @@ -209,11 +224,15 @@ msgstr "" "[--{from,in,on,with,without,regexp} <érték>] [--nolimit]\n" "Kiírja a legutolsó üzenetet, amire illeszkedik a megadott kritérium. --from kér egy nevet, akitől az üzenet jött; --in kér egy csatornát, ahová az üzenet lett küldve; --on kér egy hálózatpt, amelyen az üzenet lett küldve; --with kér egy karakterlánc aminek az üzenetben kellett lennie; --regexp kér egy szabályos kifejezést, amelyre az üzenetnek illeszkednie kell; --nolimit kiírja az összes talált üzenetet. Alapértelmezésben abban a csatornában keres, ahol ez a parancs végre lett hajtva." -#: plugin.py:386 +#: plugin.py:445 +msgid "The regular expression timed out." +msgstr "" + +#: plugin.py:458 msgid "I couldn't find a message matching that criteria in my history of %s messages." msgstr "Nem találtam a kritériumra illeszkedő üzenetet a(z) %s üzenetes előzményeimben." -#: plugin.py:401 +#: plugin.py:473 msgid "" " \n" "\n" @@ -222,23 +241,23 @@ msgid "" " " msgstr " Megmondja -nek szöveget. Itt az előnyödre használhatod a beágyazott parancsokat." -#: plugin.py:409 +#: plugin.py:483 msgid "Dude, just give the command. No need for the tell." msgstr "Haver, csak add meg a parancsot. Nem kell mondani." -#: plugin.py:414 +#: plugin.py:488 msgid "You just told me, why should I tell myself?" msgstr "Most mondtad el nekem, miért mondjam el magamnak?" -#: plugin.py:419 +#: plugin.py:493 msgid "I haven't seen %s, I'll let you do the telling." msgstr "Nem láttam %s-t, rád hagyom a mondást." -#: plugin.py:424 +#: plugin.py:498 msgid "%s wants me to tell you: %s" msgstr "%s szeretné, hogy megmondjam neked: %s" -#: plugin.py:431 +#: plugin.py:505 msgid "" "takes no arguments\n" "\n" @@ -249,7 +268,24 @@ msgstr "" "\n" "Ellenőrzi, hogy a bot él-e." -#: plugin.py:435 +#: plugin.py:509 msgid "pong" msgstr "pong" +#: plugin.py:513 +msgid "" +"[] [--match-case]\n" +"\n" +" Returns the nick of someone on the channel whose nick begins with the\n" +" given .\n" +" defaults to the current channel." +msgstr "" + +#: plugin.py:519 +msgid "I'm not even in %s." +msgstr "" + +#: plugin.py:531 +msgid "No such nick." +msgstr "" + diff --git a/plugins/Misc/locale/it.po b/plugins/Misc/locale/it.po index b2fbb2b68..c1d8f6066 100644 --- a/plugins/Misc/locale/it.po +++ b/plugins/Misc/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-08-10 14:39+0200\n" +"PO-Revision-Date: 2012-03-15 21:01+0100\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -24,6 +24,18 @@ msgstr "" #: config.py:50 msgid "" +"Determines whether the bot will list unloaded\n" +" plugins with the list command if given the --unloaded switch. If this is\n" +" disabled, non-owner users should be unable to see what unloaded plugins\n" +" are available." +msgstr "" +"Determina se il bot elencherà i plugin non caricati con il comando \"list\" se usato\n" +" con l'opzione --unloaded. Se questa variabile è disattivata, gli utenti non\n" +" proprietari (owner) non saranno in grado di vedere quali altri plugin sono\n" +" disponibili." + +#: config.py:55 +msgid "" "Determines the format string for\n" " timestamps in the Misc.last command. Refer to the Python documentation\n" " for the time module to see what formats are accepted. If you set this\n" @@ -33,7 +45,7 @@ msgstr "" " i formati validi fai riferimento alla documentazione di Python per il modulo time.\n" " Se si assegna una stringa vuota a questa variabile, il timestamp non verrà mostrato." -#: config.py:57 +#: config.py:62 msgid "" "Determines whether or not\n" " the timestamp will be included in the output of last when it is part of a\n" @@ -41,7 +53,7 @@ msgid "" msgstr "" "Determina se il timestamp verrà incluso o meno nell'output di \"last\" quando fa parte di un comando nidificato." -#: config.py:61 +#: config.py:66 msgid "" "Determines whether or not the\n" " nick will be included in the output of last when it is part of a nested\n" @@ -49,43 +61,49 @@ msgid "" msgstr "" "Determines se il nick verrà incluso o meno nell'output di \"last\" quando fa parte di un comando nidificato." -#: plugin.py:81 +#: plugin.py:104 msgid "You've given me %s invalid commands within the last minute; I'm now ignoring you for %s." msgstr "Mi hai fornito %s comandi non validi entro l'ultimo minuto; ti ignoro per %s." -#: plugin.py:93 +#: plugin.py:116 msgid "The %q plugin is loaded, but there is no command named %q in it. Try \"list %s\" to see the commands in the %q plugin." msgstr "Il plugin %q è caricato ma non ha nessun comando chiamato %q. Prova \"list %s\" per vedere i comandi disponibili nel plugin %q." -#: plugin.py:119 +#: plugin.py:142 #, docstring msgid "" -"[--private] []\n" +"[--private] [--unloaded] []\n" "\n" " Lists the commands available in the given plugin. If no plugin is\n" " given, lists the public plugins available. If --private is given,\n" -" lists the private plugins.\n" +" lists the private plugins. If --unloaded is given, it will list\n" +" available plugins that are not loaded.\n" " " msgstr "" -"[--private] []\n" +"[--private] [--unloaded] []\n" "\n" " Elenca i comandi disponibili nel dato plugin. Se nessun plugin è specificato,\n" -" riporta l'elenco di quelli pubblici. Se viene usato --private mostra quelli privati.\n" +" riporta l'elenco di quelli pubblici. Specificando --private vengono mostrati quelli\n" +" privati, mentre con --unloaded quelli non caricati.\n" " " -#: plugin.py:144 +#: plugin.py:163 +msgid "--private and --unloaded are uncompatible options." +msgstr "Le opzioni --private e --unloaded non possono essere usate insieme." + +#: plugin.py:194 msgid "There are no private plugins." msgstr "Non ci sono plugin privati." -#: plugin.py:146 +#: plugin.py:196 msgid "There are no public plugins." msgstr "Non ci sono plugin pubblici." -#: plugin.py:153 +#: plugin.py:203 msgid "That plugin exists, but has no commands. This probably means that it has some configuration variables that can be changed in order to modify its behavior. Try \"config list supybot.plugins.%s\" to see what configuration variables it has." msgstr "Il plugin esiste ma non ha comandi. Probabilmente significa che ha delle variabili di configurazione modificabili che cambiano il suo comportamento. Prova \"config list supybot.plugins.%s\" per vedere quali sono disponibili." -#: plugin.py:164 +#: plugin.py:215 #, docstring msgid "" "\n" @@ -100,11 +118,11 @@ msgstr "" " riportando un elenco di quelli che contengono la stringa.\n" " " -#: plugin.py:183 +#: plugin.py:234 msgid "No appropriate commands were found." msgstr "Non è stato trovato alcun comando appropriato." -#: plugin.py:188 +#: plugin.py:239 #, docstring msgid "" "[] []\n" @@ -119,15 +137,15 @@ msgstr "" " necessario solo se il comando è presente in più di un plugin.\n" " " -#: plugin.py:198 +#: plugin.py:249 msgid "That command exists in the %L plugins. Please specify exactly which plugin command you want help with." msgstr "Questo comando esiste nei plugin %L. Specifica per quale vuoi aiuto." -#: plugin.py:205 +#: plugin.py:256 msgid "There is no command %q." msgstr "Non c'è nessun comando %q." -#: plugin.py:211 +#: plugin.py:262 #, docstring msgid "" "takes no arguments\n" @@ -140,23 +158,23 @@ msgstr "" " Riporta la versione attuale del bot.\n" " " -#: plugin.py:225 +#: plugin.py:276 msgid "The newest versions available online are %s." msgstr "Le versioni online più recenti sono %s." -#: plugin.py:226 +#: plugin.py:277 msgid "%s (in %s)" msgstr "%s (in %s)" -#: plugin.py:230 +#: plugin.py:281 msgid "I couldn't fetch the newest version from the Limnoria repository." msgstr "Non riesco a recuperare la versione più recente dal repository di Limnoria." -#: plugin.py:232 +#: plugin.py:283 msgid "The current (running) version of this Supybot is %s. %s" msgstr "La versione di questo Supybot è %s. %s" -#: plugin.py:239 +#: plugin.py:290 #, docstring msgid "" "takes no arguments\n" @@ -169,11 +187,11 @@ msgstr "" " Riporta un URL che dice dove ottenere Limnoria.\n" " " -#: plugin.py:243 +#: plugin.py:294 msgid "My source is at https://github.com/ProgVal/Limnoria" msgstr "I miei sorgenti sono disponibili all'indirizzo https://github.com/ProgVal/Limnoria" -#: plugin.py:248 +#: plugin.py:299 #, docstring msgid "" "[]\n" @@ -192,31 +210,31 @@ msgstr "" " dell'utente che usa questo comando.\n" " " -#: plugin.py:262 +#: plugin.py:313 msgid "%s has no public mores." msgstr "%s non ha \"more\" pubblici." -#: plugin.py:265 +#: plugin.py:316 msgid "Sorry, I can't find any mores for %s" msgstr "Spiacente, non trovo alcun \"more\" per %s" -#: plugin.py:272 +#: plugin.py:323 msgid "more message" msgstr "altro messaggio" -#: plugin.py:274 +#: plugin.py:325 msgid "more messages" msgstr "altri messaggi" -#: plugin.py:278 +#: plugin.py:329 msgid "You haven't asked me a command; perhaps you want to see someone else's more. To do so, call this command with that person's nick." msgstr "Non mi hai richiesto un comando, forse vuoi vedere quelli di qualcun altro. Per farlo usa questo comando con il nick di quell'utente." -#: plugin.py:282 +#: plugin.py:333 msgid "That's all, there is no more." msgstr "È tutto, non c'è nessun \"more\"." -#: plugin.py:292 +#: plugin.py:343 #, docstring msgid "" "[--{from,in,on,with,without,regexp} ] [--nolimit]\n" @@ -240,11 +258,15 @@ msgstr "" " trovati. Per impostazione predefinita ricerca nel canale in cui è stato dato il comando.\n" " " -#: plugin.py:386 +#: plugin.py:445 +msgid "The regular expression timed out." +msgstr "L'espressione regolare è scaduta." + +#: plugin.py:458 msgid "I couldn't find a message matching that criteria in my history of %s messages." msgstr "Non trovo un messaggio corrispondente a questo criterio nella cronologia di %s messaggi." -#: plugin.py:401 +#: plugin.py:473 #, docstring msgid "" " \n" @@ -258,23 +280,23 @@ msgstr "" " Dice a . Utilizza i comandi nidificati a tuo vantaggio.\n" " " -#: plugin.py:409 +#: plugin.py:483 msgid "Dude, just give the command. No need for the tell." msgstr "Dammi il comando, non c'è bisogno di usare \"tell\"." -#: plugin.py:414 +#: plugin.py:488 msgid "You just told me, why should I tell myself?" msgstr "Me l'hai appena detto, perché dovrei ripetermelo?" -#: plugin.py:419 +#: plugin.py:493 msgid "I haven't seen %s, I'll let you do the telling." msgstr "Non ho mai visto %s, lascio a te l'invio del messaggio." -#: plugin.py:424 +#: plugin.py:498 msgid "%s wants me to tell you: %s" msgstr "%s vuole che ti dica: %s" -#: plugin.py:431 +#: plugin.py:505 #, docstring msgid "" "takes no arguments\n" @@ -287,7 +309,30 @@ msgstr "" " Controlla che il bot sia ancora vivo.\n" " " -#: plugin.py:435 +#: plugin.py:509 msgid "pong" msgstr "pong" +#: plugin.py:513 +#, docstring +msgid "" +"[] [--match-case]\n" +"\n" +" Returns the nick of someone on the channel whose nick begins with the\n" +" given .\n" +" defaults to the current channel." +msgstr "" +"[] [--match-case]\n" +"\n" +" Restituisce i nick presenti in canale che cominciano con il dato pattern\n" +" specificato da .\n" +" è quello corrente." + +#: plugin.py:519 +msgid "I'm not even in %s." +msgstr "Non sono in %s." + +#: plugin.py:531 +msgid "No such nick." +msgstr "Nessun nick trovato." + diff --git a/plugins/Misc/messages.pot b/plugins/Misc/messages.pot index 73d72491a..f7df3d79e 100644 --- a/plugins/Misc/messages.pot +++ b/plugins/Misc/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-08-10 11:28+CEST\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,58 +25,71 @@ msgstr "" #: config.py:50 msgid "" +"Determines whether the bot will list unloaded\n" +" plugins with the list command if given the --unloaded switch. If this is\n" +" disabled, non-owner users should be unable to see what unloaded plugins\n" +" are available." +msgstr "" + +#: config.py:55 +msgid "" "Determines the format string for\n" " timestamps in the Misc.last command. Refer to the Python documentation\n" " for the time module to see what formats are accepted. If you set this\n" " variable to the empty string, the timestamp will not be shown." msgstr "" -#: config.py:57 +#: config.py:62 msgid "" "Determines whether or not\n" " the timestamp will be included in the output of last when it is part of a\n" " nested command" msgstr "" -#: config.py:61 +#: config.py:66 msgid "" "Determines whether or not the\n" " nick will be included in the output of last when it is part of a nested\n" " command" msgstr "" -#: plugin.py:81 +#: plugin.py:104 msgid "You've given me %s invalid commands within the last minute; I'm now ignoring you for %s." msgstr "" -#: plugin.py:93 +#: plugin.py:116 msgid "The %q plugin is loaded, but there is no command named %q in it. Try \"list %s\" to see the commands in the %q plugin." msgstr "" -#: plugin.py:119 +#: plugin.py:142 #, docstring msgid "" -"[--private] []\n" +"[--private] [--unloaded] []\n" "\n" " Lists the commands available in the given plugin. If no plugin is\n" " given, lists the public plugins available. If --private is given,\n" -" lists the private plugins.\n" +" lists the private plugins. If --unloaded is given, it will list\n" +" available plugins that are not loaded.\n" " " msgstr "" -#: plugin.py:144 +#: plugin.py:163 +msgid "--private and --unloaded are uncompatible options." +msgstr "" + +#: plugin.py:194 msgid "There are no private plugins." msgstr "" -#: plugin.py:146 +#: plugin.py:196 msgid "There are no public plugins." msgstr "" -#: plugin.py:153 +#: plugin.py:203 msgid "That plugin exists, but has no commands. This probably means that it has some configuration variables that can be changed in order to modify its behavior. Try \"config list supybot.plugins.%s\" to see what configuration variables it has." msgstr "" -#: plugin.py:164 +#: plugin.py:215 #, docstring msgid "" "\n" @@ -86,11 +99,11 @@ msgid "" " " msgstr "" -#: plugin.py:183 +#: plugin.py:234 msgid "No appropriate commands were found." msgstr "" -#: plugin.py:188 +#: plugin.py:239 #, docstring msgid "" "[] []\n" @@ -100,15 +113,15 @@ msgid "" " " msgstr "" -#: plugin.py:198 +#: plugin.py:249 msgid "That command exists in the %L plugins. Please specify exactly which plugin command you want help with." msgstr "" -#: plugin.py:205 +#: plugin.py:256 msgid "There is no command %q." msgstr "" -#: plugin.py:211 +#: plugin.py:262 #, docstring msgid "" "takes no arguments\n" @@ -117,23 +130,23 @@ msgid "" " " msgstr "" -#: plugin.py:225 +#: plugin.py:276 msgid "The newest versions available online are %s." msgstr "" -#: plugin.py:226 +#: plugin.py:277 msgid "%s (in %s)" msgstr "" -#: plugin.py:230 +#: plugin.py:281 msgid "I couldn't fetch the newest version from the Limnoria repository." msgstr "" -#: plugin.py:232 +#: plugin.py:283 msgid "The current (running) version of this Supybot is %s. %s" msgstr "" -#: plugin.py:239 +#: plugin.py:290 #, docstring msgid "" "takes no arguments\n" @@ -142,11 +155,11 @@ msgid "" " " msgstr "" -#: plugin.py:243 +#: plugin.py:294 msgid "My source is at https://github.com/ProgVal/Limnoria" msgstr "" -#: plugin.py:248 +#: plugin.py:299 #, docstring msgid "" "[]\n" @@ -158,31 +171,31 @@ msgid "" " " msgstr "" -#: plugin.py:262 +#: plugin.py:313 msgid "%s has no public mores." msgstr "" -#: plugin.py:265 +#: plugin.py:316 msgid "Sorry, I can't find any mores for %s" msgstr "" -#: plugin.py:272 +#: plugin.py:323 msgid "more message" msgstr "" -#: plugin.py:274 +#: plugin.py:325 msgid "more messages" msgstr "" -#: plugin.py:278 +#: plugin.py:329 msgid "You haven't asked me a command; perhaps you want to see someone else's more. To do so, call this command with that person's nick." msgstr "" -#: plugin.py:282 +#: plugin.py:333 msgid "That's all, there is no more." msgstr "" -#: plugin.py:292 +#: plugin.py:343 #, docstring msgid "" "[--{from,in,on,with,without,regexp} ] [--nolimit]\n" @@ -197,11 +210,15 @@ msgid "" " " msgstr "" -#: plugin.py:386 +#: plugin.py:445 +msgid "The regular expression timed out." +msgstr "" + +#: plugin.py:458 msgid "I couldn't find a message matching that criteria in my history of %s messages." msgstr "" -#: plugin.py:401 +#: plugin.py:473 #, docstring msgid "" " \n" @@ -211,23 +228,23 @@ msgid "" " " msgstr "" -#: plugin.py:409 +#: plugin.py:483 msgid "Dude, just give the command. No need for the tell." msgstr "" -#: plugin.py:414 +#: plugin.py:488 msgid "You just told me, why should I tell myself?" msgstr "" -#: plugin.py:419 +#: plugin.py:493 msgid "I haven't seen %s, I'll let you do the telling." msgstr "" -#: plugin.py:424 +#: plugin.py:498 msgid "%s wants me to tell you: %s" msgstr "" -#: plugin.py:431 +#: plugin.py:505 #, docstring msgid "" "takes no arguments\n" @@ -236,7 +253,25 @@ msgid "" " " msgstr "" -#: plugin.py:435 +#: plugin.py:509 msgid "pong" msgstr "" +#: plugin.py:513 +#, docstring +msgid "" +"[] [--match-case]\n" +"\n" +" Returns the nick of someone on the channel whose nick begins with the\n" +" given .\n" +" defaults to the current channel." +msgstr "" + +#: plugin.py:519 +msgid "I'm not even in %s." +msgstr "" + +#: plugin.py:531 +msgid "No such nick." +msgstr "" + diff --git a/plugins/Misc/plugin.py b/plugins/Misc/plugin.py index 2f20de0a0..8b8b47882 100644 --- a/plugins/Misc/plugin.py +++ b/plugins/Misc/plugin.py @@ -30,7 +30,9 @@ import re import os +import imp import sys +import json import time import supybot @@ -49,6 +51,23 @@ from supybot.utils.iter import ifilter from supybot.i18n import PluginInternationalization, internationalizeDocstring _ = PluginInternationalization('Misc') +def get_suffix(file): + for suffix in imp.get_suffixes(): + if file[-len(suffix[0]):] == suffix[0]: + return suffix + return None + +def getPluginsInDirectory(directory): + # get modules in a given directory + plugins = [] + for filename in os.listdir(directory): + pluginPath = os.path.join(directory, filename) + if os.path.isdir(pluginPath): + if all(os.path.isfile(os.path.join(pluginPath, x)) + for x in ['__init__.py', 'config.py', 'plugin.py']): + plugins.append(filename) + return plugins + class RegexpTimeout(Exception): pass @@ -90,6 +109,33 @@ class Misc(callbacks.Plugin): return # Now, for normal handling. channel = msg.args[0] + # Only bother with the invaildCommand flood handling if it's actually + # enabled + if conf.supybot.abuse.flood.command.invalid(): + # First, we check for invalidCommand floods. This is rightfully done + # here since this will be the last invalidCommand called, and thus it + # will only be called if this is *truly* an invalid command. + maximum = conf.supybot.abuse.flood.command.invalid.maximum() + banmasker = conf.supybot.protocols.irc.banmask.makeBanmask + self.invalidCommands.enqueue(msg) + if self.invalidCommands.len(msg) > maximum and \ + not ircdb.checkCapability(msg.prefix, 'owner'): + penalty = conf.supybot.abuse.flood.command.invalid.punishment() + banmask = banmasker(msg.prefix) + self.log.info('Ignoring %s for %s seconds due to an apparent ' + 'invalid command flood.', banmask, penalty) + if tokens and tokens[0] == 'Error:': + self.log.warning('Apparent error loop with another Supybot ' + 'observed. Consider ignoring this bot ' + 'permanently.') + ircdb.ignores.add(banmask, time.time() + penalty) + if conf.supybot.abuse.flood.command.invalid.notify(): + irc.reply('You\'ve given me %s invalid commands within ' + 'the last minute; I\'m now ignoring you for %s.' % + (maximum, + utils.timeElapsed(penalty, seconds=False))) + return + # Now, for normal handling. if conf.get(conf.supybot.reply.whenNotCommand, channel): if len(tokens) >= 2: cb = irc.getCallback(tokens[0]) @@ -121,34 +167,61 @@ class Misc(callbacks.Plugin): @internationalizeDocstring def list(self, irc, msg, args, optlist, cb): - """[--private] [] + """[--private] [--unloaded] [] Lists the commands available in the given plugin. If no plugin is given, lists the public plugins available. If --private is given, - lists the private plugins. + lists the private plugins. If --unloaded is given, it will list + available plugins that are not loaded. """ private = False + unloaded = False for (option, argument) in optlist: if option == 'private': private = True if not self.registryValue('listPrivatePlugins') and \ not ircdb.checkCapability(msg.prefix, 'owner'): irc.errorNoCapability('owner') + elif option == 'unloaded': + unloaded = True + if not self.registryValue('listUnloadedPlugins') and \ + not ircdb.checkCapability(msg.prefix, 'owner'): + irc.errorNoCapability('owner') + if unloaded and private: + irc.error(_('--private and --unloaded are uncompatible options.')) + return if not cb: - def isPublic(cb): - name = cb.name() - return conf.supybot.plugins.get(name).public() - names = [cb.name() for cb in irc.callbacks - if (private and not isPublic(cb)) or - (not private and isPublic(cb))] - names.sort() - if names: - irc.reply(format('%L', names)) + if unloaded: + # We were using the path of Misc + .. to detect the install + # directory. However, it fails if Misc is not in the + # installation directory for some reason, so we use a + # supybot module. + installedPluginsDirectory = os.path.join( + os.path.dirname(conf.__file__), 'plugins') + plugins = getPluginsInDirectory(installedPluginsDirectory) + for directory in conf.supybot.directories.plugins()[:]: + plugins.extend(getPluginsInDirectory(directory)) + # Remove loaded plugins: + loadedPlugins = [x.name() for x in irc.callbacks] + plugins = [x for x in plugins if x not in loadedPlugins] + + plugins.sort() + irc.reply(format('%L', plugins)) else: - if private: - irc.reply(_('There are no private plugins.')) + def isPublic(cb): + name = cb.name() + return conf.supybot.plugins.get(name).public() + names = [cb.name() for cb in irc.callbacks + if (private and not isPublic(cb)) or + (not private and isPublic(cb))] + names.sort() + if names: + irc.reply(format('%L', names)) else: - irc.reply(_('There are no public plugins.')) + if private: + irc.reply(_('There are no private plugins.')) + else: + irc.reply(_('There are no public plugins.')) else: commands = cb.listCommands() if commands: @@ -162,7 +235,8 @@ class Misc(callbacks.Plugin): 'Try "config list supybot.plugins.%s" to see ' 'what configuration variables it has.'), cb.name())) - list = wrap(list, [getopts({'private':''}), additional('plugin')]) + list = wrap(list, [getopts({'private':'', 'unloaded':''}), + additional('plugin')]) @internationalizeDocstring def apropos(self, irc, msg, args, s): @@ -218,15 +292,17 @@ class Misc(callbacks.Plugin): Returns the version of the current bot. """ try: - newestUrl = 'https://github.com/ProgVal/Limnoria/raw/%s/' + \ - 'src/version.py' + newestUrl = 'https://api.github.com/repos/ProgVal/Limnoria/' + \ + 'commits/%s' versions = {} for branch in ('master', 'testing'): - file = utils.web.getUrl(newestUrl % branch) - match = re.search(r"^version = '([^']+)'$", file, re.M) - if match is None: - continue - versions[branch] = match.group(1) + data = json.load(utils.web.getUrlFd(newestUrl % branch)) + version = data['commit']['committer']['date'] + # Strip the last ':': + version = ''.join(version.rsplit(':', 1)) + # Replace the last '-' by '+': + version = '+'.join(version.rsplit('-', 1)) + versions[branch] = version.encode('utf-8') newest = _('The newest versions available online are %s.') % \ ', '.join([_('%s (in %s)') % (y,x) for x,y in versions.items()]) @@ -429,6 +505,8 @@ class Misc(callbacks.Plugin): Tells the whatever is. Use nested commands to your benefit here. """ + if irc.nested: + irc.error('This command cannot be nested.', Raise=True) if target.lower() == 'me': target = msg.nick if ircutils.isChannel(target): @@ -448,8 +526,8 @@ class Misc(callbacks.Plugin): irc.action = False text = '* %s %s' % (irc.nick, text) s = _('%s wants me to tell you: %s') % (msg.nick, text) - irc.reply(s, to=target, private=True) irc.replySuccess() + irc.reply(s, to=target, private=True) tell = wrap(tell, ['something', 'text']) @internationalizeDocstring @@ -460,6 +538,30 @@ class Misc(callbacks.Plugin): """ irc.reply(_('pong'), prefixNick=False) + @internationalizeDocstring + def completenick(self, irc, msg, args, channel, beginning, optlist): + """[] [--match-case] + + Returns the nick of someone on the channel whose nick begins with the + given . + defaults to the current channel.""" + if channel not in irc.state.channels: + irc.error(_('I\'m not even in %s.') % channel, Raise=True) + if ('match-case', True) in optlist: + def match(nick): + return nick.startswith(beginning) + else: + beginning = beginning.lower() + def match(nick): + return nick.lower().startswith(beginning) + for nick in irc.state.channels[channel].users: + if match(nick): + irc.reply(nick) + return + irc.error(_('No such nick.')) + completenick = wrap(completenick, ['channel', 'something', + getopts({'match-case':''})]) + Class = Misc # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: diff --git a/plugins/Misc/test.py b/plugins/Misc/test.py index bf7948dbd..985f001a1 100644 --- a/plugins/Misc/test.py +++ b/plugins/Misc/test.py @@ -114,6 +114,12 @@ class MiscTestCase(ChannelPluginTestCase): self.assertRegexp('list', name) self.assertNotRegexp('list --private', name) + def testListUnloaded(self): + unloadedPlugin = 'Alias' + loadedPlugin = 'Anonymous' + self.assertRegexp('list --unloaded', 'Alias') + self.assertNotRegexp('list --unloaded', 'Anonymous') + def testListDoesNotIncludeNonCanonicalName(self): self.assertNotRegexp('list Owner', '_exec') @@ -142,6 +148,9 @@ class MiscTestCase(ChannelPluginTestCase): m = self.getMsg('tell me you love me') self.failUnless(m.args[0] == self.nick) + def testNoNestedTell(self): + self.assertRegexp('echo [tell %s foo]' % self.nick, 'nested') + def testTellDoesNotPropogateAction(self): m = self.getMsg('tell foo [action bar]') self.failIf(ircmsgs.isAction(m)) diff --git a/plugins/MoobotFactoids/locale/it.po b/plugins/MoobotFactoids/locale/it.po index 20b4a9e7a..829a9dae8 100644 --- a/plugins/MoobotFactoids/locale/it.po +++ b/plugins/MoobotFactoids/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-17 16:39+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/MoobotFactoids/messages.pot b/plugins/MoobotFactoids/messages.pot index d3f78b91f..88344976b 100644 --- a/plugins/MoobotFactoids/messages.pot +++ b/plugins/MoobotFactoids/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/plugins/Network/README.txt b/plugins/Network/README.txt index d60b47a97..539a607a0 100644 --- a/plugins/Network/README.txt +++ b/plugins/Network/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +Allows connecting, reconnecting, display the bot's latency between the server and other useful network-related commands. \ No newline at end of file diff --git a/plugins/Network/locale/de.po b/plugins/Network/locale/de.po new file mode 100644 index 000000000..8017ad7a3 --- /dev/null +++ b/plugins/Network/locale/de.po @@ -0,0 +1,180 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-10-29 20:20+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: plugin.py:57 +msgid "" +"[--ssl] [] []\n" +"\n" +" Connects to another network (which will be represented by the name\n" +" provided in ) at . If port is not provided, it\n" +" defaults to 6667, the default port for IRC. If password is\n" +" provided, it will be sent to the server in a PASS command. If --ssl is\n" +" provided, an SSL connection will be attempted.\n" +" " +msgstr "" +"[--ssl] [] []\n" +"\n" +"Verbindet zu einem anderen Netzwerk, welches durch den Namen in auf festgelegt wird. Falls Port nicht angegeben wird, wird standardgemäß 6667 verwendet, der Standardport für IRC. Falls Passwort angegeben wird, wird es an den Server per PASS Befehl gesendet. Falls --ssl angegeben wird, wird versucht eine SSL Verbindung aufzubauen." + +#: plugin.py:67 +msgid "I'm already connected to %s." +msgstr "Ich bin schon verbunden mit %s." + +#: plugin.py:87 +msgid "A server must be provided if the network is not already registered." +msgstr "Es muss ein Server angegeben werden, falls das netwerk noch net registriert ist." + +#: plugin.py:95 +msgid "Connection to %s initiated." +msgstr "Verbindung zu %s wurde eingeleitet." + +#: plugin.py:102 +msgid "" +"[] []\n" +"\n" +" Disconnects from the network represented by the network .\n" +" If is given, quits the network with the given quit\n" +" message. is only necessary if the network is different\n" +" from the network the command is sent on.\n" +" " +msgstr "[] []" + +#: plugin.py:114 +msgid "Disconnection to %s initiated." +msgstr "Verbindungstrennung zu %s wurde eingeleitet." + +#: plugin.py:120 +msgid "" +"[] []\n" +"\n" +" Disconnects and then reconnects to . If no network is given,\n" +" disconnects and then reconnects to the network the command was given\n" +" on. If no quit message is given, uses the configured one\n" +" (supybot.plugins.Owner.quitMsg) or the nick of the person giving the\n" +" command.\n" +" " +msgstr "" +"[] []\n" +"\n" +"Trennt die Verbindung von und baut diese neu auf, falls kein Netzwerk angegeben wird, wird die Verbindung des Netzwerks getrennt und wieder aufgebaut, auf dem der Befehl gegeben wurde. Falls keine Beendennachricht angegeben wird, wird die konfigurierte (supybot.plugins.Owner.quitMsg) oder der Nick des Nutzer, der den Befehl gegeben hat, benutzt." + +#: plugin.py:137 +msgid "" +" [ ...]\n" +"\n" +" Gives the bot (with its associated s) on .\n" +" " +msgstr "" +" [ ...]\n" +"\n" +"Gibt dem Bot den (mit den zugehörigen en) auf dem ." + +#: plugin.py:210 +msgid "is an op on %L" +msgstr "ist ein Operator in %L" + +#: plugin.py:212 +msgid "is a halfop on %L" +msgstr "ist ein Halboperator in %L" + +#: plugin.py:214 +msgid "is voiced on %L" +msgstr "hat Sprechrechte in %L" + +#: plugin.py:217 +msgid "is also on %L" +msgstr "ist auch in %L" + +#: plugin.py:219 +msgid "is on %L" +msgstr "ist in %l" + +#: plugin.py:221 +msgid "isn't on any non-secret channels" +msgstr "ist nicht in irgendwelchen Kanälen die nicht als geheim eingestuft sind." + +#: plugin.py:228 +#: plugin.py:229 +#: plugin.py:233 +msgid "" +msgstr "" + +#: plugin.py:240 +msgid " identified" +msgstr " identifiziert" + +#: plugin.py:245 +msgid "%s (%s) has been%s on server %s since %s (idle for %s) and %s.%s" +msgstr "%s (%s) ist%s auf dem Server % seit %s (im Leerlauf für %s) und %s.%s" + +#: plugin.py:258 +msgid "There is no %s on %s." +msgstr "Kein %s auf %s." + +#: plugin.py:264 +msgid "" +"[] \n" +"\n" +" Returns the WHOIS response gives for . is\n" +" only necessary if the network is different than the network the command\n" +" is sent on.\n" +" " +msgstr "" +"[] \n" +"\n" +"Gibt die WHOIS Antwort aus, die das für gibt. wird nur benötigt wenn der Befehl nicht im Netzwerk gesendet wird auf dem der Befehl ausgeführt werden soll." + +#: plugin.py:280 +msgid "" +"takes no arguments\n" +"\n" +" Returns the networks to which the bot is currently connected.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt an zu welchen Netzwerken der Bot momentan verbunden ist." + +#: plugin.py:293 +msgid "%.2f seconds." +msgstr "%.2f Sekunden." + +#: plugin.py:297 +msgid "" +"[]\n" +"\n" +" Returns the current latency to . is only necessary\n" +" if the message isn't sent on the network to which this command is to\n" +" apply.\n" +" " +msgstr "" +"[]\n" +"\n" +"Gibt die momenten Latenz zu an. wird nur benötigt wenn der Befehl nicht im Netzwerk gesendet wird auf dem der Befehl ausgeführt werden soll." + +#: plugin.py:303 +msgid "Latency check (from %s)." +msgstr "Latenzprüfung (von %s)." + +#: plugin.py:311 +msgid "" +"[]\n" +"\n" +" Returns the current network driver for . is only\n" +" necessary if the message isn't sent on the network to which this\n" +" command is to apply.\n" +" " +msgstr "" +"[]\n" +"\n" +"Gibt den momentanen Netzwerktreiber für an. wird nur benötigt wenn der Befehl nicht im Netzwerk gesendet wird auf dem der Befehl ausgeführt werden soll." + diff --git a/plugins/Network/locale/it.po b/plugins/Network/locale/it.po index b6281a336..9e2fd0c69 100644 --- a/plugins/Network/locale/it.po +++ b/plugins/Network/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-06 09:59+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Network/plugin.py b/plugins/Network/plugin.py index 41bf0c646..39e743de0 100644 --- a/plugins/Network/plugin.py +++ b/plugins/Network/plugin.py @@ -200,11 +200,11 @@ class Network(callbacks.Plugin): if not modes: normal.append(channel) elif utils.iter.any(lambda c: c in modes,('@', '&', '~', '!')): - ops.append(channel[1:]) + ops.append(channel) elif utils.iter.any(lambda c: c in modes, ('%',)): - halfops.append(channel[1:]) + halfops.append(channel) elif utils.iter.any(lambda c: c in modes, ('+',)): - voices.append(channel[1:]) + voices.append(channel) L = [] if ops: L.append(format(_('is an op on %L'), ops)) diff --git a/plugins/News/locale/it.po b/plugins/News/locale/it.po index 0f932f0c7..03c31cfcb 100644 --- a/plugins/News/locale/it.po +++ b/plugins/News/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-19 12:51+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/NickCapture/README.txt b/plugins/NickCapture/README.txt index d60b47a97..5388aad1a 100644 --- a/plugins/NickCapture/README.txt +++ b/plugins/NickCapture/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This allows the bot to regain access to it's configured nick. diff --git a/plugins/NickCapture/locale/de.po b/plugins/NickCapture/locale/de.po new file mode 100644 index 000000000..2e4877adc --- /dev/null +++ b/plugins/NickCapture/locale/de.po @@ -0,0 +1,37 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-10-31 13:02+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" + +#: config.py:47 +msgid "" +"Determines whether the bot will check\n" +" occasionally if its preferred nick is in use via the ISON command." +msgstr "Legt fest ob der Bot bei Bedarf, mit dem ISON Befehl, checken soll ob sein geschwünschter Nick in benutzung ist." + +#: config.py:50 +msgid "" +"Determines how often (in seconds) the bot\n" +" will check whether its nick ISON." +msgstr "Legt fest wie oft (in Sekunden) der Bot checkt ob der Nick verfügbar ist." + +#: plugin.py:40 +msgid "" +"This plugin constantly tries to take whatever nick is configured as\n" +" supybot.nick. Just make sure that's set appropriately, and thus plugin\n" +" will do the rest." +msgstr "Dieses Plugin versucht dauernd den Nick der in supybot.nick konfiguriert ist zu bekommen. Stelle nur sicher das dieser richtig gesetzt wurde und das Plugin macht den Rest." + +#: plugin.py:89 +msgid "This is returned by the ISON command." +msgstr "Dies wird vom ISON Befehl zurückgegeben." + diff --git a/plugins/NickCapture/locale/it.po b/plugins/NickCapture/locale/it.po index 66ccee652..5433559c1 100644 --- a/plugins/NickCapture/locale/it.po +++ b/plugins/NickCapture/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-08-10 02:13+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/NickCapture/messages.pot b/plugins/NickCapture/messages.pot index dbbdead07..a95138fab 100644 --- a/plugins/NickCapture/messages.pot +++ b/plugins/NickCapture/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -35,7 +35,7 @@ msgid "" " will do the rest." msgstr "" -#: plugin.py:89 +#: plugin.py:93 #, docstring msgid "This is returned by the ISON command." msgstr "" diff --git a/plugins/NickCapture/plugin.py b/plugins/NickCapture/plugin.py index 9d4c1db5d..17b312204 100644 --- a/plugins/NickCapture/plugin.py +++ b/plugins/NickCapture/plugin.py @@ -46,12 +46,16 @@ class NickCapture(callbacks.Plugin): self.__parent.__init__(irc) self.lastIson = 0 - def _getNick(self): - return conf.supybot.nick() + def _getNick(self, network): + network_nick = conf.supybot.networks.get(network).nick() + if network_nick == '': + return conf.supybot.nick() + else: + return network_nick def __call__(self, irc, msg): if irc.afterConnect: - nick = self._getNick() + nick = self._getNick(irc.network) if nick and not ircutils.strEqual(nick, irc.nick): # We used to check this, but nicksToHostmasks is never cleared # except on reconnects, which can cause trouble. @@ -76,19 +80,19 @@ class NickCapture(callbacks.Plugin): irc.sendMsg(ircmsgs.nick(nick)) def doQuit(self, irc, msg): - nick = self._getNick() + nick = self._getNick(irc.network) if ircutils.strEqual(msg.nick, nick): self._sendNick(irc, nick) def doNick(self, irc, msg): - nick = self._getNick() + nick = self._getNick(irc.network) if ircutils.strEqual(msg.nick, nick): self._sendNick(irc, nick) def do303(self, irc, msg): """This is returned by the ISON command.""" if not msg.args[1]: - nick = self._getNick() + nick = self._getNick(irc.network) if nick: self._sendNick(irc, nick) NickCapture = internationalizeDocstring(NickCapture) diff --git a/plugins/Nickometer/README.txt b/plugins/Nickometer/README.txt index d60b47a97..7f0636016 100644 --- a/plugins/Nickometer/README.txt +++ b/plugins/Nickometer/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +Will tell you how lame a nick is by the command '@nickometer [nick]'. \ No newline at end of file diff --git a/plugins/Nickometer/locale/it.po b/plugins/Nickometer/locale/it.po index b41467833..a5c07a6d1 100644 --- a/plugins/Nickometer/locale/it.po +++ b/plugins/Nickometer/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-12 17:05+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Note/README.txt b/plugins/Note/README.txt index d60b47a97..85131f832 100644 --- a/plugins/Note/README.txt +++ b/plugins/Note/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +Allows you to send notes to other users. \ No newline at end of file diff --git a/plugins/Note/locale/it.po b/plugins/Note/locale/it.po index 65058f6fd..8aee3c7fd 100644 --- a/plugins/Note/locale/it.po +++ b/plugins/Note/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-15 13:13+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Note/messages.pot b/plugins/Note/messages.pot index 6e7837a06..1dceaa30b 100644 --- a/plugins/Note/messages.pot +++ b/plugins/Note/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,7 +15,7 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: plugin.py:181 +#: plugin.py:182 #, docstring msgid "" ",[,[...]] \n" @@ -25,7 +25,7 @@ msgid "" " " msgstr "" -#: plugin.py:197 +#: plugin.py:198 #, docstring msgid "" " \n" @@ -34,7 +34,7 @@ msgid "" " " msgstr "" -#: plugin.py:221 +#: plugin.py:222 #, docstring msgid "" "\n" @@ -44,7 +44,7 @@ msgid "" " " msgstr "" -#: plugin.py:253 +#: plugin.py:254 #, docstring msgid "" "\n" @@ -54,7 +54,7 @@ msgid "" " " msgstr "" -#: plugin.py:283 +#: plugin.py:284 #, docstring msgid "" "[--{regexp} ] [--sent] []\n" @@ -65,7 +65,7 @@ msgid "" " " msgstr "" -#: plugin.py:322 +#: plugin.py:324 #, docstring msgid "" "[--{old,sent}] [--{from,to} ]\n" @@ -77,7 +77,7 @@ msgid "" " " msgstr "" -#: plugin.py:363 +#: plugin.py:365 #, docstring msgid "" "takes no arguments\n" diff --git a/plugins/Owner/locale/de.po b/plugins/Owner/locale/de.po new file mode 100644 index 000000000..be42dfda9 --- /dev/null +++ b/plugins/Owner/locale/de.po @@ -0,0 +1,216 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:38+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: de\n" + +#: plugin.py:273 +msgid "" +"\n" +"\n" +" Logs to the global Supybot log at critical priority. Useful for\n" +" marking logfiles for later searching.\n" +" " +msgstr "" +"\n" +"\n" +"Schreibt in die globale Supybot Logdatei mit kritischer Priorität. Nützlich um Logdateien zu markieren um sie später zu durchsuchen." + +#: plugin.py:283 +msgid "" +"\n" +"\n" +" Sends to all channels the bot is currently on and not\n" +" lobotomized in.\n" +" " +msgstr "" +"\n" +"\n" +"Sendet an alle Kanäle in denen der Bot momentan ist und nicht hirnamputiert ist." + +#: plugin.py:298 +msgid "" +"[--remove] []\n" +"\n" +" Sets the default plugin for to . If --remove is\n" +" given, removes the current default plugin for . If no plugin\n" +" is given, returns the current default plugin set for . See\n" +" also, supybot.commands.defaultPlugins.importantPlugins.\n" +" " +msgstr "" +"[--remove] []\n" +"\n" +"Setzt das Standardplugin für auf . Falls --remove angegeben wird, wird das momentane Standardplugin für entfernt. Falls kein Plugin angegeben wird, wird das momentane Standardplugin für ausgegeben. Schau auch nach supybot.commands.defaultPlugins.importantPlugins. " + +#: plugin.py:336 +msgid "" +"\n" +"\n" +" Sends the raw string given to the server.\n" +" " +msgstr "" +"\n" +"\n" +"Sendet die Zeichenketten zum angegeben Server." + +#: plugin.py:350 +msgid "" +"[]\n" +"\n" +" Exits the bot with the QUIT message . If is not given,\n" +" the default quit message (supybot.plugins.Owner.quitMsg) will be used.\n" +" If there is no default quitMsg set, your nick will be used.\n" +" " +msgstr "" +"[]\n" +"\n" +"Beendet den Bot mit der Nachricht . Falls nicht angegeben wird, wird die Standard Endnachricht (supybot.plugins.Owner.quitMsg) benutzt. Wenn es keine standard quitMsg gesetzt ist, wird dein Nickname benutzt." + +#: plugin.py:366 +msgid "" +"takes no arguments\n" +"\n" +" Runs all the periodic flushers in world.flushers. This includes\n" +" flushing all logs and all configuration changes to disk.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Führt alle periodischen Flusher in world.flushers aus. Das beinhaltet alle Log und Konfigurationsänderung auf die Festplatte zu schreiben." + +#: plugin.py:376 +msgid "" +"[]\n" +"\n" +" Runs the standard upkeep stuff (flushes and gc.collects()). If given\n" +" a level, runs that level of upkeep (currently, the only supported\n" +" level is \"high\", which causes the bot to flush a lot of caches as well\n" +" as do normal upkeep stuff).\n" +" " +msgstr "" +"[]\n" +"\n" +"Führt standard Instandhaltungen durch (flushes und gc.collects()). Falls eine Stufe angegeben wird, wird diese Stufe der Instandhaltungausgeführt (momentan ist die einzig unsterstütze Stufe \"high\", welche den Bot dazu veranlässt viele Caches aufzuräumen und normale Instandhaltung zu bestreiben)." + +#: plugin.py:415 +msgid "" +"[--deprecated] \n" +"\n" +" Loads the plugin from any of the directories in\n" +" conf.supybot.directories.plugins; usually this includes the main\n" +" installed directory and 'plugins' in the current directory.\n" +" --deprecated is necessary if you wish to load deprecated plugins.\n" +" " +msgstr "" +"[--deprecated] \n" +"\n" +"Läd das Plugin von irgendeinem Verzeichnis das in conf.supybot.directories.plugins ist; normalerweise enthält diese das Hauptinstallationsverzeichnis und 'plugins' im momentanen Verzeichnis. --deprecated ist nötig falls du veraltete Plugins laden möchtest." + +#: plugin.py:450 +msgid "" +"\n" +"\n" +" Unloads and subsequently reloads the plugin by name; use the 'list'\n" +" command to see a list of the currently loaded plugins.\n" +" " +msgstr "" +"\n" +"\n" +"Entläd und läd das das Plugin neu; benutze den Befehl 'list' um dir die momentan geladenen Plugins anzuzeigen zu lassen." + +#: plugin.py:479 +#, fuzzy +msgid "" +"\n" +"\n" +" Unloads the callback by name; use the 'list' command to see a list\n" +" of the currently loaded plugins. Obviously, the Owner plugin can't\n" +" be unloaded.\n" +" " +msgstr "" +"\n" +"\n" +"Entläd den Callback nach Name; benutze den 'list' Befehl um zu sehen welche Callbacks momentan geladen sind. Es ist wohl klar, dass das Owner Plugin nicht entladen werden kann." + +#: plugin.py:503 +msgid "" +"{add|remove} \n" +"\n" +" Adds or removes (according to the first argument) from the\n" +" default capabilities given to users (the configuration variable\n" +" supybot.capabilities stores these).\n" +" " +msgstr "" +"{add|remove} \n" +"\n" +"Hinzufügen oder entfernen (abhängig vom ersten Argument) der von den Standardfähigkeiten die den Benutzern gegeben werden (die Konfigurationsvariable supybot.capabilities speichert diese)." + +#: plugin.py:528 +msgid "" +"[] \n" +"\n" +" Disables the command for all users (including the owners).\n" +" If is given, only disables the from . If\n" +" you want to disable a command for most users but not for yourself, set\n" +" a default capability of -plugin.command or -command (if you want to\n" +" disable the command in all plugins).\n" +" " +msgstr "" +"[] \n" +"\n" +"Deaktiviert den Befehl für alle Nutzer (auch den Besitzer). Falls von deaktiviert. Dieser Befehl ist das gegenteil von disable.Falls du den Befehl nur für die meisten Nutzer deaktiveren willst setze eine standard Fähigkeit -plugin.befehl oder -befehl (falls du den Befehl von allen Plugins deaktivieren willst)." + +#: plugin.py:555 +msgid "" +"[] \n" +"\n" +" Enables the command for all users. If \n" +" if given, only enables the from . This command is\n" +" the inverse of disable.\n" +" " +msgstr "" +"[] \n" +"\n" +"Aktiviert den Befehl für alle Nutzer. Falls von aktiviert. Dieser Befehl ist das gegenteil von disable." + +#: plugin.py:574 +msgid "" +" \n" +"\n" +" Renames in to the .\n" +" " +msgstr "" +" \n" +"\n" +"Benennt von in um." + +#: plugin.py:591 +msgid "" +"\n" +"\n" +" Removes all renames in . The plugin will be reloaded after\n" +" this command is run.\n" +" " +msgstr "" +"\n" +"\n" +"Entfernt alle Namensänderungen in . Das Plugin wird neu geladen nach diesem Befehl." + +#: plugin.py:604 +msgid "" +"takes no argument\n" +"\n" +" Reloads the locale of the bot." +msgstr "" +"hat kein Argument\n" +"\n" +"Läd die Lokalisations des Bots neu." + diff --git a/plugins/Owner/locale/fi.po b/plugins/Owner/locale/fi.po index 63fb28011..5f9afb404 100755 --- a/plugins/Owner/locale/fi.po +++ b/plugins/Owner/locale/fi.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-08-10 11:27+CEST\n" -"PO-Revision-Date: 2011-08-10 14:37+0200\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-03-15 08:28+0200\n" "Last-Translator: Mika Suomalainen \n" "Language-Team: \n" "Language: \n" @@ -109,7 +109,7 @@ msgid "" "\n" "\n" " Unloads the callback by name; use the 'list' command to see a list\n" -" of the currently loaded callbacks. Obviously, the Owner plugin can't\n" +" of the currently loaded plugins. Obviously, the Owner plugin can't\n" " be unloaded.\n" " " msgstr "" diff --git a/plugins/Owner/locale/fr.po b/plugins/Owner/locale/fr.po index ea6f5c154..bd429a2f7 100644 --- a/plugins/Owner/locale/fr.po +++ b/plugins/Owner/locale/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-08-10 11:27+CEST\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: \n" "Last-Translator: Valentin Lorentz \n" "Language-Team: Supybot-fr \n" @@ -132,13 +132,13 @@ msgid "" "\n" "\n" " Unloads the callback by name; use the 'list' command to see a list\n" -" of the currently loaded callbacks. Obviously, the Owner plugin can't\n" +" of the currently loaded plugins. Obviously, the Owner plugin can't\n" " be unloaded.\n" " " msgstr "" "\n" "\n" -"Décharger le ; utilisez la commande 'list' pour lister les plugins actuellement chargés. Évidemment, le plugin Owner ne peut être déchargé." +"Décharge le ; utilisez la commande 'list' pour lister les plugins actuellement chargés. Évidemment, le plugin Owner ne peut être déchargé." #: plugin.py:503 msgid "" diff --git a/plugins/Owner/locale/hu.po b/plugins/Owner/locale/hu.po index 8f7dc5b4f..e0673a586 100644 --- a/plugins/Owner/locale/hu.po +++ b/plugins/Owner/locale/hu.po @@ -5,9 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: Limnoria Owner\n" -"POT-Creation-Date: 2011-08-10 11:27+CEST\n" -"PO-Revision-Date: 2011-08-19 16:19+0200\n" -"Last-Translator: nyuszika7h \n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:13+0200\n" +"Last-Translator: Mika Suomalainen \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" @@ -129,11 +129,12 @@ msgstr "" "Kirakja és aztán újratölti a megadott bővítményt név szerint; használd a 'list' parancsot, hogy lásd a jelenleg betöltött bővítményeket." #: plugin.py:479 +#, fuzzy msgid "" "\n" "\n" " Unloads the callback by name; use the 'list' command to see a list\n" -" of the currently loaded callbacks. Obviously, the Owner plugin can't\n" +" of the currently loaded plugins. Obviously, the Owner plugin can't\n" " be unloaded.\n" " " msgstr "" diff --git a/plugins/Owner/locale/it.po b/plugins/Owner/locale/it.po index 32868920f..26c38e28c 100644 --- a/plugins/Owner/locale/it.po +++ b/plugins/Owner/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-07-10 12:11+0200\n" +"PO-Revision-Date: 2012-03-15 23:59+0100\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -159,7 +159,7 @@ msgid "" "\n" "\n" " Unloads the callback by name; use the 'list' command to see a list\n" -" of the currently loaded callbacks. Obviously, the Owner plugin can't\n" +" of the currently loaded plugins. Obviously, the Owner plugin can't\n" " be unloaded.\n" " " msgstr "" diff --git a/plugins/Owner/messages.pot b/plugins/Owner/messages.pot index 0167928e8..fefcfd010 100644 --- a/plugins/Owner/messages.pot +++ b/plugins/Owner/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-08-10 11:27+CEST\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -117,7 +117,7 @@ msgid "" "\n" "\n" " Unloads the callback by name; use the 'list' command to see a list\n" -" of the currently loaded callbacks. Obviously, the Owner plugin can't\n" +" of the currently loaded plugins. Obviously, the Owner plugin can't\n" " be unloaded.\n" " " msgstr "" diff --git a/plugins/Owner/plugin.py b/plugins/Owner/plugin.py index ad47ee043..6b31294f3 100644 --- a/plugins/Owner/plugin.py +++ b/plugins/Owner/plugin.py @@ -479,7 +479,7 @@ class Owner(callbacks.Plugin): """ Unloads the callback by name; use the 'list' command to see a list - of the currently loaded callbacks. Obviously, the Owner plugin can't + of the currently loaded plugins. Obviously, the Owner plugin can't be unloaded. """ if ircutils.strEqual(name, self.name()): diff --git a/plugins/Plugin/README.txt b/plugins/Plugin/README.txt index d60b47a97..4b715f86e 100644 --- a/plugins/Plugin/README.txt +++ b/plugins/Plugin/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to see the plugins, which plugin a command belongs to, you can find out who the author of the command is and who contributed to it. \ No newline at end of file diff --git a/plugins/Plugin/locale/de.po b/plugins/Plugin/locale/de.po new file mode 100644 index 000000000..f5ac76d4f --- /dev/null +++ b/plugins/Plugin/locale/de.po @@ -0,0 +1,241 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-11-01 20:55+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: plugin.py:42 +msgid "" +"This plugin exists to help users manage their plugins. Use 'plugin\n" +" list' to list the loaded plugins; use 'plugin help' to get the description\n" +" of a plugin; use the 'plugin' command itself to determine what plugin a\n" +" command exists in." +msgstr "Dieses Plugin gibt es um Nutzern zu helfen ihre Plugins zu verwalten. Benutze 'plugin list' um alle geladenen Plugins aufzulisten; benutze 'plugin help' um eine Beschreibung des Plugins zu bekommen; benutze 'plugin' selbst um herauszufinden in welchem Plugin ein Befehl existiert." + +#: plugin.py:48 +msgid "" +"\n" +"\n" +" Returns a useful description of how to use , if the plugin has\n" +" one.\n" +" " +msgstr "" +"\n" +"\n" +"Gibt eine nützliche Beschreibung aus wie man das benutzt, falls das Plugin eine hat" + +#: plugin.py:57 +msgid "That plugin is loaded, but has no plugin help." +msgstr "Das Plugin ist geladen, hat aber keine Hilfe." + +#: plugin.py:62 +msgid "" +"takes no arguments\n" +"\n" +" Returns a list of the currently loaded plugins.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt eine liste aller geladenen Plugins aus." + +#: plugin.py:73 +msgid "" +"\n" +"\n" +" Returns the name of the plugin that would be used to call .\n" +" \n" +" If it is not uniquely determined, returns list of all plugins that\n" +" contain .\n" +" " +msgstr "" +"\n" +"\n" +"Gibt den Namen des Plugins aus das benutzt wird um aufzurufen. Wenn dieser nicht einzigartig ist, wird eine Liste aller Plugins ausgegeben die über den verfügen." + +#: plugin.py:91 +msgid "plugins" +msgstr "Plugins" + +#: plugin.py:93 +msgid "plugin" +msgstr "Plugin" + +#: plugin.py:94 +msgid "The %q command is available in the %L %s." +msgstr "Der %q Befehl ist im %L %s verfügbar." + +#: plugin.py:97 +msgid "There is no command %q." +msgstr "Es gibt keinen Befehl %q." + +#: plugin.py:113 +msgid "" +"\n" +"\n" +" Returns the names of all plugins that contain .\n" +" " +msgstr "" +"\n" +"\n" +"Gibt die Namen aller Plugins aus die beinhalten." + +#: plugin.py:135 +msgid "" +"\n" +"\n" +" Returns the author of . This is the person you should talk to\n" +" if you have ideas, suggestions, or other comments about a given plugin.\n" +" " +msgstr "" +"\n" +"\n" +"Gibt den Autor von aus. Das ist die Person mit der du kontakt aufnehmen sollte falls du Ideen, Vorschläge oder andere Kommentare für das Plugin hast." + +#: plugin.py:141 +msgid "That plugin does not seem to be loaded." +msgstr "Das Plugin ist wohl nicht geladen." + +#: plugin.py:147 +msgid "That plugin doesn't have an author that claims it." +msgstr "Kein Autor hat das Plugin beansprucht." + +#: plugin.py:152 +msgid "" +" []\n" +"\n" +" Replies with a list of people who made contributions to a given plugin.\n" +" If is specified, that person's specific contributions will\n" +" be listed. Note: The is the part inside of the parentheses\n" +" in the people listing.\n" +" " +msgstr "" +" []\n" +"\n" +"Antwortet mit einer Liste von Personen die zum angegeben Plugin beigetragen haben.Falls angegeben wird, werden die personenspezifischen Beitröge gelistet. Notiz: Der ist der eingeklammerte Bereich in der Personenliste." + +#: plugin.py:160 +msgid "" +"\n" +" Take an Authors object, and return only the name and nick values\n" +" in the format 'First Last (nick)'.\n" +" " +msgstr "" +"\n" +" Nimmt ein Autoren Objekt und gibt nur die Namens und Nick Werte im format 'Vorname Nachname (Nick)' aus." + +#: plugin.py:166 +msgid "" +"\n" +" Take a list of long names and turn it into :\n" +" shortname[, shortname and shortname].\n" +" " +msgstr "" +"\n" +"Nimmt eine Liste von langen Namen und macht daraus: Kurzname[, Kurzname und Kurzname]." + +#: plugin.py:173 +msgid "" +"\n" +" Sort the list of 'long names' based on the number of contributions\n" +" associated with each.\n" +" " +msgstr "" +"\n" +"Sortiert die Liste von 'langen Namen' nach der Nummer der Beiträge, mit denen sie in Verbindung gebracht werden." + +#: plugin.py:183 +msgid "" +"\n" +" Build the list of author + contributors (if any) for the requested\n" +" plugin.\n" +" " +msgstr "" +"\n" +"Erstellt eine Liste der Autoren + Mitwirkenden (falls es welche gibt) des abgefragten Plugins." + +#: plugin.py:187 +msgid "The %s plugin" +msgstr "Das %s Plugin" + +#: plugin.py:188 +msgid "has not been claimed by an author" +msgstr "wurde von keinem Autor beansprucht." + +#: plugin.py:189 +msgid "and" +msgstr "und" + +#: plugin.py:190 +msgid "has no contributors listed." +msgstr "hat keine Mitwirkenden gelistet." + +#: plugin.py:195 +msgid "was written by %s" +msgstr "wurde geschrieben von %s" + +#: plugin.py:206 +msgid "%s %h contributed to it." +msgstr "%s %h hat dazu beigesteuert." + +#: plugin.py:211 +msgid "has no additional contributors listed." +msgstr "hat keine zusätzliche Mitwirkende." + +#: plugin.py:213 +msgid "but" +msgstr "aber" + +#: plugin.py:216 +msgid "" +"\n" +" Build the list of contributions (if any) for the requested person\n" +" for the requested plugin\n" +" " +msgstr "" +"\n" +"Erstelle eine Liste von Beiträgen (falls es welche gibt) die von der erfragten Person für das erfragte Plugin gemacht wurden." + +#: plugin.py:230 +msgid "The nick specified (%s) is not a registered contributor." +msgstr "Der gegebene Nick (%s) hat keinen registrierten Mitwirkenden." + +#: plugin.py:236 +msgid "The %s plugin does not have '%s' listed as a contributor." +msgstr "Das Plugin %s hat keinen '%s' als Mitwirkenden aufgeführt." + +#: plugin.py:244 +msgid "command" +msgstr "Befehl" + +#: plugin.py:247 +msgid "the %L %s" +msgstr "das %L %s" + +#: plugin.py:249 +msgid "the %L" +msgstr "das %L" + +#: plugin.py:252 +msgid "%s wrote the %s plugin and also contributed %L." +msgstr "%s hat das Plugin %s geschrieben und auch %L beigesteuert." + +#: plugin.py:255 +msgid "%s contributed %L to the %s plugin." +msgstr "%s hat %L zum %s Plugin beigesteuert." + +#: plugin.py:258 +msgid "%s wrote the %s plugin" +msgstr "%s hat das %s Plugin geschrieben" + +#: plugin.py:261 +msgid "%s has no listed contributions for the %s plugin." +msgstr "%s hat keine gelisteten Beiträge für das %s Plugin." + diff --git a/plugins/Plugin/locale/it.po b/plugins/Plugin/locale/it.po index 41acce499..e3707ce14 100644 --- a/plugins/Plugin/locale/it.po +++ b/plugins/Plugin/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-10 11:43+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Plugin/messages.pot b/plugins/Plugin/messages.pot index 6aa2d618f..29850541f 100644 --- a/plugins/Plugin/messages.pot +++ b/plugins/Plugin/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -84,7 +84,7 @@ msgid "" " " msgstr "" -#: plugin.py:135 +#: plugin.py:134 #, docstring msgid "" "\n" @@ -94,15 +94,15 @@ msgid "" " " msgstr "" -#: plugin.py:141 +#: plugin.py:140 msgid "That plugin does not seem to be loaded." msgstr "" -#: plugin.py:147 +#: plugin.py:146 msgid "That plugin doesn't have an author that claims it." msgstr "" -#: plugin.py:152 +#: plugin.py:151 #, docstring msgid "" " []\n" @@ -114,7 +114,7 @@ msgid "" " " msgstr "" -#: plugin.py:160 +#: plugin.py:159 #, docstring msgid "" "\n" @@ -123,7 +123,7 @@ msgid "" " " msgstr "" -#: plugin.py:166 +#: plugin.py:165 #, docstring msgid "" "\n" @@ -132,7 +132,7 @@ msgid "" " " msgstr "" -#: plugin.py:173 +#: plugin.py:172 #, docstring msgid "" "\n" @@ -141,7 +141,7 @@ msgid "" " " msgstr "" -#: plugin.py:183 +#: plugin.py:182 #, docstring msgid "" "\n" @@ -150,39 +150,39 @@ msgid "" " " msgstr "" -#: plugin.py:187 +#: plugin.py:186 msgid "The %s plugin" msgstr "" -#: plugin.py:188 +#: plugin.py:187 msgid "has not been claimed by an author" msgstr "" -#: plugin.py:189 +#: plugin.py:188 msgid "and" msgstr "" -#: plugin.py:190 +#: plugin.py:189 msgid "has no contributors listed." msgstr "" -#: plugin.py:195 +#: plugin.py:194 msgid "was written by %s" msgstr "" -#: plugin.py:206 +#: plugin.py:205 msgid "%s %h contributed to it." msgstr "" -#: plugin.py:211 +#: plugin.py:210 msgid "has no additional contributors listed." msgstr "" -#: plugin.py:213 +#: plugin.py:212 msgid "but" msgstr "" -#: plugin.py:216 +#: plugin.py:215 #, docstring msgid "" "\n" @@ -191,39 +191,39 @@ msgid "" " " msgstr "" -#: plugin.py:230 +#: plugin.py:229 msgid "The nick specified (%s) is not a registered contributor." msgstr "" -#: plugin.py:236 +#: plugin.py:235 msgid "The %s plugin does not have '%s' listed as a contributor." msgstr "" -#: plugin.py:244 +#: plugin.py:243 msgid "command" msgstr "" -#: plugin.py:247 +#: plugin.py:246 msgid "the %L %s" msgstr "" -#: plugin.py:249 +#: plugin.py:248 msgid "the %L" msgstr "" -#: plugin.py:252 +#: plugin.py:251 msgid "%s wrote the %s plugin and also contributed %L." msgstr "" -#: plugin.py:255 +#: plugin.py:254 msgid "%s contributed %L to the %s plugin." msgstr "" -#: plugin.py:258 +#: plugin.py:257 msgid "%s wrote the %s plugin" msgstr "" -#: plugin.py:261 +#: plugin.py:260 msgid "%s has no listed contributions for the %s plugin." msgstr "" diff --git a/plugins/PluginDownloader/README.txt b/plugins/PluginDownloader/README.txt index d60b47a97..d667ae887 100644 --- a/plugins/PluginDownloader/README.txt +++ b/plugins/PluginDownloader/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to quickly download and install a plugin from other repositories. \ No newline at end of file diff --git a/plugins/PluginDownloader/locale/de.po b/plugins/PluginDownloader/locale/de.po new file mode 100644 index 000000000..2680a57e0 --- /dev/null +++ b/plugins/PluginDownloader/locale/de.po @@ -0,0 +1,53 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:39+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: plugin.py:219 +msgid "" +"Add the help for \"@plugin help PluginDownloader\" here\n" +" This should describe *how* to use this plugin." +msgstr "" + +#: plugin.py:224 +msgid "" +"[]\n" +"\n" +" Displays the list of plugins in the .\n" +" If is not given, returns a list of available\n" +" repositories." +msgstr "" + +#: plugin.py:232 +#: plugin.py:243 +msgid ", " +msgstr ", " + +#: plugin.py:234 +#: plugin.py:253 +msgid "This repository does not exist or is not known by this bot." +msgstr "Diese Quelle existiert nicht, oder sie ist dem Bot nicht bekannt." + +#: plugin.py:241 +msgid "No plugin found in this repository." +msgstr "Kein Plugin in dieser Quelle gefunden." + +#: plugin.py:248 +msgid "" +" \n" +"\n" +" Downloads and installs the from the ." +msgstr "" + +#: plugin.py:258 +msgid "This plugin does not exist in this repository." +msgstr "Das Plugin ist in dieser Quelle nicht vorhanden." + diff --git a/plugins/PluginDownloader/locale/fi.po b/plugins/PluginDownloader/locale/fi.po new file mode 100644 index 000000000..1637bf7f2 --- /dev/null +++ b/plugins/PluginDownloader/locale/fi.po @@ -0,0 +1,80 @@ +# PluginDownloader plugin in Limnoria. +# Copyright (C) 2011 Limnoria +# Mika Suomalainen , 2011, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2012-04-29 19:20+EEST\n" +"PO-Revision-Date: 2012-04-29 20:48+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: Finnish <>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: plugin.py:245 +msgid "" +"This plugin allows you to install unofficial plugins from\n" +" multiple repositories easily. Use the \"repolist\" command to see list of\n" +" available repositories and \"repolist \" to list plugins, \n" +" which are available in that repository. When you want to install plugin,\n" +" just run command \"install \"." +msgstr "" +"Tämä lisäosa sallii epävirallisten lisäosien asentamisen monista ohjelmistolähteistä\n" +" helposti. Käytä \"repolist\" komentoa nähdäksesi listan saatavilla olevista\n" +" ohjelmistolähteistä ja \"repolist \" saadaksesi listan lisäosista,\n" +" jotka ovat saatavilla kyseisessä ohjelmistolähteessä. Kun tahdot asentaa lisäosan,\n" +" suorita vain komento \"install \"." + +#: plugin.py:253 +msgid "" +"[]\n" +"\n" +" Displays the list of plugins in the .\n" +" If is not given, returns a list of available\n" +" repositories." +msgstr "" +"[]\n" +"\n" +" Näyttää listan lisäosista, jotka löytyvät . Jos\n" +" ei ole annettu, palauttaa listan kaikista saataville olevista\n" +" ohjelmistolähteistä." + +#: plugin.py:261 +#: plugin.py:272 +msgid ", " +msgstr ", " + +#: plugin.py:263 +#: plugin.py:282 +msgid "This repository does not exist or is not known by this bot." +msgstr "Tämä ohjelmistolähde ei ole olemassakaan tai tämä botti ei tiedä siitä." + +#: plugin.py:270 +msgid "No plugin found in this repository." +msgstr "Lisäosaa ei löytynyt tästä ohjelmistolähteestä." + +#: plugin.py:277 +msgid "" +" \n" +"\n" +" Downloads and installs the from the ." +msgstr "" +" \n" +"\n" +" Lataa ja asentaa ." + +#: plugin.py:287 +msgid "This plugin does not exist in this repository." +msgstr "Tämä lisäosa ei ole tässä ohjelmistolähteessä." + +#~ msgid "" +#~ "Add the help for \"@plugin help PluginDownloader\" here\n" +#~ " This should describe *how* to use this plugin." +#~ msgstr "" +#~ "Lisää ohjeteksti komennolle \"@plugin help PluginDownloader\" tähän.\n" +#~ " Tämän pitäisi kuvata *kuinka* tätä lisäosaa käytetään." diff --git a/plugins/PluginDownloader/locale/fr.po b/plugins/PluginDownloader/locale/fr.po new file mode 100644 index 000000000..c9e720401 --- /dev/null +++ b/plugins/PluginDownloader/locale/fr.po @@ -0,0 +1,66 @@ +# French translation for limnoria +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the limnoria package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: limnoria\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-04-19 18:31+0000\n" +"PO-Revision-Date: 2012-04-19 19:43+0000\n" +"Last-Translator: Valentin Lorentz \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-19 19:44+0000\n" +"X-Generator: Launchpad (build 15120)\n" + +#: plugin.py:219 +#, docstring +msgid "" +"Add the help for \"@plugin help PluginDownloader\" here\n" +" This should describe *how* to use this plugin." +msgstr "" + +#: plugin.py:224 +#, docstring +msgid "" +"[]\n" +"\n" +" Displays the list of plugins in the .\n" +" If is not given, returns a list of available\n" +" repositories." +msgstr "" +"[]\n" +"\n" +"Affiche une liste des plugins du . Si n'est pas donné, " +"retourne une liste des dépôts disponibles." + +#: plugin.py:232 plugin.py:243 +msgid ", " +msgstr ", " + +#: plugin.py:234 plugin.py:253 +msgid "This repository does not exist or is not known by this bot." +msgstr "Ce dépôt n'existe pas ou n'est pas connu de ce bot." + +#: plugin.py:241 +msgid "No plugin found in this repository." +msgstr "Aucun plugin trouvé dans ce dépôt." + +#: plugin.py:248 +#, docstring +msgid "" +" \n" +"\n" +" Downloads and installs the from the ." +msgstr "" +" \n" +"\n" +"Télécharge et installe le depuis le ." + +#: plugin.py:258 +msgid "This plugin does not exist in this repository." +msgstr "Ce plugin n'existe pas dans ce dépôt." diff --git a/plugins/PluginDownloader/locale/it.po b/plugins/PluginDownloader/locale/it.po new file mode 100644 index 000000000..61e6aa271 --- /dev/null +++ b/plugins/PluginDownloader/locale/it.po @@ -0,0 +1,86 @@ +msgid "" +msgstr "" +"Project-Id-Version: Limnoria\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-05-04 01:17+020\n" +"Last-Translator: skizzhg \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: plugin.py:260 +#, docstring +msgid "" +"This plugin allows you to install unofficial plugins from\n" +" multiple repositories easily. Use the \"repolist\" command to see list of\n" +" available repositories and \"repolist \" to list plugins, \n" +" which are available in that repository. When you want to install plugin,\n" +" just run command \"install \"." +msgstr "" +"Questo plugin permette di installare facilmente plugin non ufficiali da vari\n" +" repository. Usare il comando \"repolist\" per ottenere l'elenco dei repository\n" +" disponibili e \"repolist \" per elencare i plugin disponibili nel\n" +" dato repository. Per installare il plugin basta eseguire il comando\n" +" \"install \"." + +#: plugin.py:268 +#, docstring +msgid "" +"[]\n" +"\n" +" Displays the list of plugins in the .\n" +" If is not given, returns a list of available\n" +" repositories." +msgstr "" +"[]\n" +"\n" +" Mostra l'elenco dei plugin presenti in .\n" +" Se non è specificato riporta una lista di quelli disponibili." + +#: plugin.py:276 plugin.py:287 +msgid ", " +msgstr ", " + +#: plugin.py:278 plugin.py:297 plugin.py:322 +msgid "This repository does not exist or is not known by this bot." +msgstr "Questo repository non esiste o non è riconosciuto." + +#: plugin.py:285 +msgid "No plugin found in this repository." +msgstr "Nessun plugin trovato in questo repository." + +#: plugin.py:292 +#, docstring +msgid "" +" \n" +"\n" +" Downloads and installs the from the ." +msgstr "" +" \n" +"\n" +" Scarica e installa da ." + +#: plugin.py:302 plugin.py:327 +msgid "This plugin does not exist in this repository." +msgstr "Il plugin non esiste in questo repository." + +#: plugin.py:317 +#, docstring +msgid "" +" \n" +"\n" +" Displays informations on the in the ." +msgstr "" +" \n" +"\n" +" Visualizza informazioni riguardo in ." + +#: plugin.py:331 +msgid "No README found for this plugin" +msgstr "Non è stato trovato nessun file README per questo plugin." + +#: plugin.py:334 +msgid "This plugin has no description." +msgstr "Questo plugin non ha una descrizione." + diff --git a/plugins/PluginDownloader/messages.pot b/plugins/PluginDownloader/messages.pot new file mode 100644 index 000000000..016729934 --- /dev/null +++ b/plugins/PluginDownloader/messages.pot @@ -0,0 +1,77 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2012-04-29 17:55+UTC\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \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:260 +#, docstring +msgid "" +"This plugin allows you to install unofficial plugins from\n" +" multiple repositories easily. Use the \"repolist\" command to see list of\n" +" available repositories and \"repolist \" to list plugins, \n" +" which are available in that repository. When you want to install plugin,\n" +" just run command \"install \"." +msgstr "" + +#: plugin.py:268 +#, docstring +msgid "" +"[]\n" +"\n" +" Displays the list of plugins in the .\n" +" If is not given, returns a list of available\n" +" repositories." +msgstr "" + +#: plugin.py:276 plugin.py:287 +msgid ", " +msgstr "" + +#: plugin.py:278 plugin.py:297 plugin.py:322 +msgid "This repository does not exist or is not known by this bot." +msgstr "" + +#: plugin.py:285 +msgid "No plugin found in this repository." +msgstr "" + +#: plugin.py:292 +#, docstring +msgid "" +" \n" +"\n" +" Downloads and installs the from the ." +msgstr "" + +#: plugin.py:302 plugin.py:327 +msgid "This plugin does not exist in this repository." +msgstr "" + +#: plugin.py:317 +#, docstring +msgid "" +" \n" +"\n" +" Displays informations on the in the ." +msgstr "" + +#: plugin.py:331 +msgid "No README found for this plugin" +msgstr "" + +#: plugin.py:334 +msgid "This plugin has no description." +msgstr "" + diff --git a/plugins/PluginDownloader/plugin.py b/plugins/PluginDownloader/plugin.py index fbfe2c6f2..1c79cd88a 100644 --- a/plugins/PluginDownloader/plugin.py +++ b/plugins/PluginDownloader/plugin.py @@ -30,6 +30,7 @@ import os import json +import shutil import urllib import urllib2 import tarfile @@ -73,7 +74,7 @@ class GithubRepository(GitRepository): ) - _apiUrl = 'http://github.com/api/v2/json' + _apiUrl = 'https://api.github.com' def _query(self, type_, uri_end, args={}): args = dict([(x,y) for x,y in args.items() if y is not None]) url = '%s/%s/%s?%s' % (self._apiUrl, type_, uri_end, @@ -81,67 +82,40 @@ class GithubRepository(GitRepository): return json.load(utils.web.getUrlFd(url)) def getPluginList(self): - latestCommit = self._query( + plugins = self._query( 'repos', - 'show/%s/%s/branches' % ( + '%s/%s/contents' % ( self._username, self._reponame, ) - )['branches']['master'] - path = [x for x in self._path.split('/') if x != ''] - treeHash = self._navigate(latestCommit, path) - if treeHash is None: + ) + if plugins is None: log.error(( 'Cannot get plugins list from repository %s/%s ' 'at Github' ) % (self._username, self._reponame)) return [] - nodes = self._query( - 'tree', - 'show/%s/%s/%s' % ( - self._username, - self._reponame, - treeHash, - ) - )['tree'] - plugins = [x['name'] for x in nodes if x['type'] == 'tree'] + plugins = [x['name'] for x in plugins if x['type'] == 'dir'] return plugins - def _navigate(self, treeHash, path): - if path == []: - return treeHash - tree = self._query( - 'tree', - 'show/%s/%s/%s' % ( - self._username, - self._reponame, - treeHash, - ) - )['tree'] - nodeName = path.pop(0) - for node in tree: - if node['name'] != nodeName: - continue - if node['type'] != 'tree': - return None - else: - return self._navigate(node['sha'], path) - # Remember we pop(0)ed the path - return None - + def _download(self, plugin): + try: + fileObject = urllib2.urlopen(self._downloadUrl) + fileObject2 = StringIO() + fileObject2.write(fileObject.read()) + fileObject.close() + fileObject2.seek(0) + return tarfile.open(fileobj=fileObject2, mode='r:gz') + finally: + del fileObject def install(self, plugin): + archive = self._download(plugin) + prefix = archive.getnames()[0] + dirname = ''.join((self._path, plugin)) directories = conf.supybot.directories.plugins() directory = self._getWritableDirectoryFromList(directories) assert directory is not None - dirname = ''.join((self._path, plugin)) - fileObject = urllib2.urlopen(self._downloadUrl) - fileObject2 = StringIO() - fileObject2.write(fileObject.read()) - fileObject.close() - fileObject2.seek(0) - archive = tarfile.open(fileobj=fileObject2, mode='r:gz') - prefix = archive.getnames()[0] try: assert archive.getmember(prefix + dirname).isdir() @@ -153,15 +127,23 @@ class GithubRepository(GitRepository): newFileName = os.path.join(directory, newFileName) if os.path.exists(newFileName): assert os.path.isdir(newFileName) - shutils.rmtree(newFileName) + shutil.rmtree(newFileName) if extractedFile is None: os.mkdir(newFileName) else: open(newFileName, 'a').write(extractedFile.read()) finally: archive.close() - fileObject2.close() - del archive, fileObject, fileObject2 + del archive + + def getInfo(self, plugin): + archive = self._download(plugin) + prefix = archive.getnames()[0] + dirname = ''.join((self._path, plugin)) + for file in archive.getmembers(): + if file.name == prefix + dirname + '/README.txt': + extractedFile = archive.extractfile(file) + return extractedFile.read() def _getWritableDirectoryFromList(self, directories): for directory in directories: @@ -212,11 +194,42 @@ repositories = { 'spidey-supybot-plugins', 'Plugins', ), + 'Antibody': GithubRepository( + 'Antibody', + 'supybot-plugins', + ), + 'doorbot': GithubRepository( + 'hacklab', + 'doorbot', + ), + 'boombot': GithubRepository( + 'nod', + 'boombot', + 'plugins', + ), + 'mailed-notifier': GithubRepository( + 'tbielawa', + 'supybot-mailed-notifier', + ), + 'pingdom': GithubRepository( + 'rynop', + 'supyPingdom', + 'plugins', + ), + 'scrum': GithubRepository( + 'amscanne', + 'supybot-scrum', + ), } class PluginDownloader(callbacks.Plugin): - """Add the help for "@plugin help PluginDownloader" here - This should describe *how* to use this plugin.""" + """This plugin allows you to install unofficial plugins from + multiple repositories easily. Use the "repolist" command to see list of + available repositories and "repolist " to list plugins, + which are available in that repository. When you want to install plugin, + just run command "install ".""" + + threaded = True @internationalizeDocstring def repolist(self, irc, msg, args, repository): @@ -260,12 +273,40 @@ class PluginDownloader(callbacks.Plugin): repositories[repository].install(plugin) irc.replySuccess() except Exception as e: + raise e #FIXME: more detailed error message log.error(str(e)) irc.error('The plugin could not be installed.') install = wrap(install, ['owner', 'something', 'something']) + @internationalizeDocstring + def info(self, irc, msg, args, repository, plugin): + """ + + Displays informations on the in the .""" + global repositories + if repository not in repositories: + irc.error(_( + 'This repository does not exist or is not known by ' + 'this bot.' + )) + elif plugin not in repositories[repository].getPluginList(): + irc.error(_('This plugin does not exist in this repository.')) + else: + info = repositories[repository].getInfo(plugin) + if info is None: + irc.error(_('No README found for this plugin')) + else: + if info.startswith('Insert a description of your plugin here'): + irc.error(_('This plugin has no description.')) + else: + info = info.split('\n\n')[0] + for line in info.split('\n'): + if line != '': + irc.reply(line) + info = wrap(info, ['something', optional('something')]) + PluginDownloader = internationalizeDocstring(PluginDownloader) Class = PluginDownloader diff --git a/plugins/Praise/README.txt b/plugins/Praise/README.txt index d60b47a97..e9871d84f 100644 --- a/plugins/Praise/README.txt +++ b/plugins/Praise/README.txt @@ -1 +1,5 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +Allows someone to praise someone or something. +Example: +If you add 'hugs $who'. +Someone says '@praise ChanServ'. +* bot hugs ChanServ \ No newline at end of file diff --git a/plugins/Praise/locale/it.po b/plugins/Praise/locale/it.po index ca61e6316..e7b233c6a 100644 --- a/plugins/Praise/locale/it.po +++ b/plugins/Praise/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-15 09:54+0200\n" "Last-Translator: skizzhg \n" @@ -29,7 +29,7 @@ msgid "" " " msgstr "" "Praise è un plugin per ... beh, elogiare cose. Sentiti libero/a di personalizzarlo\n" -" modificando gli elogi; utilizzando \"praise\ add \" per aggiungerne\n" +" modificando gli elogi; utilizzando \"praise\" add \" per aggiungerne\n" " di nuovi e accertandoti di includere \"$who\" alla posizione del in cui\n" " desideri che il soggetto venga elogiato.\n" " " diff --git a/plugins/Praise/messages.pot b/plugins/Praise/messages.pot index f17b44cfb..7bf6aee74 100644 --- a/plugins/Praise/messages.pot +++ b/plugins/Praise/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/plugins/Protector/locale/it.po b/plugins/Protector/locale/it.po index b3257170b..d125c354d 100644 --- a/plugins/Protector/locale/it.po +++ b/plugins/Protector/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-12 18:33+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Quote/README.txt b/plugins/Quote/README.txt index d60b47a97..8f7d29d68 100644 --- a/plugins/Quote/README.txt +++ b/plugins/Quote/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to add quotes to the database for the channel. \ No newline at end of file diff --git a/plugins/Quote/locale/it.po b/plugins/Quote/locale/it.po index e625f5a5f..7b6bed700 100644 --- a/plugins/Quote/locale/it.po +++ b/plugins/Quote/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-12 18:39+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/QuoteGrabs/locale/it.po b/plugins/QuoteGrabs/locale/it.po index e129ed4b7..a4c74c574 100644 --- a/plugins/QuoteGrabs/locale/it.po +++ b/plugins/QuoteGrabs/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-07 11:07+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/RSS/config.py b/plugins/RSS/config.py index d4c03e8af..510584755 100644 --- a/plugins/RSS/config.py +++ b/plugins/RSS/config.py @@ -45,6 +45,10 @@ def configure(advanced): class FeedNames(registry.SpaceSeparatedListOfStrings): List = callbacks.CanonicalNameSet +class FeedItemSortOrder(registry.OnlySomeStrings): + """Valid values include 'asInFeed', 'oldestFirst', 'newestFirst'.""" + validStrings = ('asInFeed', 'oldestFirst', 'newestFirst') + RSS = conf.registerPlugin('RSS') conf.registerChannelValue(RSS, 'bold', registry.Boolean( True, _("""Determines whether the bot will bold the title of the feed when @@ -53,7 +57,7 @@ conf.registerChannelValue(RSS, 'headlineSeparator', registry.StringSurroundedBySpaces(' || ', _("""Determines what string is used to separate headlines in new feeds."""))) conf.registerChannelValue(RSS, 'announcementPrefix', - registry.StringWithSpaceOnRight('New news from ', _("""Determines what + registry.StringWithSpaceOnRight(_('New news from '), _("""Determines what prefix is prepended (if any) to the new news item announcements made in the channel."""))) conf.registerChannelValue(RSS, 'announce', @@ -64,6 +68,10 @@ conf.registerGlobalValue(RSS, 'waitPeriod', registry.PositiveInteger(1800, _("""Indicates how many seconds the bot will wait between retrieving RSS feeds; requests made within this period will return cached results."""))) +conf.registerGlobalValue(RSS, 'sortFeedItems', + FeedItemSortOrder('asInFeed', _("""Determines whether feed items should be + sorted by their update timestamp or kept in the same order as they appear + in a feed."""))) conf.registerGlobalValue(RSS, 'feeds', FeedNames([], _("""Determines what feeds should be accessible as commands."""))) diff --git a/plugins/RSS/locale/de.po b/plugins/RSS/locale/de.po new file mode 100644 index 000000000..acf110345 --- /dev/null +++ b/plugins/RSS/locale/de.po @@ -0,0 +1,187 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-10-29 16:08+CEST\n" +"PO-Revision-Date: 2011-10-29 17:09+0100\n" +"Last-Translator: Valentin Lorentz \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: config.py:50 +msgid "" +"Determines whether the bot will bold the title of the feed when\n" +" it announces new news." +msgstr "Legt fest ob der Bot Titel fett schreibt, wenn er er Neuigkeiten verkündet." + +#: config.py:53 +msgid "" +"Determines what string is\n" +" used to separate headlines in new feeds." +msgstr "Gibt an welche Zeichenkette verwendet wird um Kopfzeilen neuer Feeds zu separieren." + +#: config.py:56 +msgid "" +"Determines what\n" +" prefix is prepended (if any) to the new news item announcements made in the\n" +" channel." +msgstr "Legt fest welcher Prefix (falls überhaupt) den News vorangestellt wird, wenn neue Verkündungen in einem Kanal gemacht werden." + +#: config.py:56 +msgid "New news from " +msgstr "Neuigkeiten von " + +#: config.py:60 +msgid "" +"Determines which RSS feeds\n" +" should be announced in the channel; valid input is a list of strings\n" +" (either registered RSS feeds or RSS feed URLs) separated by spaces." +msgstr "Legt fest welche RSS Feeds in einem Kanal verkündet werden. Zulässige eingaben sind Listen von Zeichenketten (entweder registrierte RSS Feed oder URLs zu RSS Feed), mit einem Leerzeichen getrennt" + +#: config.py:64 +msgid "" +"Indicates how many seconds the bot will\n" +" wait between retrieving RSS feeds; requests made within this period will\n" +" return cached results." +msgstr "Zeigt wieviele Sekunden der Bot wartet, zwischen dem Empfangen von RSS Feeds; Anfragen die innerhalb dieser Zeit gemachten werden, führt zu zwischengespeicherten Ergebnissen." + +#: config.py:68 +msgid "" +"Determines what feeds should be accessible as\n" +" commands." +msgstr "Legt fest auf welche Feeds per Befehl zugegriffen werden darf." + +#: config.py:71 +msgid "" +"Determines whether the bot will list the link\n" +" along with the title of the feed when the rss command is called.\n" +" supybot.plugins.RSS.announce.showLinks affects whether links will be\n" +" listed when a feed is automatically announced." +msgstr "Legt fest ob der Bot den Link zusammen mit dem Titel des Feeds aufgelistet wird, wenn der RSS Befehl aufgerufen wird. supybot.plugins.RSS.announce.showLinks ist zuständig dafür falls der Feed automatisch verkündet wird." + +#: config.py:92 +msgid "" +"Determines whether the bot will list the link\n" +" along with the title of the feed when a feed is automatically\n" +" announced." +msgstr "Legt fest ob der Bot einen Link mit dem Feed Titel angeben soll wenn ein Feed automatisch verkündet wird." + +#: plugin.py:62 +msgid "" +"This plugin is useful both for announcing updates to RSS feeds in a\n" +" channel, and for retrieving the headlines of RSS feeds via command. Use\n" +" the \"add\" command to add feeds to this plugin, and use the \"announce\"\n" +" command to determine what feeds should be announced in a given channel." +msgstr "Dieses plugin wird verwendet um Updates eines RSS Feed in einem Kanal zu verkünden und um die Kopfzeilen des RSS Feeds über einen Befehl zu empfangen. Benutze \"add\" um Feeds zu diesem Plugin hinzuzufügen und benutze \"announce\" um festzulegen ob der Feed im gegeben Kanal verkündet werden soll." + +#: plugin.py:340 +msgid "" +" \n" +"\n" +" Adds a command to this plugin that will look up the RSS feed at the\n" +" given URL.\n" +" " +msgstr "" +" \n" +"\n" +"Fügt einen Befehl zu diesem Plugin hinzu, der den RSS Feed von angegebener URL abruft." + +#: plugin.py:351 +msgid "" +"\n" +"\n" +" Removes the command for looking up RSS feeds at from\n" +" this plugin.\n" +" " +msgstr "" +"\n" +"\n" +"Entfernt den Befehl um RSS Feeds von abzurufen aus diesem Plugin" + +#: plugin.py:357 +msgid "That's not a valid RSS feed command name." +msgstr "Das ist kein gültiger RSS Feed Befehl." + +#: plugin.py:368 +msgid "" +"[]\n" +"\n" +" Returns the list of feeds announced in . is\n" +" only necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] \n" +"\n" +"Gibt eine Liste der Feeds, die in einem verkündet werden, zurück. ist nur nötig falls der Befehl nicht direkt im Kanal abgegeben wird." + +#: plugin.py:375 +msgid "I am currently not announcing any feeds." +msgstr "Momentan kündige ich keine Feeds an." + +#: plugin.py:380 +msgid "" +"[] [ ...]\n" +"\n" +" Adds the list of feeds to the current list of announced feeds in\n" +" . Valid feeds include the names of registered feeds as\n" +" well as URLs for RSS feeds. is only necessary if the\n" +" message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Fügt die Liste der Feeds zur momentanen Liste der verkündeten Feeds eines hinzu. Zulässige Feeds umfassen die Namen von registrierten Feed als auch URLs für RSS Feeds. ist nur nötig falls die Nachricht nicht im Kanal gesendet wird." + +#: plugin.py:398 +msgid "" +"[] [ ...]\n" +"\n" +" Removes the list of feeds from the current list of announced feeds\n" +" in . Valid feeds include the names of registered feeds as\n" +" well as URLs for RSS feeds. is only necessary if the\n" +" message isn't sent in the channel itself.\n" +" " +msgstr "" +"[] [ ...]\n" +"\n" +"Entfernt die Liste der Feeds von der momentanen Liste der verkündeten Feeds eines . Zulässige Feeds umfassen die Namen von registrierten Feed als auch URLs für RSS Feeds. ist nur nötig falls die Nachricht nicht im Kanal gesendet wird." + +#: plugin.py:416 +msgid "" +" []\n" +"\n" +" Gets the title components of the given RSS feed.\n" +" If is given, return only that many headlines.\n" +" " +msgstr "" +" []\n" +"\n" +"Empfängt die Titel des angegeben RSS Feeds. Falls angegeben wurde, werden nur soviele Kopfzeilen ausgegeben." + +#: plugin.py:429 +msgid "Couldn't get RSS feed." +msgstr "Konnte den RSS Feed nicht bekommen." + +#: plugin.py:444 +msgid "" +"\n" +"\n" +" Returns information from the given RSS feed, namely the title,\n" +" URL, description, and last update date, if available.\n" +" " +msgstr "" +"\n" +"\n" +"Gibt Informationen zum angegeben RSS Feed aus. Den Titel, URL, Beschreibung und das Datum des letzten Updates, wenn verfügbar." + +#: plugin.py:457 +msgid "I couldn't retrieve that RSS feed." +msgstr "Ich konnte den RSS Feed nicht empfangen." + +#: plugin.py:470 +msgid "Title: %s; URL: %u; Description: %s; Last updated: %s." +msgstr "Titel: %s; URL: %u; Beschreibung: %s; Zuletzt aktualisiert: %s." + diff --git a/plugins/RSS/locale/fi.po b/plugins/RSS/locale/fi.po index 4461458f4..252dafa63 100755 --- a/plugins/RSS/locale/fi.po +++ b/plugins/RSS/locale/fi.po @@ -5,10 +5,11 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-08-07 20:15+0200\n" -"Last-Translator: Mika Suomalainen \n" +"POT-Creation-Date: 2011-10-29 16:08+CEST\n" +"PO-Revision-Date: 2011-10-29 17:10+0100\n" +"Last-Translator: Valentin Lorentz \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -40,6 +41,10 @@ msgstr "" " etuliite (jos mikään) lisätään kuulutuksiin, jotka on tehty\n" " kanavalla." +#: config.py:56 +msgid "New news from " +msgstr "Uusia uutisia kohteesta " + #: config.py:60 msgid "" "Determines which RSS feeds\n" @@ -80,7 +85,7 @@ msgstr "" " supybot.plugins.RSS.announce.showLinks vaikuttaa luetellaanko\n" " linkit, kun syöte on kuulutettu automaattisesti." -#: config.py:84 +#: config.py:92 msgid "" "Determines whether the bot will list the link\n" " along with the title of the feed when a feed is automatically\n" @@ -102,7 +107,7 @@ msgstr "" " \"add\" komentoa lisätäksesi syötteitä tähän lisäosaan ja \"announce\"\n" " komentoa määrittämään mitkä syötteet pitäisi kuuluttaa annetulla kanavalla." -#: plugin.py:316 +#: plugin.py:340 msgid "" " \n" "\n" @@ -116,7 +121,7 @@ msgstr "" " URL osoitteesta..\n" " " -#: plugin.py:327 +#: plugin.py:351 msgid "" "\n" "\n" @@ -130,11 +135,11 @@ msgstr "" " lisäosasta.\n" " " -#: plugin.py:333 +#: plugin.py:357 msgid "That's not a valid RSS feed command name." msgstr "Tuo ei ole kelvollinen RSS sylte komento nimi." -#: plugin.py:344 +#: plugin.py:368 msgid "" "[]\n" "\n" @@ -148,11 +153,11 @@ msgstr "" " vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:351 +#: plugin.py:375 msgid "I am currently not announcing any feeds." msgstr "Minä en tällä hetkellä kuuluta yhtään syötettä." -#: plugin.py:356 +#: plugin.py:380 msgid "" "[] [ ...]\n" "\n" @@ -170,7 +175,7 @@ msgstr "" " viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:374 +#: plugin.py:398 msgid "" "[] [ ...]\n" "\n" @@ -188,7 +193,7 @@ msgstr "" " ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:392 +#: plugin.py:416 msgid "" " []\n" "\n" @@ -202,11 +207,11 @@ msgstr "" " Jos on annettu, palauttaa vain niin monta otsikkoa.\n" " " -#: plugin.py:405 +#: plugin.py:429 msgid "Couldn't get RSS feed." msgstr "RSS syötettä ei pystytty hakemaan." -#: plugin.py:420 +#: plugin.py:444 msgid "" "\n" "\n" @@ -220,11 +225,11 @@ msgstr "" " URL, kuvauksen, ja viimeisen päivityksen, jos saatavilla.\n" " " -#: plugin.py:433 +#: plugin.py:457 msgid "I couldn't retrieve that RSS feed." msgstr "En voinut noutaa tuota RSS syötettä." -#: plugin.py:446 +#: plugin.py:470 msgid "Title: %s; URL: %u; Description: %s; Last updated: %s." msgstr "Otsikko: %s; URL: %u; Kuvaus: %s; Viimeeksi päivitetty: %s." diff --git a/plugins/RSS/locale/fr.po b/plugins/RSS/locale/fr.po index 5bd523e80..4dcc2e865 100644 --- a/plugins/RSS/locale/fr.po +++ b/plugins/RSS/locale/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2011-10-29 16:08+CEST\n" "PO-Revision-Date: \n" "Last-Translator: Valentin Lorentz \n" "Language-Team: Supybot-fr \n" @@ -32,6 +32,10 @@ msgid "" " channel." msgstr "Détermine quel préfixe (s'il y en a un) est utilisé pour annoncer les news sur le canal." +#: config.py:56 +msgid "New news from " +msgstr "Nouvelle(s) news de " + #: config.py:60 msgid "" "Determines which RSS feeds\n" @@ -60,7 +64,7 @@ msgid "" " listed when a feed is automatically announced." msgstr "Détermine si le bot listera le lien de chaque flus avec son titre, lorsque la commande rss est appelée. supybot.plugins.RSS.announce.showLinks affecte si les liens sont affichés lorsqu'un flux est annoncé automatiquement." -#: config.py:84 +#: config.py:92 msgid "" "Determines whether the bot will list the link\n" " along with the title of the feed when a feed is automatically\n" @@ -75,7 +79,7 @@ msgid "" " command to determine what feeds should be announced in a given channel." msgstr "Ce plugin est utile pour annoncer des flux RSS sur un canal, et pour récupérer les en-tête des flux RSS via une commande. Utilisez la commande \"add\" pour ajouter des flux au plugin, et utilisez la commande \"annonce\" pour détermine quels flux pourront être annoncés sur un canal donné." -#: plugin.py:316 +#: plugin.py:340 msgid "" " \n" "\n" @@ -87,7 +91,7 @@ msgstr "" "\n" "Ajoute un commande à ce plugin qui permet de regarder le flux situé à l'." -#: plugin.py:327 +#: plugin.py:351 msgid "" "\n" "\n" @@ -99,11 +103,11 @@ msgstr "" "\n" "Supprime le flux des flux qui peuvent être lus grâce à une commande." -#: plugin.py:333 +#: plugin.py:357 msgid "That's not a valid RSS feed command name." msgstr "Ce n'est pas une commande de flux RSS valide" -#: plugin.py:344 +#: plugin.py:368 msgid "" "[]\n" "\n" @@ -115,11 +119,11 @@ msgstr "" "\n" "Retourne la liste des flux annoncés sur le . n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:351 +#: plugin.py:375 msgid "I am currently not announcing any feeds." msgstr "Je n'annonce actuellement aucun flux." -#: plugin.py:356 +#: plugin.py:380 msgid "" "[] [ ...]\n" "\n" @@ -133,7 +137,7 @@ msgstr "" "\n" "Ajoute la liste de flux à la liste actuelle des flux annoncés sur le . Vous devez indiquer le du flux si il est déjà enregistré, ou l' dans le cas contraire. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:374 +#: plugin.py:398 msgid "" "[] [ ...]\n" "\n" @@ -147,7 +151,7 @@ msgstr "" "\n" "Supprime la liste de flux de la liste actuelle des flux annoncés sur le . Vous devez indiquer le du flux si il est déjà enregistré, ou l' dans le cas contraire. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:392 +#: plugin.py:416 msgid "" " []\n" "\n" @@ -159,11 +163,11 @@ msgstr "" "\n" "Récupère le titre des éléments du flux RSS donné. si le est donné, ne retourne que ce nombre de lignes d'en-tête." -#: plugin.py:405 +#: plugin.py:429 msgid "Couldn't get RSS feed." msgstr "Ne peut récupérer le flux RSS." -#: plugin.py:420 +#: plugin.py:444 msgid "" "\n" "\n" @@ -175,11 +179,11 @@ msgstr "" "\n" "Retourne des informations sur le flux RSS donné : le titre, l'URL, la description, et la dernière mise à jour." -#: plugin.py:433 +#: plugin.py:457 msgid "I couldn't retrieve that RSS feed." msgstr "Je ne peux récupérer ce flux RSS." -#: plugin.py:446 +#: plugin.py:470 msgid "Title: %s; URL: %u; Description: %s; Last updated: %s." msgstr "Titre : %s , URL : %u ; description : %s ; dernière mise à jour : %s." diff --git a/plugins/RSS/locale/hu.po b/plugins/RSS/locale/hu.po index 52e3c0e37..786079e70 100644 --- a/plugins/RSS/locale/hu.po +++ b/plugins/RSS/locale/hu.po @@ -1,20 +1,20 @@ -# SOME DESCRIPTIVE TITLE. +# Limnoria RSS plugin. # Copyright (C) YEAR ORGANIZATION -# FIRST AUTHOR , YEAR. +# nyuszika7h , 2011. # msgid "" msgstr "" "Project-Id-Version: Limnoria RSS\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-08-19 16:17+0200\n" +"POT-Creation-Date: 2011-10-29 16:08+CEST\n" +"PO-Revision-Date: 2011-10-29 19:22+0200\n" "Last-Translator: nyuszika7h \n" "Language-Team: \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" + #: config.py:50 msgid "" "Determines whether the bot will bold the title of the feed when\n" @@ -34,6 +34,10 @@ msgid "" " channel." msgstr "Meghatározza, hogy milyen előtag (ha van ilyen) legyen a csatornában bejelentett új hírek előtt." +#: config.py:56 +msgid "New news from " +msgstr "Új hírek innen: " + #: config.py:60 msgid "" "Determines which RSS feeds\n" @@ -62,7 +66,7 @@ msgid "" " listed when a feed is automatically announced." msgstr "Meghatározza, hogy a bot kiírja-e a hírcsatorna hivatkozását a címmel együtt az rss command meghívásakor. A supybot.plugins.RSS.announce.showLinks befolyásolja, hogy a linkek ki legyenek-e írva, amikor egy hírcsatorna automatikusan be van jelentve." -#: config.py:84 +#: config.py:92 msgid "" "Determines whether the bot will list the link\n" " along with the title of the feed when a feed is automatically\n" @@ -70,6 +74,7 @@ msgid "" msgstr "Meghatározza, hogy a bot kiírja-e a hírcsatorna hivatkozását a címmel együtt amikor egy hírcsatorna automatikusan be van jelentve." #: plugin.py:62 +#, docstring msgid "" "This plugin is useful both for announcing updates to RSS feeds in a\n" " channel, and for retrieving the headlines of RSS feeds via command. Use\n" @@ -77,7 +82,8 @@ msgid "" " command to determine what feeds should be announced in a given channel." msgstr "Ez a bővítmény hasznos mind az RSS hírcsatornák frissítéseinek bejelentésére egy csatornában, és az RSS hírcsatornák főhivatkozásainek letöltésére egy parancssal. Használd az \"add\" parancsot hírcsatornák hozzáadásához, és használd az \"announce\" parancsot, hogy meghatározd, milyen hírcsatornák legyenek bejelentve a megadott csatornában." -#: plugin.py:316 +#: plugin.py:340 +#, docstring msgid "" " \n" "\n" @@ -89,7 +95,8 @@ msgstr "" "\n" "Hozzáad egy parancsot ehhez a bővítményhez, amely le fogja kérdezni az RSS hírcsatornát a megadott hivatkozáson." -#: plugin.py:327 +#: plugin.py:351 +#, docstring msgid "" "\n" "\n" @@ -101,11 +108,12 @@ msgstr "" "\n" "Eltávolítja a RSS hírcsatornáinak lekérdezéséhez a bővítményből." -#: plugin.py:333 +#: plugin.py:357 msgid "That's not a valid RSS feed command name." msgstr "Ez nem egy érvényes RSS hírcsatorna parancsnév." -#: plugin.py:344 +#: plugin.py:368 +#, docstring msgid "" "[]\n" "\n" @@ -117,11 +125,12 @@ msgstr "" "\n" "Kiírja a -n bejelentett hírcsatornákat. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:351 +#: plugin.py:375 msgid "I am currently not announcing any feeds." msgstr "Jelenleg nem jelentek be semmilyen hírcsatornát." -#: plugin.py:356 +#: plugin.py:380 +#, docstring msgid "" "[] [ ...]\n" "\n" @@ -135,7 +144,8 @@ msgstr "" "\n" "Hozzáadja a hírcsatornák listáját a bejelentett hírcsatornák listájához -ban. Érvényes hírcsatornák közé tartoznak a regisztrált hírcsatornák nevei és az RSS hírcsatornák hivatkozásai. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:374 +#: plugin.py:398 +#, docstring msgid "" "[] [ ...]\n" "\n" @@ -149,7 +159,8 @@ msgstr "" "\n" "Eltávolítja a hírcsatornák listáját a jelenleg bejelentett hírcsatornák listájából -ban. Érvényes hírcsatornák közé tartoznak a regisztrált hírcsatornák nevei és az RSS hírcsatornák hivatkozásai. csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." -#: plugin.py:392 +#: plugin.py:416 +#, docstring msgid "" " []\n" "\n" @@ -161,11 +172,12 @@ msgstr "" "\n" "Lekérdezi a főcímeket a megadott RSS hírcsatornából. Ha meg van adva, csak annyi főcímet ír ki." -#: plugin.py:405 +#: plugin.py:429 msgid "Couldn't get RSS feed." msgstr "Nem sikerült elérni az RSS hírcsatornát." -#: plugin.py:420 +#: plugin.py:444 +#, docstring msgid "" "\n" "\n" @@ -177,11 +189,11 @@ msgstr "" "\n" "Információt ír ki a megadott RSS hírcsatornáról, név szerint a címet, a hivatkozást, a leírást és a legutóbbi frissítés idejét, ha elérhető." -#: plugin.py:433 +#: plugin.py:457 msgid "I couldn't retrieve that RSS feed." msgstr "Nem tudtam lekérdezni a megadott RSS hírcsatornát." -#: plugin.py:446 +#: plugin.py:470 msgid "Title: %s; URL: %u; Description: %s; Last updated: %s." msgstr "Cím: %s; Hivatkozás: %u; Leírás: %s; Legutóbbi frissítés: %s." diff --git a/plugins/RSS/locale/it.po b/plugins/RSS/locale/it.po index 347482f31..342c62b33 100644 --- a/plugins/RSS/locale/it.po +++ b/plugins/RSS/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-07-08 09:37+0200\n" +"PO-Revision-Date: 2012-06-03 04:49+0200\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -11,21 +11,26 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" -#: config.py:50 +#: config.py:49 +#, docstring +msgid "Valid values include 'asInFeed', 'oldestFirst', 'newestFirst'." +msgstr "I valori validi sono 'asInFeed', 'oldestFirst', 'newestFirst'." + +#: config.py:54 msgid "" "Determines whether the bot will bold the title of the feed when\n" " it announces new news." msgstr "" "Determina se il bot mostrerà il titolo del feed in grassetto quando annuncia nuove notizie." -#: config.py:53 +#: config.py:57 msgid "" "Determines what string is\n" " used to separate headlines in new feeds." msgstr "" "Determina quale stringa utilizzare per separare i titoli nei nuovi feed." -#: config.py:56 +#: config.py:60 msgid "" "Determines what\n" " prefix is prepended (if any) to the new news item announcements made in the\n" @@ -34,6 +39,10 @@ msgstr "" "Determina quale prefisso (eventuale) utilizzare per annunciare le notizie in canale." #: config.py:60 +msgid "New news from " +msgstr "Nuove notizie da " + +#: config.py:64 msgid "" "Determines which RSS feeds\n" " should be announced in the channel; valid input is a list of strings\n" @@ -42,7 +51,7 @@ msgstr "" "Determina quali feed RSS sono annunciati in canale; una voce valida è un elenco di stringhe\n" " (sia di feed registrati sia di URL di feed) separate da spazi." -#: config.py:64 +#: config.py:68 msgid "" "Indicates how many seconds the bot will\n" " wait between retrieving RSS feeds; requests made within this period will\n" @@ -51,14 +60,23 @@ msgstr "" "Indica ogni quanti secondi il bot recupererà i feed RSS; le richieste effettuate\n" " entro questo periodo verranno memorizzate nella cache." -#: config.py:68 +#: config.py:72 +msgid "" +"Determines whether feed items should be\n" +" sorted by their update timestamp or kept in the same order as they appear\n" +" in a feed." +msgstr "" +"Determina se gli elementi del feed debbano essere ordinati per data di aggiornamento\n" +" o mantenuti nello stesso ordine con il quale appaiono." + +#: config.py:76 msgid "" "Determines what feeds should be accessible as\n" " commands." msgstr "" -"Determina quali feed sono accessibili come comandi." +"Determina quali feed siano accessibili come comandi." -#: config.py:71 +#: config.py:79 msgid "" "Determines whether the bot will list the link\n" " along with the title of the feed when the rss command is called.\n" @@ -69,13 +87,13 @@ msgstr "" " il comando \"rss\". La variabile supybot.plugins.RSS.announce.showLinks determina\n" " se i link saranno mostrati quando un feed è annunciato automaticamente." -#: config.py:84 +#: config.py:100 msgid "" "Determines whether the bot will list the link\n" " along with the title of the feed when a feed is automatically\n" " announced." msgstr "" -"Determina se il bot elencherà i link con il titolo del feed quando esso è annunciato automaticamente." +"Determina se il bot elencherà i link con il titolo del feed quando questo è annunciato automaticamente." #: plugin.py:62 #, docstring @@ -89,7 +107,12 @@ msgstr "" " i titoli dei feed tramite un comando. Utilizza il comando \"add\" per aggiungere\n" " feed e \"announce\" per determinare quali feed devono essere annunciati in un dato canale." -#: plugin.py:316 +#: plugin.py:304 +#, docstring +msgid "Return feed items, sorted according to sortFeedItems." +msgstr "Riporta gli elementi del feed in base a sortFeedItems." + +#: plugin.py:358 #, docstring msgid "" " \n" @@ -103,7 +126,7 @@ msgstr "" " Aggiunge un comando a questo plugin che cercherà i feed RSS all'URL specificato.\n" " " -#: plugin.py:327 +#: plugin.py:369 #, docstring msgid "" "\n" @@ -117,11 +140,11 @@ msgstr "" " Rimuove il comando per cercare feed RSS con .\n" " " -#: plugin.py:333 +#: plugin.py:375 msgid "That's not a valid RSS feed command name." msgstr "Questo non è un comando di feed RSS valido." -#: plugin.py:344 +#: plugin.py:386 #, docstring msgid "" "[]\n" @@ -136,11 +159,11 @@ msgstr "" " necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:351 +#: plugin.py:393 msgid "I am currently not announcing any feeds." msgstr "Attualmente non sto annunciando alcun feed." -#: plugin.py:356 +#: plugin.py:398 #, docstring msgid "" "[] [ ...]\n" @@ -158,7 +181,7 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:374 +#: plugin.py:416 #, docstring msgid "" "[] [ ...]\n" @@ -176,7 +199,7 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:392 +#: plugin.py:434 #, docstring msgid "" " []\n" @@ -191,11 +214,11 @@ msgstr "" " Se è fornito, restituisce solo quella quantità.\n" " " -#: plugin.py:405 +#: plugin.py:447 msgid "Couldn't get RSS feed." msgstr "Impossibile recuperare il feed RSS." -#: plugin.py:420 +#: plugin.py:462 #, docstring msgid "" "\n" @@ -210,11 +233,11 @@ msgstr "" " URL, descrizione e data dell'ultimo aggiornamento.\n" " " -#: plugin.py:433 +#: plugin.py:475 msgid "I couldn't retrieve that RSS feed." msgstr "Non riesco a recuperare questo feed RSS." -#: plugin.py:446 +#: plugin.py:488 msgid "Title: %s; URL: %u; Description: %s; Last updated: %s." msgstr "Titolo: %s; URL: %u; Descrizione: %s; Ultimo aggiornamento: %s." diff --git a/plugins/RSS/messages.pot b/plugins/RSS/messages.pot index 9885ca62f..7f747c350 100644 --- a/plugins/RSS/messages.pot +++ b/plugins/RSS/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-06-03 04:38+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,19 +15,24 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: config.py:50 +#: config.py:49 +#, docstring +msgid "Valid values include 'asInFeed', 'oldestFirst', 'newestFirst'." +msgstr "" + +#: config.py:54 msgid "" "Determines whether the bot will bold the title of the feed when\n" " it announces new news." msgstr "" -#: config.py:53 +#: config.py:57 msgid "" "Determines what string is\n" " used to separate headlines in new feeds." msgstr "" -#: config.py:56 +#: config.py:60 msgid "" "Determines what\n" " prefix is prepended (if any) to the new news item announcements made in the\n" @@ -35,26 +40,37 @@ msgid "" msgstr "" #: config.py:60 +msgid "New news from " +msgstr "" + +#: config.py:64 msgid "" "Determines which RSS feeds\n" " should be announced in the channel; valid input is a list of strings\n" " (either registered RSS feeds or RSS feed URLs) separated by spaces." msgstr "" -#: config.py:64 +#: config.py:68 msgid "" "Indicates how many seconds the bot will\n" " wait between retrieving RSS feeds; requests made within this period will\n" " return cached results." msgstr "" -#: config.py:68 +#: config.py:72 +msgid "" +"Determines whether feed items should be\n" +" sorted by their update timestamp or kept in the same order as they appear\n" +" in a feed." +msgstr "" + +#: config.py:76 msgid "" "Determines what feeds should be accessible as\n" " commands." msgstr "" -#: config.py:71 +#: config.py:79 msgid "" "Determines whether the bot will list the link\n" " along with the title of the feed when the rss command is called.\n" @@ -62,7 +78,7 @@ msgid "" " listed when a feed is automatically announced." msgstr "" -#: config.py:84 +#: config.py:100 msgid "" "Determines whether the bot will list the link\n" " along with the title of the feed when a feed is automatically\n" @@ -78,7 +94,12 @@ msgid "" " command to determine what feeds should be announced in a given channel." msgstr "" -#: plugin.py:316 +#: plugin.py:304 +#, docstring +msgid "Return feed items, sorted according to sortFeedItems." +msgstr "" + +#: plugin.py:358 #, docstring msgid "" " \n" @@ -88,7 +109,7 @@ msgid "" " " msgstr "" -#: plugin.py:327 +#: plugin.py:369 #, docstring msgid "" "\n" @@ -98,11 +119,11 @@ msgid "" " " msgstr "" -#: plugin.py:333 +#: plugin.py:375 msgid "That's not a valid RSS feed command name." msgstr "" -#: plugin.py:344 +#: plugin.py:386 #, docstring msgid "" "[]\n" @@ -112,11 +133,11 @@ msgid "" " " msgstr "" -#: plugin.py:351 +#: plugin.py:393 msgid "I am currently not announcing any feeds." msgstr "" -#: plugin.py:356 +#: plugin.py:398 #, docstring msgid "" "[] [ ...]\n" @@ -128,7 +149,7 @@ msgid "" " " msgstr "" -#: plugin.py:374 +#: plugin.py:416 #, docstring msgid "" "[] [ ...]\n" @@ -140,7 +161,7 @@ msgid "" " " msgstr "" -#: plugin.py:392 +#: plugin.py:434 #, docstring msgid "" " []\n" @@ -150,11 +171,11 @@ msgid "" " " msgstr "" -#: plugin.py:405 +#: plugin.py:447 msgid "Couldn't get RSS feed." msgstr "" -#: plugin.py:420 +#: plugin.py:462 #, docstring msgid "" "\n" @@ -164,11 +185,11 @@ msgid "" " " msgstr "" -#: plugin.py:433 +#: plugin.py:475 msgid "I couldn't retrieve that RSS feed." msgstr "" -#: plugin.py:446 +#: plugin.py:488 msgid "Title: %s; URL: %u; Description: %s; Last updated: %s." msgstr "" diff --git a/plugins/RSS/plugin.py b/plugins/RSS/plugin.py index 53a1ca2b7..8d0332a7f 100644 --- a/plugins/RSS/plugin.py +++ b/plugins/RSS/plugin.py @@ -201,12 +201,16 @@ class RSS(callbacks.Plugin): for channel in channels: if len(oldheadlines) == 0: channelnewheadlines = newheadlines[:self.registryValue('initialAnnounceHeadlines', channel)] + else: + channelnewheadlines = newheadlines[:] whitelist = self.registryValue('keywordWhitelist', channel) blacklist = self.registryValue('keywordBlacklist', channel) if len(whitelist) != 0: channelnewheadlines = filter(filter_whitelist, channelnewheadlines) if len(blacklist) != 0: channelnewheadlines = filter(filter_blacklist, channelnewheadlines) + if len(channelnewheadlines) == 0: + return bold = self.registryValue('bold', channel) sep = self.registryValue('headlineSeparator', channel) prefix = self.registryValue('announcementPrefix', channel) @@ -287,18 +291,36 @@ class RSS(callbacks.Plugin): toText = utils.web.htmlToText if 'encoding' in feed: def conv(s): - try: - return toText(s).strip().encode(feed['encoding'],'replace') - except UnicodeEncodeError: - return toText(s.encode('utf-8', 'ignore')).strip() + # encode() first so there implicit encoding doesn't happen in + # other functions when unicode and bytestring objects are used + # together + s = s.encode(feed['encoding'], 'replace') + s = toText(s).strip() + return s return conv else: return lambda s: toText(s).strip() + def _sortFeedItems(self, items): + """Return feed items, sorted according to sortFeedItems.""" + order = self.registryValue('sortFeedItems') + if order not in ['oldestFirst', 'newestFirst']: + return items + if order == 'oldestFirst': + reverse = False + if order == 'newestFirst': + reverse = True + try: + sitems = sorted(items, key=lambda i: i['updated'], reverse=reverse) + except KeyError: + # feedparser normalizes required timestamp fields in ATOM and RSS + # to the "updated" field. Feeds missing it are unsortable by date. + return items + return sitems def getHeadlines(self, feed): headlines = [] conv = self._getConverter(feed) - for d in feed['items']: + for d in self._sortFeedItems(feed['items']): if 'title' in d: title = conv(d['title']) link = d.get('link') diff --git a/plugins/Relay/README.txt b/plugins/Relay/README.txt index d60b47a97..7687f9361 100644 --- a/plugins/Relay/README.txt +++ b/plugins/Relay/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to setup a relay between networks. \ No newline at end of file diff --git a/plugins/Relay/locale/it.po b/plugins/Relay/locale/it.po index 33e6a77b6..c881178e2 100644 --- a/plugins/Relay/locale/it.po +++ b/plugins/Relay/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-10 11:17+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Relay/messages.pot b/plugins/Relay/messages.pot index 6c44750bc..0540d468c 100644 --- a/plugins/Relay/messages.pot +++ b/plugins/Relay/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/plugins/Reply/README.txt b/plugins/Reply/README.txt index d60b47a97..575685cd1 100644 --- a/plugins/Reply/README.txt +++ b/plugins/Reply/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to use different reply commands. \ No newline at end of file diff --git a/plugins/Reply/locale/de.po b/plugins/Reply/locale/de.po new file mode 100644 index 000000000..c757dbbf9 --- /dev/null +++ b/plugins/Reply/locale/de.po @@ -0,0 +1,79 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-08-10 11:27+CEST\n" +"PO-Revision-Date: 2011-10-29 10:22+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: plugin.py:37 +msgid "" +"This plugin contains a few commands that construct various types of\n" +" replies. Some bot owners would be wise to not load this plugin because it\n" +" can be easily abused.\n" +" " +msgstr "Dieses Plugin enthält einige befehl um verschiedene Antworten zu konstruieren. Einige Bot Besitzer sollten dieses Plugin nicht laden, weil es einfach missbraucht werden kann." + +#: plugin.py:43 +msgid "" +"\n" +"\n" +" Replies with in private. Use nested commands to your benefit\n" +" here.\n" +" " +msgstr "" +"\n" +"\n" +"Antwortet mit privat. Du kannst hier nutzen aus verschachtelte Befehle ziehen." + +#: plugin.py:53 +msgid "" +"\n" +"\n" +" Replies with as an action. Use nested commands to your benefit\n" +" here.\n" +" " +msgstr "" +"\n" +"\n" +"Antwortet mit als Aktion. Du kannst hier nutzen aus verschachtelte Befehle ziehen." + +#: plugin.py:66 +msgid "" +"\n" +"\n" +" Replies with in a notice. Use nested commands to your benefit\n" +" here. If you want a private notice, nest the private command.\n" +" " +msgstr "" +"\n" +"\n" +"Antwortet mit als Notiz.Du kannst hier nutzen aus verschachtelte Befehle ziehen. Falls du eine private Notiz nutzen willst niste den privaten Befehl ein." + +#: plugin.py:76 +msgid "" +"\n" +"\n" +" Replies with . Equivalent to the alias, 'echo $nick: $1'.\n" +" " +msgstr "" +"\n" +"\n" +"Antworte mit . Gleich wie der Alias 'echo $nick: $1'." + +#: plugin.py:85 +msgid "" +" [ ...]\n" +"\n" +" Replies with each of its arguments in separate replies, depending\n" +" the configuration of supybot.reply.oneToOne.\n" +" " +msgstr "" +" [ ...]\n" +"\n" +"Antwortet mit jedem Argument in separaten Antworten, hängt von der Konfiguration von supybot.reply.oneToOne ab." + diff --git a/plugins/Reply/locale/it.po b/plugins/Reply/locale/it.po index 96d038b11..74cb69d0a 100644 --- a/plugins/Reply/locale/it.po +++ b/plugins/Reply/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-15 12:49+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Scheduler/README.txt b/plugins/Scheduler/README.txt index d60b47a97..a70bb42d6 100644 --- a/plugins/Scheduler/README.txt +++ b/plugins/Scheduler/README.txt @@ -1 +1,2 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to scheduler commands to execute at a later time. +For example, 'scheduler add [seconds 30m] "echo [cpu]"' will schedule the command "cpu" to be sent to the channel in 30 minutes. \ No newline at end of file diff --git a/plugins/Scheduler/locale/fr.po b/plugins/Scheduler/locale/fr.po index 07914c6d9..96d81d113 100644 --- a/plugins/Scheduler/locale/fr.po +++ b/plugins/Scheduler/locale/fr.po @@ -34,7 +34,7 @@ msgstr "" #: plugin.py:69 msgid "Event #%i added." -msgstr "Évènement #%i ajotué." +msgstr "Évènement #%i ajouté." #: plugin.py:74 msgid "" diff --git a/plugins/Scheduler/locale/it.po b/plugins/Scheduler/locale/it.po index 7b88bc955..38a5ea5b9 100644 --- a/plugins/Scheduler/locale/it.po +++ b/plugins/Scheduler/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-31 11:51+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Scheduler/messages.pot b/plugins/Scheduler/messages.pot index 1ee1c9364..0dcc3aaee 100644 --- a/plugins/Scheduler/messages.pot +++ b/plugins/Scheduler/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -75,7 +75,7 @@ msgid "" " " msgstr "" -#: plugin.py:209 +#: plugin.py:206 msgid "There are currently no scheduled commands." msgstr "" diff --git a/plugins/Seen/README.txt b/plugins/Seen/README.txt index d60b47a97..2fd1e6a54 100644 --- a/plugins/Seen/README.txt +++ b/plugins/Seen/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to see when and what someone last said and what you missed since you parted the channel. \ No newline at end of file diff --git a/plugins/Seen/locale/de.po b/plugins/Seen/locale/de.po new file mode 100644 index 000000000..cd8c0ac37 --- /dev/null +++ b/plugins/Seen/locale/de.po @@ -0,0 +1,132 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:33+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: plugin.py:201 +#: plugin.py:282 +msgid "%s was last seen in %s %s ago: %s" +msgstr "%s wurde zuletzt in %s vor %s gesehen: %s" + +#: plugin.py:208 +msgid "%s (%s ago)" +msgstr "%s (vor %s)" + +#: plugin.py:210 +msgid "%s could be %L" +msgstr "%s könnte %L sein" + +#: plugin.py:210 +msgid "or" +msgstr "oder" + +#: plugin.py:212 +msgid "I haven't seen anyone matching %s." +msgstr "Ich habe niemanden gesehen der auf %s passt." + +#: plugin.py:214 +#: plugin.py:286 +msgid "I have not seen %s." +msgstr "Ich habe %s nicht gesehn." + +#: plugin.py:218 +msgid "" +"[] \n" +"\n" +" Returns the last time was seen and what was last seen\n" +" saying. is only necessary if the message isn't sent on the\n" +" channel itself. may contain * as a wildcard.\n" +" " +msgstr "" +"[] \n" +"\n" +"Gibt an wann zum letzten Mal gesehen wurde und was dieser zuletzt sagte. ist nur nötig, falls die Nachricht nicht im Kanal selbst gesendet wurde. kann * als Platzhalter beinhalten." + +#: plugin.py:229 +msgid "" +"[] [--user ] []\n" +"\n" +" Returns the last time was seen and what was last seen\n" +" doing. This includes any form of activity, instead of just PRIVMSGs.\n" +" If isn't specified, returns the last activity seen in\n" +" . If --user is specified, looks up name in the user database\n" +" and returns the last time user was active in . is\n" +" only necessary if the message isn't sent on the channel itself.\n" +" " +msgstr "" +"[] [--user ] []\n" +"\n" +"Gibt zurück wann zuletzt gesehen wurde und was dieser Tat. Dies beinhaltet jede Art von Aktivität, anstatt nur PRIVMSGs. Falls nicht angegen wurde, wird die letzte gesehene Aktivität im ausgegeben. Falls --user angegeben wird, wird in der Benutzerdatenbank nachgeschaut und die Zeit ausgegeben als der Benutzer zuletzte Aktiv war im . ist nur nötig, falls die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:259 +msgid "Someone was last seen in %s %s ago: %s" +msgstr "Jemand wurde zuletzt in %s gesehen, vor %s: %s" + +#: plugin.py:263 +msgid "I have never seen anyone." +msgstr "Ich habe noch niemals jemanden gesehen." + +#: plugin.py:267 +msgid "" +"[]\n" +"\n" +" Returns the last thing said in . is only necessary\n" +" if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Gibt das zuletzt gesagte im aus. ist nur nötig, falls die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:290 +msgid "" +"[] \n" +"\n" +" Returns the last time was seen and what was last seen\n" +" saying. This looks up in the user seen database, which means\n" +" that it could be any nick recognized as user that was seen.\n" +" is only necessary if the message isn't sent in the channel\n" +" itself.\n" +" " +msgstr "" +"[] \n" +"\n" +"Gibt an wann zum letzten mal gesehen wurde und was zuletzt sagte. Der wird in der Gesehen-Datenbank nachgeschaut, dies bedeutet, dass es jeder Nick sein kann der vom Benutzer gesehen wurde. ist nur nötig, falls die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:303 +msgid "" +"[] \n" +"\n" +" Returns the messages since last left the channel.\n" +" " +msgstr "" +"[] \n" +"\n" +"Gibt die Nachrichten zurück, die seit dem verlassen von im Kanal gesendet wurden." + +#: plugin.py:310 +#, fuzzy +msgid "I am not in %s." +msgstr "Ich habe %s nicht gesehn." + +#: plugin.py:313 +#, fuzzy +msgid "%s must be in %s to use this command." +msgstr "Du musst in %s sein, um diesen Befehl zu benutzen." + +#: plugin.py:334 +msgid "I couldn't find in my history of %s messages where %r last left the %s" +msgstr "Ich konnte in meiner Vergangenheit von %s Nachrichten nichts finden, wo %r zuletzt %s verlassen hat." + +#: plugin.py:343 +msgid "Either %s didn't leave, or no messages were sent while %s was gone." +msgstr "Entweder ist %s nicht gegangen, oder keine Nachrichten wurde gesendet während %s weg war." + diff --git a/plugins/Seen/locale/fi.po b/plugins/Seen/locale/fi.po index be8b73244..d3d58a4f2 100644 --- a/plugins/Seen/locale/fi.po +++ b/plugins/Seen/locale/fi.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-08-10 11:28+CEST\n" -"PO-Revision-Date: 2011-08-10 13:04+0200\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-03-15 08:21+0200\n" "Last-Translator: Mika Suomalainen \n" "Language-Team: \n" "Language: \n" @@ -15,33 +15,33 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -#: plugin.py:204 -#: plugin.py:285 +#: plugin.py:201 +#: plugin.py:282 msgid "%s was last seen in %s %s ago: %s" msgstr "%s nähtiin viimeeksi kanavalla %s %s sitten: %s" -#: plugin.py:211 +#: plugin.py:208 msgid "%s (%s ago)" msgstr "%s (%s sitten)" -#: plugin.py:213 +#: plugin.py:210 msgid "%s could be %L" msgstr "%s voisi olla %L" -#: plugin.py:213 +#: plugin.py:210 msgid "or" msgstr "tai" -#: plugin.py:215 +#: plugin.py:212 msgid "I haven't seen anyone matching %s." msgstr "En ole nähnyt kenenkään täsmäävän %s." -#: plugin.py:217 -#: plugin.py:289 +#: plugin.py:214 +#: plugin.py:286 msgid "I have not seen %s." msgstr "En ole nähnyt %s:ää." -#: plugin.py:221 +#: plugin.py:218 msgid "" "[] \n" "\n" @@ -57,7 +57,7 @@ msgstr "" " itsellään.\n" " " -#: plugin.py:232 +#: plugin.py:229 msgid "" "[] [--user ] []\n" "\n" @@ -79,15 +79,15 @@ msgstr "" " on vaadittu vain, jos viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:262 +#: plugin.py:259 msgid "Someone was last seen in %s %s ago: %s" msgstr "Joky nähtiin viimeeksi kanavalla %s %s sitten: %s" -#: plugin.py:266 +#: plugin.py:263 msgid "I have never seen anyone." msgstr "Minä en ole nähnyt ketään." -#: plugin.py:270 +#: plugin.py:267 msgid "" "[]\n" "\n" @@ -101,7 +101,7 @@ msgstr "" " viestiä ei lähetetä kanavalla itsellään.\n" " " -#: plugin.py:293 +#: plugin.py:290 msgid "" "[] \n" "\n" @@ -121,7 +121,7 @@ msgstr "" " itsellään.\n" " " -#: plugin.py:306 +#: plugin.py:303 msgid "" "[] \n" "\n" @@ -133,9 +133,13 @@ msgstr "" " Palauttaa sen jälkeiset viestit, kun viimeksi poistui kanavalta.\n" " " +#: plugin.py:310 +msgid "I am not in %s." +msgstr "En ole nähnyt %s:ää." + #: plugin.py:313 -msgid "You must be in %s to use this command." -msgstr "Sinun täytyy olla %s käyttääksesi tätä komentoa." +msgid "%s must be in %s to use this command." +msgstr "Käyttäjän %s täytyy olla kanavalla %s käyttääkseen tätä komentoa." #: plugin.py:334 msgid "I couldn't find in my history of %s messages where %r last left the %s" diff --git a/plugins/Seen/locale/fr.po b/plugins/Seen/locale/fr.po index c2461fd2a..543e23031 100644 --- a/plugins/Seen/locale/fr.po +++ b/plugins/Seen/locale/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-08-10 11:28+CEST\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: \n" "Last-Translator: Valentin Lorentz \n" "Language-Team: Supybot-fr \n" @@ -13,33 +13,33 @@ msgstr "" "X-Poedit-Country: France\n" "X-Poedit-SourceCharset: ASCII\n" -#: plugin.py:204 -#: plugin.py:285 +#: plugin.py:201 +#: plugin.py:282 msgid "%s was last seen in %s %s ago: %s" msgstr "%s a été vu pour la dernière fois sur %i il y a %s : %s" -#: plugin.py:211 +#: plugin.py:208 msgid "%s (%s ago)" msgstr "%s (il y a %s)" -#: plugin.py:213 +#: plugin.py:210 msgid "%s could be %L" msgstr "%s doit être %L" -#: plugin.py:213 +#: plugin.py:210 msgid "or" msgstr "ou" -#: plugin.py:215 +#: plugin.py:212 msgid "I haven't seen anyone matching %s." msgstr "Je n'ai vu personne correspondant à %s." -#: plugin.py:217 -#: plugin.py:289 +#: plugin.py:214 +#: plugin.py:286 msgid "I have not seen %s." msgstr "Je n'ai pas vu %s." -#: plugin.py:221 +#: plugin.py:218 msgid "" "[] \n" "\n" @@ -52,7 +52,7 @@ msgstr "" "\n" "Retourne la dernière fois que le a été vu et la dernière fois que a parlé. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même. peut contenir le joker *." -#: plugin.py:232 +#: plugin.py:229 msgid "" "[] [--user ] []\n" "\n" @@ -68,15 +68,15 @@ msgstr "" "\n" "Retourne la dernière fois que le a été vu et ce quand il a fait quelque chose pour la première fois. Cela inclue toute forme d'activité, et pas uniquement envoyer des messages. Si le n'est pas donné, retourne la dernière activité vue sur le . Si --user est spécifié, recherche le nom dans la base de données des utilisateurs la dernière fois que celui en question a été vu actif sur le n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:262 +#: plugin.py:259 msgid "Someone was last seen in %s %s ago: %s" msgstr "Quelqu'un a été vu pour la dernière fois sur %s il y a %s : %s" -#: plugin.py:266 +#: plugin.py:263 msgid "I have never seen anyone." msgstr "Je n'ai jamais vu personne." -#: plugin.py:270 +#: plugin.py:267 msgid "" "[]\n" "\n" @@ -88,7 +88,7 @@ msgstr "" "\n" "Retourne la dernière chose dite sur le . n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:293 +#: plugin.py:290 msgid "" "[] \n" "\n" @@ -103,7 +103,7 @@ msgstr "" "\n" "Retourne la dernière fois que a été vu et la dernière fois que a été vu parler. Cela recherche dans la base de données des utilisateurs vus, ce qui signifie que si le nick n'était pas reconnu comme l'utilisateur , il n'est pas considéré comme vu. n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." -#: plugin.py:306 +#: plugin.py:303 msgid "" "[] \n" "\n" @@ -114,9 +114,13 @@ msgstr "" "\n" "Retourne les messages depuis que est parti du canal." +#: plugin.py:310 +msgid "I am not in %s." +msgstr "Je ne suis pas dans %s." + #: plugin.py:313 -msgid "You must be in %s to use this command." -msgstr "Vous devez être sur %s pour utiliser cette commande." +msgid "%s must be in %s to use this command." +msgstr "%s doit être dans %s pour utiliser cette commande." #: plugin.py:334 msgid "I couldn't find in my history of %s messages where %r last left the %s" diff --git a/plugins/Seen/locale/it.po b/plugins/Seen/locale/it.po index a4e2b416a..1847c566b 100644 --- a/plugins/Seen/locale/it.po +++ b/plugins/Seen/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-08-10 14:43+0200\n" +"PO-Revision-Date: 2012-03-16 00:09+0100\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -10,31 +10,31 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: plugin.py:204 plugin.py:285 +#: plugin.py:201 plugin.py:282 msgid "%s was last seen in %s %s ago: %s" msgstr "%s è stato visto per l'ultima volta in %s %s fa: %s" -#: plugin.py:211 +#: plugin.py:208 msgid "%s (%s ago)" msgstr "%s (%s fa)" -#: plugin.py:213 +#: plugin.py:210 msgid "%s could be %L" msgstr "%s potrebbe essere %L" -#: plugin.py:213 +#: plugin.py:210 msgid "or" msgstr "oppure" -#: plugin.py:215 +#: plugin.py:212 msgid "I haven't seen anyone matching %s." msgstr "Non ho visto nessuno che corrisponda a %s." -#: plugin.py:217 plugin.py:289 +#: plugin.py:214 plugin.py:286 msgid "I have not seen %s." msgstr "Non ho visto %s." -#: plugin.py:221 +#: plugin.py:218 #, docstring msgid "" "[] \n" @@ -51,7 +51,7 @@ msgstr "" " stesso. può contenere * come wildcard.\n" " " -#: plugin.py:232 +#: plugin.py:229 #, docstring msgid "" "[] [--user ] []\n" @@ -74,15 +74,15 @@ msgstr "" " solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:262 +#: plugin.py:259 msgid "Someone was last seen in %s %s ago: %s" msgstr "Qualcuno è stato visto per l'ultima volta in %s %s fa: %s" -#: plugin.py:266 +#: plugin.py:263 msgid "I have never seen anyone." msgstr "Non ho mai visto nessuno." -#: plugin.py:270 +#: plugin.py:267 #, docstring msgid "" "[]\n" @@ -97,7 +97,7 @@ msgstr "" " solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:293 +#: plugin.py:290 #, docstring msgid "" "[] \n" @@ -117,7 +117,7 @@ msgstr "" " è necessario solo se il messaggio non viene inviato nel canale stesso.\n" " " -#: plugin.py:306 +#: plugin.py:303 #, docstring msgid "" "[] \n" @@ -130,9 +130,13 @@ msgstr "" " Riporta i messaggi da quando ha lasciato il canale l'ultima volta.\n" " " +#: plugin.py:310 +msgid "I am not in %s." +msgstr "Non sono in %s." + #: plugin.py:313 -msgid "You must be in %s to use this command." -msgstr "Per usare questo comando bisogna essere in %s." +msgid "%s must be in %s to use this command." +msgstr "Per usare questo comando %s deve essere in %s." #: plugin.py:334 msgid "I couldn't find in my history of %s messages where %r last left the %s" diff --git a/plugins/Seen/messages.pot b/plugins/Seen/messages.pot index 0613f4983..2c6837cfe 100644 --- a/plugins/Seen/messages.pot +++ b/plugins/Seen/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-08-10 11:28+CEST\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,31 +15,31 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: plugin.py:204 plugin.py:285 +#: plugin.py:201 plugin.py:282 msgid "%s was last seen in %s %s ago: %s" msgstr "" -#: plugin.py:211 +#: plugin.py:208 msgid "%s (%s ago)" msgstr "" -#: plugin.py:213 +#: plugin.py:210 msgid "%s could be %L" msgstr "" -#: plugin.py:213 +#: plugin.py:210 msgid "or" msgstr "" -#: plugin.py:215 +#: plugin.py:212 msgid "I haven't seen anyone matching %s." msgstr "" -#: plugin.py:217 plugin.py:289 +#: plugin.py:214 plugin.py:286 msgid "I have not seen %s." msgstr "" -#: plugin.py:221 +#: plugin.py:218 #, docstring msgid "" "[] \n" @@ -50,7 +50,7 @@ msgid "" " " msgstr "" -#: plugin.py:232 +#: plugin.py:229 #, docstring msgid "" "[] [--user ] []\n" @@ -64,15 +64,15 @@ msgid "" " " msgstr "" -#: plugin.py:262 +#: plugin.py:259 msgid "Someone was last seen in %s %s ago: %s" msgstr "" -#: plugin.py:266 +#: plugin.py:263 msgid "I have never seen anyone." msgstr "" -#: plugin.py:270 +#: plugin.py:267 #, docstring msgid "" "[]\n" @@ -82,7 +82,7 @@ msgid "" " " msgstr "" -#: plugin.py:293 +#: plugin.py:290 #, docstring msgid "" "[] \n" @@ -95,7 +95,7 @@ msgid "" " " msgstr "" -#: plugin.py:306 +#: plugin.py:303 #, docstring msgid "" "[] \n" @@ -104,8 +104,12 @@ msgid "" " " msgstr "" +#: plugin.py:310 +msgid "I am not in %s." +msgstr "" + #: plugin.py:313 -msgid "You must be in %s to use this command." +msgid "%s must be in %s to use this command." msgstr "" #: plugin.py:334 diff --git a/plugins/Seen/plugin.py b/plugins/Seen/plugin.py index 565a28c54..58ff91583 100644 --- a/plugins/Seen/plugin.py +++ b/plugins/Seen/plugin.py @@ -1,6 +1,6 @@ ### # Copyright (c) 2002-2004, Jeremiah Fincher -# Copyright (c) 2010, James Vega +# Copyright (c) 2010-2011, James Vega # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -68,7 +68,7 @@ class SeenDB(plugins.ChannelUserDB): def seenWildcard(self, channel, nick): nicks = ircutils.IrcSet() - nickRe = re.compile('.*'.join(nick.split('*')), re.I) + nickRe = re.compile('^%s$' % '.*'.join(nick.split('*')), re.I) for (searchChan, searchNick) in self.keys(): #print 'chan: %s ... nick: %s' % (searchChan, searchNick) if isinstance(searchNick, int): @@ -77,11 +77,8 @@ class SeenDB(plugins.ChannelUserDB): # are keyed by nick-string continue if ircutils.strEqual(searchChan, channel): - try: - s = nickRe.match(searchNick).group() - except AttributeError: - continue - nicks.add(s) + if nickRe.search(searchNick) is not None: + nicks.add(searchNick) L = [[nick, self.seen(channel, nick)] for nick in nicks] def negativeTime(x): return -x[1][0] @@ -309,9 +306,12 @@ class Seen(callbacks.Plugin): """ if nick is None: nick = msg.nick + if channel not in irc.state.channels: + irc.error(_('I am not in %s.') % channel) + return if nick not in irc.state.channels[channel].users: - irc.error(format(_('You must be in %s to use this command.'), - channel)) + irc.error(format(_('%s must be in %s to use this command.'), + ('You' if nick == msg.nick else nick), channel)) return end = None # By default, up until the most recent message. for (i, m) in utils.seq.renumerate(irc.state.history): diff --git a/plugins/Services/README.txt b/plugins/Services/README.txt index d60b47a97..5d9a12ec4 100644 --- a/plugins/Services/README.txt +++ b/plugins/Services/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows the bot to interact with ChanServ and NickServ to regain access to channels and it's nick. \ No newline at end of file diff --git a/plugins/Services/locale/de.po b/plugins/Services/locale/de.po new file mode 100644 index 000000000..1275b64ad --- /dev/null +++ b/plugins/Services/locale/de.po @@ -0,0 +1,249 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-11-13 18:58+0100\n" +"Last-Translator: Florian Besser \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: config.py:39 +msgid "Determines what password the bot will use with NickServ when identifying as %s." +msgstr "Legt fest welches Passwort der Bot verwenden wird um sich als %s bei NickServ zu identifizieren." + +#: config.py:49 +msgid "What is your registered nick?" +msgstr "Wie ist der registrierte Nick?" + +#: config.py:50 +msgid "What is your password for that nick?" +msgstr "Was ist dein Passwort für den Nick?" + +#: config.py:51 +msgid "What is your ChanServ named?" +msgstr "Wie heißt der ChanServ?" + +#: config.py:52 +msgid "What is your NickServ named?" +msgstr "Wie heißt der NickServ?" + +#: config.py:70 +msgid "" +"Determines what nicks the bot will use with\n" +" services." +msgstr "Legt fest der was für einen Nick der Bot mit den Services nutzt." + +#: config.py:77 +msgid "" +"Determines what networks this plugin\n" +" will be disabled on." +msgstr "Legt fest auf welchen Netzwerken dieses Plugin deaktiviert sein soll." + +#: config.py:77 +msgid "QuakeNet" +msgstr "QuakeNet" + +#: config.py:81 +msgid "" +"Determines whether the bot will not join any\n" +" channels until it is identified. This may be useful, for instances, if\n" +" you have a vhost that isn't set until you're identified, or if you're\n" +" joining +r channels that won't allow you to join unless you identify." +msgstr "Legt fest ob der Bot Kanäle betreten soll, solange er noch nicht identifiziert ist. Das könnte nützlich sein falls du einen vHost hast der erst nach dem Identifizeren gesetzt wird, oder du +R Kanaäle betreten willt, die es nicht erlauben sie zu betreten solange du nicht identifiziert bist." + +#: config.py:86 +msgid "" +"Determines how many seconds the bot will\n" +" wait between successive GHOST attempts." +msgstr "legt fest wie viele Sekunden der Bot zwischen GHOST versuchen wartet." + +#: config.py:89 +msgid "" +"Determines what nick the 'NickServ' service\n" +" has." +msgstr "Legt fest welchen Nick der 'NickServ' Service hat." + +#: config.py:93 +msgid "" +"Determines what nick the 'ChanServ' service\n" +" has." +msgstr "Legt fest welchen Nick der 'ChanServ' Service hat." + +#: config.py:96 +msgid "" +"Determines what password the bot will use with\n" +" ChanServ." +msgstr "Legt fest welches Passwort der Bot für den ChanServ nutzt." + +#: config.py:99 +msgid "" +"Determines whether the bot will request to get\n" +" opped by the ChanServ when it joins the channel." +msgstr "Legt fest ob der Bot Op von ChanServ erfragen soll, sobald er einen Kanal betritt." + +#: config.py:102 +msgid "" +"Determines whether the bot will request to get\n" +" half-opped by the ChanServ when it joins the channel." +msgstr "Legt fest ob der Bot halb-Op von ChanServ erfragen soll, sobald er einen Kanal betritt." + +#: config.py:105 +msgid "" +"Determines whether the bot will request to get\n" +" voiced by the ChanServ when it joins the channel." +msgstr "Legt fest ob der Bot Voice von ChanServ erfragen soll, sobald er einen Kanal betritt." + +#: plugin.py:47 +msgid "" +"This plugin handles dealing with Services on networks that provide them.\n" +" Basically, you should use the \"password\" command to tell the bot a nick to\n" +" identify with and what password to use to identify with that nick. You can\n" +" use the password command multiple times if your bot has multiple nicks\n" +" registered. Also, be sure to configure the NickServ and ChanServ\n" +" configuration variables to match the NickServ and ChanServ nicks on your\n" +" network. Other commands such as identify, op, etc. should not be\n" +" necessary if the bot is properly configured." +msgstr "Die Plugin kümmert sich um die Services, die das Netzwerk anbietet. Du solltest den \"password\" Befehl nutzen um den Bot zu sagen mit welchem Nick er sich identifizieren soll und welches Passwort er verwenden soll um sich zu identifizieren. Du kanns den Passwort Befehl mehrere Male benutzen, falls dein Bot mehrere Nicks registriert hat. Stelle außerdem sicher,dass die NickServ und ChanServ Variablen auf die NickServ und ChanServ Nicks im Netzwerk zutreffen. Andere Befehle, wie identify, op etc., sollten nicht nötig sein falls der Bot richtig konfiguriert ist." + +#: plugin.py:397 +msgid "You must set supybot.plugins.Services.ChanServ before I'm able to send the %s command." +msgstr "Du musst supybot.plugins.Services.ChanServ setzen, damit es mir möglich ist den %s Befehl auszuführen." + +#: plugin.py:403 +msgid "" +"[]\n" +"\n" +" Attempts to get opped by ChanServ in . is only\n" +" necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Versucht Op durch ChanServ im zu bekommen. ist nur notwendig, falls die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:409 +msgid "I'm already opped in %s." +msgstr "Ich habe schon Op in %s." + +#: plugin.py:416 +msgid "" +"[]\n" +"\n" +" Attempts to get voiced by ChanServ in . is only\n" +" necessary if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Versucht Voice durch ChanServ im zu bekommen. ist nur notwendig, falls die Nachricht nicht im Kanal selbst gesendet wurde." + +#: plugin.py:422 +msgid "I'm already voiced in %s." +msgstr "Ich habe schon Voice in %s." + +#: plugin.py:439 +msgid "" +"[]\n" +"\n" +" Attempts to get unbanned by ChanServ in . is only\n" +" necessary if the message isn't sent in the channel itself, but chances\n" +" are, if you need this command, you're not sending it in the channel\n" +" itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Versucht Op durch ChanServ im zu bekommen. ist nur notwendig, falls die Nachricht nicht im Kanal selbst gesendet wurde, wahrscheinlich wird der Befehl sowieso nicht im Kanal selbst gesendet, wenn du den Befehl braucht." + +#: plugin.py:460 +msgid "" +"[]\n" +"\n" +" Attempts to get invited by ChanServ to . is only\n" +" necessary if the message isn't sent in the channel itself, but chances\n" +" are, if you need this command, you're not sending it in the channel\n" +" itself.\n" +" " +msgstr "" +"[]\n" +"\n" +"Versucht Op durch ChanServ im zu bekommen. ist nur notwendig, falls die Nachricht nicht im Kanal selbst gesendet wurde, wahrscheinlich wird der Befehl sowieso nicht im Kanal selbst gesendet, wenn du den Befehl braucht." + +#: plugin.py:481 +msgid "" +"takes no arguments\n" +"\n" +" Identifies with NickServ using the current nick.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Identifiziert mit dem NickServ mit dem momentanen Nick." + +#: plugin.py:490 +msgid "I don't have a configured password for my current nick." +msgstr "Du hast kein Passwort für meinen momentanen Nick konfiguriert." + +#: plugin.py:493 +msgid "You must set supybot.plugins.Services.NickServ before I'm able to do identify." +msgstr "Du musst supybot.plugins.Services.NickServ setzen, damit es mich möglich ist mich zu identifizieren." + +#: plugin.py:499 +msgid "" +"[]\n" +"\n" +" Ghosts the bot's given nick and takes it. If no nick is given,\n" +" ghosts the bot's configured nick and takes it.\n" +" " +msgstr "" +"[]\n" +"\n" +"'Ghost' den Bot Nick und nimmt ihn sich. Falls kein Nick angegeben wirde, wird 'ghost' für den konfigurierten Nick gesendet." + +#: plugin.py:508 +msgid "I cowardly refuse to ghost myself." +msgstr "Ich verweigere es auf mich selbst 'ghost' anzuwenden." + +#: plugin.py:513 +msgid "You must set supybot.plugins.Services.NickServ before I'm able to ghost a nick." +msgstr "Du musst supybot.plugins.Services.NickServ setzen, erst dann ist es mir möglich 'ghost' auf einen Nick anzuwenden." + +#: plugin.py:519 +msgid "" +" []\n" +"\n" +" Sets the NickServ password for to . If is\n" +" not given, removes from the configured nicks.\n" +" " +msgstr "" +" []\\n" +"\n" +"Setzt das NickServ Passwort für auf . Falls nicht angegeben wurde, wird der aus der Liste der konfigurierten Nicks entfernt." + +#: plugin.py:529 +msgid "That nick was not configured with a password." +msgstr "Für diesen Nick wurde kein Passwort konfiguriert." + +#: plugin.py:540 +msgid "" +"takes no arguments\n" +"\n" +" Returns the nicks that this plugin is configured to identify and ghost\n" +" with.\n" +" " +msgstr "" +"hat keine Argumente \n" +"\n" +"Gibt die Nicks aus, für die dieses Plugin konfiguriert wurde um sich zu identifizieren und 'ghost' zu benutzen." + +#: plugin.py:550 +msgid "I'm not currently configured for any nicks." +msgstr "Ich habe zur Zeit keine Nicks konfiguriert." + diff --git a/plugins/Services/locale/it.po b/plugins/Services/locale/it.po index 74972e5cd..ff2cc43c4 100644 --- a/plugins/Services/locale/it.po +++ b/plugins/Services/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-10 12:57+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Services/messages.pot b/plugins/Services/messages.pot index 27bdb4754..42e2e7d0b 100644 --- a/plugins/Services/messages.pot +++ b/plugins/Services/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -114,11 +114,11 @@ msgid "" " necessary if the bot is properly configured." msgstr "" -#: plugin.py:397 +#: plugin.py:402 msgid "You must set supybot.plugins.Services.ChanServ before I'm able to send the %s command." msgstr "" -#: plugin.py:403 +#: plugin.py:408 #, docstring msgid "" "[]\n" @@ -128,11 +128,11 @@ msgid "" " " msgstr "" -#: plugin.py:409 +#: plugin.py:414 msgid "I'm already opped in %s." msgstr "" -#: plugin.py:416 +#: plugin.py:421 #, docstring msgid "" "[]\n" @@ -142,11 +142,11 @@ msgid "" " " msgstr "" -#: plugin.py:422 +#: plugin.py:427 msgid "I'm already voiced in %s." msgstr "" -#: plugin.py:439 +#: plugin.py:444 #, docstring msgid "" "[]\n" @@ -158,7 +158,7 @@ msgid "" " " msgstr "" -#: plugin.py:460 +#: plugin.py:465 #, docstring msgid "" "[]\n" @@ -170,7 +170,7 @@ msgid "" " " msgstr "" -#: plugin.py:481 +#: plugin.py:486 #, docstring msgid "" "takes no arguments\n" @@ -179,15 +179,15 @@ msgid "" " " msgstr "" -#: plugin.py:490 +#: plugin.py:495 msgid "I don't have a configured password for my current nick." msgstr "" -#: plugin.py:493 +#: plugin.py:498 msgid "You must set supybot.plugins.Services.NickServ before I'm able to do identify." msgstr "" -#: plugin.py:499 +#: plugin.py:504 #, docstring msgid "" "[]\n" @@ -197,15 +197,15 @@ msgid "" " " msgstr "" -#: plugin.py:508 +#: plugin.py:513 msgid "I cowardly refuse to ghost myself." msgstr "" -#: plugin.py:513 +#: plugin.py:518 msgid "You must set supybot.plugins.Services.NickServ before I'm able to ghost a nick." msgstr "" -#: plugin.py:519 +#: plugin.py:524 #, docstring msgid "" " []\n" @@ -215,11 +215,11 @@ msgid "" " " msgstr "" -#: plugin.py:529 +#: plugin.py:534 msgid "That nick was not configured with a password." msgstr "" -#: plugin.py:540 +#: plugin.py:545 #, docstring msgid "" "takes no arguments\n" @@ -229,7 +229,7 @@ msgid "" " " msgstr "" -#: plugin.py:550 +#: plugin.py:555 msgid "I'm not currently configured for any nicks." msgstr "" diff --git a/plugins/Services/plugin.py b/plugins/Services/plugin.py index b763202c5..c55eb8866 100644 --- a/plugins/Services/plugin.py +++ b/plugins/Services/plugin.py @@ -30,7 +30,6 @@ import re import time -import copy import config @@ -64,7 +63,7 @@ class Services(callbacks.Plugin): self.channels = [] self.sentGhost = None self.identified = False - self.waitingJoins = [] + self.waitingJoins = {} def disabled(self, irc): disabled = self.registryValue('disabledNetworks') @@ -79,12 +78,17 @@ class Services(callbacks.Plugin): if self.registryValue('noJoinsUntilIdentified'): self.log.info('Holding JOIN to %s until identified.', msg.args[0]) - self.waitingJoins.append((irc.network, msg,)) + self.waitingJoins.setdefault(irc.network, []) + self.waitingJoins[irc.network].append(msg) return None return msg - def _getNick(self): - return conf.supybot.nick() + def _getNick(self, network): + network_nick = conf.supybot.networks.get(network).nick() + if network_nick == '': + return conf.supybot.nick() + else: + return network_nick def _getNickServPassword(self, nick): # This should later be nick-specific. @@ -100,7 +104,7 @@ class Services(callbacks.Plugin): if self.disabled(irc): return if nick is None: - nick = self._getNick() + nick = self._getNick(irc.network) if nick not in self.registryValue('nicks'): return nickserv = self.registryValue('NickServ') @@ -122,7 +126,7 @@ class Services(callbacks.Plugin): if self.disabled(irc): return if nick is None: - nick = self._getNick() + nick = self._getNick(irc.network) if nick not in self.registryValue('nicks'): return nickserv = self.registryValue('NickServ') @@ -150,7 +154,7 @@ class Services(callbacks.Plugin): self.__parent.__call__(irc, msg) if self.disabled(irc): return - nick = self._getNick() + nick = self._getNick(irc.network) if nick not in self.registryValue('nicks'): return nickserv = self.registryValue('NickServ') @@ -172,7 +176,7 @@ class Services(callbacks.Plugin): def do376(self, irc, msg): if self.disabled(irc): return - nick = self._getNick() + nick = self._getNick(irc.network) if nick not in self.registryValue('nicks'): return nickserv = self.registryValue('NickServ') @@ -196,7 +200,7 @@ class Services(callbacks.Plugin): def do433(self, irc, msg): if self.disabled(irc): return - nick = self._getNick() + nick = self._getNick(irc.network) if nick not in self.registryValue('nicks'): return if nick and irc.afterConnect: @@ -210,15 +214,15 @@ class Services(callbacks.Plugin): self.channels.append(msg.args[1]) def doNick(self, irc, msg): - nick = self._getNick() + nick = self._getNick(irc.network) if ircutils.strEqual(msg.args[0], irc.nick) and \ ircutils.strEqual(irc.nick, nick): self._doIdentify(irc) elif ircutils.strEqual(msg.nick, nick): irc.sendMsg(ircmsgs.nick(nick)) - def _ghosted(self, s): - nick = self._getNick() + def _ghosted(self, irc, s): + nick = self._getNick(irc.network) lowered = s.lower() return bool('killed' in lowered and (nick in s or 'ghost' in lowered)) @@ -247,7 +251,7 @@ class Services(callbacks.Plugin): # You have been unbanned from (oftc) irc.sendMsg(networkGroup.channels.join(channel)) elif 'isn\'t registered' in s: - self.log.warning('Received "%s isn\'t registered" from ChanServ %', + self.log.warning('Received "%s isn\'t registered" from ChanServ %s', channel, on) elif 'this channel has been registered' in s: self.log.debug('Got "Registered channel" from ChanServ %s.', on) @@ -267,7 +271,7 @@ class Services(callbacks.Plugin): def doNickservNotice(self, irc, msg): if self.disabled(irc): return - nick = self._getNick() + nick = self._getNick(irc.network) s = ircutils.stripFormatting(msg.args[1].lower()) on = 'on %s' % irc.network networkGroup = conf.supybot.networks.get(irc.network) @@ -277,7 +281,7 @@ class Services(callbacks.Plugin): self.log.warning(log) self.sentGhost = time.time() self._setNickServPassword(nick, '') - elif self._ghosted(s): + elif self._ghosted(irc, s): self.log.info('Received "GHOST succeeded" from NickServ %s.', on) self.sentGhost = None self.identified = False @@ -316,15 +320,10 @@ class Services(callbacks.Plugin): self.checkPrivileges(irc, channel) for channel in self.channels: irc.queueMsg(networkGroup.channels.join(channel)) - if self.waitingJoins: - tmp_wj = copy.deepcopy(self.waitingJoins) # can't iterate over list if we're modifying it - for netname, m in tmp_wj: - if netname == irc.network: - irc.sendMsg(m) - try: - self.waitingJoins.remove((netname, m,)) - except ValueError: - pass # weird stuff happen sometimes + waitingJoins = self.waitingJoins.pop(irc.network, None) + if waitingJoins: + for m in waitingJoins: + irc.sendMsg(m) elif 'not yet authenticated' in s: # zirc.org has this, it requires an auth code. email = s.split()[-1] @@ -509,7 +508,7 @@ class Services(callbacks.Plugin): """ if self.registryValue('NickServ'): if not nick: - nick = self._getNick() + nick = self._getNick(irc.network) if ircutils.strEqual(nick, irc.nick): irc.error(_('I cowardly refuse to ghost myself.')) else: diff --git a/plugins/ShrinkUrl/README.txt b/plugins/ShrinkUrl/README.txt index d60b47a97..ed375c1dc 100644 --- a/plugins/ShrinkUrl/README.txt +++ b/plugins/ShrinkUrl/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin features commands to shorten URLs through different services, like tinyurl. \ No newline at end of file diff --git a/plugins/ShrinkUrl/config.py b/plugins/ShrinkUrl/config.py index 5a2b6355e..54778cd41 100644 --- a/plugins/ShrinkUrl/config.py +++ b/plugins/ShrinkUrl/config.py @@ -42,11 +42,11 @@ def configure(advanced): conf.supybot.plugins.ShrinkUrl.shrinkSnarfer.setValue(True) class ShrinkService(registry.OnlySomeStrings): - """Valid values include 'ln', 'tiny', 'xrl', and 'x0'.""" - validStrings = ('ln', 'tiny', 'xrl', 'x0') + """Valid values include 'ln', 'tiny', 'xrl', 'goo', and 'x0'.""" + validStrings = ('ln', 'tiny', 'xrl', 'goo', 'x0') class ShrinkCycle(registry.SpaceSeparatedListOfStrings): - """Valid values include 'ln', 'tiny', 'xrl', and 'x0'.""" + """Valid values include 'ln', 'tiny', 'xrl', 'goo', and 'x0'.""" Value = ShrinkService def __init__(self, *args, **kwargs): diff --git a/plugins/ShrinkUrl/locale/fi.po b/plugins/ShrinkUrl/locale/fi.po new file mode 100644 index 000000000..170c2ddd9 --- /dev/null +++ b/plugins/ShrinkUrl/locale/fi.po @@ -0,0 +1,160 @@ +# ShrinkUrl plugin in Limnoria. +# Copyright (C) 2011 Limnoria +# Mika Suomalainen , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: Limnoria\n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-09-30 20:14+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: config.py:39 +msgid "" +"This plugin offers a snarfer that will go retrieve a shorter\n" +" version of long URLs that are sent to the channel. Would you\n" +" like this snarfer to be enabled?" +msgstr "" +"Tämä lisäosa tarjoaa kaappaajan,joka palauttaa lyhyemmän\n" +" version pitkistä URL-osoitteista, jotka lähetetään kanavalle. Haluaisitko\n" +" tämän kaappaajan olevan käytössä?" + +#: config.py:45 +#: config.py:49 +#, docstring +msgid "Valid values include 'ln', 'tiny', 'xrl', and 'x0'." +msgstr "Kelvollisen arvot ovat 'ln', 'tiny', 'xrl', ja 'x0'." + +#: config.py:71 +msgid "" +"Determines whether the\n" +" shrink snarfer is enabled. This snarfer will watch for URLs in the\n" +" channel, and if they're sufficiently long (as determined by\n" +" supybot.plugins.ShrinkUrl.minimumLength) it will post a\n" +" smaller URL from either ln-s.net or tinyurl.com, as denoted in\n" +" supybot.plugins.ShrinkUrl.default." +msgstr "" +"Määrittää onko kutistuskaappain käytössä.\n" +" Tämä kaappaaja vahtii URL-osoitteita kanavalla\n" +" ja jos ne ovat tarpeeksi pitkiä (määritetty asetusarvolla\n" +" supybot.plugins.ShrinkUrl.minimumLength), se lähettää lyhyemmän URL-osoitteen\n" +" joko sivustolta ln-s.net tai tinyurl.com, riippuen, minkä asetuksen\n" +" supybot.plugins.ShrinkUrl.default määrittää." + +#: config.py:78 +msgid "" +"Determines whether the snarfer will show the\n" +" domain of the URL being snarfed along with the shrunken URL." +msgstr "" +"Määrittää näyttääkö kaappaaja kaapatun URL-osoitteen domainin lyhennetyn\n" +" URL-osoitteen kanssa." + +#: config.py:81 +msgid "" +"The minimum length a URL must be before\n" +" the bot will shrink it." +msgstr "" +"Vähimmäispituus joka URL-osoitteen täytyy olla, ennen kuin\n" +" botti kutistaa sen." + +#: config.py:84 +msgid "" +"Determines what URLs are to be snarfed; URLs\n" +" matching the regexp given will not be snarfed. Give the empty string if\n" +" you have no URLs that you'd like to exclude from being snarfed." +msgstr "" +"Määrittää mitä URL-osoitteita ei kaapata; URL-osoitteet, jotka\n" +" täsmäävät annettuun säännölliseen lausekkeeseen jätetään kaappaamatta. Anna tyhjä merkkiketju, jos\n" +" et halua estää mitään URL-osoitetta tulemasta kaapatuksi." + +#: config.py:88 +msgid "" +"Determines whether the bot will shrink the\n" +" URLs of outgoing messages if those URLs are longer than\n" +" supybot.plugins.ShrinkUrl.minimumLength." +msgstr "" +"Määrittää lyhentääkö botti ulosmenevien viestien\n" +" URL-osoitteet, jos ne ovat pidempiä kuin\n" +" supybot.plugins.ShrinkUrl.minimumLength." + +#: config.py:92 +msgid "" +"Determines what website the bot will use when\n" +" shrinking a URL." +msgstr "" +"Määrittää mitä verkkosivua botti käyttää lyhentäessään\n" +" URL-osoitetta." + +#: config.py:95 +msgid "" +"Determines whether this plugin will bold\n" +" certain portions of its replies." +msgstr "" +"Määrittää korostaako botti tietyt osat\n" +" vastauksissaan." + +#: config.py:98 +msgid "" +"If set to a non-empty value, specifies the list of\n" +" services to rotate through for the shrinkSnarfer and outFilter." +msgstr "" +"Jos tämä on asetettu muuksi, kuin tyhjäksi arvoksi, määrittää listan\n" +" palveluista, joita käytetään kutistuskaappaajalle ja ulostulon suodattimelle." + +#: plugin.py:169 +#, docstring +msgid "" +"\n" +"\n" +" Returns an ln-s.net version of .\n" +" " +msgstr "" +"\n" +"\n" +" Palauttaa ln-s.net version .\n" +" " + +#: plugin.py:194 +#, docstring +msgid "" +"\n" +"\n" +" Returns a TinyURL.com version of \n" +" " +msgstr "" +"\n" +"\n" +" Palauttaa TinyURL.com palvelun lyhentämän version .\n" +" " + +#: plugin.py:222 +#, docstring +msgid "" +"\n" +"\n" +" Returns an xrl.us version of .\n" +" " +msgstr "" +"\n" +"\n" +" Palauttaa xrl.us palvelun lyhentämän version .\n" +" " + +#: plugin.py:248 +#, docstring +msgid "" +"\n" +"\n" +" Returns an x0.no version of .\n" +" " +msgstr "" +"\n" +"\n" +" Palauttaa x0.no palvelun lyhentämän version .\n" +" " + diff --git a/plugins/ShrinkUrl/locale/it.po b/plugins/ShrinkUrl/locale/it.po index 39589a43f..55dd8c37d 100644 --- a/plugins/ShrinkUrl/locale/it.po +++ b/plugins/ShrinkUrl/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-06-15 19:49+0200\n" +"PO-Revision-Date: 2012-06-09 09:03+0200\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -20,11 +20,15 @@ msgstr "" "Questo plugin offre un cattura URL che riporterà una versione accorciata\n" " di quelli lunghi inviati al canale. Lo si vuole abilitare?\n" - -#: config.py:45 config.py:49 +#: config.py:45 #, docstring -msgid "Valid values include 'ln', 'tiny', 'xrl', and 'x0'." -msgstr "I valori validi comprendono \"ln\", \"tiny\", \"xrl\" e \"x0\"." +msgid "Valid values include 'ln', 'tiny', 'xrl', 'goo', and 'x0'." +msgstr "I valori validi comprendono \"ln\", \"tiny\", \"xrl\", \"goo\" e \"x0\"." + +#: config.py:49 +#, docstring +msgid "Valid values include 'ln', 'tiny', 'xrl', 'goo', and 'x0'." +msgstr "I valori validi comprendono \"ln\", \"tiny\", \"xrl\" \"goo\" e \"x0\"." #: config.py:71 msgid "" @@ -95,7 +99,7 @@ msgstr "" "Se impostato ad un valore non vuoto, specifica l'elenco dei servizi a cui\n" " rivolgersi per le variabili shrinkSnarfer e outFilter." -#: plugin.py:169 +#: plugin.py:171 #, docstring msgid "" "\n" @@ -108,7 +112,7 @@ msgstr "" " Restituisce una versione di ln-s.net di .\n" " " -#: plugin.py:194 +#: plugin.py:196 #, docstring msgid "" "\n" @@ -121,7 +125,7 @@ msgstr "" " Restituisce una versione di TinyURL.com di \n" " " -#: plugin.py:222 +#: plugin.py:224 #, docstring msgid "" "\n" @@ -134,7 +138,20 @@ msgstr "" " Restituisce una versione di xrl.us di .\n" " " -#: plugin.py:248 +#: plugin.py:255 +#, docstring +msgid "" +"\n" +"\n" +" Returns an goo.gl version of .\n" +" " +msgstr "" +"\n" +"\n" +" Restituisce una versione di goo.gl di .\n" +" " + +#: plugin.py:281 #, docstring msgid "" "\n" diff --git a/plugins/ShrinkUrl/messages.pot b/plugins/ShrinkUrl/messages.pot index 25532222d..3dda2984a 100644 --- a/plugins/ShrinkUrl/messages.pot +++ b/plugins/ShrinkUrl/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-06-09 09:00+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,9 +22,14 @@ msgid "" " like this snarfer to be enabled?" msgstr "" -#: config.py:45 config.py:49 +#: config.py:45 #, docstring -msgid "Valid values include 'ln', 'tiny', 'xrl', and 'x0'." +msgid "Valid values include 'ln', 'tiny', 'xrl', 'goo', and 'x0'." +msgstr "" + +#: config.py:49 +#, docstring +msgid "Valid values include 'ln', 'tiny', 'xrl', 'goo', and 'x0'." msgstr "" #: config.py:71 @@ -81,7 +86,7 @@ msgid "" " services to rotate through for the shrinkSnarfer and outFilter." msgstr "" -#: plugin.py:169 +#: plugin.py:171 #, docstring msgid "" "\n" @@ -90,7 +95,7 @@ msgid "" " " msgstr "" -#: plugin.py:194 +#: plugin.py:196 #, docstring msgid "" "\n" @@ -99,7 +104,7 @@ msgid "" " " msgstr "" -#: plugin.py:222 +#: plugin.py:224 #, docstring msgid "" "\n" @@ -108,7 +113,16 @@ msgid "" " " msgstr "" -#: plugin.py:248 +#: plugin.py:255 +#, docstring +msgid "" +"\n" +"\n" +" Returns an goo.gl version of .\n" +" " +msgstr "" + +#: plugin.py:281 #, docstring msgid "" "\n" diff --git a/plugins/ShrinkUrl/plugin.py b/plugins/ShrinkUrl/plugin.py index 471400186..0a72e0c15 100644 --- a/plugins/ShrinkUrl/plugin.py +++ b/plugins/ShrinkUrl/plugin.py @@ -29,6 +29,8 @@ ### import re +import json +import httplib2 import supybot.conf as conf import supybot.utils as utils @@ -232,6 +234,37 @@ class ShrinkUrl(callbacks.PluginRegexp): irc.error(str(e)) xrl = thread(wrap(xrl, ['url'])) + _gooApi = 'https://www.googleapis.com/urlshortener/v1/url' + def _getGooUrl(self, url): + url = utils.web.urlquote(url) + try: + return self.db.get('goo', url) + except KeyError: + text = httplib2.Http().request(self._gooApi, + 'POST', + headers={'content-type':'application/json'}, + body=json.dumps({'longUrl': url}))[1] + googl = json.loads(text)['id'] + if len(googl) > 0 : + self.db.set('goo', url, googl) + return googl + else: + raise ShrinkError, text + + def goo(self, irc, msg, args, url): + """ + + Returns an goo.gl version of . + """ + try: + goourl = self._getGooUrl(url) + m = irc.reply(goourl) + if m is not None: + m.tag('shrunken') + except ShrinkError, e: + irc.error(str(e)) + goo = thread(wrap(goo, ['url'])) + _x0Api = 'http://api.x0.no/?%s' def _getX0Url(self, url): try: diff --git a/plugins/ShrinkUrl/test.py b/plugins/ShrinkUrl/test.py index caf606668..629486c2c 100644 --- a/plugins/ShrinkUrl/test.py +++ b/plugins/ShrinkUrl/test.py @@ -43,6 +43,8 @@ class ShrinkUrlTestCase(ChannelPluginTestCase): (udUrl, r'http://ln-s.net/2\$K')], 'xrl': [(sfUrl, r'http://xrl.us/bfq8ik'), (udUrl, r'http://xrl.us/bfnyji')], + 'goo': [(sfUrl, r'http://goo.gl/3c59N'), + (udUrl, r'http://goo.gl/ocTga')], 'x0': [(sfUrl, r'http://x0.no/0l2j'), (udUrl, r'http://x0.no/0l2k')] } @@ -97,6 +99,9 @@ class ShrinkUrlTestCase(ChannelPluginTestCase): def testXrlsnarf(self): self._snarf('xrl') + def testGoosnarf(self): + self._snarf('goo') + def testX0snarf(self): self._snarf('x0') diff --git a/plugins/Status/README.txt b/plugins/Status/README.txt index d60b47a97..2605b89ca 100644 --- a/plugins/Status/README.txt +++ b/plugins/Status/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to view different bot statistics, for example, uptime. \ No newline at end of file diff --git a/plugins/Status/locale/de.po b/plugins/Status/locale/de.po new file mode 100644 index 000000000..bb677a75d --- /dev/null +++ b/plugins/Status/locale/de.po @@ -0,0 +1,181 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:46+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" + +#: config.py:46 +msgid "" +"Determines whether the cpu command will list\n" +" the time taken by children as well as the bot's process." +msgstr "legt fest ob der cpu Befehl die Zeit die die Kindprozesse verbrauchten, als auch die Zeit des Botprozesses." + +#: config.py:49 +msgid "" +"Determines whether the cpu command will\n" +" provide the number of threads spawned and active." +msgstr "Legt fest ob der cpu Befehl die Anzahl der gestarteten Threads und der Aktiven anzeigen soll." + +#: config.py:52 +msgid "" +"Determines whether the cpu command will report\n" +" the amount of memory being used by the bot." +msgstr "Legt fest ob der cpu Befehl den gebrauchten Speicher des Bots ausgeben soll." + +#: plugin.py:71 +msgid "" +"takes no arguments\n" +"\n" +" Returns the status of the bot.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt den Status des Bots aus." + +#: plugin.py:80 +msgid "%s as %L" +msgstr "%s als %L" + +#: plugin.py:81 +msgid "I am connected to %L." +msgstr "Ich bin verbunden zu %L." + +#: plugin.py:83 +msgid "I am currently in code profiling mode." +msgstr "Momentan bin ich im quelltextanalyse Modus." + +#: plugin.py:89 +msgid "" +"takes no arguments\n" +"\n" +" Returns the current threads that are active.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt aus wieviele Threads momentan aktiv sind." + +#: plugin.py:95 +msgid "I have spawned %n; %n %b still currently active: %L." +msgstr "Ich habe %n erzeugt. %n %b sind jetzt noch Aktiv: %L." + +#: plugin.py:103 +msgid "" +"takes no arguments\n" +"\n" +" Returns some interesting network-related statistics.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt einige interessante Netzwerk bezogene Statistiken aus." + +#: plugin.py:111 +msgid "an indeterminate amount of time" +msgstr "eine unbestimmte Zeit" + +#: plugin.py:112 +msgid "I have received %s messages for a total of %S. I have sent %s messages for a total of %S. I have been connected to %s for %s." +msgstr "Ich habe %s Nachrichten empfangen, im totalen %S. Ich habe %s Nachrichten gesendet, im totalen %S. Ich bin mit %s verbunden, seit %s." + +#: plugin.py:121 +msgid "" +"takes no arguments\n" +"\n" +" Returns some interesting CPU-related statistics on the bot.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt einige interessante CPU bezogene Statistiken des Bots aus." + +#: plugin.py:131 +msgid "My children have taken %.2f seconds of user time and %.2f seconds of system time for a total of %.2f seconds of CPU time." +msgstr "Meine Kindsprozesse haben %.2f Sekunden an Nutzerzeit und %.2f Systemzeit gebraucht, im totalen %.2f Sekunden der CPU Zeit." + +#: plugin.py:138 +msgid "I have taken %.2f seconds of user time and %.2f seconds of system time, for a total of %.2f seconds of CPU time. %s" +msgstr "Ich habe %.2f Sekunden an benutzer Zeit und %.2f Sekunden an Systemzeit benötigt, in allen %.2f CPU Zeit. %s" + +#: plugin.py:160 +msgid "Unable to run ps command." +msgstr "Ich kann den Befehl ps nicht ausführen." + +#: plugin.py:166 +msgid " I'm taking up %S of memory." +msgstr " Ich verbrauche %S Speicher." + +#: plugin.py:175 +msgid "" +"takes no arguments\n" +"\n" +" Returns some interesting command-related statistics.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt einige interessante befehlbezogene Statistiken aus." + +#: plugin.py:185 +msgid "I offer a total of %n in %n. I have processed %n." +msgstr "Ich biete %n in %n an. Ich habe %n bearbeitet." + +#: plugin.py:194 +msgid "" +"takes no arguments\n" +"\n" +" Returns a list of the commands offered by the bot.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt eine Liste der Befehle zurück, die der Bot anbietet." + +#: plugin.py:208 +msgid "" +"takes no arguments\n" +"\n" +" Returns the amount of time the bot has been running.\n" +" " +msgstr "" +"hat keine Argumente\n" +"\n" +"Gibt aus wie lange der Bot schon läuft." + +#: plugin.py:212 +msgid "I have been running for %s." +msgstr "Ich laufe seit %s." + +#: plugin.py:219 +msgid "" +"takes no arguments\n" +"\n" +" Returns the server the bot is on.\n" +" " +msgstr "" +"hat keine Arguments\n" +"\n" +"Gibt den Server aus mit dem der Bot verbunden ist." + +#: plugin.py:228 +#, fuzzy +msgid "" +"takes no arguments\n" +"\n" +" Returns the network the bot is on.\n" +" " +msgstr "" +"hat keine Arguments\n" +"\n" +"Gibt den Server aus mit dem der Bot verbunden ist." + diff --git a/plugins/Status/locale/fi.po b/plugins/Status/locale/fi.po new file mode 100644 index 000000000..12cfc1d8e --- /dev/null +++ b/plugins/Status/locale/fi.po @@ -0,0 +1,197 @@ +# Status plugin in Limnoria +# Copyright (C) 2011 Limnoria +# Mika Suomalainen , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-03-15 08:48+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: config.py:46 +msgid "" +"Determines whether the cpu command will list\n" +" the time taken by children as well as the bot's process." +msgstr "" +"Määrittää luetteleeko cpu komento lasten ottaman ajan\n" +" botin prosessin lisäksi." + +#: config.py:49 +msgid "" +"Determines whether the cpu command will\n" +" provide the number of threads spawned and active." +msgstr "" +"Määrittää ilmoittaako cpu komento ilmestyneiden ja aktiiviseten ketjujen\n" +" lukumäärät." + +#: config.py:52 +msgid "" +"Determines whether the cpu command will report\n" +" the amount of memory being used by the bot." +msgstr "" +"Määrittää ilmoittaako cpu komento\n" +" botin käyttämän muistin määrän." + +#: plugin.py:71 +msgid "" +"takes no arguments\n" +"\n" +" Returns the status of the bot.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Palauttaa botin tilan.\n" +" " + +#: plugin.py:80 +msgid "%s as %L" +msgstr "%s verkossa %L" + +#: plugin.py:81 +msgid "I am connected to %L." +msgstr "Olen yhdistänyt verkkoon %L" + +#: plugin.py:83 +msgid "I am currently in code profiling mode." +msgstr "Olen tällä hetkellä koodin profilointi tilassa." + +#: plugin.py:89 +msgid "" +"takes no arguments\n" +"\n" +" Returns the current threads that are active.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Palauttaa botin tämänhetkiset ketjut, jotka ovat aktiivisia.\n" +" " + +#: plugin.py:95 +msgid "I have spawned %n; %n %b still currently active: %L." +msgstr "Minä olen ilmestyttänyt %n; %n %b yhä aktiivinen: %L." + +#: plugin.py:103 +msgid "" +"takes no arguments\n" +"\n" +" Returns some interesting network-related statistics.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Palauttaa joitakin mielenkiintoisia verkkoon liittyviä tilastotietoja.\n" +" " + +#: plugin.py:111 +msgid "an indeterminate amount of time" +msgstr "määrittämätön määrä aikaa" + +#: plugin.py:112 +msgid "I have received %s messages for a total of %S. I have sent %s messages for a total of %S. I have been connected to %s for %s." +msgstr "Minä olen vastaanottanut %s viestiä yhteensä määrän %S edestä. Olen lähettänyt %s viestiä määrän %S edestä. Olen ollut yhdistettynä palvelimeen %s ajan %s." + +#: plugin.py:121 +msgid "" +"takes no arguments\n" +"\n" +" Returns some interesting CPU-related statistics on the bot.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Palauttaa joitakin mielenkiintoisia suoritinkäyttöön liittyviä tilastotietoja botista.\n" +" " + +#: plugin.py:131 +msgid "My children have taken %.2f seconds of user time and %.2f seconds of system time for a total of %.2f seconds of CPU time." +msgstr "Minun lapseni ovat vieneet %.2f käyttäjän aikaa ja %.2f sekuntia järjestelmän aikaa. Lapseni ovat ottaneet yhteensä %.2f sekuntia CPU aikaa." + +#: plugin.py:138 +msgid "I have taken %.2f seconds of user time and %.2f seconds of system time, for a total of %.2f seconds of CPU time. %s" +msgstr "Olen ottanut %.2f sekuntia käyttäjän aikaa %.2f sekuntia järjestelmän aikaa. Olen ottanut yhteensä %.2f sekuntia CPU ajasta. %s" + +#: plugin.py:160 +msgid "Unable to run ps command." +msgstr "ps komentoa ei pystytä suorittamaan." + +#: plugin.py:166 +msgid " I'm taking up %S of memory." +msgstr " Muistinkäyttöni on yhteensä %S." + +#: plugin.py:175 +msgid "" +"takes no arguments\n" +"\n" +" Returns some interesting command-related statistics.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Palauttaa joitakin mielenkiintoisia komentoihin liittyviä tilastotietoja.\n" +" " + +#: plugin.py:185 +msgid "I offer a total of %n in %n. I have processed %n." +msgstr "Tarjoan yhteensä %n määrän %n sisässä. Olen käsitellyt %n." + +#: plugin.py:194 +msgid "" +"takes no arguments\n" +"\n" +" Returns a list of the commands offered by the bot.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Palauttaa listan komennoista, jotka botti tarjoaa.\n" +" " + +#: plugin.py:208 +msgid "" +"takes no arguments\n" +"\n" +" Returns the amount of time the bot has been running.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Palauttaa ajan, jonka botti on ollut käynnissä.\n" +" " + +#: plugin.py:212 +msgid "I have been running for %s." +msgstr "Olen ollut käynnissä ajan %s." + +#: plugin.py:219 +msgid "" +"takes no arguments\n" +"\n" +" Returns the server the bot is on.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Palauttaa palvelimen, jolla botti on.\n" +" " + +#: plugin.py:228 +msgid "" +"takes no arguments\n" +"\n" +" Returns the network the bot is on.\n" +" " +msgstr "" +"ei ota parametrejä\n" +"\n" +" Palauttaa verkon, jossa botti on.\n" +" " + diff --git a/plugins/Status/locale/fr.po b/plugins/Status/locale/fr.po index 817300343..46d60a38d 100644 --- a/plugins/Status/locale/fr.po +++ b/plugins/Status/locale/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Supybot-fr\n" -"POT-Creation-Date: 2011-08-10 11:27+CEST\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: \n" "Last-Translator: Valentin Lorentz \n" "Language-Team: Supybot-fr \n" @@ -100,7 +100,6 @@ msgstr "" "Retourne quelques statistiques intéressantes reliées au CPU." #: plugin.py:131 -#, fuzzy msgid "My children have taken %.2f seconds of user time and %.2f seconds of system time for a total of %.2f seconds of CPU time." msgstr "Mes enfants ont pris %.2f secondes du temps utilisateur et %.2f secondes du temps système, pour un total de %.2f secondes de temps CPU." @@ -116,7 +115,7 @@ msgstr "Impossible de lancer la commande ps." msgid " I'm taking up %S of memory." msgstr " Je prend plus de %S de mémoire." -#: plugin.py:174 +#: plugin.py:175 msgid "" "takes no arguments\n" "\n" @@ -127,11 +126,11 @@ msgstr "" "\n" "Retourne quelques statistiques intéressantes liées aux commandes." -#: plugin.py:184 +#: plugin.py:185 msgid "I offer a total of %n in %n. I have processed %n." msgstr "J'offre un total de %n dans %n plugins. J'ai géré %n." -#: plugin.py:193 +#: plugin.py:194 msgid "" "takes no arguments\n" "\n" @@ -142,7 +141,7 @@ msgstr "" "\n" "Retourne une liste des commandes offertes par le bot." -#: plugin.py:207 +#: plugin.py:208 msgid "" "takes no arguments\n" "\n" @@ -153,11 +152,11 @@ msgstr "" "\n" "Retourne la durée durant laquelle le bot est lancée." -#: plugin.py:211 +#: plugin.py:212 msgid "I have been running for %s." msgstr "Je suis lancé depuis %s." -#: plugin.py:218 +#: plugin.py:219 msgid "" "takes no arguments\n" "\n" @@ -167,3 +166,15 @@ msgstr "" "ne prend pas d'argument\n" "\n" "Retourne le(s) serveur(s) sur le(s)quel(s) le bot est." + +#: plugin.py:228 +msgid "" +"takes no arguments\n" +"\n" +" Returns the network the bot is on.\n" +" " +msgstr "" +"ne prend pas d'argument\n" +"\n" +"Retourne le(s) serveur(s) sur le(s)quel(s) le bot est." + diff --git a/plugins/Status/locale/it.po b/plugins/Status/locale/it.po index a05368ac0..56cafc568 100644 --- a/plugins/Status/locale/it.po +++ b/plugins/Status/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" -"PO-Revision-Date: 2011-06-21 13:47+0200\n" +"PO-Revision-Date: 2012-03-16 12:41+0100\n" "Last-Translator: skizzhg \n" "Language-Team: Italian \n" "Language: it\n" @@ -125,7 +125,7 @@ msgstr "Impossibile eseguire il comando ps." msgid " I'm taking up %S of memory." msgstr " Sto impiegando il %S di memoria. " -#: plugin.py:174 +#: plugin.py:175 #, docstring msgid "" "takes no arguments\n" @@ -138,11 +138,11 @@ msgstr "" " Riporta alcune statistiche interessanti riguardanti i comandi.\n" " " -#: plugin.py:184 +#: plugin.py:185 msgid "I offer a total of %n in %n. I have processed %n." msgstr "Offro un totale di %n in %n. Ho elaborato %n." -#: plugin.py:193 +#: plugin.py:194 #, docstring msgid "" "takes no arguments\n" @@ -155,7 +155,7 @@ msgstr "" " Restituisce un elenco dei comandi offerti dal bot.\n" " " -#: plugin.py:207 +#: plugin.py:208 #, docstring msgid "" "takes no arguments\n" @@ -168,11 +168,11 @@ msgstr "" " Riporta da quanto tempo il bot è in esecuzione.\n" " " -#: plugin.py:211 +#: plugin.py:212 msgid "I have been running for %s." msgstr "Sono in funzione da %s." -#: plugin.py:218 +#: plugin.py:219 #, docstring msgid "" "takes no arguments\n" @@ -182,6 +182,19 @@ msgid "" msgstr "" "non necessita argomenti\n" "\n" -" Restituisce i server sui quali è il bot.\n" +" Restituisce i server ai quali è connesso il bot.\n" +" " + +#: plugin.py:228 +#, docstring +msgid "" +"takes no arguments\n" +"\n" +" Returns the network the bot is on.\n" +" " +msgstr "" +"non necessita argomenti\n" +"\n" +" Restituisce la network alla quale è connesso il bot.\n" " " diff --git a/plugins/Status/messages.pot b/plugins/Status/messages.pot index cde3e4d90..c1d012348 100644 --- a/plugins/Status/messages.pot +++ b/plugins/Status/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-08-10 11:27+CEST\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -109,7 +109,7 @@ msgstr "" msgid " I'm taking up %S of memory." msgstr "" -#: plugin.py:174 +#: plugin.py:175 #, docstring msgid "" "takes no arguments\n" @@ -118,11 +118,11 @@ msgid "" " " msgstr "" -#: plugin.py:184 +#: plugin.py:185 msgid "I offer a total of %n in %n. I have processed %n." msgstr "" -#: plugin.py:193 +#: plugin.py:194 #, docstring msgid "" "takes no arguments\n" @@ -131,7 +131,7 @@ msgid "" " " msgstr "" -#: plugin.py:207 +#: plugin.py:208 #, docstring msgid "" "takes no arguments\n" @@ -140,11 +140,11 @@ msgid "" " " msgstr "" -#: plugin.py:211 +#: plugin.py:212 msgid "I have been running for %s." msgstr "" -#: plugin.py:218 +#: plugin.py:219 #, docstring msgid "" "takes no arguments\n" @@ -153,3 +153,12 @@ msgid "" " " msgstr "" +#: plugin.py:228 +#, docstring +msgid "" +"takes no arguments\n" +"\n" +" Returns the network the bot is on.\n" +" " +msgstr "" + diff --git a/plugins/Status/plugin.py b/plugins/Status/plugin.py index 1d26c4cbb..b3966f35b 100644 --- a/plugins/Status/plugin.py +++ b/plugins/Status/plugin.py @@ -163,7 +163,8 @@ class Status(callbacks.Plugin): mem = int(out.splitlines()[1]) elif sys.platform.startswith('netbsd'): mem = int(os.stat('/proc/%s/mem' % pid)[7]) - response += format(_(' I\'m taking up %S of memory.'), mem) + response += format(_(' I\'m taking up %S of memory.'), + mem*1024) except Exception: self.log.exception('Uncaught exception in cpu.memory:') irc.reply(utils.str.normalizeWhitespace(response)) @@ -222,6 +223,15 @@ class Status(callbacks.Plugin): irc.reply(irc.server) server = wrap(server) + @internationalizeDocstring + def network(self, irc, msg, args): + """takes no arguments + + Returns the network the bot is on. + """ + irc.reply(irc.network) + network = wrap(network) + Class = Status diff --git a/plugins/String/locale/fi.po b/plugins/String/locale/fi.po new file mode 100644 index 000000000..71f592973 --- /dev/null +++ b/plugins/String/locale/fi.po @@ -0,0 +1,212 @@ +# String plugin in Limnoria +# Copyright (C) 2011 Limnoria +# Mika Suomalainen , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-10-18 17:56+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: config.py:47 +msgid "" +"Determines the maximum size of a string\n" +" given to the levenshtein command. The levenshtein command uses an O(m*n)\n" +" algorithm, which means that with strings of length 256, it can take 1.5\n" +" seconds to finish; with strings of length 384, though, it can take 4\n" +" seconds to finish, and with strings of much larger lengths, it takes more\n" +" and more time. Using nested commands, strings can get quite large, hence\n" +" this variable, to limit the size of arguments passed to the levenshtein\n" +" command." +msgstr "Määrittää levenshtein komentoon annettavan merkkiketjun maksimimäärän.\n" +" Levenshtein komento käyttää O(m*n) algoritmiä, mikä tarkoittaa, että\n" +" merkkiketju, jonka koko on 256 voi viedä 1.5\n" +" sekuntia valmistumiseen; 384:n merkit piduudella se voi viedä 4\n" +" sekuntia valmistumiseen, ja suuremmilla merkkiketjuilla, se vie\n" +" enemmän ja enemmän aikaa. Käyttäen sisäkkäisia komentoja, merkkiketjut voivat tulla hyvin pitkiksi ja tästä johtuen\n" +" tämä asetusarvo on olemassa, rajoittaakseen levenshtein komentoon annettujen parametrien määrää.\n" + +#: plugin.py:46 +msgid "" +"\n" +"\n" +" Returns the 8-bit value of .\n" +" " +msgstr "\n" +"\n" +" Palauttaa 8-bittisen arvon.\n" +" " + +#: plugin.py:55 +msgid "" +"\n" +"\n" +" Returns the character associated with the 8-bit value \n" +" " +msgstr "\n" +"\n" +" Palauttaa merkin, joka on yhdistetty 8-bittisen arvon.\n" +" " + +#: plugin.py:62 +msgid "That number doesn't map to an 8-bit character." +msgstr "Tuo numero ei kartoitu 8-bittiseen merkkiin." + +#: plugin.py:67 +msgid "" +" \n" +"\n" +" Returns an encoded form of the given text; the valid encodings are\n" +" available in the documentation of the Python codecs module:\n" +" .\n" +" " +msgstr " \n" +"\n" +" Palauttaa salatun version annetusta tekstistä; kelvolliset salaukset\n" +" ovat saatavilla Python codecs moduulin dokumentaatiossa:\n" +" .\n" +" " + +#: plugin.py:76 +#: plugin.py:90 +msgid "encoding" +msgstr "salaus" + +#: plugin.py:81 +msgid "" +" \n" +"\n" +" Returns an un-encoded form of the given text; the valid encodings are\n" +" available in the documentation of the Python codecs module:\n" +" .\n" +" " +msgstr " \n" +"\n" +" Palauttaa salaamattoman version annetusta tekstistä; kelvolliset salaukset\n" +" ovat saatavilla Python codecs moduulin dokumentaatiossa:\n" +" .\n" +" " + +#: plugin.py:92 +msgid "base64 string" +msgstr "base64 merkkiketju" + +#: plugin.py:93 +msgid "Base64 strings must be a multiple of 4 in length, padded with '=' if necessary." +msgstr "Base64 merkkiketjujen täytyy olla kerrollisia 4:llä, pehmustettuna '='-merkillä jos vaadittu." + +#: plugin.py:99 +msgid "" +" \n" +"\n" +" Returns the levenshtein distance (also known as the \"edit distance\"\n" +" between and )\n" +" " +msgstr " \n" +"\n" +" Palauttaa levenshtein etäisyyden (tunnetaan myös nimellä \"muokkaus etäisyys\"\n" +" ja välillä.)\n" +" " + +#: plugin.py:106 +msgid "Levenshtein distance is a complicated algorithm, try it with some smaller inputs." +msgstr "Levenshtein etäisyys on monimutkainen algoritmi, kokeile sitä pienemmillä sisäänmenoilla." + +#: plugin.py:114 +msgid "" +" []\n" +"\n" +" Returns the Soundex hash to a given length. The length defaults to\n" +" 4, since that's the standard length for a soundex hash. For unlimited\n" +" length, use 0.\n" +" " +msgstr " []\n" +"\n" +" Palauttaa Soundex hashin annetulle pituudelle. Pituus on oletuksena 4, koska se on\n" +" peruspituus. Jos haluat loputtoman pituuden,\n" +" käytä 0:aa.\n" +" " + +#: plugin.py:125 +msgid "" +"\n" +"\n" +" Returns the length of .\n" +" " +msgstr "\n" +"\n" +" Palauttaa pituuden.\n" +" " + +#: plugin.py:134 +msgid "" +" \n" +"\n" +" If is of the form m/regexp/flags, returns the portion of\n" +" that matches the regexp. If is of the form\n" +" s/regexp/replacement/flags, returns the result of applying such a\n" +" regexp to .\n" +" " +msgstr " \n" +"\n" +" Jos on yksi muodosta m/säännöllinen lauseke/liput, palauta\n" +" osa, joka täsmää säännölliseen lausekkeeseen. Jos on muotoa\n" +" s/säännöllinen lauseke/korvaus/liput, palauttaa sellaisen säännöllisen lausekkeen käytön\n" +" .\n" +" " + +#: plugin.py:146 +msgid "You probably don't want to match the empty string." +msgstr "Et luultavasti halua täsmätä tyhjään merkkiketjuun." + +#: plugin.py:156 +msgid "" +" \n" +"\n" +" Returns XOR-encrypted with . See\n" +" http://www.yoe.org/developer/xor.html for information about XOR\n" +" encryption.\n" +" " +msgstr " \n" +"\n" +" Palauttaa XOR-salattuna . Katso\n" +" http://www.yoe.org/developer/xor.html saadaksesi lisätietoja XOR\n" +" salauksesta.\n" +" " + +#: plugin.py:169 +msgid "" +"\n" +"\n" +" Returns the md5 hash of a given string. Read\n" +" http://www.rsasecurity.com/rsalabs/faq/3-6-6.html for more information\n" +" about md5.\n" +" " +msgstr "\n" +"\n" +" Palauttaa md5 hashin annetusta merkkiketjusta. Lue\n" +" http://www.rsasecurity.com/rsalabs/faq/3-6-6.html saadaksesi lisätietoja\n" +" md5:stä.\n" +" " + +#: plugin.py:180 +msgid "" +"\n" +"\n" +" Returns the SHA hash of a given string. Read\n" +" http://www.secure-hash-algorithm-md5-sha-1.co.uk/ for more information\n" +" about SHA.\n" +" " +msgstr "\n" +"\n" +" Palauttaa SHA hashin annetulle merkkiketjulle. Lue\n" +" http://www.secure-hash-algorithm-md5-sha-1.co.uk/ saadaksesi\n" +" lisätietoa SHA:sta.\n" +" " + diff --git a/plugins/String/locale/it.po b/plugins/String/locale/it.po index 97334e774..6c69c34b9 100644 --- a/plugins/String/locale/it.po +++ b/plugins/String/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-07-07 11:35+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/String/messages.pot b/plugins/String/messages.pot index dd1a9db63..c02623d71 100644 --- a/plugins/String/messages.pot +++ b/plugins/String/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -27,7 +27,7 @@ msgid "" " command." msgstr "" -#: plugin.py:46 +#: plugin.py:48 #, docstring msgid "" "\n" @@ -36,7 +36,7 @@ msgid "" " " msgstr "" -#: plugin.py:55 +#: plugin.py:57 #, docstring msgid "" "\n" @@ -45,11 +45,11 @@ msgid "" " " msgstr "" -#: plugin.py:62 +#: plugin.py:64 msgid "That number doesn't map to an 8-bit character." msgstr "" -#: plugin.py:67 +#: plugin.py:69 #, docstring msgid "" " \n" @@ -60,11 +60,11 @@ msgid "" " " msgstr "" -#: plugin.py:76 plugin.py:90 +#: plugin.py:78 plugin.py:92 msgid "encoding" msgstr "" -#: plugin.py:81 +#: plugin.py:83 #, docstring msgid "" " \n" @@ -75,15 +75,15 @@ msgid "" " " msgstr "" -#: plugin.py:92 +#: plugin.py:94 msgid "base64 string" msgstr "" -#: plugin.py:93 +#: plugin.py:95 msgid "Base64 strings must be a multiple of 4 in length, padded with '=' if necessary." msgstr "" -#: plugin.py:99 +#: plugin.py:101 #, docstring msgid "" " \n" @@ -93,11 +93,11 @@ msgid "" " " msgstr "" -#: plugin.py:106 +#: plugin.py:108 msgid "Levenshtein distance is a complicated algorithm, try it with some smaller inputs." msgstr "" -#: plugin.py:114 +#: plugin.py:116 #, docstring msgid "" " []\n" @@ -108,7 +108,7 @@ msgid "" " " msgstr "" -#: plugin.py:125 +#: plugin.py:127 #, docstring msgid "" "\n" @@ -117,7 +117,7 @@ msgid "" " " msgstr "" -#: plugin.py:134 +#: plugin.py:136 #, docstring msgid "" " \n" @@ -129,11 +129,11 @@ msgid "" " " msgstr "" -#: plugin.py:146 +#: plugin.py:148 msgid "You probably don't want to match the empty string." msgstr "" -#: plugin.py:156 +#: plugin.py:162 #, docstring msgid "" " \n" @@ -144,7 +144,7 @@ msgid "" " " msgstr "" -#: plugin.py:169 +#: plugin.py:175 #, docstring msgid "" "\n" @@ -155,7 +155,7 @@ msgid "" " " msgstr "" -#: plugin.py:180 +#: plugin.py:186 #, docstring msgid "" "\n" diff --git a/plugins/String/plugin.py b/plugins/String/plugin.py index 72143f72e..de8f38afe 100644 --- a/plugins/String/plugin.py +++ b/plugins/String/plugin.py @@ -87,7 +87,12 @@ class String(callbacks.Plugin): . """ try: - irc.reply(text.decode(encoding)) + s = text.decode(encoding) + # Not all encodings decode to a unicode object. Only encode those + # that do. + if isinstance(s, unicode): + s = s.encode('utf-8') + irc.reply(s) except LookupError: irc.errorInvalid(_('encoding'), encoding) except binascii.Error: diff --git a/plugins/Success/README.txt b/plugins/Success/README.txt index d60b47a97..6b4413249 100644 --- a/plugins/Success/README.txt +++ b/plugins/Success/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to add your own success messages to replace the default 'The operation succeeded.' message. \ No newline at end of file diff --git a/plugins/Success/locale/fi.po b/plugins/Success/locale/fi.po new file mode 100644 index 000000000..4e18f870d --- /dev/null +++ b/plugins/Success/locale/fi.po @@ -0,0 +1,35 @@ +# Success plugin in Limnoria. +# Copyright (C) 2011 Limnoria +# Mika Suomalainen , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2011-02-26 09:49+CET\n" +"PO-Revision-Date: 2011-10-25 15:18+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: config.py:49 +msgid "" +"Determines whether the bot will prefix the nick\n" +" of the user giving an invalid command to the success response." +msgstr "Määrittää lisääkö botti käyttäjän nimimerkin lähettämänsä viestin alkuun, jos\n" +" käyttäjä antaa viallisen komennon onnistumisvastaukselle." + +#: plugin.py:38 +msgid "" +"This plugin was written initially to work with MoobotFactoids, the two\n" +" of them to provide a similar-to-moobot-and-blootbot interface for factoids.\n" +" Basically, it replaces the standard 'The operation succeeded.' messages\n" +" with messages kept in a database, able to give more personable\n" +" responses." +msgstr "Tämä lisäosa kirjoitettiin alunperin toimimaan MoobotFactoids lisäosan kanssa, molemmat kaksi\n" +" tarjoaisivat samankaltainen-kuin-moobot-ja-blootbot käyttöliittymän factoideille.\n" +" Perusteellisesti, se korvaa perus 'Tehtävä suoritettu.' viestit\n" +" vastauksilla tietokannoista, antaen mahdollisuuden luoda persoonallisempia\n" +" vastauksia." diff --git a/plugins/Success/locale/it.po b/plugins/Success/locale/it.po index 83841f511..034f1dc1a 100644 --- a/plugins/Success/locale/it.po +++ b/plugins/Success/locale/it.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: Supybot-fr\n" +"Project-Id-Version: Limnoria\n" "POT-Creation-Date: 2011-02-26 09:49+CET\n" "PO-Revision-Date: 2011-06-12 18:43+0200\n" "Last-Translator: skizzhg \n" diff --git a/plugins/Success/plugin.py b/plugins/Success/plugin.py index 2067434bb..37ab09f74 100644 --- a/plugins/Success/plugin.py +++ b/plugins/Success/plugin.py @@ -49,7 +49,7 @@ class Success(plugins.ChannelIdDatabasePlugin): self.originalClass = conf.supybot.replies.success.__class__ class MySuccessClass(self.originalClass): def __call__(self): - ret = pluginSelf.db.random(pluginSelf.target) + ret = pluginSelf.db.random(dynamic.msg.args[0]) if ret is None: try: self.__class__ = pluginSelf.originalClass @@ -70,14 +70,8 @@ class Success(plugins.ChannelIdDatabasePlugin): self.__parent.die() conf.supybot.replies.success.__class__ = self.originalClass - def inFilter(self, irc, msg): - # We need the target, but we need it before Owner.doPrivmsg is called, - # so this seems like the only way to do it. - self.target = msg.args[0] - return msg Success = internationalizeDocstring(Success) Class = Success - # vim:set shiftwidth=4 softtabstop=8 expandtab textwidth=78: diff --git a/plugins/Time/README.txt b/plugins/Time/README.txt index d60b47a97..8b505a45c 100644 --- a/plugins/Time/README.txt +++ b/plugins/Time/README.txt @@ -1 +1 @@ -Insert a description of your plugin here, with any notes, etc. about using it. +This plugin allows you to use different time functions. \ No newline at end of file diff --git a/plugins/Time/locale/de.po b/plugins/Time/locale/de.po new file mode 100644 index 000000000..96722f20c --- /dev/null +++ b/plugins/Time/locale/de.po @@ -0,0 +1,126 @@ +msgid "" +msgstr "" +"Project-Id-Version: Supybot\n" +"POT-Creation-Date: 2012-03-11 20:58+UTC\n" +"PO-Revision-Date: 2012-04-27 15:34+0200\n" +"Last-Translator: Mika Suomalainen \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +#: config.py:45 +msgid "" +"Determines the\n" +" format string for timestamps. Refer to the Python documentation for the\n" +" time module to see what formats are accepted. If you set this variable to\n" +" the empty string, the timestamp will not be shown." +msgstr "Legt die Formatiertung der Zeichenkette für Zeitstempel fest. Siehe Python Dokumentation für das time Modul um zu sehen welche Formate akzeptiert werden. Falls du diese Variable auf eine leere Zeichenkette setzt, wird kein Zeitstempel angezeigt." + +#: plugin.py:61 +msgid "" +"[y] [w] [d] [h] [m] [s]\n" +"\n" +" Returns the number of seconds in the number of , ,\n" +" , , , and given. An example usage is\n" +" \"seconds 2h 30m\", which would return 9000, which is '3600*2 + 30*60'.\n" +" Useful for scheduling events at a given number of seconds in the\n" +" future.\n" +" " +msgstr "" +"[y] [w] [d] [h] [m] [s]\n" +"\n" +"Gibt die Sekunden von der Anzahl von , , , , und Sekunden an. Ein Beispiel ist \"seconds 2h 30m\", das würde 9000 zurückgeben, dass ist '3600*2 + 30*60'. Nützlich um Events zu einem Zeitpunkt von Sekunden in der Zukunft zu planen." + +#: plugin.py:96 +msgid "" +"
  • '.join( - ['%s' % (x,y.name) for x,y in plugins]) + ['%s' % (x,y.name) for x,y in plugins]) response = self.template % plugins handler.send_response(200) self.send_header('Content_type', 'text/html') @@ -189,6 +193,18 @@ class SupyIndex(SupyHTTPServerCallback): self.end_headers() self.wfile.write(response) +class RobotsTxt(SupyHTTPServerCallback): + """Serves the robot.txt file to robots.""" + name = 'robotstxt' + defaultResponse = _('Request not handled') + def doGet(self, handler, path): + response = conf.supybot.servers.http.robots().replace('\\n', '\n') + handler.send_response(200) + self.send_header('Content_type', 'text/html') + self.send_header('Content-Length', len(response)) + self.end_headers() + self.wfile.write(response) + httpServer = None def startServer(): diff --git a/src/i18n.py b/src/i18n.py index ba57edfdf..dbd282f06 100644 --- a/src/i18n.py +++ b/src/i18n.py @@ -213,7 +213,8 @@ class _PluginInternationalization: def _unescape(self, string, removeNewline=False): import supybot.utils as utils - string = str.replace(string, '\\n', '\n') # gettext escapes the \n + string = str.replace(string, '\\n\\n', '\n\n') + string = str.replace(string, '\\n', ' ') string = str.replace(string, '\\"', '"') string = str.replace(string, "\'", "'") string = utils.str.normalizeWhitespace(string, removeNewline) diff --git a/src/ircdb.py b/src/ircdb.py index 1da09badc..a2b1495bd 100644 --- a/src/ircdb.py +++ b/src/ircdb.py @@ -290,9 +290,9 @@ class IrcUser(object): def addHostmask(self, hostmask): """Adds a hostmask to the user's hostmasks.""" assert ircutils.isUserHostmask(hostmask), 'got %s' % hostmask - if len(unWildcardHostmask(hostmask)) < 8: + if len(unWildcardHostmask(hostmask)) < 3: raise ValueError, \ - 'Hostmask must contain at least 8 non-wildcard characters.' + 'Hostmask must contain at least 3 non-wildcard characters.' self.hostmasks.add(hostmask) def removeHostmask(self, hostmask): @@ -946,46 +946,30 @@ def checkIgnored(hostmask, recipient='', users=users, channels=channels): Checks if the user is ignored by the recipient of the message. """ - if ignores.checkIgnored(hostmask): - log.debug('Ignoring %s due to ignore database.', hostmask) - return True try: id = users.getUserId(hostmask) user = users.getUser(id) + if user._checkCapability('owner'): + # Owners shouldn't ever be ignored. + return False + elif user.ignore: + log.debug('Ignoring %s due to his IrcUser ignore flag.', hostmask) + return True except KeyError: # If there's no user... - if ircutils.isChannel(recipient): - channel = channels.getChannel(recipient) - if channel.checkIgnored(hostmask): - log.debug('Ignoring %s due to the channel ignores.', hostmask) - return True - else: - return False - else: - if conf.supybot.defaultIgnore(): - log.debug('Ignoring %s due to conf.supybot.defaultIgnore', - hostmask) - return True - else: - return False - if user._checkCapability('owner'): - # Owners shouldn't ever be ignored. - return False - elif user.ignore: - log.debug('Ignoring %s due to his IrcUser ignore flag.', hostmask) + if conf.supybot.defaultIgnore(): + log.debug('Ignoring %s due to conf.supybot.defaultIgnore', + hostmask) + return True + if ignores.checkIgnored(hostmask): + log.debug('Ignoring %s due to ignore database.', hostmask) return True - elif recipient: - if ircutils.isChannel(recipient): - channel = channels.getChannel(recipient) - if channel.checkIgnored(hostmask): - log.debug('Ignoring %s due to the channel ignores.', hostmask) - return True - else: - return False - else: - return False - else: - return False + if ircutils.isChannel(recipient): + channel = channels.getChannel(recipient) + if channel.checkIgnored(hostmask): + log.debug('Ignoring %s due to the channel ignores.', hostmask) + return True + return False def _x(capability, ret): if isAntiCapability(capability): diff --git a/src/irclib.py b/src/irclib.py index 0efa1abc8..9643b7f78 100644 --- a/src/irclib.py +++ b/src/irclib.py @@ -31,6 +31,7 @@ import re import copy import time import random +import base64 import supybot.log as log import supybot.conf as conf @@ -240,7 +241,7 @@ class ChannelState(utils.python.Object): self.users = ircutils.IrcSet() self.voices = ircutils.IrcSet() self.halfops = ircutils.IrcSet() - self.modes = ircutils.IrcDict() + self.modes = {} def isOp(self, nick): return nick in self.ops @@ -401,6 +402,15 @@ class IrcState(IrcCommandDispatcher): """Returns the hostmask for a given nick.""" return self.nicksToHostmasks[nick] + def do004(self, irc, msg): + """Handles parsing the 004 reply + + Supported user and channel modes are cached""" + # msg.args = [server, ircd-version, umodes, modes, + # modes that require arguments? (non-standard)] + self.supported['umodes'] = msg.args[2] + self.supported['chanmodes'] = msg.args[3] + _005converters = utils.InsensitivePreservingDict({ 'modes': int, 'keylen': int, @@ -754,7 +764,7 @@ class Irc(IrcCommandDispatcher): # On second thought, we need this for testing. if world.testing: self.state.addMsg(self, msg) - log.debug('Outgoing message: %s', str(msg).rstrip('\r\n')) + log.debug('Outgoing message (%s): %s', self.network, str(msg).rstrip('\r\n')) return msg elif self.zombie: # We kill the driver here so it doesn't continue to try to @@ -769,6 +779,7 @@ class Irc(IrcCommandDispatcher): """Called by the IrcDriver; feeds a message received.""" msg.tag('receivedBy', self) msg.tag('receivedOn', self.network) + msg.tag('receivedAt', time.time()) if msg.args and self.isChannel(msg.args[0]): channel = msg.args[0] else: @@ -858,10 +869,15 @@ class Irc(IrcCommandDispatcher): def _setNonResettingVariables(self): # Configuration stuff. self.nick = conf.supybot.nick() + network_nick = conf.supybot.networks.get(self.network).nick() + if network_nick != '': + self.nick = network_nick self.user = conf.supybot.user() self.ident = conf.supybot.ident() self.alternateNicks = conf.supybot.nick.alternates()[:] self.password = conf.supybot.networks.get(self.network).password() + self.sasl_username = conf.supybot.networks.get(self.network).sasl.username() + self.sasl_password = conf.supybot.networks.get(self.network).sasl.password() self.prefix = '%s!%s@%s' % (self.nick, self.ident, 'unset.domain') # The rest. self.lastTake = 0 @@ -875,6 +891,18 @@ class Irc(IrcCommandDispatcher): self.driver.die() self._reallyDie() else: + if self.sasl_password: + if not self.sasl_username: + log.error('SASL username is not set, unable to identify.') + else: + auth_string = base64.b64encode('%s\x00%s\x00%s' % (self.sasl_username, + self.sasl_username, self.sasl_password)) + log.debug('Sending CAP REQ command, requesting capability \'sasl\'.') + self.queueMsg(ircmsgs.IrcMsg(command="CAP", args=('REQ', 'sasl'))) + log.debug('Sending AUTHENTICATE command, using mechanism PLAIN.') + self.queueMsg(ircmsgs.IrcMsg(command="AUTHENTICATE", args=('PLAIN',))) + log.info('Sending AUTHENTICATE command, not logging the password.') + self.queueMsg(ircmsgs.IrcMsg(command="AUTHENTICATE", args=(auth_string,))) if self.password: log.info('Sending PASS command, not logging the password.') self.queueMsg(ircmsgs.password(self.password)) @@ -884,14 +912,32 @@ class Irc(IrcCommandDispatcher): self.ident, self.user) self.queueMsg(ircmsgs.user(self.ident, self.user)) + def do903(self, msg): + log.info('%s: SASL authentication successful' % self.network) + log.debug('Sending CAP END command.') + self.queueMsg(ircmsgs.IrcMsg(command="CAP", args=('END',))) + + def do904(self, msg): + log.warning('%s: SASL authentication failed' % self.network) + log.debug('Aborting authentication.') + log.debug('Sending CAP END command.') + self.queueMsg(ircmsgs.IrcMsg(command="CAP", args=('END',))) + def _getNextNick(self): if self.alternateNicks: nick = self.alternateNicks.pop(0) if '%s' in nick: - nick %= conf.supybot.nick() + network_nick = conf.supybot.networks.get(self.network).nick() + if network_nick == '': + nick %= conf.supybot.nick() + else: + nick %= network_nick return nick else: nick = conf.supybot.nick() + network_nick = conf.supybot.networks.get(self.network).nick() + if network_nick != '': + nick = network_nick ret = nick L = list(nick) while len(L) <= 3: @@ -920,9 +966,14 @@ class Irc(IrcCommandDispatcher): # Let's reset nicks in case we had to use a weird one. self.alternateNicks = conf.supybot.nick.alternates()[:] umodes = conf.supybot.protocols.irc.umodes() + supported = self.state.supported.get('umodes') if umodes: - if umodes[0] not in '+-': - umodes = '+' + umodes + addSub = '+' + if umodes[0] in '+-': + (addSub, umodes) = (umodes[0], umodes[1:]) + if supported: + umodes = ''.join([m for m in umodes if m in supported]) + umodes = ''.join([addSub, umodes]) log.info('Sending user modes to %s: %s', self.network, umodes) self.sendMsg(ircmsgs.mode(self.nick, umodes)) do377 = do422 = do376 diff --git a/src/ircmsgs.py b/src/ircmsgs.py index 86a810ead..fca51bdc3 100644 --- a/src/ircmsgs.py +++ b/src/ircmsgs.py @@ -519,11 +519,11 @@ def unbans(channel, hostmasks, prefix='', msg=None): if conf.supybot.protocols.irc.strictRfc(): assert isChannel(channel), repr(channel) assert all(isUserHostmask, hostmasks), hostmasks + modes = [('-b', s) for s in hostmasks] if msg and not prefix: prefix = msg.prefix - return IrcMsg(prefix=prefix, command='MODE', msg=msg, - args=(channel, '-' + ('b'*len(hostmasks)), - ' '.join(hostmasks))) + return IrcMsg(prefix=prefix, command='MODE', + args=[channel] + ircutils.joinModes(modes), msg=msg) def kick(channel, nick, s='', prefix='', msg=None): """Returns a KICK to kick nick from channel with the message msg.""" @@ -728,7 +728,10 @@ def whois(nick, mask='', prefix='', msg=None): assert isNick(nick), repr(nick) if msg and not prefix: prefix = msg.prefix - return IrcMsg(prefix=prefix, command='WHOIS', args=(nick, mask), msg=msg) + args = (nick,) + if mask: + args = (nick, mask) + return IrcMsg(prefix=prefix, command='WHOIS', args=args, msg=msg) def names(channel=None, prefix='', msg=None): if conf.supybot.protocols.irc.strictRfc(): @@ -749,6 +752,16 @@ def mode(channel, args=(), prefix='', msg=None): args = tuple(map(str, args)) return IrcMsg(prefix=prefix, command='MODE', args=(channel,)+args, msg=msg) +def modes(channel, args=(), prefix='', msg=None): + """Returns a MODE to quiet each of nicks on channel.""" + if conf.supybot.protocols.irc.strictRfc(): + assert isChannel(channel), repr(channel) + modes = args + if msg and not prefix: + prefix = msg.prefix + return IrcMsg(prefix=prefix, command='MODE', + args=[channel] + ircutils.joinModes(modes), msg=msg) + def limit(channel, limit, prefix='', msg=None): return mode(channel, ['+l', limit], prefix=prefix, msg=msg) diff --git a/src/ircutils.py b/src/ircutils.py index b2ec6bd2d..b252e1275 100644 --- a/src/ircutils.py +++ b/src/ircutils.py @@ -1,6 +1,6 @@ ### # Copyright (c) 2002-2005, Jeremiah Fincher -# Copyright (c) 2009, James Vega +# Copyright (c) 2009,2011, James Vega # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -187,7 +187,7 @@ def banmask(hostmask): """ assert isUserHostmask(hostmask) host = hostFromHostmask(hostmask) - if utils.net.isIP(host): + if utils.net.isIPV4(host): L = host.split('.') L[-1] = '*' return '*!*@' + '.'.join(L) @@ -280,7 +280,13 @@ def mircColor(s, fg=None, bg=None): if fg is None and bg is None: return s elif bg is None: - fg = mircColors[str(fg)] + if str(fg) in mircColors: + fg = mircColors[str(fg)] + elif len(str(fg)) > 1: + fg = mircColors[str(fg)[:-1]] + else: + # Should not happen + pass return '\x03%s%s\x03' % (fg.zfill(2), s) elif fg is None: bg = mircColors[str(bg)] @@ -459,8 +465,8 @@ def replyTo(msg): def dccIP(ip): """Converts an IP string to the DCC integer form.""" - assert utils.net.isIP(ip), \ - 'argument must be a string ip in xxx.xxx.xxx.xxx format.' + assert utils.net.isIPV4(ip), \ + 'argument must be a string ip in xxx.yyy.zzz.www format.' i = 0 x = 256**3 for quad in ip.split('.'): diff --git a/src/registry.py b/src/registry.py index 9850ec9b0..1417f77b1 100644 --- a/src/registry.py +++ b/src/registry.py @@ -232,7 +232,7 @@ class Group(object): parts = split(rest) if len(parts) == 1 and parts[0] == name: try: - self.__makeChild(group, v) + self.__makeChild(name, v) except InvalidRegistryValue: # It's probably supposed to be registered later. pass diff --git a/src/schedule.py b/src/schedule.py index 3b36a8a7a..983096068 100644 --- a/src/schedule.py +++ b/src/schedule.py @@ -32,8 +32,11 @@ Schedule plugin with a subclass of drivers.IrcDriver in order to be run as a Supybot driver. """ +from __future__ import with_statement + import time import heapq +from threading import Lock import supybot.log as log import supybot.world as world @@ -61,10 +64,12 @@ class Schedule(drivers.IrcDriver): self.schedule = [] self.events = {} self.counter = 0 + self.lock = Lock() def reset(self): - self.events.clear() - self.schedule[:] = [] + with self.lock: + self.events.clear() + self.schedule[:] = [] # We don't reset the counter here because if someone has held an id of # one of the nuked events, we don't want him removing new events with # his old id. @@ -72,7 +77,7 @@ class Schedule(drivers.IrcDriver): def name(self): return 'Schedule' - def addEvent(self, f, t, name=None): + def addEvent(self, f, t, name=None, args=[], kwargs={}): """Schedules an event f to run at time t. name must be hashable and not an int. @@ -82,20 +87,22 @@ class Schedule(drivers.IrcDriver): self.counter += 1 assert name not in self.events, \ 'An event with the same name has already been scheduled.' - self.events[name] = f - heapq.heappush(self.schedule, mytuple((t, name))) + with self.lock: + self.events[name] = f + heapq.heappush(self.schedule, mytuple((t, name, args, kwargs))) return name def removeEvent(self, name): """Removes the event with the given name from the schedule.""" f = self.events.pop(name) - self.schedule = [(t, n) for (t, n) in self.schedule if n != name] # We must heapify here because the heap property may not be preserved # by the above list comprehension. We could, conceivably, just mark # the elements of the heap as removed and ignore them when we heappop, # but that would only save a constant factor (we're already linear for # the listcomp) so I'm not worried about it right now. - heapq.heapify(self.schedule) + with self.lock: + self.schedule = [x for x in self.schedule if f != name] + heapq.heapify(self.schedule) return f def rescheduleEvent(self, name, t): @@ -123,19 +130,17 @@ class Schedule(drivers.IrcDriver): 'why do we continue to live?') time.sleep(1) # We're the only driver; let's pause to think. while self.schedule and self.schedule[0][0] < time.time(): - (t, name) = heapq.heappop(self.schedule) - f = self.events[name] + with self.lock: + (t, name, args, kwargs) = heapq.heappop(self.schedule) + f = self.events[name] del self.events[name] try: - f() + f(*args, **kwargs) except Exception, e: log.exception('Uncaught exception in scheduled function:') -try: - ignore(schedule) -except NameError: - schedule = Schedule() +schedule = Schedule() addEvent = schedule.addEvent removeEvent = schedule.removeEvent rescheduleEvent = schedule.rescheduleEvent diff --git a/src/test.py b/src/test.py index f5722f093..71154ff08 100644 --- a/src/test.py +++ b/src/test.py @@ -1,5 +1,6 @@ ### # Copyright (c) 2002-2005, Jeremiah Fincher +# Copyright (c) 2011, James Vega # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -60,6 +61,8 @@ network = True # This is the global list of suites that are to be run. suites = [] +timeout = 10 + originalCallbacksGetHelp = callbacks.getHelp lastGetHelp = 'x' * 1000 def cachingGetHelp(method, name=None, doc=None): @@ -116,12 +119,12 @@ class PluginTestCase(SupyTestCase): """Subclass this to write a test case for a plugin. See plugins/Plugin/test.py for an example. """ - timeout = 10 plugins = None cleanConfDir = True cleanDataDir = True config = {} def __init__(self, methodName='runTest'): + self.timeout = timeout originalRunTest = getattr(self, methodName) def runTest(self): run = True @@ -500,18 +503,18 @@ def open_http(url, data=None): # check whether the proxy contains authorization information proxy_passwd, host = urllib.splituser(host) # now we proceed with the url we want to obtain - urltype, rest = splittype(selector) + urltype, rest = urllib.splittype(selector) url = rest user_passwd = None if urltype.lower() != 'http': realhost = None else: - realhost, rest = splithost(rest) + realhost, rest = urllib.splithost(rest) if realhost: user_passwd, realhost = urllib.splituser(realhost) if user_passwd: selector = "%s://%s%s" % (urltype, realhost, rest) - if proxy_bypass(realhost): + if urllib.proxy_bypass(realhost): host = realhost #print "proxy via http:", host, selector @@ -585,7 +588,7 @@ class HTTPPluginTestCase(PluginTestCase): response = self.request(uri, read=False, **kwargs) self.assertEqual(response, expectedResponse) - def assertNotHTTPResponse(self, irc, expectedResponse, **kwargs): + def assertNotHTTPResponse(self, uri, expectedResponse, **kwargs): response = self.request(uri, read=False, **kwargs) self.assertNotEqual(response, expectedResponse) diff --git a/src/utils/file.py b/src/utils/file.py index 3043079e5..50ab27c97 100644 --- a/src/utils/file.py +++ b/src/utils/file.py @@ -171,7 +171,8 @@ class AtomicFile(file): if newSize or self.allowEmptyOverwrite or not originalExists: if originalExists: oldSize = os.path.getsize(self.filename) - if self.makeBackupIfSmaller and newSize < oldSize: + if self.makeBackupIfSmaller and newSize < oldSize and \ + self.backupDir != '/dev/null': now = int(time.time()) backupFilename = '%s.backup.%s' % (self.filename, now) if self.backupDir is not None: diff --git a/src/utils/net.py b/src/utils/net.py index 370f3e6fc..544371acd 100644 --- a/src/utils/net.py +++ b/src/utils/net.py @@ -1,5 +1,6 @@ ### # Copyright (c) 2002-2005, Jeremiah Fincher +# Copyright (c) 2011, James Vega # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -85,7 +86,7 @@ def getSocket(host): """ addrinfo = socket.getaddrinfo(host, None) host = addrinfo[0][4][0] - if isIP(host): + if isIPV4(host): return socket.socket(socket.AF_INET, socket.SOCK_STREAM) elif isIPV6(host): return socket.socket(socket.AF_INET6, socket.SOCK_STREAM) @@ -93,12 +94,23 @@ def getSocket(host): raise socket.error, 'Something wonky happened.' def isIP(s): - """Returns whether or not a given string is an IPV4 address. + """Returns whether or not a given string is an IP address. >>> isIP('255.255.255.255') 1 - >>> isIP('abc.abc.abc.abc') + >>> isIP('::1') + 0 + """ + return isIPV4(s) or isIPV6(s) + +def isIPV4(s): + """Returns whether or not a given string is an IPV4 address. + + >>> isIPV4('255.255.255.255') + 1 + + >>> isIPV4('abc.abc.abc.abc') 0 """ try: diff --git a/src/utils/str.py b/src/utils/str.py index 5c6324605..6e428a84d 100644 --- a/src/utils/str.py +++ b/src/utils/str.py @@ -64,6 +64,7 @@ def normalizeWhitespace(s, removeNewline=True): s = str(s) if removeNewline: s = str.replace(s, '\n', '') + s = str.replace(s, '\t', ' ') while ' ' in s: s = str.replace(s, ' ', ' ') return s diff --git a/src/version.py b/src/version.py deleted file mode 100644 index 8bc413c22..000000000 --- a/src/version.py +++ /dev/null @@ -1,3 +0,0 @@ -"""stick the various versioning attributes in here, so we only have to change -them once.""" -version = '0.83.4.1+limnoria1' diff --git a/test/test_commands.py b/test/test_commands.py index 1c3f2d681..290ae5c93 100644 --- a/test/test_commands.py +++ b/test/test_commands.py @@ -30,6 +30,7 @@ from supybot.test import * from supybot.commands import * +import supybot.conf as conf import supybot.irclib as irclib import supybot.ircmsgs as ircmsgs import supybot.callbacks as callbacks @@ -72,6 +73,16 @@ class GeneralContextTestCase(CommandsTestCase): self.assertState(['int'], ['1'], [1]) self.assertState(['int', 'int', 'int'], ['1', '2', '3'], [1, 2, 3]) + def testSpecNick(self): + strict = conf.supybot.protocols.irc.strictRfc() + try: + conf.supybot.protocols.irc.strictRfc.setValue(True) + self.assertError(['nick'], ['1abc']) + conf.supybot.protocols.irc.strictRfc.setValue(False) + self.assertState(['nick'], ['1abc'], ['1abc']) + finally: + conf.supybot.protocols.irc.strictRfc.setValue(strict) + def testSpecLong(self): self.assertState(['long'], ['1'], [1L]) self.assertState(['long', 'long', 'long'], ['1', '2', '3'], diff --git a/test/test_irclib.py b/test/test_irclib.py index f2df6c920..2fba31c52 100644 --- a/test/test_irclib.py +++ b/test/test_irclib.py @@ -290,6 +290,13 @@ class IrcStateTestCase(SupyTestCase): state.addMsg(self.irc, ircmsgs.IrcMsg(':irc.inet.tele.dk 005 adkwbot WALLCHOPS KNOCK EXCEPTS INVEX MODES=4 MAXCHANNELS=20 MAXBANS=beI:100 MAXTARGETS=4 NICKLEN=9 TOPICLEN=120 KICKLEN=90 :are supported by this server')) self.assertEqual(state.supported['maxbans'], 100) + def testSupportedUmodes(self): + state = irclib.IrcState() + state.addMsg(self.irc, ircmsgs.IrcMsg(':charm.oftc.net 004 charm.oftc.net hybrid-7.2.2+oftc1.6.8 CDGPRSabcdfgiklnorsuwxyz biklmnopstveI bkloveI')) + self.assertEqual(state.supported['umodes'], 'CDGPRSabcdfgiklnorsuwxyz') + self.assertEqual(state.supported['chanmodes'], + 'biklmnopstveI') + def testEmptyTopic(self): state = irclib.IrcState() state.addMsg(self.irc, ircmsgs.topic('#foo')) diff --git a/test/test_utils.py b/test/test_utils.py index c4efb4979..da94678e6 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -1,6 +1,6 @@ ### # Copyright (c) 2002-2005, Jeremiah Fincher -# Copyright (c) 2009, James Vega +# Copyright (c) 2009,2011, James Vega # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -501,11 +501,9 @@ class NetTest(SupyTestCase): isIP = utils.net.isIP self.failIf(isIP('a.b.c')) self.failIf(isIP('256.0.0.0')) - self.failUnless(isIP('127.1')) self.failUnless(isIP('0.0.0.0')) self.failUnless(isIP('100.100.100.100')) - # This test is too flaky to bother with. - # self.failUnless(utils.isIP('255.255.255.255')) + self.failUnless(isIP('255.255.255.255')) def testIsIPV6(self): f = utils.net.isIPV6