html/schwaebisch.pl


   1 #!/usr/bin/perl
   2 #
   3 #  Schwaebisch (irssi) 1.0.0
   4 #
   5 #  (c) 2000-2003 by Robert Scheck <irssi@robert-scheck.de>
   6 #
   7 #  Schwaebisch (irssi) is adapted from "schwob", a swabian translator 
   8 #  by Jens Schweikhardt <schweikh@noc.dfn.de>
   9 #
  10 #  This program is free software; you can redistribute it and/or modify
  11 #  it under the terms of the GNU General Public License as published by
  12 #  the Free Software Foundation; either version 2 of the License, or
  13 #  (at your option) any later version.
  14 #
  15 #  This program is distributed in the hope that it will be useful,
  16 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18 #  GNU General Public License for more details.
  19 #
  20 #  You should have received a copy of the GNU General Public License
  21 #  along with this program; if not, write to the Free Software
  22 #  Foundation, Inc.,
  23 #  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  24 #
  25 
  26 
  27 use strict;
  28 
  29 use vars qw($VERSION %IRSSI);
  30 $VERSION = "1.0.0";
  31 %IRSSI = (
  32     authors     => "Robert Scheck",
  33     contact     => "irssi\@robert-scheck.de",
  34     name        => "Schwaebisch",
  35     description => "/schwäbisch - translates your messages from german to swabian",
  36     license     => "GNU GPL v2",
  37     url         => "http://ftp.robert-scheck.de/linux/irssi/scripts/",
  38     modules     => "",
  39     changed     => "$VERSION",
  40     commands    => "schwäbisch"
  41 );
  42 
  43 use Irssi 20020324;
  44 
  45 sub schwaebisch ($)
  46 {
  47   my ($text) = @_;
  48 
  49   # Komplette Wortersetzungen:
  50   $text =~ s/\b([Dd])a\b([^ß])/$1o$2/g;
  51   $text =~ s/\bdann\b/no/g;
  52   $text =~ s/\bEs\b/S/g;
  53   $text =~ s/\bes\b/s/g;
  54   $text =~ s/\beine([sm])\b/oi$1/g;
  55   $text =~ s/\bEine([sm])\b/Oi$1/g;
  56   $text =~ s/\b([DdMmSs])eine?\b/$1ei/g;
  57   $text =~ s/\b([DdMmSs])eins\b/$1eis/g;
  58   $text =~ s/\b([DdMmSs])einer\b/$1einr/g;
  59   $text =~ s/\beine\b/a/g;
  60   $text =~ s/\bEine\b/A/g;
  61   $text =~ s/\beiner\b/oinr/g;
  62   $text =~ s/\bEiner\b/Oinr/g;
  63   $text =~ s/\b([Ee])inen\b/$1n/g;        # einen -> en
  64   $text =~ s/\b([Dd])as/$1es/g;           # das -> des
  65   $text =~ s/\b[Ii]ch\b/I/g;              # ich -> i
  66   $text =~ s/\b([Nn])icht\b/$1ed/g;       # nicht -> ned
  67   $text =~ s/\b([Ss])ie\b/$1e/g;          # sie -> se
  68   $text =~ s/\bwir\b/mir/g;
  69   $text =~ s/\bWir\b/Mir/g;
  70   $text =~ s/\b(he)?([Rr])unter/$2a/g;
  71   $text =~ s/\b([Hh])at\b/$1ott/g;
  72   $text =~ s/\b([Hh])aben\b/$1enn/g;
  73   $text =~ s/\b([Hh])abe\b/$1ann/g;
  74   $text =~ s/\b([Gg])ehen\b/$1anga/g;
  75   $text =~ s/\b([Kk])ann\b/$1a/g;
  76   $text =~ s/\b([Kk])önnen\b/$1enna/g;
  77   $text =~ s/\b([Ww])ollen\b/$1ella/g;
  78   $text =~ s/\b([Ss])ollten\b/$1oddad/g;
  79   $text =~ s/\b([Ss])ollt?e?\b/$1odd/g;
  80   $text =~ s/\bdiese?r?\b/sell/g;
  81   $text =~ s/\bDiese?r?\b/Sell/g;
  82   $text =~ s/\b([Aa])uch\b/$1o/g;        # auch -> ao
  83   $text =~ s/\b([Nn])och\b/$1o/g;        # noch -> no
  84   $text =~ s/\b([Ss])ind\b/$1end/g;      # sind -> send
  85   $text =~ s/\b([Ss])chon\b/$1cho/g;     # schon -> scho
  86   $text =~ s/\b([Mm])an\b/$1r/g;         # man -> mr
  87   $text =~ s/\b([Dd])ie\b/$1/g;          # die -> d
  88   $text =~ s/\b([Dd])a?rauf\b/$1ruff/g;  # darauf -> druff
  89   $text =~ s/\bviele?s?\b/en Haufa/g;
  90   $text =~ s/\bViele?s?\b/En Haufa/g;
  91   $text =~ s/\bAuto|Daimler\b/Heilix Blechle/g;
  92   $text =~ s/Marmelade|Konfitüre/Xälz/g;
  93   $text =~ s/\b2\b/zwoi/g;
  94   $text =~ s/\b5\b/fempf/g;
  95   $text =~ s/\b15\b/fuffzehn/g;
  96   $text =~ s/\b50\b/fuffzig/g;
  97 
  98   # Am Wortanfang und Großgeschriebenes:
  99   $text =~ s/\bAuf/Uff/g;
 100   $text =~ s/\bauf/uff/g;
 101   $text =~ s/\bEin/Oi/g;
 102   $text =~ s/\bein/oi/g;
 103   $text =~ s/\bMal/Mol/g;
 104   $text =~ s/\bUm/Om/g;
 105   $text =~ s/\bunge/og/g;
 106   $text =~ s/\bUnge/Og/g;
 107   $text =~ s/\bunver/ovr/g;
 108   $text =~ s/\bUnver/Ovr/g;
 109   $text =~ s/\bUn/On/g;
 110   $text =~ s/\bun/on/g;
 111   $text =~ s/\bUnd/Ond/g;
 112   $text =~ s/\bin(s?)/en$1/g;            # in -> en,   ins -> ens
 113   $text =~ s/\bIn(s?)/En$1/g;            # In -> En,   Ins -> Ens
 114   $text =~ s/\bim/em/g;
 115   $text =~ s/\bIm/Em/g;
 116   $text =~ s/\b([Kk])ein/$1oin/g;
 117   $text =~ s/\b([Nn])ein/$1oi/g;
 118   $text =~ s/\b([Zz])usa/$1a/g;          # zusammen -> zamma
 119 
 120   # Am Wortende:
 121   $text =~ s/\Ben\b/a/g;                 # latschen -> latscha
 122   $text =~ s/\Bel\b/l/g;                 # Sessel -> Sessl
 123   $text =~ s/([^h])er\b/$1r/g;           # der -> dr
 124   $text =~ s/([h])es\b/$1s/g;            # manches -> manchs
 125   $text =~ s/\Bau\b/ao/g;                # lau -> lao
 126   $text =~ s/([lt])ein\b/$1oi/g;         # Stein -> Stoi
 127 
 128   # Beliebige Position:
 129   $text =~ s/([Ff])rag/$1rog/g;
 130   $text =~ s/teil/doil/g;
 131   $text =~ s/Teil/Doil/g;
 132   $text =~ s/([Hh])eim/$1oim/g;
 133   $text =~ s/steht/stoht/g;
 134   $text =~ s/um/om/g;
 135   $text =~ s/imm/emm/g;                  # schlimm -> schlemm
 136   $text =~ s/mal/mol/g;
 137   $text =~ s/zwei/zwoi/g;
 138   $text =~ s/ck/gg/g;
 139   $text =~ s/([Ee])u/$1i/g;
 140   $text =~ s/([Vv])er/$1r/g;
 141   $text =~ s/([Gg])e([aflmnrs])/$1$2/g;  # angenommen -> angnommen
 142   $text =~ s/([Ss])t/$1chd/g;            # st -> schd
 143   $text =~ s/([Ss])p/$1chb/g;            # sp -> schb
 144   $text =~ s/tio/zio/g;                  # Information -> Informazion
 145   $text =~ s/\?/, ha?/g;
 146   $text =~ s/!!/, Sagg Zemend!/g;
 147   $text =~ s/!/, haidanai!/g;
 148 
 149   # Spezielles:
 150   $text =~ tr/TtPpÖöÜü/DdBbEeIi/;        # Globale Transformationen zum Schluss
 151 
 152   # Was nach 'tr' stehen muss:
 153   $text =~ s/ung/ong/g;
 154   $text =~ s/und/ond/g;
 155   $text =~ s/ind/end/g;
 156 
 157   return $text;
 158 }
 159 
 160 sub cmd_schwaebisch ($$$)
 161 {
 162   my ($arg, $server, $witem) = @_;
 163   if ($witem && ($witem->{type} eq 'CHANNEL' || $witem->{type} eq 'QUERY'))
 164   {
 165     $witem->command('MSG '.$witem->{name}.' '.schwaebisch($arg));
 166   }
 167   else
 168   {
 169     print CLIENTCRAP "%B>>%n ".schwaebisch($arg);
 170   }
 171 }
 172 
 173 Irssi::command_bind('schwäbisch', \&cmd_schwaebisch);