Initial commit of code released on 2002-07-15

This commit is contained in:
Brian Cline
2015-01-25 18:26:44 -06:00
commit feca086612
102 changed files with 22822 additions and 0 deletions

614
Sources/replies.c Normal file
View File

@@ -0,0 +1,614 @@
/* Undernet Channel Service (X)
* Copyright (C) 1995-2002 Robin Thellend
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The author can be contact by email at <csfeedback@robin.pfft.net>
*
* Please note that this software is unsupported and mostly
* obsolete. It was replaced by GNUworld/CMaster. See
* http://gnuworld.sourceforge.net/ for more information.
*/
/* Very appreciated contribution from: (just add your name here)
Stephan Mantler aka Step <smantler@atpibm6000.tuwien.ac.at>
Carlo Kid aka Run <carlo@tnrunaway.tn.tudelft.nl>
nirvana <nirvana@nil.fut.es>
*/
#include "h.h"
alang Lang[NO_LANG] =
{
{L_ENGLISH, "en", "english"},
{L_DUTCH, "nl", "dutch"},
{L_FRENCH, "fr", "fran<EFBFBD>ais"},
{L_SPANISH, "es", "espa<EFBFBD>ol"},
{L_GERMAN, "de", "deutsch"}
};
/* the %s will be expanded to the channel name
notaccessreply is only english for now */
char *notaccessreply[] =
{
"%s: Nice try. But I'm not a fool!",
"%s: Cheating is very bad you know!",
"%s: Do I know you?",
"You should come on %s more often",
"Ha! Ha! I don't think people on %s would like that!",
"%s: Pfft! Nice try!",
"%s: No, I don't think so.. you're not my type :P",
"go read the %s manual.. then I might consider it",
"I would.. but.. one teensy problem. You're not in %s's database",
"Oh.. are you trying to communicate with me?",
"You see, %s is some kinda private thing...",
NULL
};
void ReplyNotAccess(char *nick, char *channel)
{
static int index = 0;
register int i;
char buffer[200];
for (i = rand() % 5 + 1; i > 0; i--)
if (notaccessreply[++index] == NULL)
index = 0;
sprintf(buffer, notaccessreply[index], channel);
notice(nick, buffer);
}
void RandomChannel(char *source)
{
register int hash, offset;
register achannel *chan;
char buffer[200];
hash = rand() % 1000;
offset = rand() % 100;
chan = ChannelList[hash];
while (chan == NULL)
{
chan = ChannelList[(++hash) % 1000];
if (hash > 2000)
return;
}
while (offset > 0 && !chan->on)
{
chan = chan->next;
if (chan == NULL)
{
while (chan == NULL)
{
chan = ChannelList[(++hash) % 1000];
if (hash > 2000)
return;
}
}
offset--;
}
sprintf(buffer, "%s is cool!", chan->name);
notice(source, buffer);
}
void Say(char *source, char *args)
{
char buffer[1024], target[80], global[] = "*";
if (Access(global, source) < 900)
{
return; /*silently */
}
GetWord(0, args, target);
args = ToWord(1, args);
if (!*target || !*args)
{
notice(source, "Syntax: say [#channel] [whatever]");
return;
}
sprintf(buffer, ":%s PRIVMSG %s :%s\n", mynick, target, args);
sendtoserv(buffer);
}
void ServNotice(char *source, char *args)
{
char buffer[1024], target[80], global[] = "*";
if (Access(global, source) < 600)
{
return; /*silently */
}
GetWord(0, args, target);
args = ToWord(1, args);
if (!*target || !*args)
{
notice(source, "SYNTAX: servnotice [#channel] [whatever]");
return;
}
sprintf(buffer, "[Channel Service: %s] %s", source, args);
servnotice(target, buffer);
}
char *replies[][NO_LANG] =
{
/* RPL_NOTONCHANNEL */
{"I am not on that channel!", /* english */
"Ik zit niet op dat kanaal!", /* dutch */
"Je ne suis pas sur ce canal!", /* french */
"No estoy en ese canal!", /* spanish */
"Ich bin nicht auf diesem Kanal!" /* german */
},
/* RPL_NOTCHANOP */
{"I am not channel operator", /* english */
"Ik ben geen channel operator", /* dutch */
"Je ne suis pas op<6F>rateur de canal", /* french */
"No soy operador del canal", /* spanish */
"Ich bin kein Betreiber auf diesem Kanal" /* german */
},
/* RPL_OPONLY */
{"This channel is in OpOnly Mode", /* english */
"Dit kanaal is in OpOnly Mode", /* dutch */
"Ce canal est en mode OpOnly", /* french */
"Ese canal est<73> en modo OpOnly", /* spanish */
"Dieser Kanal is im OpOnly-Modus" /* german */
},
/* RPL_OPSELFONLY */
{"You can only op yourself in OpOnly mode", /* english */
"In OpOnly mode mag je alleen jezelf operator maken", /* dutch */
"Vous ne pouvez opper que vous-m<>me en mode OpOnly", /* french */
"Solo puedes ser operador en modo OpOnly", /* spanish */
"Sie koennen nur sich selbst zum Betreiber machen (Kanal im OpOnly-Modus)" /* german */
},
/* RPL_NOSUCHNICK */
{"No such nickname", /* english */
"Deze NICK is niet in gebruik", /* dutch */
"Ce nick n'existe pas", /* french */
"Ese nick no existe", /* spanish */
"Diesen Nickname gibt es nicht" /* german */
},
/* RPL_ALREADYONCHANNEL */
{"This user is already on channel", /* english */
"Deze persoon is al op dat kanaal", /* dutch */
"Cet usager est d<>j<EFBFBD> sur le canal", /* french */
"Ese usuario ya est<73> en el canal", /* spanish */
"Dieser Benutzer ist bereits auf dem Kanal" /* german */
},
/* RPL_IINVITED */
{"I invited %s to %s", /* english */
"%s is uitgenodigd naar %s te komen", /* dutch */
"J'ai invit<69> %s sur %s", /* french */
"Yo he invitado a %s en %s", /* spanish */
"Ich haben %s eingeladen, auf %s zu kommen" /* german */
},
/* RPL_YOUAREINVITED */
{"%s invites you to %s", /* english */
"%s vraagt of naar %s komt", /* dutch */
"%s vous invite sur %s", /* french */
"%s te invita en %s", /* spanish */
"%s laedt Sie ein, auf %s zu kommen" /* german */
},
/* RPL_ALWAYSOPWASACTIVE */
{"AlwaysOp was active! It's now deactivated", /* english */
"AlwaysOp was actief! Het is nu uitgeschakeld", /* dutch */
"AlwaysOp <20>tait actif! Il est maintenant d<>sactiv<69>", /* french */
"AlwaysOp estaba activado! Ahora ya esta desactivado", /* spanish */
"AlwaysOp war aktiv! Es wurde ausgeschalten" /* german */
},
/* RPL_ALWAYSOP */
{"This channel is in AlwaysOp mode!", /* english */
"Dit kanaal is in AlwaysOp mode!", /* dutch */
"Ce canal est en mode AlwaysOp!", /* french */
"Este canal est<73> en modo AlwaysOp!", /* spanish */
"Dieser Kanal is im AlwaysOp-Modus!" /* german */
},
/* RPL_KICK1ST */
{"You are not allowed to KICK me!", /* english */
"Het is niet toegestaan mij te KICKen!", /* dutch */
"Vous n'avez pas le droit de me kicker!", /* french */
"No estas autorizado para kickearme!", /* spanish */
"Sie duerfen mich nicht kicken!" /* german */
},
/* RPL_KICK2ND */
{"Please STOP kicking me!", /* english */
"STOP mij te KICKen!", /* dutch */
"Veuillez arr<72>ter de me kicker!", /* french */
"Por favor <20>para de kickearme!", /* spanish */
"Bitte hoeren Sie auf, mich zu kicken!" /* german */
},
/* RPL_CHANNOTEXIST */
{"That channel does not exist!", /* english */
"Dat kanaal bestaat niet!", /* dutch */
"Ce canal n'existe pas!", /* french */
"Ese canal no existe!", /* spanish */
"Diesen Kanal gibt es nicht!" /* german */
},
/* RPL_BADFLOODLIMIT */
{"value of FLOODPRO must be in the range [3-20] or 0 to turn it off",
"FLOODPRO moet een waarde hebben tussen 3 en 20 of 0 om het uit te schakelen",
"la valeur de FLOODPRO doit <20>tre entre 3 et 20 ou 0 pour le d<>sactiver",
"El valor de FLOODPRO tiene que estar entre 3 y 20 <20> 0 para desactivarlo",
"der Wert fon FLOODPRO muss im Bereich von 3 und 20 sein (oder 0 um es abzuschalten)"
},
/* RPL_SETFLOODLIMIT */
{"value of FLOODPRO is now %d", /* english */
"De waarde van FLOODPRO is nu %d", /* dutch */
"la valeur de FLOODPRO est maintenant %d", /* french */
"El valor de FLOOPRO est<73> ahora %d", /* spanish */
"FLOODPRO hat jetzt den Wert %d" /* german */
},
/* RPL_BADNICKFLOODLIMIT */
{"value of NICKFLOODPRO must be in the range [3-10] or 0 to turn it off",
"NICKFLOODPRO moet een waarde hebben tussen 3 en 10 of 0 om het uit te schakelen",
"la valeur de NICKFLOODPRO doit <20>tre entre 3 et 10 ou 0 pour le d<>sactiver",
"El valor de NICKFLOOPRO tiene que estar entre 3 y 10 <20> 0 para desactivarlo",
"Werte fuer NICKFLOODPRO muessen im Bereich von 3 bis 10 sein. Oder 0 um es abzuschalten"
},
/* RPL_SETNICKFLOODLIMIT */
{"value of NICKFLOODPRO is now %d", /* english */
"De waarde van NICKFLOODPRO is nu %d", /* dutch */
"la valeur de NICKFLOODPRO est maintenant %d", /* french */
"El valor de NICKFLOOPRO est<73> ahora en %d", /* spanish */
"der Wert fuer NICKFLOODPRO ist jetzt %d" /* german */
},
/* RPL_BADMASSDEOPLIMIT */
{"value of MASSDEOPPRO must be in the range [3-10] or 0 to turn it off",
"MASSDEOPPRO moet een waarde hebben tussen 3 en 10 of 0 om het uit te schakelen",
"la valeur de MASSDEOPPRO doit <20>tre entre 3 et 10 ou 0 pour le d<>sactiver",
"El valor de MASSDEOPPRO tiene que estar entre 3 y 10 <20> 0 para desactivarlo",
"der Wert von MASSDEOPPRO muss zwischen 3 und 10 liegen, oder 0 um es abzuschalten"
},
/* RPL_SETMASSDEOPLIMIT */
{"value of MASSDEOPPRO is now %d", /* english */
"De waarde van MASSDEOPPRO is nu %d", /* dutch */
"la valeur de MASSDEOPPRO est maintenant %d", /* french */
"El valor de MASSDEOPPRO est<73> ahora en %d", /* spanish */
"MASSDEOPPRO ist jetzt %d" /* german */
},
/* RPL_NOOPON */
{"value of NOOP is now ON", /* english */
"NOOP mode is nu ingeschakeld", /* dutch */
"la valeur de NOOP est maintenant ON", /* french */
"El valor de NOOP est<73> ahora en ON", /* spanish */
"NOOP hat jetzt den Wert EIN" /* german */
},
/* RPL_NOOPOFF */
{"value of NOOP is now OFF", /* english */
"NOOP mode is nu uit", /* dutch */
"la valeur de NOOP est maintenant OFF", /* french */
"El valor de NOOP est<73> ahora en OFF", /* spanish */
"NOOP hat jetzt den Wert AUS" /* german */
},
/* RPL_BADNOOP */
{"value of NOOP must be ON or OFF", /* english */
"Kies 'ON' of 'OFF' voor de waarde van NOOP", /* dutch */
"la valeur de NOOP doit <20>tre ON ou OFF", /* french */
"El valor de NOOP debe ser ON o OFF", /* spanish */
"NOOP kann nur EIN oder AUS sein" /* german */
},
/* RPL_ALWAYSOPON */
{"value of ALWAYSOP is now ON", /* english */
"ALWAYSOP mode is nu ingeschakeld", /* dutch */
"la valeur de ALWAYSOP est maintenant ON", /* french */
"El valor de ALWAYSOP es ahora ON", /* spanish */
"ALWAYSOP ist jetzt EIN" /* german */
},
/* RPL_ALWAYSOPOFF */
{"value of ALWAYSOP is now OFF", /* english */
"ALWAYSOP mode is nu uit", /* dutch */
"la valeur de ALWAYSOP est maintenant OFF", /* french */
"El valor de ALWAYSOP es ahora OFF", /* spanish */
"ALWAYSOP ist jetzt AUS" /* german */
},
/* RPL_BADALWAYSOP */
{"value of ALWAYSOP must be ON or OFF", /* english */
"Kies 'ON' of 'OFF' voor de waarde van ALWAYSOP", /* dutch */
"la valeur de ALWAYSOP doit <20>tre ON ou OFF", /* french */
"El valor de ALWAYSOP debe ser ON o OFF", /* spanish */
"Werte fuer ALWAYSOP sind EIN oder AUS" /* german */
},
/* RPL_OPONLYON */
{"value of OPONLY is now ON", /* english */
"OPONLY mode is nu ingeschakeld", /* dutch */
"la valeur de OPONLY est maintenant ON", /* french */
"El valor de OPONLY es ahora ON", /* spanish */
"der Wert fuer OPONLY ist jetzt EIN" /* german */
},
/* RPL_OPONLYOFF */
{"value of OPONLY is now OFF", /* english */
"OPONLY mode is nu uit", /* dutch */
"la valeur de OPONLY est maintenant OFF", /* french */
"El valor de OPONLY es ahora OFF", /* spanish */
"der Wert fuer OPONLY ist jetzt AUS" /* german */
},
/* RPL_BADOPONLY */
{"value of OPONLY must be ON or OFF", /* english */
"Kies 'ON' of 'OFF' voor de waarde van OPONLY", /* dutch */
"la valeur de OPONLY doit <20>tre ON ou OFF", /* french */
"El valor de OPONLY debe ser ON o OFF", /* spanish */
"Werte fuer OPONLY sind EIN oder AUS" /* german */
},
/* RPL_AUTOTOPICON */
{"value of AUTOTOPIC is now ON", /* english */
"AUTOTOPIC mode is nu ingeschakeld", /* dutch */
"la valeur de AUTOTOPIC est maintenant ON", /* french */
"El valor de AUTOTOPIC es ahora ON", /* spanish */
"der Wert fuer AUTOTOPIC ist jetzt EIN" /* german */
},
/* RPL_AUTOTOPICOFF */
{"value of AUTOTOPIC is now OFF", /* english */
"AUTOTOPIC mode is nu uit", /* dutch */
"la valeur de AUTOTOPIC est maintenant OFF", /* french */
"El valor de AUTOTOPIC es ahora OFF", /* spanish */
"der Wert fuer AUTOTOPIC ist jetzt AUS" /* german */
},
/* RPL_BADAUTOTOPIC */
{"value of AUTOTOPIC must be ON or OFF", /* english */
"Kies 'ON' of 'OFF' voor de waarde van AUTOTOPIC", /* dutch */
"la valeur de AUTOTOPIC doit <20>tre ON ou OFF", /* french */
"El valor de AUTOTOPIC debe ser ON o OFF", /* spanish */
"Werte fuer AUTOTOPIC sind EIN oder AUS" /* german */
},
/* RPL_STRICTOPON */
{"value of STRICTOP is now ON", /* english */
"value of STRICTOP is now ON", /* dutch */
"value of STRICTOP is now ON", /* french */
"El valor de STRICTOP es ahora ON", /* spanish */
"value of STRICTOP is now ON" /* german */
},
/* RPL_STRICTOPOFF */
{"value of STRICTOP is now OFF", /* english */
"value of STRICTOP is now OFF", /* dutch */
"value of STRICTOP is now OFF", /* french */
"El valor de STRICTOP es ahora OFF", /* spanish */
"value of STRICTOP is now OFF" /* german */
},
/* RPL_BADSTRICTOP */
{"value of STRICTOP must be ON or OFF", /* english */
"value of STRICTOP must be ON or OFF", /* dutch */
"value of STRICTOP must be ON or OFF", /* french */
"El valor de STRICTOP debe ser ON o OFF", /* spanish */
"value of STRICTOP must be ON or OFF" /* german */
},
/* RPL_BADUSERFLAGS */
{"New value can be 1-AUTOOP or 0-NO AUTOOP",
"De nieuwe waarde kan zijn 1-AUTOOP, 2-PROTECT ou 3-BOTH",
"La nouvelle valeur peut <20>tre 1-AUTOOP ou 0-PAS DE AUTOOP",
"El nuevo valor puede ser 1-AUTOOP o 0- NOAUTOOP", /* spanish */
"Der neue Wert kann 1-AUTOOP, 2-PROTECT oder 3-BEIDE sein."
},
/* RPL_SETUSERFLAGS */
{"value of USERFLAGS is now %d", /* english */
"de waarde van USERFLAGS is nu %d", /* dutch */
"la nouvelles valeur de USERFLAGS est %d", /* french */
"El nuevo valor de USERFLAGS es ahora %d", /* spanish */
"USERFLAGS ist jetzt %d" /* german */
},
/* RPL_KNOWNLANG */
{"Known languages are", /* english */
"De volgende talen zijn bekend", /* dutch */
"Je connais les langues", /* french */
"Yo hablo y escribo los siguientes idiomas", /* spanish */
"Folgende Sprachen sind bekannt" /* german */
},
/* RPL_SETLANG */
{"Default language is now %s (%s)", /* english */
"De default taal is nu %s (%s)", /* dutch */
"La langue par d<>faut est maintenant %s (%s)", /* french */
"El idioma configurado por defecto es ahora %s (%s)", /* spanish */
"Die neue Default-Sprache ist %s (%s)" /* german */
},
/* RPL_STATUS1 */
{"Channel %s has %d user%s (%d operator%s)", /* english */
"Kanaal %s heeft %d deelnemer%s (%d operator%s)", /* dutch */
"Canal %s a %d usager%s (%d op<6F>rateur%s)", /* french */
"El canal %s tiene %d usuarios%s (%d operadores%s)", /* spanish */
"Kanal %s hat %d Benutzer (%d Betreiber)" /* german */
/* ### NOTE the german version does not use plurals!
The code reflects this. */
},
/* RPL_STATUS2 */
{"Mode is +%s", /* english */
"Mode is +%s", /* dutch */
"Le mode est +%s", /* french */
"El modo es +%s", /* spanish */
"Der Modus ist +%s" /* german */
},
/* RPL_STATUS3 */
{"Default user flags%s", /* english */
"Default 'user flags'%s", /* dutch */
"Flags d'usager par d<>faut%s", /* french */
"Flags por defectos son %s", /* spanish */
"Default-Flags fuer Benutzer %s" /* german */
},
/* RPL_STATUS4 */
{"Default language is %s", /* english */
"Default taal is %s", /* dutch */
"Langue par d<>faut %s", /* french */
"Idioma por defecto %s", /* spanish */
"Default-Sprache ist %s" /* german */
},
/* RPL_STATUS5 */
{"Channel has been idle for %d second%s", /* english */
"Het kanaal is %d second%s idle", /* dutch */
"Le canal est inactif depuis %d seconde%s", /* french */
"El canal no est<73> activo desde hace %d segundos%s", /* spanish */
"Der Kanal ist seit %d Sekunden inaktiv." /* german */
},
/* RPL_SETCHANDEFS */
{"Channel defaults set.", /* english */
"Kanaal defaults geregistreerd.", /* dutch */
"L'<27>tat du canal est enregistr<74>", /* french */
"Los nuevos cambios han sido registrados", /* spanish */
"Default-Werte fuer den Kanal wurden gesetzt" /* german */
},
/* RPL_NOTDEF */
{"That channel is not in my default channel list", /* english */
"Dat kanaal staat niet in mijn default kanaal lijst", /* dutch */
"Ce canal n'est pas sur ma liste", /* french */
"Ese canal no est<73> en mi lista por defecto", /* spanish */
"Dieser Kanal ist nicht auf meiner Liste" /* german */
},
/* RPL_REMDEF */
{"Channel removed from default channel list", /* english */
"Het kanaal is van de default kanaal lijst verwijderd", /* dutch */
"Ce canal n'est plus sur ma liste", /* french */
"Canal eliminado de la lista por defecto", /* spanish */
"Der Kanal wurde aus meiner Liste entfernt" /* german */
},
/* RPL_NOMATCH */
{"No match.", /* english */
"Niet gevonden.", /* dutch */
"Introuvable", /* french */
"No se encuentra", /* spanish */
"Nicht gefunden." /* german */
},
/* RPL_NOOP */
{"Sorry. This channel is in NoOp mode!", /* english */
"Sorry. Dit kanaal is in NoOp mode!", /* dutch */
"D<EFBFBD>sol<EFBFBD>. Ce canal est en mode NoOp!", /* french */
"Lo siento, <20>Ese canal est<73> en modo NoOp!", /* spanish */
"Tut mir leid, aber dieser Kanal ist im NoOp-Modus!" /* german */
},
/* RPL_CANTBEOP */
{"Sorry. You are not allowed to be chanop", /* english */
"Sorry. Het is niet toegestaan dat u kanaal operator bent", /* dutch */
"D<EFBFBD>sol<EFBFBD>. Il ne vous est pas permis d'<27>tre op<6F>rateur", /* french */
"Lo siento. No estas autorizado para ser operador en el canal", /* spanish */
"Tut mir leid, aber Sie duerfen nicht Betreiber werden." /*german */
},
/* RPL_CANTBEOPPED */
{"This user is not allowed to be chanop", /* english */
"Deze gebruiker is het niet toegestaan kanaal operator te zijn", /* dutch */
"Cet usager n'a pas le droit d'<27>tre op<6F>rateur", /* french */
"Ese usuario no est<73> autorizado para ser operador en el canal", /* spanish */
"Dieser Benutzer darf nicht Betreiber werden." /* german */
},
/* RPL_DEOPPED1ST */
{"You are not allowed to DEOP me!", /* english */
"Je mag me niet deoppen!", /* dutch */
"Vous ne pouvez pas me deopper!", /* french */
"<EFBFBD>No me puedes quitar el op!", /* spanish */
"Sie duerfen mich nicht deoppen!" /* german */
},
/* RPL_DEOPPED2ND */
{"Please STOP deopping me!", /* english */
"STOP met me te de-oppen!", /* dutch */
"Veuillez arr<72>ter de me deopper!", /* french */
"Por favor, <20>para de quitarme el op!", /* spanish */
"Bitte hoeren Sie auf, mich zu deoppen!" /* german */
},
/* RPL_DEOPPED3RD */
{"I warned you!", /* english */
"Je was gewaarschuwd!", /* dutch */
"Je vous aurai pr<70>venu!", /* french */
"<EFBFBD>Te he hecho una advertencia!", /* spanish */
"Sie wurden gewarnt!" /* german */
},
/* RPL_USERISPROTECTED */
{"This user is protected", /* english */
"Deze gebruiker is beschermd", /* dutch */
"Cet usager est prot<6F>g<EFBFBD>", /* french */
"Este usuario est<73> protegido", /* spanish */
"Dieser Benutzer ist geschuetzt" /* german */
},
/* RPL_YOUREOPPEDBY */
{"You're opped by %s", /* english */
"U bent kanaal operator gemaakt door %s", /* dutch */
"Vous <20>tes opp<70> par %s", /* french */
"El %s te ha puesto de operador en el canal", /*spanish */
"Sie wurden von %s zum Betreiber gemacht." /* german */
},
/* RPL_USERNOTONCHANNEL */
{"User %s is not on channel %s!", /* english */
"%s bevindt zich niet op kanaal %s!", /* dutch */
"%s n'est pas sur %s!", /* french */
"El usuario %s no est<73> presente en el canal %s!", /* spanish */
"%s ist nicht auf dem Kanal %s!" /* german */
},
/* RPL_YOUREDEOPPEDBY */
{"You're deopped by %s", /* english */
"Het kanaal operatorschap is u ontnomen door %s", /* dutch */
"Vous <20>tes d<>opp<70> par %s", /* french */
"El %s te quit<69> el status de op%s", /* spanish */
"%s hat ihnen den Betreiberstatus entzogen" /* german */
}
};