diff --git a/plugins/Unix/config.py b/plugins/Unix/config.py index f37cf37e1..0da4ec10b 100644 --- a/plugins/Unix/config.py +++ b/plugins/Unix/config.py @@ -58,7 +58,7 @@ conf.registerGroup(Unix, 'fortune') conf.registerGlobalValue(Unix.fortune, 'command', registry.String(utils.findBinaryInPath('fortune') or '', _("""Determines what command will be called for the fortune command."""))) -conf.registerGlobalValue(Unix.fortune, 'short', +conf.registerChannelValue(Unix.fortune, 'short', registry.Boolean(True, _("""Determines whether only short fortunes will be used if possible. This sends the -s option to the fortune program."""))) conf.registerGlobalValue(Unix.fortune, 'equal', @@ -66,7 +66,7 @@ conf.registerGlobalValue(Unix.fortune, 'equal', weight to the different fortune databases. If false, then larger databases will be given more weight. This sends the -e option to the fortune program."""))) -conf.registerGlobalValue(Unix.fortune, 'offensive', +conf.registerChannelValue(Unix.fortune, 'offensive', registry.Boolean(False, _("""Determines whether fortune will retrieve offensive fortunes along with the normal fortunes. This sends the -a option to the fortune program."""))) diff --git a/plugins/Unix/locale/fi.po b/plugins/Unix/locale/fi.po new file mode 100644 index 000000000..54a015390 --- /dev/null +++ b/plugins/Unix/locale/fi.po @@ -0,0 +1,267 @@ +# Unix plugin in Limnoria +# Copyright (C) 2011 Limnoria +# Mika Suomalainen , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2011-08-10 11:27+CEST\n" +"PO-Revision-Date: 2011-12-09 17:16+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 "" +"The \"progstats\" command can reveal potentially sensitive\n" +" information about your machine. Here's an example of its output:\n" +"\n" +" %s\n" +msgstr "\"Progstats\" komento voi paljastaa mahdollisesti henkilökohtaista tietoa tietokoneestasi.\n" +" Tässä on näyte sen ulostulosta:\n" +"\n" +" %s\n" + + +#: config.py:51 +msgid "Would you like to disable this command for non-owner users?" +msgstr "Haluaisitko poistaa tämän komennon käytöstä muille käyttäjille, kuin omistajille?" + +#: config.py:59 +msgid "" +"Determines\n" +" what command will be called for the fortune command." +msgstr "Määrittää minkä komennon 'fortune'\n" +" komento kutsuu." + +#: config.py:62 +msgid "" +"Determines whether only short fortunes will be\n" +" used if possible. This sends the -s option to the fortune program." +msgstr "Määrittää käytetäänkö vain lyhyitä ennustuksia, jos se on mahdollista.\n" +" Tämä lähettää fortune ohjelmalle -s asetuksen." + +#: config.py:65 +msgid "" +"Determines whether fortune will give equal\n" +" weight to the different fortune databases. If false, then larger\n" +" databases will be given more weight. This sends the -e option to the\n" +" fortune program." +msgstr "Määrittää antaako 'fortune'\n" +" yhtäpaljon painoa erilaisille ennustustietokannoille. Jos tämä asetus on 'false', niin\n" +" suuremmille tietokannoille annetaan enemmän painoa. Tämä lähettää -e asetuksen\n" +" ennustus ohjelmalle." + +#: config.py:70 +msgid "" +"Determines whether fortune will retrieve\n" +" offensive fortunes along with the normal fortunes. This sends the -a\n" +" option to the fortune program." +msgstr "Määrittää hakeeko 'fortune' myös loukkaavia ennustuksia tavallisten\n" +" ennustusten lisäksi. Tämä lähettää -a\n" +" asetuksen ennustus ohjelmalle." + +#: config.py:74 +msgid "" +"Determines what specific file\n" +" (if any) will be used with the fortune command; if none is given, the\n" +" system-wide default will be used. Do note that this fortune file must be\n" +" placed with the rest of your system's fortune files." +msgstr "Määrittää mitä tiettyä tietokantaa\n" +" (jos mitään) 'fortune' käyttää; jos yhtään ei ole käytetty, \n" +" järjestelmän laajuista oletusta käytetään. Huomaa, että tämän ennustustiedoston täytyy olla\n" +" sijoitettuna muiden järjestelmän ennustustiedostojen kanssa." + +#: config.py:82 +msgid "" +"Määrittää\n" +" mitä komentoa 'spell' komento käyttää." +msgstr "" + +#: config.py:87 +msgid "" +"Determines what\n" +" command will be called for the wtf command." +msgstr "Määrittää minkä komennon\n" +" 'wtf' komento kutsuu." + +#: plugin.py:75 +msgid "" +"\n" +"\n" +" Returns the number of an errno code, or the errno code of a number.\n" +" " +msgstr "\n" +"\n" +" Palauttaa virhenumeron , tai virhekoodin virhenumeron.\n" +" " + +#: plugin.py:87 +msgid "I can't find the errno number for that code." +msgstr "En voi löytää virhenumeroa tuolle koodille." + +#: plugin.py:90 +msgid "(unknown)" +msgstr "(tuntematon)" + +#: plugin.py:91 +msgid "%s (#%i): %s" +msgstr "%s (#%i): %s" + +#: plugin.py:96 +msgid "" +"takes no arguments\n" +"\n" +" Returns various unix-y information on the running supybot process.\n" +" " +msgstr "ei ota parametrejä\n" +"\n" +" Palauttaa muutamia unixmaisia tietoja suoritettavasta supybot prosessista.\n" +" " + +#: plugin.py:104 +msgid "" +"takes no arguments\n" +"\n" +" Returns the current pid of the process for this Supybot.\n" +" " +msgstr "ei ota parametrejä\n" +"\n" +" Palauttaa tämän Supybot prosessin nykyisen pidin.\n" +" " + +#: plugin.py:114 +msgid "" +" []\n" +"\n" +" Returns the resulting of doing a crypt() on . If is\n" +" not given, uses a random salt. If running on a glibc2 system,\n" +" prepending '$1$' to your salt will cause crypt to return an MD5sum\n" +" based crypt rather than the standard DES based crypt.\n" +" " +msgstr " []\n" +"\n" +" Palauttaa crypt():in tuloksen . Jos ei ole\n" +" annettu, satunnaista suolaa käytetään. Jos suoritetaan glibc2 järjestelmällä,\n" +" '$1$' lisääminen kryptaukseesi aiheuttaa MD5 summaan perustuvan kryptauksen, mielummin kuin\n" +" normaalin DES pohjaisen kryptin.\n" +" " + +#: plugin.py:133 +msgid "" +"\n" +"\n" +" Returns the result of passing to aspell/ispell. The results\n" +" shown are sorted from best to worst in terms of being a likely match\n" +" for the spelling of .\n" +" " +msgstr "\n" +"\n" +" Palauttaa lähetyksen aspell/ispell ohjelmaan. Palautuvat tulokset\n" +" näytetään järjestyksessä parhaasta huonompaan sillä perusteella, kuinka todennäköisesti ne ovat oikein kirjoitettuja\n" +" .\n" +" " + + +#: plugin.py:142 +msgid "The spell checking command is not configured. If one is installed, reconfigure supybot.plugins.Unix.spell.command appropriately." +msgstr "Oikeinkirjoituksen tarkistusohjelma ei ole säädetty. Jos sellainen on asennttu, säädä supybot.plugins.Unix.spell.command sopivaksi." + +#: plugin.py:147 +msgid " must begin with an alphabet character." +msgstr " täytyy alkaa aakkosellisella merkillä." + +#: plugin.py:169 +msgid "No results found." +msgstr "Tuloksia ei löytynyt." + +#: plugin.py:180 +msgid "%q may be spelled correctly." +msgstr "%q saattaa olla kirjoitettu oikein." + +#: plugin.py:182 +msgid "I could not find an alternate spelling for %q" +msgstr "En löytänyt vaihtoehtoista kirjoitustapaa sanalle %q" + +#: plugin.py:186 +msgid "Possible spellings for %q: %L." +msgstr "Mahdolliset kirjoitustavat sanalle %q ovat: %L." + +#: plugin.py:195 +msgid "" +"takes no arguments\n" +"\n" +" Returns a fortune from the *nix fortune program.\n" +" " +msgstr "ei ota parametrejä\n" +"\n" +" Palauttaa ennustuksen *nix ennustusohjelmalta.\n" +" " + +#: plugin.py:215 +msgid "It seems the configured fortune command was not available." +msgstr "Näyttää siltä, että määritetty ennustusohjelma ei ollut saatavilla." + +#: plugin.py:224 +msgid "The fortune command is not configured. If fortune is installed on this system, reconfigure the supybot.plugins.Unix.fortune.command configuration variable appropriately." +msgstr "Ennustuskomento ei ole määritetty. Jos fortune on asennettu tähän järjestelmään, määritä uudelleen asetusarvo supybot.plugins.Unix.fortune.command oikein." + +#: plugin.py:231 +msgid "" +"[is] \n" +"\n" +" Returns wtf is. 'wtf' is a *nix command that first\n" +" appeared in NetBSD 1.5. In most *nices, it's available in some sort\n" +" of 'bsdgames' package.\n" +" " +msgstr "[is] \n" +"\n" +" Palauttaa mikä ihme on. 'wtf' on *nix komento, joka ilmestyi ensin\n" +" NetBSD 1.5 käyttöjärjestelmässä. Suurimmassa osassa *nixeistä, se on saatavilla jonkinlaisessa\n" +" 'bsdgames' paketissa.\n" +" " + +#: plugin.py:246 +msgid "It seems the configured wtf command was not available." +msgstr "Vaikuttaa siltä, ettei määritetty wtf komento ollut saatavilla." + +#: plugin.py:255 +msgid "The wtf command is not configured. If it is installed on this system, reconfigure the supybot.plugins.Unix.wtf.command configuration variable appropriately." +msgstr "Wtf komento ei ole määritetty. Jos se on asennettu tähän järjestelmään, määritä supybot.plugins.Unix.wtf.command asetusarvo oikein." + +#: plugin.py:263 +msgid "" +"[--c ] [--i ] [--t ] [--W ] \n" +" Sends an ICMP echo request to the specified host.\n" +" The arguments correspond with those listed in ping(8). --c is\n" +" limited to 10 packets or less (default is 5). --i is limited to 5\n" +" or less. --W is limited to 10 or less.\n" +" " +msgstr "[--c ] [--i ] [--t ] [--W ] \n" +" Lähettää ICMP kaiutuspyynnön määritettyyn isäntään.\n" +" Parametrin täsmäävät niihin, jotka on määritetty ohjekirjasivulla ping(8). --c on\n" +" rajoitettu kymmeneen tai vähempään (oletus on 5). --i on rajoitettu viiteen\n" +" tai vähempään. --W on rajoitettu kymmeneen tai vähempään.\n" +" " + +#: plugin.py:315 +msgid "" +" \n" +" Calls any command available on the system, and returns its output.\n" +" Requires owner capability.\n" +" Note that being restricted to owner, this command does not do any\n" +" sanity checking on input/output. So it is up to you to make sure\n" +" you don't run anything that will spamify your channel or that \n" +" will bring your machine to its knees. \n" +" " +msgstr " \n" +" Kutsuu minkä tahansa komennon, joka on saatavilla järjestelmässä, ja palauttaa sen ulostulon.\n" +" Vaatii owner valtuuden.\n" +" Huomaa, että, koska tämä komento on rajoitettu omistajalle, se ei tee\n" +" minkäänlaista järjellisyystarkistusta sisäänmenoon/ulostuloon. Joten riippuu sinusta, että teet varmaksi, ettet suorita mitään, mikä sotkee kanavaasi, tai joka\n" +" laittaa koneesi\n" +" polvilleen. \n" +" " diff --git a/plugins/Unix/plugin.py b/plugins/Unix/plugin.py index ef46eacbc..0f5a8c07c 100644 --- a/plugins/Unix/plugin.py +++ b/plugins/Unix/plugin.py @@ -196,14 +196,15 @@ class Unix(callbacks.Plugin): Returns a fortune from the *nix fortune program. """ + channel = msg.args[0] fortuneCmd = self.registryValue('fortune.command') if fortuneCmd: args = [fortuneCmd] - if self.registryValue('fortune.short'): + if self.registryValue('fortune.short', channel): args.append('-s') if self.registryValue('fortune.equal'): args.append('-e') - if self.registryValue('fortune.offensive'): + if self.registryValue('fortune.offensive', channel): args.append('-a') args.extend(self.registryValue('fortune.files')) try: diff --git a/src/callbacks.py b/src/callbacks.py index 4f5846285..3ad4ee995 100644 --- a/src/callbacks.py +++ b/src/callbacks.py @@ -830,7 +830,8 @@ class NestedCommandsIrcProxy(ReplyIrcProxy): # action=True implies noLengthCheck=True and prefixNick=False self.noLengthCheck=noLengthCheck or self.noLengthCheck or self.action target = self.private and self.to or self.msg.args[0] - s = str(s) # Allow non-string esses. + if not isinstance(s, basestring): # avoid trying to str() unicode + s = str(s) # Allow non-string esses. if self.finalEvaled: try: if isinstance(self.irc, self.__class__): diff --git a/src/irclib.py b/src/irclib.py index 822631977..82ada6441 100644 --- a/src/irclib.py +++ b/src/irclib.py @@ -406,10 +406,10 @@ class IrcState(IrcCommandDispatcher): """Handles parsing the 004 reply Supported user and channel modes are cached""" - # msg.args = [nick, server, ircd-version, umodes, modes, + # msg.args = [server, ircd-version, umodes, modes, # modes that require arguments? (non-standard)] - self.supported['umodes'] = msg.args[3] - self.supported['chanmodes'] = msg.args[4] + self.supported['umodes'] = msg.args[2] + self.supported['chanmodes'] = msg.args[3] _005converters = utils.InsensitivePreservingDict({ 'modes': int, 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'))